--- title: "开源 AI 知识管理搭档 Obsidian + Claude Code 完整集成指南" source_url: https://mp.weixin.qq.com/s/57U6XeKCGtVkQXnNqg9DJQ tags: [wechat, article, claude, openai, gpt, agent, harness, openclaw] source_type: wechat provenance_state: extracted sha256: 4f7ad8b95e2477fe014d41f66c1259ebdde47e241ed2c6985ca40d2bf189a3ff --- ---

大家平时在使用 Claude Code 的过程中,会有大量的跟知识相关的文件需要去管理,也相信大家找到的答案肯定是 Obsidian 。这两个工具本身都很好用,Claude Code 主要负责生成 Markdown (比如计划、记忆、 CLAUDE.md ),而 Obsidian 更擅长管理这些内容。

但真把它们放在一起去使用,整体体验往往没有想象中那么好。最常见的一个问题是:当你直接用 Obsidian 打开整个代码仓库时,大量非 Markdown 文件(图片、脚本、依赖)会让 Vault 结构变得混乱。

本文整理了社区里常见的五种解决思路,从简单的过滤方法,到更完整的集成方式。你可以根据自己的使用习惯,选一个适合自己的方案。

核心痛点:文件分散与混乱

Claude Code 的配置分散在多个位置:

位置
用途
~/.claude/CLAUDE.md
全局指令
~/.claude/plans/
计划文件
~/.claude/projects/
每个项目的记忆
~/.claude/skills/
可复用技能
{repo}/CLAUDE.md
项目内指令(随仓库提交)

一旦你同时维护多个仓库,这些文件就会变得很分散,很难统一管理。

如果直接把代码仓库当成 Obsidian Vault 打开,虽然能看到这些 Markdown 文件,但问题也很明显:各种 PNG、JS 文件、lock 文件,甚至 node_modules 也会一股脑出现在文件列表里,整个视图很快就乱掉了。

Obsidian 虽然提供了「排除文件」的设置(设置 > 文件与链接),但它只是 软隐藏 ——文件看起来不见了,其实还是被索引着。对这个问题来说,帮助有限。

五大集成策略

策略 1:独立开发者 Vault + 符号链接

适合场景 :同时维护多个项目,希望统一搜索和管理信息。

思路很简单:建一个独立的 Obsidian Vault,不放在任何代码仓库里,然后用符号链接把你关心的内容「拉」进来。

# 创建独立仓库(不在任何项目里)
mkdir
 ~/Developer-Vault
cd
 ~/Developer-Vault

# 链接 Claude Code 全局配置

ln
 -s ~/.claude claude-global

# 链接各个项目

ln
 -s ~/projects/my-app my-app
ln
 -s ~/projects/my-api my-api

然后在 .obsidian/app.json 里过滤掉代码噪音:

{
  "userIgnoreFilters"
: ["node_modules/", ".next/", "dist/", ".git/", ".vercel/"]
}

再配合 File Explorer++ ,按扩展名隐藏 *.js *.ts *.png 这些文件,界面会干净很多。

这样做的效果是

需要注意的点

策略 2:Vault = Claude Code 工作目录

适合场景 :做个人知识管理 / 「第二大脑」这类工作流。

这是目前社区里比较流行的一种方式:直接把 Obsidian Vault 当成 Claude Code 的工作目录来用。Vault 根目录的 CLAUDE.md 一身二用——既是给 Claude 的指令,也是你在 Obsidian 里阅读的笔记。

my-vault/
├── CLAUDE.md              # Claude 用它,Obsidian 也能直接读
├── .claude/               # 技能、钩子、配置
├── daily-notes/
├── projects/
│   ├── pixelmuse/
│   └── my-api/
├── research/
├── decisions/
└── templates/

社区里常见的做法大概是这样

比如 ballred/obsidian-claude-pkm [1] 这种项目,会再加一层目标管理(年 / 月 / 周)。
还有像 Noah Vincent IPARAG 结构 [2] ,本质上是把内容分成:收件箱、项目、领域、资源、归档,以及类似 Zettelkasten 的笔记体系。

这种方式在 你的 Vault 本身就是工作内容 时特别好用,比如写作、研究、个人项目管理。但如果你已经有一套成熟的代码仓库结构,再硬套进来,反而会比较别扭。

策略 3:MCP 桥接

适合场景 :既想保持代码仓库干净,又希望 Claude 能随时访问你的知识库。

这种方式的思路是:代码仓库和 Obsidian 完全分开,但通过 MCP 把两边「连起来」。你还是在项目目录里正常用 Claude Code,但它可以随时去 Obsidian 里查资料。

# 在项目仓库中正常工作
cd
 ~/projects/my-app
