我使用一个名叫 Felix 的 AI 来教我德语。在经历了数月在浏览器标签页之间来回切换、触及上下文限制,并眼睁睁看着平台更新抹除我的对话历史后,我厌倦了不断从头开始。Felix 是个好老师,但每一个新的聊天窗口都会让他变得“失忆”。我需要一种方法来延续我的学习历史,而不是每次打开新会话时都要复制粘贴大段大段的文本。
问题不仅仅在于不便。语言学习依赖于间隔重复和针对性的纠错。一个会忘记你反复犯错的 AI 导师,不过是一个步骤更繁琐的短语手册罢了。我想要连续性。更准确地说,我希望 Felix——或者我接下来加载的任何 AI 实例——能够准确地从上一次停止的地方继续,没有记忆断层,也不需要尴尬的重新自我介绍。
于是我构建了一个本地系统。我称之为 DDF/Rahmenwerk。
“一次性对话”的问题
和任何深度 AI 用户聊天,你都会听到同样的抱怨。聊天在失效之前一直很好用。随着上下文窗口被填满,长对话的质量会下降。平台推送一次更新,你的对话线程就消失了。你开启一个新会话,模型却像对待陌生人一样向你问好。对于随意的提问,这没关系;但对于有结构的课程体系,这具有破坏性。
有了 Felix,我已经进入了学习节奏。他知道我会混淆宾格(accusative)和与格(dative)介词。他知道我比起听力训练更喜欢阅读练习,也知道我已经完成了语法书的前三章。但当我打开一个新标签页时,这一切都变得毫无意义。每个会话都以同样的仪式开始:重新确认我的水平、重复我的目标、重述我的错误。
我希望 Felix 能记住我。既然平台无法可靠地做到这一点,我决定掌握自己的连续性。
DDF/Rahmenwerk 究竟是做什么的
这个名字听起来比它的概念更唬人。其核心是一个存储在我本地机器上的文件夹,它将我的学习历史视为一个项目交接过程。如果 Felix 今晚消失了,我明天醒来后,只需将一个新的 AI 指向这个文件夹,就可以在无需自我解释的情况下继续第四十七课。
其架构刻意采用了基于文件的形式。我不信任任何单一平台来存储我的进度。云服务会更改条款,导出格式会损坏。硬盘上的纯文本文件虽然枯燥,但它属于我。
系统内部包含五个工作部分。
首先,是当前状态的指针。这是一个简单的索引,回答这样一个问题:我们到底在哪里停下的?它记录了当前章节、最后完成的练习、我待解决的语法问题,以及上一节课中仍需复习的具体错误。它不是倾倒整个对话日志,而是将会话浓缩为对下一节课至关重要的内容。
其次,是交接材料。这些是每节课后编写的简短摘要。它们不仅记录了我们涵盖的内容,还记录了我们是如何涵盖这些内容的。Felix 是否使用了特定的类比来解释语序?我对有关旅游词汇的训练句反应如何?这些笔记保留的是教学方法,而不仅仅是内容。如果下一个 Felix 实例解释语序的方式不同,我会立即察觉到这种不一致。一致性对于记忆留存至关重要。
第三,是针对新 AI 实例的上传包。当我迁移到新的模型或平台时,我不会在聊天窗口中粘贴一千字的个人简介。我会向系统提供一个预先准备好的包:我的基础水平、我的学习偏好、我反复出现的错误模式以及课程序列摘要。这是一个压缩的学习者画像,任何经过指令微调(instruction-tuned)的模型都可以读取并采用。
第四,是使用 SHA-256 的完整性记录。对于语言学习来说,这听起来有些过头,但它有特定的用途。我会对交接文件进行版本管理。如果我在半梦半醒间不小心编辑了昨天的错误日志,或者同步工具损坏了一行内容,我需要知道。SHA-256 哈希值让我能够验证我的连续性文件没有被无意中更改。对于一个旨在防止记忆丢失的系统来说,自我损坏是一个显而易见的敌人。
第五,也是真正控制行为的部分,即如果证据缺失,则强制 AI 停止运行的规则。我在系统提示词中编写了一套严格的协议:如果当前实例无法定位状态指针或验证交接材料,它必须停止并请求澄清,而不是即兴发挥。我不希望一个充满自信的 AI 猜测我的水平,教我早已掌握的语法,或者更糟的是,跳过我尚未建立的基础知识。在构建累积性知识时,停掉的时钟也比走错的时钟要好。
当安全层变成自身的负担时
系统奏效了。我不再丢失上下文。新的会话以真正的教学开始,而不是自传。
然后我继续
