ENZH
和 AI 讨论这篇文章
ChatGPTClaude

我造了个知识编译器,让 AI 自动帮我写 wiki

每天刷的文章、论文、技术博客挺多的。读的时候觉得这个洞察真好,三天以后就只剩个大概了,再过一个月,基本整个都想不起来。我以前的工作流是读完就收藏,结果收藏夹里堆了 500 篇,一篇都没再打开过。讲道理,收藏这个动作基本等于扔了,只是心理上好受一点。

Karpathy 说过一个做法,我觉得很对:维护一个自己的 wiki,把读到的所有东西都喂进去,让条目互相引用,一直往上垒。这种 wiki 是越喂越聪明的,因为有复利:每加一篇新文章,不只是多一个条目,它还会顺手更新五个已有页面、加两条新的交叉链接,一些你之前没注意到的关联就这么连出来了。

问题是手动维护这个东西真的太累了。读完要总结,要找相关的 wiki 页面,手动加引用,再更新索引,搞下来比读原文还花时间。所以我写了 Cortex。我脑子里的模型大概是这样的:obsidian 负责浏览和阅读,相当于 IDE;LLM 干的是编译器的活,读源材料、写 wiki;编译出来的 wiki 一直在增长、重构、攒复利,就是那个代码库。

把知识管理映射成编译流程:Obsidian 当 IDE、LLM 当编译器、Wiki 当代码库把知识管理映射成编译流程:Obsidian 当 IDE、LLM 当编译器、Wiki 当代码库

Cortex 里面其实没有任何 LLM 代码,没有 api key,prompt chain、embedding 这些也都没有。它就是一个 MCP 服务器,提供 5 个文件读写工具,claude code 通过这 5 个工具去读源材料、写 wiki。编译逻辑本身写在一个 markdown 文件里。这个文件教 AI 怎么组织知识:什么时候该新建条目,什么时候更新旧条目,怎么引用来源,什么样的概念值得单独开一页。想改编译方式,改这个 markdown 文件就行,不用改代码,也不用重新部署。感觉这个事更像是在配置 AI 该怎么干活,写代码的部分反而是最少的。


用起来具体是这样的:往 obsidian vault 的 inbox/ 里丢链接或者文件,下次打开 claude code,hook 会自动提醒:"[Cortex] inbox/ 里有 3 个文件等着处理。"然后 claude code 自动跑三步:

  1. Ingest:读源文件(URL 通过 Jina Reader 转成 markdown),生成元数据,存进 sources/
  2. Compile:读源文件,决定创建还是更新哪些 wiki 文章,加上 [[wikilinks]] 和来源引用
  3. Index:更新总索引,记录操作日志

这些在 obsidian 里都是实时能看到的:新文章冒出来,交叉引用跟着刷新,你就看着这个 wiki 一点点变大。

整个项目我刻意做得很小,一共就 15 个源文件,5 个依赖,连数据库都没有,每个决定都是有意的。不用数据库是因为真的不需要:manifest 就是一个 JSON 文件,索引是 markdown,日志是只追加的 markdown。整个状态人可以直接读,直接放进 git,版本控制、备份、迁移全是白送的。

搜索我也没自己做,交给了 qmd,Shopify 创始人 Tobi Lutke 写的一个专门搜 markdown 的 MCP 服务器。Cortex 负责写,qmd 负责读,两个 MCP 服务器各干一件事。编译流水线也直接省掉了,DAG、任务队列、build system 这些一个都没用。LLM 读 schema,调那 5 个工具,所谓的流水线其实就是 agent 自己的推理过程。这个设计还有个好处:模型升级了,文章质量跟着升级,代码一行不用动。

服务器本身只暴露五个工具,全部是文件操作。怎么用这五个工具,是 schema 和那个 markdown 文件教的:

工具做什么
cortex_ingest读 URL 或文件,提取内容,存为 source
cortex_write创建或更新 Wiki 文章,自动更新索引
cortex_diff显示 inbox 里有什么、哪些还没编译
cortex_log往操作日志里追加记录
cortex_status返回 vault 统计(source 数、文章数、最后活跃时间)

架构上我最满意的一个决定:source 不可变,wiki 可变。source 一旦写进去就永远不改,这样我读过什么,永远留着一份原始记录;wiki 文章就一直更新,加新的交叉引用,总结随着相关 source 变多越写越完整,过时的结论也会被修掉。这样证据和推理是分开的:wiki 里每句话都能追溯到某个 source;source 有问题,就去更新引用它的 wiki 文章,source 本身不动。

source 只读不改是证据,wiki 一直更新是推理,wiki 每句话都能虚线回溯到某个 sourcesource 只读不改是证据,wiki 一直更新是推理,wiki 每句话都能虚线回溯到某个 source

用了一段时间,最惊喜的事发生在喂了 50 篇 source 之后:一些我没让它写的文章开始自己冒出来。AI 发现了跨 source 的主题,自动写 synthesis 文章,把分散在不同来源里的相关洞察连到一起,这已经不是「一篇 source 对应一篇 wiki」的机械映射了。复利大概就是这么体现的:每篇新 source 都能跟已有的全部知识连上,攒得越多,新喂进去的一条能连上的点就越多,价值差不多是按指数往上走的,反正不是线性的。

每喂一篇新 source 就能连上已有的全部知识,还自动冒出 synthesis 文章,价值按指数往上走每喂一篇新 source 就能连上已有的全部知识,还自动冒出 synthesis 文章,价值按指数往上走


想试的话,一行命令初始化:

npx cortex-kb init ~/my-wiki

再把 MCP 服务器注册到 claude code,往 inbox 丢链接就行。代码在 github.com/xingfanxia/cortex,现在是 Phase 1,核心循环已经跑通,我自己每天都在用。这个东西没有 UI,没有设置页,也没有仪表盘,就是 5 个 MCP 工具加一个 markdown 文件,剩下的全交给 obsidian。

和 AI 讨论这篇文章
ChatGPTClaude
AI 随想第 23 篇 · 共 28 篇

订阅更新

新文章发布时发到你的邮箱,不发别的。


© Xingfan Xia 2024 - 2026 · CC BY-NC 4.0