AI 知识体系:从设备迁移到多端协作
Markdown 文件作为人机共享的单一真相源,Syncthing 多端 P2P 同步,Mac mini 常驻 AI 中枢——一份覆盖整体设计、落地路线与技术参考的全景调研报告。
整体设计
1.1这份报告要回答什么
你的核心诉求拆解为三层:
| 层 | 问题 | 本篇回答 |
|---|---|---|
| 愿景层 | 怎么让日常工作记录(MacBook Pro)、AI agent(Hermes)、家庭存储统一到一个知识体系? | §1.3 架构 |
| 工具层 | MacBook Pro 上要不要用 Obsidian?Hermes 怎么访问笔记? | §1.4-1.5 |
| 设备层 | 4 台设备(Mac mini + MBP + MBP2016 + Windows)+ 2 台 VPS 怎么分工? | §1.6 |
1.2一句话方案
Markdown 文件作为知识的单一真相源(人可读、Agent 可查),Syncthing 做多设备 P2P 同步,Mac mini 做常驻中枢(Hermes + Ollama + 备份),MacBook Pro 做日常创作端(Obsidian),旧设备和 Windows 做只读消费端。
不是「选 Obsidian 还是选数据库」,而是「Markdown 是人机共享的事实层,SQLite/向量索引是 Agent 的加速层」。
1.3知识体系架构
设计原则(第一性原理)
问题:人和 AI agent 对知识的需求有什么本质区别?
| 维度 | 人(你) | AI Agent(Hermes) |
|---|---|---|
| 阅读方式 | 浏览目录、双链跳转、搜索 | 结构化查询、语义检索、全文匹配 |
| 写入方式 | 手动编辑、粘贴、拖拽 | API 调用、自动追加、批量更新 |
| 需要什么 | 可读、可编辑、有历史 | 可查、可索引、有结构 |
| 格式偏好 | 富文本/所见即所得 | Markdown/纯文本 |
推论:两者需要的不是「同一个数据库」,而是「同一份文件、两种接口」——人用 Obsidian GUI 读写
.md文件,Agent 用文件系统工具或 MCP 直接读写同一份.md文件。索引层(SQLite/向量)是 Agent 的加速器,不是事实源。
架构图(Vault 目录视角)
┌──────────────────────────────────────────────────────────┐
│ Markdown Vault(知识真相源) │
│ │
│ ~/KnowledgeVault/ │
│ ├── daily/ 日常笔记、闪念、会议记录 │
│ ├── projects/ 项目文档、设计决策、任务记录 │
│ ├── references/ 参考资料、技术调研、读书笔记 │
│ ├── decisions/ 决策记录(带理由和替代方案) │
│ └── index.md 知识地图(手动维护的入口) │
│ │
│ ↑ 人通过 Obsidian 读写 ↑ Agent 通过文件工具读写 │
│ ↑ Syncthing 多端同步 ↑ Basic Memory 索引(可选) │
└──────────────────────────────────────────────────────────┘
三层架构
| 层 | 技术 | 作用 | 谁用 |
|---|---|---|---|
| 事实层 | Markdown 文件(.md) | 单一真相源 | 人 + Agent |
| 索引层 | Basic Memory(SQLite + 向量)或纯 Hermes Memory | Agent 加速查询 | Agent |
| 同步层 | Syncthing P2P | 多设备文件同步 | 自动 |
关键洞察:索引层可以后加。先用 Syncthing + Hermes 文件工具直接读写(零配置),跑通后再装 Basic Memory 加语义搜索——渐进式,没有沉没成本。
1.4Obsidian 决策:用,但不是中心
调研结论
| 维度 | Obsidian | VS Code + Markdown | Notion/飞书 |
|---|---|---|---|
| 双链/反链 | ⭐⭐⭐⭐⭐ 原生 | ❌ | ⭐⭐⭐ |
| 本地文件 | ✅ 纯 .md | ✅ | ❌ 云端 |
| Agent 友好 | ✅ 文件系统直读 | ✅ | ❌ 需 API |
| MCP 集成 | ✅ mcp-obsidian + Local REST API | ❌ | ⚠️ 有限 |
| 插件生态 | ⭐⭐⭐⭐⭐ 8000+ | — | ⭐⭐ |
| 离线可用 | ✅ | ✅ | ❌ |
| 跨设备同步 | Syncthing/Git/iCloud | Git | 云端原生 |
| 成本 | 免费(个人) | 免费 | 免费/付费 |
用 Obsidian。原因不是它完美,而是它是「Markdown 文件 + GUI + 双链 + 插件生态」的最佳组合。但 Obsidian 是编辑器,不是知识库本身——知识库是那些 .md 文件,Obsidian 只是最好用的读写工具之一。
Obsidian 在你的体系中的角色
Obsidian = 人的知识编辑器(在 MacBook Pro 上)
↓ 读写
Markdown Vault = 知识真相源(Mac mini 上的物理文件)
↑ 直接读写
Hermes Agent = AI 的知识消费者/生产者(在 Mac mini 上)
⚠️ 不要让 Obsidian 成为单点:vault 是纯文件,没有 Obsidian 你(和 Agent)照样能读写。Obsidian 只是让你的阅读/编辑体验更好。
1.5Hermes 怎么访问笔记:三条路径
| 路径 | 机制 | 需要 Obsidian 运行 | 语义搜索 | 配置复杂度 | 推荐场景 |
|---|---|---|---|---|---|
| A. 内置文件工具(推荐起步) | read_file / write_file / search_files | ❌ | ❌ | 零配置 | 初期 |
| B. Basic Memory(推荐进阶) | MCP:search_notes(语义)+ build_context(图谱) | ❌ | ✅ | 一条命令 | 跑通后 |
| C. Local REST API MCP | HTTP MCP server 连 Obsidian 插件 | ✅ | ❌ | 中 | 需要触发 Obsidian 特有功能时 |
起步用 A(零配置),稳定后加 B(Basic Memory 有 Hermes 官方插件,hermes plugins install basicmachines-co/basic-memory,提供语义搜索 + 知识图谱,基于 Markdown+SQLite,不需要 Obsidian 运行)。
1.6设备拓扑与角色分工
┌─────────────────────────────────────┐
│ Mac mini M4 32GB │
│ (家庭 AI 中枢 · 常驻) │
│ │
│ · Hermes Gateway(Discord bot 入口) │
│ · KnowledgeVault(物理存储主副本) │
│ · Hermes Memory + state.db(会话记忆)│
│ · Ollama(本地推理 14B-32B) │
│ · Cron Jobs(定时任务) │
│ · Cloudflare Pages 部署(wrangler) │
│ · Time Machine → 外置盘备份 │
│ · Syncthing(同步中枢节点) │
└──────┬──────────────┬────────────────┘
│ Syncthing │ Tailscale 内网
┌────────┴────┐ ┌────┴──────────┐
▼ ▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ MacBook Pro │ │ MacBook Pro │ │ Windows 台式 │
│ (日常工作) │ │ 2016 │ │ (只读浏览) │
│ │ │ (备用/浏览) │ │ │
│ · Obsidian │ │ · Obsidian │ │ · Obsidian │
│ · 编辑/创作 │ │ (可选) │ │ 或 Typora │
│ · Syncthing │ │ · Syncthing │ │ · Syncthing │
└──────────────┘ └──────────────┘ └──────────────┘
┌──────────────┐
│ VPS(冷备) │
│ · Hermes 备用 │
│ · Kimi Proxy │
│ · 公网入口兜底 │
└──────────────┘
角色定义
| 设备 | 角色 | Hermes | Obsidian | Syncthing | 特殊职责 |
|---|---|---|---|---|---|
| Mac mini | 中枢(Steward) | ✅ 主力 gateway | 可选(headless 无需 GUI) | ✅ 常驻节点 | 知识存储、推理、调度、备份 |
| MacBook Pro | 创作端 | ❌ 不跑 gateway | ✅ 主要编辑器 | ✅ 工作时运行 | 日常记录、项目管理 |
| MBP 2016 | 消费端 | ❌ | 可选 | ✅ 或手动同步 | 阅读、旧设备复用 |
| Windows 台式 | 消费端 | ❌ | 可选 | ✅ 或手动同步 | 阅读、临时编辑 |
| VPS | 冷备/Worker | ✅ 备用 | ❌ | ❌ | 公网入口、Kimi 代理、灾备 |
为什么不是 NAS
你提到了「家庭级物理存储设备」。在分析是否需要专用 NAS 之前,先用第一性原理问:
NAS 解决什么问题? → 多设备共享文件。
Mac mini 能不能当 NAS? → 能。macOS 自带 SMB 文件共享(系统设置→共享→文件共享),4 台设备都能挂载。加上 Syncthing 做主动同步,Mac mini 本身就是最强的「NAS」——它还有 32GB 内存跑 AI、万兆网口传大文件。
什么时候需要独立 NAS? → 当 Mac mini 不够可靠(断电/断网/故障频繁),或存储需求 >2TB 需要磁盘阵列时。目前 512GB SSD + 外接盘完全够用。
结论:初期 Mac mini 当 NAS + Syncthing 中枢。如果半年后数据量增长或可靠性需求提升,再买群晖 NAS——那是一个有数据的决策,不是猜测。
落地路线
2.1全景路线图
Phase 0 Phase 1 Phase 2 Phase 3
Mac mini 开机 VPS 迁移 知识体系搭建 多端协作
(半天) (半天) (1-2 天) (渐进)
│ │ │ │
▼ ▼ ▼ ▼
开机+SSH rsync ~/.hermes 装 Syncthing 装 Obsidian
装工具链 接管 Discord 建 Vault 结构 在 MBP 上
装 Hermes 停 VPS gateway Hermes 读写测试 配置双链/模板
验证无缝衔接 Basic Memory(可选) MBP2016/Win 接入
每个 Phase 的产出可独立验证,前一个 Phase 通过才进下一个。
2.2Phase 0:Mac mini 开机(半天)
| 步骤 | 操作 | 验收 |
|---|---|---|
| 0.1 | 接显示器完成 macOS 设置向导、Apple ID、系统更新 | 进入桌面 |
| 0.2 | 开 SSH:系统设置→共享→远程登录;ssh-copy-id | SSH 登录成功 |
| 0.3 | 关休眠:sudo pmset -a sleep 0 disablesleep 1 | 7x24 不睡眠 |
| 0.4 | 关自动更新:sudo softwareupdate --schedule off | 不半夜重启 |
| 0.5 | 装 Homebrew:/bin/bash -c "$(curl -fsSL ...install.sh)" | brew -v 通过 |
| 0.6 | 装工具链:brew install node python@3.11 java graphviz plantuml syncthing | 版本检查全通过 |
| 0.7 | 装 Hermes:官方安装脚本 | hermes doctor 全绿 |
| 0.8 | TCC 权限:给 sshd 开「完全磁盘访问」;工作目录放 ~/ | SSH 能读写文件 |
2.3Phase 1:VPS → Mac mini 迁移(半天)
核心确认:
~/.hermes/rsync 后无缝衔接所有 Discord 会话(35 个路由映射 + 267 个 session + 16781 条消息 + 记忆 + 技能 + cron)。
| 步骤 | 操作 | 验收 |
|---|---|---|
| 1.1 | 停 VPS gateway:hermes gateway stop + systemctl --user stop hermes-gateway | VPS Discord bot 离线 |
| 1.2 | 同步 Hermes 核心:rsync -avz --progress ~/.hermes/ user@MACMINI:~/.hermes/(2.6GB,几分钟) | Mac mini 上 hermes status 一致 |
| 1.3 | 同步密钥:scp ~/.cf_token ~/.git-credentials ~/.cc-switch-cli/ user@MACMINI:~/ | wrangler whoami 通过 |
| 1.4 | 同步项目:rsync -avz ~/deploy/ ~/stock-tracker/ ~/wechat-qa-bot/ ~/attendance-*/ user@MACMINI:~/ | 项目文件完整 |
| 1.5 | Mac mini 启 gateway:hermes gateway start | Discord 发消息→Mac mini 响应 |
| 1.6 | 无缝衔接验证:在已有 Discord 线程发「继续」,Agent 能接上上下文 | ✅ 无缝 |
| 1.7 | launchd 常驻:写 LaunchAgent plist(<KeepAlive>true</KeepAlive>) | 重启后 gateway 自动拉起 |
| 1.8 | Cron Jobs 检查:hermes cron list 确认 6 个 job 正常 | 手动 run 一个测试 |
| 1.9 | Kimi Proxy 测试:Mac mini 家庭 IP 是否被封 | API 可达或走 VPS tunnel |
| 1.10 | 问答机器人环境:安装项目依赖、准备测试数据集 | 测试集能跑 |
| 1.11 | VPS 降级:保留 Hermes 安装 + Kimi proxy,停 gateway | 冷备就绪 |
⚠️ 步骤 1.1 → 1.5 的顺序是铁律:必须先停 VPS gateway(防 state.db 写入 + 防 Discord 踢线),rsync 完成后再启 Mac mini gateway。
2.4Phase 2:知识体系搭建(1-2 天)
| 步骤 | 操作 | 验收 |
|---|---|---|
| 2.1 | 建 Vault 目录:mkdir -p ~/KnowledgeVault/{daily,projects,references,decisions} | 目录结构存在 |
| 2.2 | 配 Syncthing:Mac mini + MacBook Pro 各装 Syncthing,共享 ~/KnowledgeVault/ | 两端文件互相同步 |
| 2.3 | 排除冲突文件:Syncthing .stignore 排除 .obsidian/workspace*.json | 无工作区冲突 |
| 2.4 | Hermes 读写测试:让 Agent 在 vault 中创建一篇笔记,然后搜索 | Agent 能读写 .md |
| 2.5 | 导入第一批知识:把现有项目文档(设计决策、技术选型)整理进 projects/ | 每个项目 5-10 篇笔记 |
| 2.6 | 装 Basic Memory(可选):hermes plugins install basicmachines-co/basic-memory | Agent 能语义搜索 |
| 2.7 | Time Machine 备份:外置盘/NAS,覆盖 ~/KnowledgeVault/ + ~/.hermes/ | 恢复演练通过 |
Vault 目录设计
~/KnowledgeVault/
├── daily/ # 日常笔记(按日期命名)
│ ├── 2026-08-05.md
│ └── ...
├── projects/ # 项目文档(按项目名分子目录)
│ ├── mac-mini-ai-hub/
│ │ ├── design-decisions.md
│ │ └── migration-log.md
│ ├── wechat-qa-bot/
│ │ └── evaluation-results.md
│ └── ...
├── references/ # 参考资料
│ ├── tech-research/ # 技术调研笔记
│ └── reading-notes/ # 读书笔记
├── decisions/ # 决策记录(带理由和替代方案)
│ └── 2026-08-05-obsidian-vs-notion.md
├── templates/ # Obsidian 模板
│ ├── daily-note.md
│ ├── project-note.md
│ └── decision.md
├── .obsidian/ # Obsidian 配置(不同步 workspace.json)
└── index.md # 知识地图(手动维护的入口)
2.5Phase 3:多端协作(渐进)
| 步骤 | 操作 | 验收 |
|---|---|---|
| 3.1 | MacBook Pro 装 Obsidian:打开 ~/KnowledgeVault/ 作为 vault | 双链/搜索正常 |
| 3.2 | 配 Obsidian 模板:日记模板、项目笔记模板、决策记录模板 | 新建笔记自动套模板 |
| 3.3 | 日常记录习惯:每天工作记录写入 daily/,项目决策写入 decisions/ | Syncthing 自动同步到 Mac mini |
| 3.4 | Agent 上下文增强:给 Hermes 挂文件系统 MCP,指向 ~/KnowledgeVault/ | Agent 能查到你的日常记录 |
| 3.5 | MBP 2016 接入:装 Syncthing 或手动 rsync | 可阅读 vault |
| 3.6 | Windows 台式接入:装 Syncthing(跨平台支持 Windows) | 可阅读 vault |
| 3.7 | Git 版本控制(可选):vault 目录 git init + 私有仓库 | 有完整版本历史 |
技术参考
3.1Hermes 能力盘点(已有能力的复用率)
| 设计需求 | Hermes 原生能力 | 复用率 |
|---|---|---|
| 任务队列/调度/审计 | Kanban(SQLite + Dispatcher) | 100% |
| 多实例角色隔离 | Profiles(独立配置/记忆/技能) | 100% |
| 跨机器任务分发 | API Server RPC / SSH backend / Webhook | 90%(需桥接) |
| 记忆/会话持久化 | state.db(SQLite + FTS5,267 session / 16781 msg) | 100% |
| 技能复用 | Skills(50+ 已有技能自动迁移) | 100% |
| 定时任务 | Cron(6 个活跃 job) | 100% |
| 知识查询 | Memory + session_search(FTS5) | 70%(需加结构化层) |
| 文件读写 | read_file / write_file / search_files | 100% |
| MCP 外部工具 | stdio + HTTP transport | 100% |
3.2知识图谱选型决策
| 方案 | 角色 | 何时用 |
|---|---|---|
| Markdown Vault | 事实层(人+Agent 共享) | 立即,Phase 2 |
| Hermes Memory | Agent 记忆(已有,随迁移带走) | 立即 |
| Basic Memory | 索引层(语义搜索+图谱,基于 Markdown) | Phase 2 后期可选 |
| SQLite + FTS5 | 结构化查询(原方案子项目 2) | 如果 Basic Memory 不够再上 |
| Neo4j / Kùzu | 图数据库 | ❌ 不需要(<1万实体杀鸡用牛刀) |
3.3Syncthing 配置参考
macOS launchd 常驻
<!-- ~/Library/LaunchAgents/net.syncthing.syncthing.plist -->
<plist version="1.0">
<dict>
<key>Label</key>
<string>net.syncthing.syncthing</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/syncthing</string>
</array>
<key>KeepAlive</key>
<true/>
<key>LowPriorityIO</key>
<true/>
<key>ProcessType</key>
<string>Background</string>
<key>StandardOutPath</key>
<string>/tmp/syncthing.log</string>
<key>StandardErrorPath</key>
<string>/tmp/syncthing-err.log</string>
</dict>
</plist>
launchctl load ~/Library/LaunchAgents/net.syncthing.syncthing.plist
.stignore(排除 Obsidian 设备特定文件)
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/cache
.trash/
3.4硬件配置确认
Mac mini M4 / 32GB / 512GB SSD / 万兆网口 + AppleCare+,¥10,398(2026-04-16 已购,全新未开机)
| 推理档位 | 32GB 可跑 | 速度 |
|---|---|---|
| 7-8B | ✅ | 25-35 tok/s |
| 14B | ✅ | 15-22 tok/s |
| 30B MoE(Qwen3-30B-A3B) | ✅ | 30-40 tok/s |
| 32B 稠密(Qwen3-32B) | ✅ | 25-30 tok/s |
3.5风险与应对
| 风险 | 影响 | 应对 |
|---|---|---|
| Discord token 冲突 | 高——互相踢线 | 迁移时严格「先停 VPS 再启 Mac mini」 |
| Syncthing 同步冲突 | 低——生成冲突文件不覆盖 | .stignore 排除设备特定文件;冲突手动解决 |
| macOS 自动更新重启 | 中——服务中断 | Phase 0 已关 |
| 家庭网络不稳定 | 中——bot 掉线 | Hermes 自动重连;UPS 兜底 |
| Kimi 家庭 IP 被封 | 中——CC 代理失效 | 先测;被封走 VPS SSH tunnel |
| Vault 文件被 Agent 写坏 | 低 | Git 版本控制兜底;Agent 写入限定目录 |
| iCloud 误用 | 高——文件驱逐 | ⚠️ 永远不要用 iCloud 同步 Vault |
⚠️ 永远不要用 iCloud 同步 Vault:社区大量报告文件驱逐、静默覆盖、iOS vault 损坏。同步只走 Syncthing。
3.6待决策清单
| # | 决策 | 推荐 | 状态 |
|---|---|---|---|
| D1 | Mac mini 配置 | M4 32GB/512GB | ✅ 已购 |
| D2 | Steward/Curator 拆分 | 初期兼任 | 待启动 |
| D3 | 知识格式 | Markdown Vault + Basic Memory(可选) | 推荐 |
| D4 | 同步方案 | Syncthing P2P | 推荐 |
| D5 | Obsidian | 用(MacBook Pro 上) | 推荐 |
| D6 | 独立 NAS | 暂不买,Mac mini 当 NAS | 推荐 |
| D7 | 跨机主路线 | API Server RPC 为主 | 待 Phase 1.10 实测 |
| D8 | 试点任务 | 问答机器人测试集跑批 | 待 Phase 1.10 |
3.7社区调研信息来源
- Syncthing:GitHub 87.3k★,MPL-2.0,macOS 代码签名,P2P 加密,全球数百万用户
- mcp-obsidian:GitHub 4.3k★,MIT,7 个工具(search/read/patch/append/delete),依赖 Obsidian Local REST API 插件
- Local REST API:Obsidian 社区插件,2.7k★,最新版内置 MCP server(HTTP transport)
- Basic Memory:GitHub 3.6k★,AGPL-3.0,Markdown+SQLite+向量搜索+知识图谱,有 Hermes 官方插件
- iCloud 同步 Obsidian:社区大量报告文件驱逐、静默覆盖、iOS vault 损坏——不推荐
- Obsidian + AI 社区实践:Smart Connections(语义搜索插件)、Copilot(AI 对话插件)是主流方案;Hacker News/Reddit r/ObsidianMD 上「Agent + Obsidian」讨论集中在 MCP 集成和文件系统直读