claude

# 同时可以访问 Obsidian 里的内容

# 不需要符号链接,也不用改仓库结构

比如 obsidian-claude-code-mcp [3] 这样的插件,会通过 WebSocket 自动发现你的仓库(默认端口 22360),支持多个仓库同时使用。

还有 Claudesidian MCP [4] ,在此基础上加了语义搜索(基于 Ollama embedding )和更完整的 agent 能力,用起来更像一个「会查资料的助手」。

这种方案的优点是

需要权衡的点:

策略 4:每个仓库一个 Vault

适合场景 :只专注单个项目,想要简单直接的配置。

这种方式最简单:直接把每个代码仓库当成一个 Obsidian Vault 来用。配合 userIgnoreFilters 把非 Markdown 文件隐藏掉(下面会讲怎么处理文件混乱的问题)。

同时记得把 .obsidian/ 加进 .gitignore ,避免污染代码仓库:

# Obsidian
.obsidian/
.trash/

这种方式的好处是

但缺点也很明显

策略 5:QMD + 会话同步

适合场景 :重度使用 Claude Code,希望把「上下文」真正沉淀下来。

这是偏进阶的一套玩法,核心思路是:使用 Shopify CEO Tobi Lutke QMD [5] 把 Claude 的对话也当成知识来管理。

大致是三样东西组合在一起:

  1. 1. QMD :在 Markdown 仓库上做语义搜索,比简单的 grep 更省 token
  2. 2. sync-claude-sessions :会话结束时自动导出为 Markdown
  3. 3. /recall 技能 :新会话开始前,把相关上下文拉回来

这样一来,Claude Code 的每次对话都会变成可搜索的笔记,慢慢沉淀在你的本地仓库里。

这套方案的特点

一些开发者的反馈也比较一致:用 QMD 做语义分块之后,token 使用和处理时间都有明显下降(有的场景能到 60%+)。

需要权衡的点

解决文件混乱问题

如果你已经把代码仓库当作 Obsidian vault 使用,结果文件列表里全是 PNG 和各种资源文件,可以这样处理。

步骤 1:通过 app.json 排除目录

打开「设置 → 文件与链接 → 排除文件」,或者直接编辑 .obsidian/app.json

{
  "userIgnoreFilters"
: ["node_modules/", ".next/", "dist/", ".git/", ".vercel/", "public/"]
}

步骤 2:用正则排除文件类型

在同一个「排除文件」设置里,可以加一些正则规则,把不关心的文件类型隐藏掉:

/.*\.png/
/.*\.jpg/
/.*\.jpeg/
/.*\.svg/
/.*\.gif/
/.*\.ico/
/.*\.webp/
/.*\.js/
/.*\.ts/
/.*\.tsx/
/.*\.jsx/
/.*\.css/
/.*\.json/
/.*\.lock/

注意 :这只是「软隐藏」。这些文件在界面上看不到了,但 Obsidian 还是会在内部索引它们,所以并不是彻底隔离。

步骤 3:用 File Explorer++ 做「硬过滤」

可以装一个 File Explorer++ [6] 插件,它支持按文件名或路径做通配符 / 正则过滤,而且可以随时开关,比内置的排除功能更灵活。

步骤 4:关闭「检测所有文件扩展名」

在「设置 → 文件与链接」里,把「检测所有文件扩展名」关掉。这样像 JS、TS、JSON 这些 Obsidian 本身不处理的文件,就不会再出现在文件列表里。

替代方案:File Ignore 插件

如果你想要更彻底一点,可以用 File Ignore [7] 插件。它支持 .gitignore 风格的规则,并通过给文件加前缀的方式,让 Obsidian 在索引时直接跳过这些文件。

不过要注意,这种方式会 实际修改文件名 ,所以更适合你能接受这种改动、或者本身就是个人仓库的场景。

插件推荐

开发者 Vault 必备

插件
用来做什么
File Explorer++ [6]
用通配符 / 正则过滤文件,隐藏 *.js *.png 等,支持一键开关
Dataview [8]
跨所有 CLAUDE.md 做查询,比如项目状态、计划汇总
Templater [9]
用模板生成统一结构的 CLAUDE.md ,减少重复工作

Obsidian 内直接用 Claude Code(选一个)

插件
用法特点
Claudian [10]
侧边栏聊天形式,支持不同权限模式(YOLO / 安全 / 计划)
Agent Client [11]
集成多个模型(Claude / Codex / Gemini),支持 @ 引用笔记
Claude Sidebar [12]
更接近终端体验,自动启动 Claude Code,支持多标签

MCP 插件(远程访问)

