← 全部文章All posts

模型会换,你不会:我怎么搭一个所有 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 进库第一件事就是读它,它回答三个问题:

  1. 这是什么库,属于谁,有哪几个区
  2. 想做什么,该去哪:问以前聊过什么,去 conversations/;问某个判断,去 wiki/
  3. 不能做什么:哪些区只读,删文件要先问

为什么叫 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 做的事情是:把这些截图和视频按我为什么收藏它们分好类,转成文字,整理成卡片,放进这个库里。什么时候想处理都行,我只做判断:留什么,深聊哪个。

下载模板

下载知识库模板(zip,15 KB)

里面是这篇讲的全部东西:分好的文件夹、写好骨架的 AGENTS.md、对话导出脚本、STATUS.md 生成脚本,和让它们在每次开会话时自动运行的设置。一条我自己的内容都没有。

用法:

  1. 解压,把文件夹放到你想放的位置,改个名字。
  2. 用 Obsidian「打开文件夹作为仓库」打开它。
  3. 打开 AGENTS.md,把第 0 节换成你自己的一两句话。
  4. 在这个文件夹里打开终端,运行 claude。第一次会问你是否信任这个文件夹的设置,选信任。
  5. 第一句问它:「读一下这个库,告诉我你知道了什么。」

两个提醒:对话导出默认会把你所有的 Claude Code 对话都放进来,不想进库的项目,先写进 scripts/export_conversations.py 顶部的 SKIP。导出时会给常见的密钥格式打码,但不保证百分之百,所以这个文件夹别直接公开上传。

需要 Python 3。不用 Claude Code 也行:Codex、Cursor 会自动读 AGENTS.md。

Windows 也能用。 先去 python.org 装 Python,安装时勾上「Add python.exe to PATH」。装了 Git for Windows 的话什么都不用改;没装的话,按模板里 README 的说明换一份设置文件就行。

下一步

具体怎么一步步搭,下期视频会从一个空文件夹开始,完整演示一遍。