免费构建智能笔记同步系统:用Obsidian Git与本地LLM替代官方服务
1. 为什么需要寻找 Obsidian Sync 的替代方案?
如果你和我一样,是个重度使用 Obsidian 来管理知识、记录笔记的人,那么你一定对“同步”这件事又爱又恨。爱的是,它让你在手机、平板、电脑之间无缝切换,随时随地都能访问你的知识库;恨的是,官方同步服务 Obsidian Sync 虽然稳定,但每月 8 美元(年付 96 美元)的价格,对于个人用户,尤其是学生或预算有限的爱好者来说,确实是一笔不小的持续开销。更关键的是,它的核心功能——端到端加密的跨设备同步——并非不可替代。我们完全可以通过一些免费、开源的工具组合,实现几乎相同的效果,甚至还能解锁一些额外的玩法。
这就是今天要聊的核心:用Hermes Agent LLM Wiki和Obsidian Git这套组合拳,彻底免费地替代 Obsidian Sync。你可能会问,Git 同步不是老生常谈吗?没错,但传统的 Git 方案有几个痛点:一是对非程序员用户不友好,命令行操作有门槛;二是移动端(尤其是 iOS)的 Git 客户端体验参差不齐,配置繁琐;三是单纯的 Git 同步缺乏“智能”层面的辅助。而我们今天要搭建的这套方案,恰恰是针对这些痛点的一次全面升级。它不仅解决了同步问题,还通过引入本地大语言模型(LLM),让你的知识库瞬间变成一个能对话、能总结、能帮你思考的“智能副脑”。听起来是不是有点未来感?别急,跟着这篇保姆级教程一步步来,你也能拥有。
2. 方案核心组件拆解:Git 同步与 LLM 智能的融合
在动手之前,我们必须先理解这套方案的两个核心支柱各自扮演什么角色,以及它们是如何协同工作的。这能帮助你在后续配置和 troubleshooting 时,心里更有底。
2.1 Obsidian Git:可靠、免费的数据同步引擎
Obsidian Git是一个 Obsidian 社区插件,它的作用简单粗暴:将你的整个 Obsidian 仓库(Vault)变成一个 Git 仓库。Git 是什么?你可以把它理解为一个极其强大且免费的“版本控制+同步”工具,程序员们用它来协作写代码,我们则用它来同步和备份笔记。
它的工作原理是,每隔一段时间(比如你设置的 5 分钟),插件会自动扫描你的笔记库,如果发现有文件被新增、修改或删除,它就会自动执行一次“提交”(Commit),相当于给当前的状态拍一张快照。然后,它会将这个快照推送到你指定的远程 Git 仓库(比如 GitHub、Gitee 或你自己的服务器)。你的其他设备上,只需要也安装 Obsidian Git 并拉取(Pull)这个远程仓库,就能获得完全相同的笔记内容。
为什么选择它作为同步核心?
- 完全免费:Git 服务本身免费,像 GitHub 的私有仓库也完全免费(有一定容量限制,但对纯文本笔记来说绰绰有余)。
- 历史版本回溯:这是超越 Obsidian Sync 的功能。任何一次错误的修改、误删,都可以轻松回滚到历史上的任何一个“快照”点。
- 跨平台兼容性极佳:无论是 Windows、macOS、Linux,还是通过一些方法在移动端(后面会讲),Git 的协议都是通用的。
- 社区成熟,问题好解决:Git 拥有庞大的用户群和社区,你遇到的几乎所有问题都能找到解决方案。
2.2 Hermes Agent LLM Wiki:你的本地知识库智能助理
这是本方案的“灵魂”和亮点所在。Hermes Agent是一个开源项目,它本质上是一个智能体(Agent)框架。而LLM Wiki是它的一种应用模式,专门为像 Obsidian 这样的本地知识库(Wiki)设计。
你可以把它想象成驻扎在你电脑上的一个“私人秘书”。这个秘书能读懂你笔记库里所有的内容(基于你选择的本地大语言模型,如 ChatGLM3、Qwen 等),并且能根据你的问题,在这些笔记中查找、分析、总结信息,然后以对话的形式回答你。
它解决了什么问题?
- 信息检索效率:当你的笔记库有成千上万条笔记时,靠搜索关键词找信息可能不够精准。你可以直接问它:“我上周读的那篇关于神经网络剪枝的论文,核心创新点是什么?”它会去找到相关笔记并总结给你。
- 知识关联与发现:你可以问:“关于‘项目管理’和‘心理学心流状态’,我的笔记里有哪些交叉点?”它能帮你发现你自己都没意识到的知识连接。
- 内容创作辅助:你可以让它基于你已有的笔记,帮你起草一篇文章的大纲,或者整理一份某个主题的学习路径。
- 完全本地化,隐私无忧:所有数据处理和模型推理都在你的本地设备上完成,你的笔记内容不会上传到任何第三方服务器,安全性极高。
两者的协同关系:Obsidian Git 负责确保你所有设备上的“数据源”(即笔记文件)是一致的、最新的。而 Hermes Agent LLM Wiki 则运行在你指定的某一台主力设备上(通常是性能较好的台式机或笔记本),作为智能查询中心。你在这台设备上向 Hermes Agent 提问,它基于本地的、最新的笔记文件给你答案。其他设备(如手机、平板)虽然不运行 Hermes Agent,但通过 Git 同步,它们始终拥有最新的笔记数据,可以用于纯阅读和编辑。
3. 从零开始的保姆级配置流程
理解了原理,我们开始实战。整个过程分为三大步:搭建 Git 同步环境、配置 Hermes Agent LLM Wiki、最后进行移动端的适配。请严格按照顺序操作。
3.1 第一步:搭建基于 Obsidian Git 的同步体系
这是基础,必须首先打通。
1. 创建远程 Git 仓库我们以国内访问速度较快的Gitee(码云)为例,GitHub 操作类似。
- 访问 gitee.com ,注册并登录。
- 点击右上角 “+” -> “新建仓库”。
- 仓库名称可以设为
my-obsidian-notes(或其他你喜欢的名字)。 - 权限务必选择“私有”,除非你想公开你的所有笔记。
- 其他选项保持默认,点击“创建”。
- 创建成功后,记下仓库的HTTPS 克隆链接,形如
https://gitee.com/your-username/my-obsidian-notes.git。
2. 在主力电脑上初始化本地 Obsidian 仓库并连接 Git
- 打开 Obsidian,创建一个新的仓库(或打开你现有的仓库)。
- 进入“设置” -> “社区插件”,关闭安全模式,点击“浏览”,搜索并安装Obsidian Git插件。安装后记得启用它。
- 现在,你需要让你的本地文件夹变成一个 Git 仓库,并与远程仓库关联。这里有两种方法,推荐方法二(图形化):
- 方法一(命令行,更底层):打开终端(或 Git Bash),导航到你的 Obsidian 仓库根目录。依次执行:
git init git add . git commit -m "Initial commit" git remote add origin https://gitee.com/your-username/my-obsidian-notes.git git push -u origin main # 或 master,取决于Gitee默认分支名 - 方法二(利用VSCode,更直观):安装 Visual Studio Code,用 VSCode 打开你的 Obsidian 仓库文件夹。侧边栏点击源代码管理图标(或按 Ctrl+Shift+G),初始化仓库,然后暂存所有更改,输入提交信息,最后点击“...”选择“推送到”,并粘贴上方的远程仓库地址。VSCode 的图形界面会引导你完成所有步骤,对新手更友好。
- 方法一(命令行,更底层):打开终端(或 Git Bash),导航到你的 Obsidian 仓库根目录。依次执行:
- 关键点:无论用哪种方法,首次推送可能会要求你输入 Gitee 的用户名和密码。Gitee 现在通常要求使用个人访问令牌(Token)代替密码。你需要去 Gitee 的“设置” -> “安全设置” -> “私人令牌”中生成一个,并赋予“projects”权限。在命令行或 VSCode 弹出认证窗口时,用户名填你的 Gitee 用户名,密码就填这个 Token。
3. 配置 Obsidian Git 插件回到 Obsidian,点击左侧边栏刚出现的 Git 图标(或去插件设置里)。
- 常规设置:
自动拉取:建议开启,例如间隔 5 分钟。这样每次打开 Obsidian,它能自动从远程拉取别人(或其他设备)的更改。自动提交:建议开启,例如间隔 10 分钟。它会自动帮你提交本地更改。自动推送:建议开启。在自动提交后,自动推送到远程仓库。提交信息:可以自定义,例如vault backup: {{date}}。
- 高级设置:
禁用推送通知:如果你觉得推送成功的通知烦人,可以开启。拉取更新后,合并冲突的处理方式:建议选择“合并”,如果遇到无法自动解决的冲突,它会提示你手动解决。
- 配置完成后,点击一下“推送”按钮,确保你的初始笔记已经成功上传到 Gitee。以后,这个插件就会在后台默默为你工作。
3.2 第二步:部署与配置 Hermes Agent LLM Wiki
这是最具技术含量但也最有趣的一步。我们将采用 Docker 部署,这是最简单、最干净的方式,能避免复杂的 Python 环境冲突。
1. 前期准备:安装 Docker
- Windows/macOS:前往 Docker 官网下载 Docker Desktop 并安装。安装后启动 Docker Desktop。
- Linux:根据你的发行版,使用包管理器安装 Docker Engine 和 Docker Compose。例如 Ubuntu:
sudo apt update sudo apt install docker.io docker-compose sudo systemctl start docker sudo systemctl enable docker # 将当前用户加入docker组,避免每次用sudo sudo usermod -aG docker $USER # 注销并重新登录使组生效
2. 获取 Hermes Agent 配置
- Hermes Agent 的配置通常以一个
docker-compose.yml文件为核心。你需要找到最新的、支持 LLM Wiki 模式的配置。由于项目更新快,最可靠的方法是访问其官方 GitHub 仓库(例如github.com/Hermes-Agent/Hermes-Agent或相关 fork),查看examples或deploy目录。 - 假设我们找到了一个基础的
docker-compose.yml,内容大致如下(请务必以官方最新版本为准):version: '3.8' services: hermes-agent: image: hermesagent/hermes-agent:latest container_name: hermes-agent restart: unless-stopped ports: - "3000:3000" # Web 界面端口 volumes: - ./data:/app/data # 持久化数据 - /path/to/your/obsidian/vault:/app/vault:ro # 关键!将本地Obsidian仓库挂载进去 environment: - MODE=wiki # 运行在 Wiki 模式 - LLM_MODEL=local # 使用本地模型 - LOCAL_MODEL_PATH=/app/data/models/qwen2.5-7b-instruct-q4_k_m.gguf # 示例模型路径 - EMBEDDING_MODEL=local - LOCAL_EMBEDDING_MODEL_PATH=/app/data/models/bge-small-zh-v1.5.gguf command: > --wiki-path /app/vault --host 0.0.0.0 - 将这个文件保存到你电脑的某个目录,例如
~/hermes-agent。
3. 关键配置详解与修改
volumes部分:这是连接 Hermes Agent 和你的 Obsidian 笔记的关键。- ./data:/app/data:将容器内的/app/data目录映射到宿主机的./data目录,用于保存模型文件、向量数据库等持久化数据。- /path/to/your/obsidian/vault:/app/vault:ro:你必须修改这一行。将/path/to/your/obsidian/vault替换为你本地 Obsidian 仓库的绝对路径。后面的:ro表示“只读”,防止 Hermes Agent 意外修改你的源笔记文件,非常安全。
environment部分:MODE=wiki:指定运行模式。LLM_MODEL=local和EMBEDDING_MODEL=local:指定使用本地模型。LOCAL_MODEL_PATH和LOCAL_EMBEDDING_MODEL_PATH:你需要下载对应的模型文件。以示例中的qwen2.5-7b-instruct-q4_k_m.gguf和bge-small-zh-v1.5.gguf为例,你可以从 Hugging Face 或 ModelScope 等平台下载。下载后,将其放入上一步映射的./data/models/目录下(需要你先创建models文件夹)。模型选择上,7B 参数左右的量化模型(GGUF 格式)对消费级显卡(甚至纯 CPU)比较友好。
command部分:--wiki-path /app/vault告诉 Hermes Agent 你的知识库在哪里。
4. 下载模型并启动服务
- 在你保存
docker-compose.yml的目录(~/hermes-agent)下,创建必要的文件夹:mkdir -p data/models - 将下载好的模型文件(如
qwen2.5-7b-instruct-q4_k_m.gguf)放入data/models/。 - 在终端中,进入该目录,启动服务:
cd ~/hermes-agent docker-compose up -d-d表示后台运行。首次运行会拉取 Hermes Agent 的 Docker 镜像,并加载模型,可能需要几分钟到十几分钟,取决于你的网络和模型大小。
5. 访问与使用
- 启动成功后,打开浏览器,访问
http://localhost:3000。 - 你应该能看到 Hermes Agent 的 Web 界面。它可能会提示你进行初始设置,比如选择语言、确认知识库路径等。按照指引完成即可。
- 完成后,你就可以在聊天框里输入问题了!例如:“总结一下我笔记中关于 Docker 的核心要点。” 它会开始索引你的笔记(首次需要一些时间构建向量数据库),然后给出回答。
注意:模型加载需要占用较多内存和显存。如果启动失败,查看日志
docker-compose logs hermes-agent,常见问题是模型路径不对或内存不足。对于纯 CPU 运行,可能需要更小的模型(如 3B 参数)或增加 Docker 容器的内存限制。
3.3 第三步:其他设备的同步配置与移动端适配
现在,你的主力电脑已经拥有了“自动同步+智能助理”。接下来,让其他设备(比如办公室电脑、家里的笔记本)也加入同步网络,并解决移动端(手机/平板)的编辑问题。
1. 其他电脑(Windows/macOS/Linux)
- 在这台新电脑上安装 Obsidian 和 Obsidian Git 插件。
- 克隆远程仓库:在 Obsidian 中选择“打开文件夹作为仓库”,但先不要选本地文件夹。而是去终端或 Git 图形化工具中,执行:
git clone https://gitee.com/your-username/my-obsidian-notes.git /path/where/you/want - 然后用 Obsidian 打开克隆下来的这个文件夹。
- 配置 Obsidian Git 插件(同主力电脑),开启自动拉取/提交/推送。这样,这台电脑也加入了自动同步网络。
2. 移动端(iOS/Android)的终极方案这是免费方案中最具挑战的一环,因为 Obsidian 移动版不支持社区插件(包括 Obsidian Git)。我们有几种思路:
方案A:纯同步与只读/简易编辑(推荐)
- 同步:使用Git 同步 App。在 iOS 上,
Working Copy是一款强大的付费 Git 客户端;GitJournal是免费选择。在 Android 上,MGit是不错的选择。在这些 App 中配置好你的 Gitee 仓库,定期拉取和推送。 - 编辑:在 Obsidian Mobile 中,打开 Working Copy 拉取下来的仓库文件夹进行编辑。编辑完后,回到 Working Copy 提交并推送。这需要手动操作,但免费。
- 简化:你可以配置 Working Copy 的“文件夹同步”功能,让它自动将某个目录与 Obsidian Mobile 的仓库目录同步,减少一次手动打开的操作。
- 同步:使用Git 同步 App。在 iOS 上,
方案B:利用第三方云盘桥接(折中)
- 在主力电脑上,使用
rclone、Syncthing或云盘客户端的同步文件夹功能,将你的 Obsidian 仓库同步到 iCloud Drive、OneDrive、Dropbox 或国内云盘的一个文件夹中。 - 在移动端 Obsidian 中,直接打开这个云盘同步文件夹。这样实现了文件层面的同步,但失去了 Git 的版本历史功能。这可以作为 Git 同步的一个补充或简易替代,特别是对于临时在移动端做快速编辑的场景。
- 在主力电脑上,使用
方案C:远程桌面或SSH(硬核)
- 在移动端使用远程桌面 App(如 Microsoft Remote Desktop, Jump Desktop)连接到你的主力电脑进行操作。
- 或者使用 Termius 等 SSH 客户端,连接到主力电脑,用命令行进行 Git 操作和笔记编辑(如使用 Vim 编辑 Markdown)。这适合极客用户。
我个人最常用的模式是“方案A”:在手机上,我主要进行碎片化阅读和轻量记录。我会用 Working Copy 定期拉取更新,然后在 Obsidian Mobile 里阅读。如果需要记录,就在 Obsidian 里写好,然后切回 Working Copy 提交推送。虽然多了一步切换,但保留了完整的 Git 工作流和版本历史,心里踏实。
4. 高级技巧与日常维护心得
配置好了只是开始,如何用得顺手、用得长久,才是关键。这里分享一些我踩过坑后总结的经验。
4.1 处理 Git 冲突:当多设备同时修改同一文件时
这是分布式同步无法避免的问题。Obsidian Git 插件检测到冲突时,会在界面上给出提示。文件内容会变成类似这样:
<<<<<<< HEAD 这是我在手机上写的内容。 ======= 这是我在电脑上写的内容。 >>>>>>> a1b2c3d4...解决步骤:
- 不要慌张,Git 已经帮你把两个版本都保留下来了。
- 手动打开这个文件,仔细阅读
<<<<<<< HEAD和=======之间(当前设备版本),以及=======和>>>>>>>之间(合并进来的版本)的内容。 - 决定如何合并:也许保留一个,也许把两者合理的部分整合在一起。
- 删除
<<<<<<< HEAD,=======,>>>>>>> a1b2c3d4...这些标记,保存文件。 - 在 Obsidian Git 插件界面,你会看到这个文件又出现了更改。这次是你解决冲突后的内容。提交这次更改并推送即可。
预防冲突的最佳实践:
- 养成“推拉”习惯:在开始编辑前,先手动点击一下“拉取”(Pull)。编辑完成后,立即“提交并推送”(Commit & Push)。这能极大减少冲突窗口期。
- 细分笔记:不要把所有内容都写在一个巨大的“日记.md”文件里。按照主题、项目建立不同的笔记文件。文件越小、越专注,冲突概率越低。
- 利用“自动拉取”:将 Obsidian Git 的自动拉取间隔设短一些(如 2-5 分钟),让各设备状态尽快同步。
4.2 优化 Hermes Agent 的问答效果
Hermes Agent 的回答质量取决于三个因素:模型能力、索引质量、提问方式。
- 模型选择:从简单的开始。
Qwen2.5-7B-Instruct或ChatGLM3-6B的 4-bit 量化版本(GGUF)是很好的起点。如果回答不够精准,可以尝试更大的模型(如 14B),但需要更强的硬件。可以在docker-compose.yml中更换LOCAL_MODEL_PATH指向新模型,并重启容器。 - 索引(向量数据库)重建:当你新增了大量笔记,或者发现 Hermes Agent 总是遗漏某些文件时,可能需要重建索引。通常 Web 界面有“重建索引”或“刷新知识库”的按钮。如果没有,可以尝试重启 Docker 容器
docker-compose restart,它通常会在启动时检查并更新索引。 - 提问技巧(Prompt Engineering):
- 具体化:不要问“我的笔记里有什么关于 Python 的?”,而是问“在我的笔记中,关于 Python 异步编程
asyncio的使用场景有哪些具体例子?” - 指令化:明确告诉它你要什么格式。“请以表格形式,总结我‘项目复盘’文件夹下所有笔记中提到的三个主要挑战和应对方案。”
- 结合上下文:如果它回答偏了,你可以引用它之前的回答或提供更多背景。“根据你刚才提到的 A 方法,在我的笔记里,有没有记录过它的缺点?”
- 具体化:不要问“我的笔记里有什么关于 Python 的?”,而是问“在我的笔记中,关于 Python 异步编程
4.3 数据备份与安全考量
免费不代表不安全,我们需要自己做好备份。
- Git 远程仓库本身就是备份:你的代码托管平台(Gitee/GitHub)是第一个异地备份。
- 本地多重备份:定期(例如每周)将整个 Obsidian 仓库文件夹,复制到另一个物理硬盘或 NAS 上。可以使用
rsync(Linux/macOS)或FreeFileSync(Windows)等工具进行增量同步。 - 加密敏感笔记:如果笔记中有极度敏感的内容,Obsidian 社区有像
Cryptsidian这样的插件,可以对单个笔记进行加密。或者,将敏感笔记单独放在一个用VeraCrypt创建的加密卷里,再让 Obsidian 引用它。 - Docker 数据卷备份:Hermes Agent 的向量数据库和配置在
./data目录。定期备份这个目录,可以在更换机器时快速恢复智能助理的“记忆”。使用docker-compose down停止服务后,直接打包备份data文件夹即可。
5. 常见问题排查与解决方案
即使按照教程,你也可能会遇到一些坑。这里列出我遇到过的典型问题及其解法。
问题1:Obsidian Git 插件推送失败,报错“Authentication failed”
- 原因:Gitee 等平台已普遍使用个人访问令牌(Token)代替密码进行 HTTPS 操作。
- 解决:
- 在 Gitee 上生成一个新的 Token(记得勾选
projects权限)。 - 在电脑上清除旧的 Git 凭据缓存。
- Windows:在“控制面板” -> “用户账户” -> “凭据管理器” -> “Windows 凭据”中,找到
git:https://gitee.com相关的凭据,删除它。 - macOS/Linux:在终端执行
git credential-osxkeychain erase(macOS) 或手动编辑~/.git-credentials文件。
- Windows:在“控制面板” -> “用户账户” -> “凭据管理器” -> “Windows 凭据”中,找到
- 下次 Obsidian Git 尝试推送时,它会重新弹出认证窗口,此时用户名填 Gitee 用户名,密码填新生成的 Token。
- 在 Gitee 上生成一个新的 Token(记得勾选
问题2:Hermes Agent Web 界面打不开(localhost:3000 无法连接)
- 原因1:Docker 服务没有成功启动。
- 排查:在终端运行
docker-compose ps,查看hermes-agent容器的状态是否为Up。运行docker-compose logs hermes-agent查看启动日志,通常会有错误信息(如模型文件找不到、端口被占用)。
- 排查:在终端运行
- 原因2:模型文件路径错误或模型文件损坏。
- 排查:确认
docker-compose.yml中LOCAL_MODEL_PATH指向的路径在容器内是否存在,且文件名完全正确。确认你下载的模型文件是完整的 GGUF 格式文件。
- 排查:确认
- 原因3:防火墙或安全软件阻止了 3000 端口。
- 排查:暂时关闭防火墙试试,或者检查 Docker 的防火墙规则。
问题3:Hermes Agent 回答“未找到相关信息”,但笔记里明明有
- 原因1:笔记尚未被索引。
- 解决:首次启动或新增大量笔记后,需要时间构建向量索引。查看容器日志,看是否有索引进程在运行。通常 Web 界面有触发重建索引的按钮。
- 原因2:文件格式或编码问题。
- 解决:确保你的笔记是 UTF-8 编码的纯文本 Markdown 文件。Hermes Agent 可能无法正确解析某些特殊字符或非常规编码。
- 原因3:提问方式太模糊。
- 解决:尝试更具体的关键词提问,或者先问“我的知识库中包含哪些主题?”来测试它是否真的读到了内容。
问题4:移动端 Git 客户端操作复杂,容易忘
- 解决:建立简单的操作流程。例如,在手机主屏幕创建两个快捷方式:一个打开 Obsidian,一个打开 Working Copy。形成肌肉记忆:“打开 Obsidian 前,先开 Working Copy 拉一下;关闭 Obsidian 前,先开 Working Copy 提交推送一下”。也可以利用 Working Copy 的“定时拉取”功能,设置每小时自动拉取一次,减少手动操作。
这套组合方案,我从半年前开始搭建并持续使用至今,已经完全替代了付费的 Obsidian Sync。它带来的不仅仅是每月省下的几十块钱,更是一种对个人数据完全掌控的踏实感,以及一个真正“活”起来的、能与自己对话的知识库。初期配置确实需要投入一些时间和精力,但一旦跑通,其稳定性和扩展性带来的回报是巨大的。希望这篇超详细的指南,能帮你顺利搭建起属于自己的免费、智能笔记同步系统。