如果你不想把 Obsidian 和代码仓库绑在一起,可以用 MCP 这类插件做远程访问:

插件
用法特点
obsidian-claude-code-mcp [3]
自动发现仓库,Claude Code 可以直接访问,不用 cd
Claudesidian MCP [4]
更完整的代理模式,支持语义搜索(Ollama)

其他实用插件

插件
用来做什么
Folder Note [13]
给文件夹绑定一个说明页,点击文件夹就能打开对应笔记
File Hider [14]
支持右键隐藏单个文件或文件夹,适合临时清理视图
Hide Folders [15]
按规则控制文件夹的显示与隐藏,用起来更灵活

Dataview 查询技巧

CLAUDE.md 加一点结构化信息之后,Dataview 的价值会一下子体现出来。很多原本分散的信息,都可以用查询统一整理出来。

给每个 CLAUDE.md 加 frontmatter

---
type: claude-config
project: my-app
stack: [nextjs, tailwind, supabase]
status: active
---

查询所有项目配置

```dataview
TABLE project, stack, status
FROM ""
WHERE type = "claude-config"
SORT project ASC
```

列出所有 Claude 计划(按最近更新)

```dataview
TABLE file.mtime as "最后修改"
FROM "claude-global/plans"
SORT file.mtime DESC
```

配合 Templater 自动生成 CLAUDE.md

---
type: claude-config
project: <% tp.system.prompt("项目名称") %>
status: active
date: <% tp.date.now("YYYY-MM-DD") %>
---


# <% tp.system.prompt("项目名称") %> — Claude Code 配置


## 技术栈


-


## 代码质量


-


## 关键架构


-


## 环境变量


-

Obsidian CLI 的突破性进展

Obsidian 1.12 引入的 CLI,可以说把整个集成方式往前推了一大步。现在像 Claude Code、Codex、Gemini CLI 这类工具,都可以直接「使用」 Obsidian,而不只是简单地读文件。

有开发者在一个 4,000+ 文件、16GB 的仓库上做过测试,结果很直观:

本质上,它解决的是一个老问题:以前 AI 只能用 grep 这种方式「硬扫文件」,现在可以直接利用 Obsidian 的索引能力。

如果把几种接入方式简单排一下

  1. 1. Obsidian CLI → 最快、最省 token
  2. 2. REST API(社区插件) → 灵活,但多一层调用
  3. 3. 文件系统(grep / glob) → 最慢,也最耗 token

另外一个值得关注的点是:Obsidian 官方也在逐步完善 Claude 相关能力(比如专门的 skills),让 Claude 能更自然地编辑 .md 、. canvas 这类文件。

社区最佳实践

社区里有个挺有共识的原则,可以用一句话来概括:

AI 负责读取,人负责书写

意思是,你的 vault 应该记录的是 你自己的思考 。Claude 用来读这些内容、补充上下文,但不应该把生成的内容一股脑写进去,把 vault 变成「AI 输出的集合」。

更清晰一点的做法是:把 Claude 的输出(比如计划、会话、记忆)放在 ~/.claude/ ,而 vault 本身只保留真正有价值的知识和思考。

在这个思路下,一些自定义命令也挺有意思:

社区资源

博客文章(偏方法和实践)

Twitter / X(趋势 & 一线实践)

GitHub(模板 & 工具)

引用链接

[1] ballred/obsidian-claude-pkm: https://github.com/ballred/obsidian-claude-pkm
[2] IPARAG 结构: https://noahvnct.substack.com/p/how-to-build-your-ai-second-brain
[3] obsidian-claude-code-mcp: https://github.com/iansinnott/obsidian-claude-code-mcp
[4] Claudesidian MCP: https://github.com/ProfSynapse/claudesidian-mcp
[5] QMD: https://github.com/tobi/qmd
[6] File Explorer++: https://github.com/kelszo/obsidian-file-explorer-plus
[7] File Ignore: https://obsidian-file-ignore.kkuk.dev/
[8] Dataview: https://github.com/blacksmithgu/obsidian-dataview
[9] Templater: https://www.obsidianstats.com/plugins/templater-obsidian
[10] Claudian: https://github.com/YishenTu/claudian
[11] Agent Client: https://github.com/RAIT-09/obsidian-agent-client
[12] Claude Sidebar: https://github.com/derek-larson14/obsidian-claude-sidebar
[13] Folder Note: https://lostpaul.github.io/obsidian-folder-notes/
[14] File Hider: https://github.com/Eldritch-Oliver/file-hider
[15] Hide Folders: https://github.com/JonasDoesThings/obsidian-hide-folders


既然看到这里了,如果觉得有启发,随手点个赞、推荐、转发三连吧,你的支持是我持续分享干货的动力。