
290 次会话、13 条教训:AI 智能体自己教会了自己什么
我们的 AI 智能体每晚回顾自己的工作,记下学到的东西。复盘 290 次会话后,有 13 条教训通过检验,我们保留了其中 6 条。这里讲讲它们发现了什么,以及这些发现到底值多少。
多数早晨,我打开终端,最上方都会出现一条教训:运行你写的测试,并在说自己完成之前报告通过还是失败。
我们团队没人写过这句话。它是一个 AI 智能体在夜里写的。当时,它读了一天自己的工作,发现自己总是写完测试却不运行。
人们把这叫作递归自我改进(RSI)。听起来像是一篇讨论世界末日的论文。实际做起来,更像音乐家在演出后听录音:你听出某一段演奏得太快,记下来,第二天就会稍微慢一点。
从九月中旬起,我们就在自己的机器上运行这个循环。我读到的多数关于 AI 智能体递归自我改进的文章,都在讲它将来可能做到什么。这篇讲的是我们的智能体到目前为止实际做了什么。
这个循环如何运作
Sno Station 每天运行一次。步骤很简单。
它收集 Claude Code 和 Codex 当天的会话。每次会话都会得到两个简短标记:值不值得保留,以及成功还是失败。保留下来的会话交给一个负责判断的模型,它寻找学到东西的时刻。通常是人纠正了智能体;有时是智能体自己发现了问题;有时则是环境给了它一个教训。
对于每个这样的时刻,判断模型会写出一条包含四部分的教训:触发它的情境、建议、原因,以及从会话里逐字引用并标明出处行的证据。
接着,教训必须通过两道关。
第一道是机械检查。教训引用的每一句话,每个字符都必须与其声称来源的会话一致。如果引用根本不存在,这条教训就会被丢弃。第二道由另一个模型负责,它唯一的任务就是提出质疑。它根据证据给教训的每句话打分。说得比证据能支持的更多,就过不了关。
最后轮到人。我读完剩下的教训,决定保留还是不保留。
通过检验的教训,会在之后的会话开始时展示给智能体,每条一行,帮助最大的排在最上面。如果某条看起来相关,智能体可以打开全文。
最后得到了什么
下面这些数字来自我们构建机器上的循环记录。
它收集了 1,879 次会话,其中 290 次送去判断。13 条教训通过了两道关。我保留了 6 条。另外 7 条还在那里,等我决定。
290 次会话,13 条教训。这个比例起初让我吃惊。后来想了想:你自己有多少天的工作,值得写下来贴在墙上?大多数日子就只是普通日子。
教训本身也很小。说实话,我原本期待的是更宏大的东西。下面三条按智能体写出的内容引用。
在 npm 工作区中用 git mv 重命名包或目录后、运行验证之前,明确检查每个包中被 git 忽略的构建输出目录(dist/、build/、out/)是否留有旧文件。移动或删除这些文件。
在编写补丁的每个修改块之前,读取目标位置的确切行范围,取得原样的上下文。绝不要复用此前读取同一文件时被截断的内容中的标识符或语法。
在明确的契约或限定范围的测试证实某项功能不存在之前,把它标为“查阅的资料中未记载”。
第一条在发生的那天让我们损失了一整个下午。一个包改了名,源代码全都正确,但安装一直失败,因为旧的编译文件还躺在一个 git 不会查看的文件夹里。第二条则是智能体每周能干上四十次的事:它大致记得文件写了什么,就凭记忆写补丁,而不去对照文件。
第三条是我最喜欢的。一个智能体在比较产品时,没有在竞争对手的文档中找到某项功能,于是报告说对方没有这项功能。没有提到,不等于不存在。这条道理我也得教给人。
这些是资深工程师不知不觉随身带着的经验。吃过亏留下的印记。区别在于,智能体每次开始会话时,身上一点这样的印记都没有。
它到底值多少
我还说不准这些教训到底有多大帮助。
这些教训在 5,595 次会话开始时展示过。智能体完整打开一条教训的次数是 135,大约占 2%。因此,要么一行版本已经做了大部分工作,要么这些教训根本没起作用。我不总能分清是哪一种。
这个循环也会检查自己的结果。展示教训之后,它会问智能体是否照做,以及照做是否有帮助。到目前为止,明确回答“照做了,而且有帮助”的有两次,都是同一条教训。另外七次的结果不明确。
至于我终端最上方那条关于运行测试的教训呢?它生效后,智能体有时还是会跳过测试:12 次会话中有 4 次没运行。生效前是 119 次中有 22 次。样本太小,不能说情况变差了。当然,也远不足以说情况变好了。
所以我现在不知道。这是实话。如果今天非要我给它估个价,我会说,保留下来的每条教训能避免一次错误,而这种错误会耗掉十分钟到一个下午;同样的六种错误又足够常见,所以这些教训有意义。有一晚判断 193 次会话,花了大约五十美分。即使我高估了价值,代价也不大。
我更相信的东西,比测量结果要朴素。我认得这些教训。读到它们时,我会想:对,这事确实发生了;对,这也是我会告诉智能体的话。
哪里出了问题
这个循环本身也需要接受它给智能体的那种检查。
早期的一个缺陷让教训草稿绕过第二道关,完全没有经过检查。我们把这些草稿全都扔掉了。上面的数字只包括走完全部流程的教训。
我们还把这个循环做得太谨慎了。金丝雀测试、哈希检查、崩溃恢复。有一晚,我们从中删掉了 724 行这样的代码,它反而运行得更好。一个为了从错误中学习而建的系统,被一层防护包住,防的却是它从没犯过的错误。
随后在九月底,这个循环没了动静。一个设置文件不见了;它每晚醒来,发现没有任何允许发送的内容,就又睡了回去。它这样持续了一周,才有人发现。一个凌晨三点悄无声息地失败的东西,很难让人喜欢。
这件事现在也列在清单上了。也许它该变成一条教训。
接下来呢
十三条教训不等于智能体重写了自己。它只是一本笔记。一个月前,我们的智能体周二会犯和周一一样的错误,而且完全不记得这两次。
有些早晨,提醒明明摆在那里,测试还是没跑。
Sno Station 是开源的,每晚回顾也是其中的一部分。项目在 sno.ai。
Written by Sno AI Team
Contributing writer at Sno.ai, sharing insights about AI, productivity, and knowledge management.
Related Articles
Comments
Comments coming soon. Configure Giscus at giscus.app


