
这是什么
一个仓库同时是三样东西:一份讲「让 agent 维护知识库」的指南、一个复制就能用的起始 vault,以及负责归档的那些技能、命令与子 agent。它描述的循环很短——你把文章、视频或聊天记录丢进 raw/,agent 把它拆成 wiki/sources、wiki/concepts、wiki/entities、wiki/synthesis 下的原子页面,把每个新页面接进已有的那张网,顺手 lint 一遍自己写的东西,并且更新已有页面,而不是在旁边再堆一份。wiki 旁边是项目层:一个项目一个文件夹,各自带 CLAUDE.md 与 Inputs / Process / Outputs / Feedback 四段流水线,于是 vault 装你知道的东西,项目文件夹装你正在做的事。它发布 18 个技能、72 个斜杠命令、6 个子 agent,以及一个不依赖第三方库的 scripts/;整套东西跑在 Claude Code 和一个纯 markdown 的 Obsidian vault 上。MIT 许可,836 个星。
谁做的一个账号、一个仓库:38 次提交全部归到 GitHub 用户 undefined-ui 名下,只是作者名在这几次之间变来变去——undefinedKi 十九次、undefined-ui 十八次、Yarchi 一次——其中 37 次共用同一个邮箱地址,贡献者名单上再没有第二个人。19 次提交带着一条把 Claude Fable 5 写成共同作者的尾注。仓库在头三周里拿到 836 个星和 132 个 fork。
它是怎么搭起来的
组成 · 6组织思路是:真正耐久的东西是一个纯文本文件夹,围着它的一切都可以换掉,所以这个仓库交付的是一份契约,而不是一个程序。vault 被复制到位;它的规则写在 agent 会读的 CLAUDE.md 里;工作被描述成十八个技能,每个前面站着一个范围更窄的斜杠命令,外加六个子 agent,其中四个不能写;而普通笔记系统永远得不到的维护,被变成了一件可以排进日程的事。三条规则决定 agent 允许在库里留下什么——没链接的不算收入、矛盾只记录不解决、在语料提出要求之前不引入向量库——另一个决定则决定价值落在哪里:原料是没人再读的档案,真正被建造的是那个原子化、密集互链的 wiki。同一批 markdown 随后被编译成网站,于是这份指南既在讲这个模式,本身又是从纯文本语料里发布出来的一个实例。
- vault-template/
- 起始 vault,21 个文件:
CLAUDE.md(3,802 字节)与一份项目级的(654 字节);wiki/下分concepts/、entities/、sources/、synthesis/,加index.md(316)与log.md(132);projects/层里的示例项目跑Inputs / Process / Outputs / Feedback;raw/assets/、output/;以及四份 164 到 204 字节的页面模板,描述 agent 该写哪几种页面。 - skills/
- 十八个技能,一个工作流一个,每个只有一份
SKILL.md,别无他物:最大的是 ingest(3,491 字节),其后是 lint(2,710)与 review(2,200),最小的是 publish(1,689)。它们是这份指南组织能力的单位,而每个命令就是进入其中一个技能的范围收窄入口。 - commands/ 与 agents/
- 七十二个命令文件,143 到 448 字节——最大的是
install.md,最小的是health.md——加上六份 339 到 635 字节的子 agent 定义:curator、linker、graph-analyst、researcher、ingestor、reviewer,README 说其中四个是刻意设计成只读的。 - docs/
- 一个目录里装着三套写作:十个指南节,共 75 个 markdown 文件(其中十个是各节索引),从概念、安装,一路到摄取、结构化、图谱、agent、检索、产出、维护与排障;七个课程模块,每模块四个文件,另带 SVG 插图;五个手册 track,合计 49 个 markdown 文件。
docs/ROADMAP.md有 13,412 字节,是整个仓库里最大的一份单文档。 - plugins/ 与 .claude-plugin/
- 课程以 Claude Code 插件的形式发布:仓库根上的
marketplace.json(452 字节)、plugins/agents-course/.claude-plugin/plugin.json(502),旁边五个技能——harness-audit 3,474、gate-check 3,466、context-audit 3,251、evals-bootstrap 3,178、goal-test 3,057——外加一个 loop-critic 子 agent(1,753 字节)。 - scripts/、tools/ 与根目录上的 HTML
scripts/下六个不依赖第三方库的 Python 文件:build_tree.py16,772、build_tracks.py11,171、link_check.py3,861、chat_export_to_md.py3,286、graph_export.py3,118、vault_stats.py2,730——合起来覆盖查死链、导出图谱、转换聊天导出与统计;而指南会把这个目录复制进 vault,好让那些命令调得到它们。tools/另有build_site.py(22,560)与extract_site.py(5,463),而与它们名字对得上的三个 HTML 文件就放在仓库根上:index.html936,022 字节、tree.html55,475、resources.html35,254。
取舍,以及它替代了什么
只有新页面被链接上了,一次摄入才算结束 替代 先存下来、链接留到以后——或者干脆不链
这是三条规则里的第一条:“Nothing is ingested until it is linked. A page that lands unconnected is invisible within a week. Linking is the entire value, so it happens in the same run or the ingest is not finished.”
矛盾只记录,不解决 替代 让更新的来源覆盖掉原来那一页
“Contradictions are recorded, never overwritten. When a new source disagrees with a page, both positions stay, with dates and sources. The history of what you believed and why is the one thing your vault has that a search engine does not.”
拿结构化页面加链接当检索层 替代 从第一份来源起就架一个向量库
“No vector database until you need one. A personal corpus is small and already structured. Structured pages plus links answer questions that chunk similarity cannot, at zero infrastructure cost.” 至于这条线什么时候会变,它专门给了一页来讲门槛,而不是留给口味。
只用 markdown 文件、wikilinks 和
SKILL.md这几种格式 替代 把 Obsidian 或任何单一工具变成依赖“Obsidian is a viewer for the graph, not a dependency. If you walk away from every tool named in this repo, you keep the folder and everything in it.” 同一节也把适用范围写清楚了:它能配 Claude Code,也能配任何会读文件的 agent。
复制 vault 时把各层目录里的 README 删掉 替代 把仓库原样复制进 vault
一个带着理由的安装步骤:仓库里的 README 是「for reading on GitHub, not for the agent」。既然 agent 的上下文是从 vault 里读的,那些为人浏览 GitHub 而写的文件就被拿走,而不是留在原地让 agent 为它们付出代价。
依据README.md(19,042 字符,全文读完——包括 how it works 示意图、快速开始、设计决定、目录表与致谢一节),加上 recon 报告里完整的 322 个文件树及各文件体积。仓库里没有任何架构文档——recon 专门找过,没有找到——docs/ 下的页面也一份没读,所以以上内容全部来自 README 自己的表述,以及文件名与体积所显示的东西。
制作过程
5 个阶段- 01
23 天、一个账号,一半提交把模型署成共同作者
仓库建于 2026-09-07,当天 15:20:52Z 的第一次提交叫
initial,最后一次是 2026-09-29T15:30:38Z:23 天里 38 次提交,全部落在 2026 年 9 月,全部来自一个 GitHub 账号。release 与 tag 都是 0——版本史就是提交日志,仓库把 git 本身写成维护机制(docs/09-maintenance/versioning-with-git.md、docs/02-setup/git-and-sync.md),而不是靠打版本号。这 38 次的作者名并不统一——undefinedKi 十九次、undefined-ui 十八次、Yarchi 一次——但 37 次共用同一个邮箱,38 次也都被归到同一个账号,贡献者名单上只有这一个人。38 次里有 19 次带着一条把 Claude Fable 5 写成共同作者的尾注,也就是一半的提交史把一个模型署成了共同作者。周围是:836 个星、132 个 fork、7 个 watcher、1 个 open issue、2,668 KB、MIT 许可、默认分支main。提交之外只有三处动静,其中一处来自别人:cruelbites13 在 2026-09-24 开的 #3「Added secondary brain」,至今开着、零评论;作者本人在 2026-09-23 开了又关的 #2「est quickdraw」;以及同样是他本人在同一天关掉的 pull request #1「chore: normalise line endings via gitattributes」,旁边躺着一个 46 字节的.gitattributes。最新一条提交信息说的是课程与手册之间的契约、并把两边重复的内容拆开——38 次提交里的最后一件事是编辑层面的去重,不是写代码。 - 02
vault 才是交付物,而安装它的一部分动作是删文件
vault-template/一共 21 个文件,它才是你真正带走的东西:根上一份 3,802 字节的CLAUDE.md,projects/example-project/里还有一份 654 字节的;一个wiki/,下分concepts/、entities/、sources/、synthesis/,另有index.md(316 字节)与log.md(132);一个projects/层,示例项目带着Inputs / Process / Outputs / Feedback四段流水线,每一段都靠一个空的.gitkeep撑着;raw/assets/放你之后不会再读的原料;output/;templates/里四种页面类型——concept.md、entity.md、source.md、synthesis.md,各 164 到 204 字节。快速开始把「vault 该怎么建」写得很直白:克隆、cp -r vault-template ~/brain、把skills/、commands/、agents/、scripts/复制到位,然后按指南的原话把各层目录里的 README 删掉——它们是给人在 GitHub 上读的,不是给 agent 的:上下文卫生被写成了一个安装步骤。九步、一个晚上,每一步背后都有一整页。第四步是让 agent 反过来采访你、替你写出CLAUDE.md;第九步是把维护排进日程。结构本身写在docs/04-structuring/下:页面类型、链接规则、frontmatter schema、命名与别名、矛盾与替代——但这些页面的内容材料未覆盖,所以 schema 到底要求哪些字段、链接规则禁止什么,这份记录里没有。README 讲清楚的是这种形状为什么存在:wiki 装你知道的东西,项目装你正在做的事,两层互相喂养。 - 03
它怎么维护自己:技能、命令与只读的子 agent
「自己维护自己」是仓库描述里的那句主张,而它露在外面的表面积是一组给 agent 读的文件,不是一个一直跑着的服务。
skills/里是 18 个技能,指南里一个工作流一个,各只有一份SKILL.md,1,689 到 3,491 字节:ingest、chat-import、transcript、backfill、merge、lint、graph、metrics、query、report、write、publish、review、privacy、project、quiz、rename、changed-my-mind。commands/里是 72 个斜杠命令,每个 143 到 448 字节;把它们的名字连起来读,就是这套 vault 被期待对自己做的事:/lint、/health、/stale、/orphans、/dedupe、/merge、/prune、/review、/metrics、/weekly、/schedule、/contradictions。agents/里是 6 个子 agent——curator、graph-analyst、ingestor、linker、researcher、reviewer,各 339 到 635 字节——README 说其中四个是刻意设计成只读的,却没说清是哪四个。指南把 agent 相关内容放在docs/06-agents/:角色、hooks、定时维护、安全与护栏、子 agent、技能与命令;另有一节维护内容,讲 lint、复查节奏、git、隐私与规模化。快速开始的第九步正是「把维护排进日程,然后一觉醒来看到一个自己归好档的 vault」。日程究竟跑什么,材料未覆盖——scheduled-maintenance.md与hooks.md都没有读到——所以节奏、触发方式和写入范围在这里都没有记录。 - 04
整套东西压在三条主张上,以及它自己印出来的反方意见
README 把三条规则写成其余一切所依赖的主张。没有被链接的内容就不算被收入:落在库里却接不上任何东西的页面,一周之内就等于不存在,所以链接必须发生在同一次运行里,否则这次 ingest 就没有结束。矛盾只记录,绝不覆盖:两种说法都留下,各自带日期与出处;用它的原话说,你曾经相信什么、又为什么改主意,是这座 vault 唯一一件搜索引擎没有的东西。在真正需要之前不引入向量库:个人语料又小、又已经有结构,结构化页面加链接能回答分块相似度答不了的问题,而且零基础设施成本;至于什么时候 RAG 才配得上它的位置,另有一页专讲门槛。第四条主张是可迁移性——只用 markdown 文件、wikilinks 与
SKILL.md,Obsidian 只是图谱的查看器,不是依赖。血统写得很直白:LLM wiki 这个模式是 Karpathy 的,2026-04-04 以 gist 形式发布,这个仓库是它的一种实现,外加 gist 故意留白的那些部分。围绕它的阅读清单就是这套设计的研究来源:GraphRAG(arXiv:2404.16130)、HippoRAG(arXiv:2405.14831)、Lost in the Middle(arXiv:2307.03172)、Matuschak 公开的笔记、Ahrens 与 Forte。少见的地方在于,最强的那条反对意见就印在同一份文件里:如果写作本身就是思考,把它外包出去等于没有思考。 - 05
三个入口、一个插件,和仓库根上那个 936 KB 的页面
一个仓库里装着三个入口,而它最后一次提交处理的正是其中两个之间的契约。指南是十节——README 一处写 65 页、另一处写 77 页,而底下一共 75 个 markdown 文件。agent 课程是七个模块、每模块四个文件,框架建立在 Google 的 agent 白皮书与五个层次上:agent 看见什么、谁决定、谁分拣活、它能够到什么、你凭什么知道它行不行;它以 Claude Code 插件的形式发布,带自己的 marketplace 条目、五个技能、一个 loop-critic 子 agent,两条命令装完。手册是五个 track——知识图谱、Jev 工程、agent harness、循环工程、eval 工程——49 个 markdown 文件,每个 8 到 9 页,每一份都以一个一晚上能做完的动手构建收尾。发布这一侧具体得有点可爱:指南挂在
undefined-ui.github.io/second-brain-os上,而编译出来的站点直接提交在仓库根目录——index.html936,022 字节,旁边是tree.html与resources.html——这也是 GitHub 把这个仓库的语言标成 HTML 的原因。从外面能看见两处对不上:README 说仓库发布四个脚本,而scripts/下有六个 Python 文件;examples/被许诺为真实 vault 与真实产出,目前只有一个 README 和一个空的.gitkeep。CONTRIBUTING.md(978 字节)对贡献者提的要求,恰好也是 README 自己做到的那件事:每一条事实主张都要有第一手出处。
相关档案
全部档案 →第 129 号
Agents Universe
一套开源智能体平台,让同一个项目里的人共用一份上下文。项目选中时智能体把全部知识读进上下文,干活过程中再把学到的东西写回同一批文件;知识是磁盘上的 Markdown,数据库只做索引,没有嵌入模型,也没有向量检索。
第 124 号
AI Employees
八个开源 AI 员工,每个都是一份排班例程文件夹,独立覆盖一整个业务岗位。它们跑在你自己的机器上、用你已经在用的那个 agent:像你本人一样操作你已经登录的浏览器,把活儿起草好、填好、摆到最后一击之前,每跑一次都更懂你的生意,而它们碰过的每一份文件都归你。
第 116 号
Lemmalog
一个用 Rust 写的 Datalog 引擎,它把 agent 记忆当成演绎数据库,而不是一个更大的向量库。事实在抽取边界断言,分层规则推导闭包与时态视图,每条派生事实都带着回到来源 episode 的溯源,派生视图按 epoch 增量维护,并以十二个 MCP 工具的形式交给 Claude Code 与 Kimi CLI 使用。