📋 核心要点
  • 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-braingithub.com/eugeniughelbur/obsidian-second-brain)解决的痛点比「建知识库」更具体:别让代理每次都失忆。它把「项目、决策、人物」持久化成 Obsidian vault 里的普通 Markdown,让 Claude Code(以及 Codex、Gemini CLI、OpenCode、Hermes、Pi 等)在每次会话里自动带上这份记忆。

指标数值
Stars4,064
Forks507
Open Issues7
Commits385
LicenseMIT
主语言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 个命令,四层结构

数量代表命令
Operations28saveingest(URL/PDF/音频/截图/YouTube)、synthesizereconciledailycalendarcatchupfindhealthdecide(带 --formal ADR 模式)、architectcreate-command
Thinking9brainstorm(苏格拉底式)、challenge(用你自己的历史反驳你)、panel(多视角各给一个裁决)、emerge(从 30 天笔记里挖未命名模式)、connect(桥接两个无关领域)、distill(溯源到源块)、graduate(想法→带任务的项目)
Context1obsidian-world:按 token 预算渐进加载身份与状态(L0–L3)
Research7x-read/x-pulse(X/Twitter)、research(Perplexity 档案)、research-deepnotebooklmyoutube(含 --visual 抽帧)、podcast

密钥门槛很务实:vault 命令全部无需 API keyresearch/research-deep 默认无 key(回退到 Wikipedia、HackerNews、arXiv、Reddit 等免费源,有 --free/--academic 开关);只有 x-readx-pulsenotebooklmyoutubepodcast 需要各自服务商 key。

一套源码,七个构建

scripts/build.sh 从一个源码树编译出:

  • Claude Code(斜杠命令 + CLAUDE.md)、Codex CLI(原生 Agent Skills)、Gemini CLIOpenCodeHermes(原生 skills)、Pi,以及一个统一的 Agent Skills 构建(一棵 .agents/skills/ 树,供 Antigravity / Codex / OpenCode / Copilot CLI 共用)。
  • 推荐路径:/plugin marketplace add eugeniughelbur/obsidian-second-brain + /plugin install,再在 ~/.claude/settings.jsonOBSIDIAN_VAULT_PATH

后台与调度代理

  • 后台代理:在上下文压缩后触发(PostCompact hook),无头 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.05xpulse 0.05、x-pulse ~0.13、research ~0.04researchdeep 0.04、research-deep ~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] 是同一诉求的两种落地。

来源