模型会换,你不会:我怎么搭一个所有 AI 都能读的知识库Models change, you don't — a knowledge base every AI can read
This post is in Chinese.
上个月我重装了 Claude 的桌面 app。重装完才发现,我写给它的全局规矩、它攒下的关于我的记忆,全没了。
但这件事没有变成灾难。我让新会话去读知识库里的对话记录,不到五分钟,它就把我说过的规矩一条条找了回来,重新写好。从那天起我更确定一件事:关于我的东西,不能存在某一家 AI 的记忆功能里。
这篇讲我是怎么搭的。不需要会写代码,核心只有四样东西。文末有一个可以直接下载的模板。
它是什么
一个普通的文件夹,里面全是 markdown 文件,用 Obsidian 打开。
没有数据库,没有云服务,没有账号。Claude、Codex、Cursor、DeepSeek,任何一个能读文件的 AI 都能读它。换模型的时候,知识库不用动。
第一样:分区
按「谁写的、能不能改」分文件夹,而不是按话题分。我的库大概是这样:
| 区 | 装什么 | AI 能不能改 |
|---|---|---|
wiki/ |
整理过的知识:概念、人物、判断、成文 | 能读能写 |
wiki/Decisions/ |
我自己的判断和原话 | 只能追加 |
conversations/ |
和 AI 的对话原文,自动导出 | 只读 |
Videos/ |
收藏的视频,转成文字 | 只读 |
Projects/ |
每个项目自己的产出 | 看项目 |
attachments/ |
截图原图 | 只读 |
分清「原材料」和「加工品」最重要。原材料永远不改,要整理就写到 wiki/ 里。这样 AI 整理错了,原件还在。
第二样:根目录的 AGENTS.md
这是整个库最关键的一个文件。AI 进库第一件事就是读它,它回答三个问题:
- 这是什么库,属于谁,有哪几个区
- 想做什么,该去哪:问以前聊过什么,去
conversations/;问某个判断,去wiki/ - 不能做什么:哪些区只读,删文件要先问
为什么叫 AGENTS.md?这是一个跨工具的约定,Codex、Cursor 都会自动读它。Claude Code 只认 CLAUDE.md,所以我在旁边放一个只有一行的 CLAUDE.md:
@AGENTS.md
规矩只写一份,所有 AI 读到的是同一套。
一份能用的骨架长这样:
# 我的知识库 · Agent 入口
> 任何 agent 进来,按「本文件 → STATUS.md → 子区 AGENTS.md → 目标文件」的顺序走。
> 不要全库搜索摸结构。
## 0. 这是什么
(一两句话:谁的库,记什么)
## 1. 区域地图
| 区 | 装什么 | 谁写 | agent 权限 |
|---|---|---|---|
| wiki/ | 整理过的知识 | AI | 读写 |
| wiki/Decisions/ | 我的判断和原话 | 我 | 只追加 |
| conversations/ | 对话原文 | 导出脚本 | 只读 |
## 2. 按意图路由
| 用户在干什么 | 去哪 |
|---|---|
| 问「我们之前聊过 X 吗」 | conversations/ |
| 问某个判断 | wiki/ |
## 3. 铁律
1. 原材料只读,要整理就写到 wiki/
2. 删除或改名任何文件先问我
3. 我的原话只追加,不改写
4. 找不到就说「没有」,并列出查过哪几层
不用一次写全。我的这份是三个月里一条条长出来的:AI 每翻一次车,我就补一条规矩。
第三样:对话记录自动导出
这是「换模型也能接上进度」的关键。
我和 AI 的每次对话,都会被一个小脚本导出成 markdown,放进 conversations/。脚本挂在 Claude Code 的 SessionStart 钩子上:每次开新会话,它先把上一次的对话导出来。导出时会剥掉工具调用这类噪音,也会把密钥打码。
于是任何一个新模型,只要读一下最近的对话,就知道我昨天做到哪了、为什么这么做、哪些方案被我否掉了。我不用再从头介绍自己。
第四样:STATUS.md
一个由脚本生成的「库的现状」:最近写进了什么、还有哪些东西没处理。AI 进库读完 AGENTS.md 就读它,一眼知道最近发生了什么,不用全库翻。
这个文件不让 AI 手改,只由脚本重建。记账这种活交给脚本,比交给模型稳。
三条翻车换来的规矩
原话只追加,不改写。 AI 很喜欢「润色」你的判断。润色完,那就不是你的判断了。新旧冲突时加一条带日期的新的,旧的留着。
找不到就说没有。 AI 找不到东西时,会拿一个相近的凑数。这比答「没有」危险得多,因为你会信。
改完规矩做一次冷启动自检。 开一个全新会话,什么背景都不给,问三四个问题,看它是不是先读 AGENTS.md 再按路线去找。其中一定要有一个库里肯定没有的问题:它必须答「没有」。一个从来不会说「没有」的检索,和没有检索一样危险。
一个提醒:结构好搭,用起来难
我自己踩过这个坑。结构越搭越漂亮,但真正回头去读、去聊、去产出的东西很少。
所以我的建议是:先用最小的骨架跑起来。分区加 AGENTS.md 加对话导出,下面的模板里都有,解压就能用。剩下的规矩,等用到了、翻车了再加。
DanOS 在这里做什么
知识库要有用,就得不断有新东西进来,而且是消化过的东西,不是一堆收藏。
我每天截很多图,也收藏很多视频。DanOS 做的事情是:把这些截图和视频按我为什么收藏它们分好类,转成文字,整理成卡片,放进这个库里。什么时候想处理都行,我只做判断:留什么,深聊哪个。
下载模板
里面是这篇讲的全部东西:分好的文件夹、写好骨架的 AGENTS.md、对话导出脚本、STATUS.md 生成脚本,和让它们在每次开会话时自动运行的设置。一条我自己的内容都没有。
用法:
- 解压,把文件夹放到你想放的位置,改个名字。
- 用 Obsidian「打开文件夹作为仓库」打开它。
- 打开
AGENTS.md,把第 0 节换成你自己的一两句话。 - 在这个文件夹里打开终端,运行
claude。第一次会问你是否信任这个文件夹的设置,选信任。 - 第一句问它:「读一下这个库,告诉我你知道了什么。」
两个提醒:对话导出默认会把你所有的 Claude Code 对话都放进来,不想进库的项目,先写进 scripts/export_conversations.py 顶部的 SKIP。导出时会给常见的密钥格式打码,但不保证百分之百,所以这个文件夹别直接公开上传。
需要 Python 3,macOS 自带。不用 Claude Code 也行:Codex、Cursor 会自动读 AGENTS.md。
下一步
具体怎么一步步搭,下期视频会从一个空文件夹开始,完整演示一遍。