AI 工作为什么需要记忆界面
我们最早的设计把一切都记进事件日志。后来笔记里写的是一回事,日志里写的是另一回事。
BaseHalf 最早的设计非常整洁。每一次改动,不管来自人还是 Agent,都要经过一组固定的命令。每条命令往一份只增不改的日志里写一个事件,其他一切都能从这份日志重建。唯一的事实来源,完整的历史,什么都藏不住。
我们把它扔了,原因有两个。
Agent 有自己的工具。Claude Code 用自己的编辑命令改 Markdown 文件,要它把每次改动都绕到我们的命令上,这种麻烦我们根本没法强制。
人相信文件。笔记里写的是一回事,日志里写的是另一回事,你会信笔记。我们所谓的唯一事实来源,成了摆在你真正能打开的那份事实旁边的第二份事实。
于是文件成了事实本身,BaseHalf 和其他工具一样去读它们。后来的大部分设计,都是从这个决定长出来的。
连接也走了同样的路
连接原先存在隐藏的元数据里,而且两头都存:A 的记录说它流向 B,B 的记录说它来自 A。两边迟早对不上,所以我们又做了显示断裂配对的界面,还有修复和丢弃的按钮。
九月,我们把每条连接都搬进了用到它的那篇笔记,只存一次,写成文件开头的一个列表,就像源文件列出自己的 import。你可以读它、搜它、提交它,也可以手动改。Agent 打开笔记就能看到,不用谁告诉它。那套修复机制也跟着没了,因为再也没有什么可以对不上。
看得见的记忆能带来什么
AI 产品喜欢承诺模型会记住你,它也许真能记住。但你看不到它记了什么,也就说不清这个回答受了哪条记忆的影响,改不了记错的那条,更没法把它交给同事。
一份记忆要算得上“界面”,我们看三条很朴素的标准:
- 你能打开它,读它。
- 你能改它,改了就算数。
- 生成它的应用关掉之后,它照样有用。
一张由你自己的文件组成的画布符合这三条。关掉 BaseHalf,笔记、它们的连接和描述都还在,git、别的编辑器和任何 Agent 都用得上。聊天记录再长也不符合:它什么都留着,却说不出哪些还算数。
看得见的记忆也让遗忘变得容易。一条过时的假设单独放在一篇笔记里,改写或断开都不会碰到别的东西,下一个读这个文件夹的 Agent 自然也就读不到了。