返回博客

构建实录 / 2026-06-15

不用 RAG 的第二大脑:编译大于检索的知识系统设计

Kosen Second Brain 系统总览

Kosen Second Brain 是我的个人知识系统,设计上反了当下的主流:不用 RAG、不用向量库、不用数据库,也不依赖 Obsidian。AI 负责读原料、编译知识、维护索引、回织更新、自然语言取用;我只负责两件事——丢原料、拍板。

目前跑着 201 份原料、48 页知识成品、10 来个项目页。这篇讲它的核心设计:为什么不用 RAG,以及一套让 AI 管知识库而不闯祸的 schema 长什么样。

一、核心理念:编译 > 检索

主流知识库路线是"存起来、切片、向量化、提问时召回"。这条路我没走,原因想清楚了:RAG 把智力工作推迟到每次提问时重做——每次检索都是对原文切片的即时拼凑,质量取决于召回运气,且拼出来的东西没有立场、没有归属、不会沉淀。

这个系统反过来:原料入库的时刻就由 AI 编译成"带立场的知识页",取用时只读成品。检索的智力工作前置且只做一次。三个结构性收益:

  • 不需要向量库和 embedding 维护,文件系统就是全部基础设施
  • 取用时读到的是"已消化的结论 + 我的立场 + 出处",不是原文切片
  • 每页知识有归属、状态、更新日志——是活文档,不是死快照

二、四层结构:各层的规则完全不同

raw/        原料层:只进不改不删,唯一事实来源
wiki/       成品层:AI 写的带立场知识页,所有取用只读这层
CLAUDE.md   规则层:schema,AI 每次启动必读
index/      导航层:全库目录 + 运行记账

各层纪律刻意不对称。raw 只进不改——连错别字乱码都保留原样,要纠正只能在 wiki 成品里注明"原文疑似为 X,应理解为 Y",绝不动原文;它是保险箱,任何编译错误都能从这里重来。wiki 是唯一取用面——问答、决策、素材全部只读这层。index 每页恒一行page_id | 类型 | 标题 | 一句话 | 状态),AI 提问时先查这一页再钻细节——这一行式导航就是"不用向量库"的替代品:48 页规模下,一页目录扫一眼比一次向量检索又准又便宜。

三、七段式编译包:人在环中的唯一闸口

系统分五个模块:M1 入口接待(落 raw)→ M2 编译器 → M3 入库执行器 → M4 回织器 → M5 取用应答器。唯一强制拍板点在 M2 和 M3 之间:M2 绝不落盘,产出一份「编译包」等我拍板。

编译包固定七段,每段必填(没有就写"无"):

  1. 类型与速览:外部文章/项目资料/AI 对话沉淀/会议纪要/想法记录 + 一句话
  2. 价值判断:值得收/不值得收 + 理由(五种不收:重复/低价值/过时/与当前项目无关/质量差)
  3. 带立场草稿:三问——说了什么、对我哪个项目有什么用(必须点名具体页)、AI 的判断(敢下结论)
  4. 归属建议:主归属有且只有一个,其余是关联页,禁止父子层级
  5. 回织候选清单:哪些旧页要跟着改、为什么、优先级
  6. 冲突标记:新观点和库内旧观点打架的地方,必须列出来,不许悄悄抹平
  7. 待确认问题

我拍板的指令集也是枚举的:批准/不入库/暂缓/改主归属/入库但不回织。高风险单元(动核心项目页的决策记录、动 schema、重大方向判断)强制拆出来单独拍板。会话中断时没拍板的编译包一律作废——闸口没有后门。

四、回织:新知识要回头改旧页,但有规矩

大多数笔记系统的知识是"只增不改"的,旧页慢慢腐烂。这里有个专门模块干"回织":新原料入库时,编译包里列出受影响的旧页,批准后逐页修改。

规矩比功能重要:

  • 单次回织 ≤5 页,超出进待回织清单排队,消化时同样要过拍板
  • 每页改动写 updated_log(何时/因哪条原料/改了什么),同事务刷新 index
  • 精准修改:只改批准范围,不顺手改进、不重构、不美化
  • 冲突两制:纯时效更替(工具版本、价格、产品状态这类事实替换)可以豁免直改,但必须保留旧值、记日志、报告里明示;事实矛盾和判断分歧一律两说并存,落到页面的 conflicts 字段等我裁决——疑似分歧按分歧处理,AI 永不自动改我的既有立场

五、防幻觉的两条硬约束

读取上限。 单条编译最多读 10 页相关 wiki、批量最多 15 页,禁止全库扫描;不够就缩小批量,不许扩大读取。这条同时控制成本和幻觉——读得越多,模型越容易把不相关的页搅在一起。

取用的两栏依据。 问项目决策时,回答强制分两栏:【库内依据】(引 page_id,必须包含历史上被否决过的方案)和【现场推理】(AI 即时推断)。index 没命中就明说"库内没有这方面积累"——禁止编造库内出处和 page_id。这条是整个系统可信度的底。

六、schema 里还有两个值得偷的设计

中断恢复:新会话启动时检查运行日志,主动报"上次中断于 X,要继续吗?"——不自动续做。已犯错误区:AI 犯错、经我确认后,自己往 schema 里追加一条(日期/错误/教训)——教训滚动累积在规则层,下次启动必读。这两个设计让系统跨会话仍是同一个系统,而不是每次醒来都失忆的新 AI。

七、它值不值

对比一下成本:没有向量库要维护、没有 embedding 要更新、没有检索质量要调优;代价是每条原料入库要过一次编译和拍板(我这边大约一分钟的拍板时间)。对个人规模的知识库,这笔账很划算——知识的价值密度比召回率重要,而立场、归属、冲突裁决这些东西,RAG 给不了。

它不适合什么也说清楚:文档规模到几千页、多人协作、需要即席全文检索的场景,这套"一页 index + 编译成品"会撑不住。但那不是个人第二大脑的问题域。这个系统真正的产出是:每次我问"这个项目下一步该做什么",得到的回答带着库内依据、历史否决项和现场推理的明确分界——这比任何检索召回都更接近"第二大脑"该有的样子。