📋 核心要点
- 给 Claude Code + 6 个其他 CLI 代理提供持久记忆:把项目、决策、人物存成 Obsidian vault 里的普通 Markdown,不用每次会话重新解释
- 与 Karpathy「LLM Wiki」的关键分歧:vault 会改写自己——每次摄入来源会更新 5–15 个页面,修正论断、替换过时事实,而不是只追加新页
- OKM(Open Knowledge Metabolism)新鲜度策略:慢变知识才入库,快变事实(计数、状态)改成「指向活来源 + as-of 时间戳」,配一个纯标准库的 linter 巡检
- 46 个命令分四层(Operations / Thinking / Context / Research);一套源码树经
build.sh编译出 7 个平台构建(Claude Code / Codex / Gemini / OpenCode / Hermes / Pi / 统一 Agent Skills) - 4 个定时代理(早/晚/周/健康)+ 一个默认关闭的后台代理;语义检索默认走关键词,可选 Ollama
bge-m3本地向量化;MIT,约 4.1k stars
相关:claude-obsidian:本地优先的 AI 第二大脑 · obsidian-skills 使用指南 · Claudian:把 AI 编程代理嵌入 Obsidian 的插件
一句话定位
obsidian-second-brain(github.com/eugeniughelbur/obsidian-second-brain)解决的痛点比「建知识库」更具体:别让代理每次都失忆。它把「项目、决策、人物」持久化成 Obsidian vault 里的普通 Markdown,让 Claude Code(以及 Codex、Gemini CLI、OpenCode、Hermes、Pi 等)在每次会话里自动带上这份记忆。
| 指标 | 数值 |
|---|---|
| Stars | 4,064 |
| Forks | 507 |
| Open Issues | 7 |
| Commits | 385 |
| License | MIT |
| 主语言 | Python |
| 维护者 | Eugeniu Ghelbur(Single Grain 的 AI Automation Engineer) |
| 定位来源 | Karpathy「LLM Wiki」模式 + 自我改写 |
与「LLM Wiki」的关键分歧:vault 会改写自己
这是它和同赛道项目(包括 claude-obsidian:本地优先的 AI 第二大脑)最本质的区别。Karpathy 原版是只追加(append-only):来源进来,生成新页,旧页不动。本项目则让每次摄入来源会触碰 5–15 个页面——实体页被更新、论断被修正、过时事实被替换,矛盾被自动调和。
由此派生出几个独有机制:
- OKM(Open Knowledge Metabolism):一条维护规范——「每个存下的事实要么是 timeless(不变)、要么是 dated(有日期)、要么是 pointer(指向活源)」。慢变知识才写入;快变事实(star 数、状态、进度)不复制进库,而是链接到活源并盖一个 as-of 时间戳。配套
scripts/freshness_lint.py(仅用标准库),由/obsidian-health调用。 - 双时态事实(bi-temporal):同时记录「这件事何时为真」和「vault 何时得知」,给「认知转变」留完整审计轨迹。
- AI-first 笔记格式:笔记是写给未来代理检索用的,不是给人读的——
## For future agent导言、强制 wikilink、每条论断带新近度标记、来源 URL 原文保留、置信度等级。 - 两输出规则(Two-Output Rule):回答一个问题,同时更新相关 vault 页面——「回答」和「沉淀」不分离。
- 哨兵标记(sentinel markers):
/obsidian-architect把生成内容写进<!-- @generated -->块,重跑只替换这些块,<!-- @user -->块里的人工编辑保留。
46 个命令,四层结构
| 层 | 数量 | 代表命令 |
|---|---|---|
| Operations | 28 | save、ingest(URL/PDF/音频/截图/YouTube)、synthesize、reconcile、daily、calendar、catchup、find、health、decide(带 --formal ADR 模式)、architect、create-command |
| Thinking | 9 | brainstorm(苏格拉底式)、challenge(用你自己的历史反驳你)、panel(多视角各给一个裁决)、emerge(从 30 天笔记里挖未命名模式)、connect(桥接两个无关领域)、distill(溯源到源块)、graduate(想法→带任务的项目) |
| Context | 1 | obsidian-world:按 token 预算渐进加载身份与状态(L0–L3) |
| Research | 7 | x-read/x-pulse(X/Twitter)、research(Perplexity 档案)、research-deep、notebooklm、youtube(含 --visual 抽帧)、podcast |
密钥门槛很务实:vault 命令全部无需 API key;research/research-deep 默认无 key(回退到 Wikipedia、HackerNews、arXiv、Reddit 等免费源,有 --free/--academic 开关);只有 x-read、x-pulse、notebooklm、youtube、podcast 需要各自服务商 key。
一套源码,七个构建
scripts/build.sh 从一个源码树编译出:
- Claude Code(斜杠命令 + CLAUDE.md)、Codex CLI(原生 Agent Skills)、Gemini CLI、OpenCode、Hermes(原生 skills)、Pi,以及一个统一的 Agent Skills 构建(一棵
.agents/skills/树,供 Antigravity / Codex / OpenCode / Copilot CLI 共用)。 - 推荐路径:
/plugin marketplace add eugeniughelbur/obsidian-second-brain+/plugin install,再在~/.claude/settings.json设OBSIDIAN_VAULT_PATH。
后台与调度代理
- 后台代理:在上下文压缩后触发(
PostCompacthook),无头claude -p运行。默认惰性关闭、需 opt-in——因为它用--dangerously-skip-permissions;工具面被钉死在 Read/Write/Edit/Glob/Grep,只增改、绝不删。 - 4 个定时代理:早晨(8 AM)、夜间(10 PM,五阶段整合)、每周(周五)、健康(周日)。
- 有界召回(opt-in):每个 prompt 前注入最多 4 条相关笔记(约 900 字符),置信度低时则不注入;每次注入/放弃决策都记录日志。
语义检索
- 开箱即关键词检索,零依赖;可选语义层走 **Ollama(
bge-m3,本地私有)**或任意 OpenAI 兼容端点。 - 实测(约 2,350 篇笔记):关键词 recall@10 = 1.0;改述问题 77%;多语言默认模型把非英语查询从 13% 拉到 63% recall@5。
- 索引增量更新,模型不可达时静默回退到关键词。
诚实的能力边界
- 开放模型(Hermes)跑核心命令还行,但「子代理密集的命令与深度合成类命令」很吃指令遵循——建议
hermes-4-405b或 Claude。 /podcast不支持 Spotify URL(DRM);单 vault 内无 per-vault 隔离(无--scope)。- 研究成本记到
~/.research-toolkit/usage.log,单次约:x-read ~0.13、research ~0.40–0.80、youtube/podcast ~$0.04。 - 后台代理的权限模型是明确告知的取舍:「不想接受这个取舍,就别开」。
与本库的关联
- 与 claude-obsidian:本地优先的 AI 第二大脑 是同一模式的两条路线:一个强调「事务化写入 + 来源存活」的可复现性;一个强调「自我改写 + 定时维护」的代谢性。前者像「审计友好的知识账本」,后者像「会自我打理的知识有机体」。若本库要引入 agent 自动化,两者是现成的对照参考。
- OKM 的新鲜度策略对本库有直接借鉴:本库
03-Resources/里也有大量「带数字的总结」(star 数、版本号)——正是 OKM 所说的「快变事实」。现在只靠ai: true标记来源,还没解决「过时」。后续若要加 freshness 巡检,scripts/freshness_lint.py的纯标准库写法可抄。 - AI-first 格式 vs 本库「一篇一个概念 + 人类可读」:本项目把笔记写死成给代理读的格式;本库走「AI 可检索 + 博客可发布」的双轨,更偏人机兼顾。二者取向不同,但
For future agent导言与> [!summary]是同一诉求的两种落地。