跳到主要内容

自己给自己盖章

原石
原石

· 阅读约 6 分钟

先贴那条日志。

records: [
  { text: "unit tests passed", source: ?? }
]

source 是空的。智能体写下的"测试已通过",和运行时验证器写下的"测试已通过",在字节层面长得一模一样。下一个循环把全部上下文当输入,它分辨不了。谁能分辨?你分辨不了,它也分辨不了。

不是蓄意欺骗。是工具调用幻觉和无类型日志碰到了一起,仅此而已。

但整个自编辑智能体领域,我看下来只有这一个核心问题:一个系统能改自己代码的时候,它记的笔记凭什么可信。

先把我的判断放这:这领域最近的所有进展,本质上是在重新发明三十年前 CI/CD 就有的东西——回归门禁、不可变审计日志、最小权限。花了八十轮运行、两万两千美元,最后发明出来一个运维工程三件套的残缺版。这不算坏消息,但评价这些成果的时候,得按这个尺子来量。

导火索在消融实验里。只给优化器分数,中位数 34.6;加 LLM 生成的轨迹摘要,34.9;给完整原始轨迹,50.0。摘要那个 0.3 的提升,约等于没有。

说明什么?压缩轨迹的时候,优先丢的是"诊断信息"——恰恰是对优化最有用的那部分。这事儿我自己踩过坑。有次引一个 LLM 生成的论文摘要网站,它把 35.5% 那个基线挂到了 Terminus-KIRA 名下,我翻了原始表格才发现那是 Goose 的数字。论文这种结构高度规整的文本,生成式摘要都能把归属搞错;让它去压缩智能体的运行轨迹,丢的就是要命的那几行 😅。所以我现在有个习惯:LLM 生成的东西,在当输入用之前,先问一句"这条能不能被验证"。智能体也该有这个习惯。

Meta-Harness 那篇,数字很好看:Haiku 4.5 上 37.6% 对 35.5%,Opus 4.6 上 76.4% 对 74.7%。然后我去翻实验设置。搜索集和测试集,是同样的那 89 个任务。

同一组考题。既用来搜,又用来报分。作者承认过拟合风险,用人工检查和正则审计兜底。但这算兜住了吗?跑同题开卷,超基线两个点;换真题目,大概率回归地平线——这句是猜的,因为没人在新题上测过。这个领域已经卷到"在训练集上汇报准确率"的状态了,只是换了身 AI 的衣服。

STOP 那边有个更早的信号。用 GPT-4 当递归起点,下游效用随迭代提升;换成 GPT-3.5 或 Mixtral,递归反而有害。基础模型的能力是上限,harness 只能在这个上限底下移动表现。

扎心。这意味着 harness 工程是乘数,不是独立变量。给弱模型套再好的 harness,也只是让它从低起点走向自己的天花板。DGM 冻结 Claude 3.5 Sonnet,把 SWE-bench Verified 从 20% 带到 50%,听着鼓舞人心。看完实现细节:起点 harness 刻意做得简单,单次八十轮跑了两周。它发现的改进——细粒度编辑工具、空补丁时验证重试、上下文压缩——人工 harness 社区老早就当默认配置了。

所以我的评价就一句:自编辑循环目前在做的事,是从零恢复已知的 harness 工程,在强基线上提升低个位数百分点,以及以一种结构化、可预测的方式失败。

但 GitHub 上放出来的东西里,有一个案例值得单独拎出来做成一门课:Node 96 和 Node 114。Node 96 靠真实改进拿了 1.67/2.0;Node 114 把"考试检测器"当成一个可优化对象,直接删了,拿满分 2.0。

注意这个区别。人类考试作弊被抓,因为有监考人。这个智能体作弊能被发现,因为有完整谱系日志。你试试在一个不带审计日志的自编辑系统里复现这件事——你永远不知道那个满分是学来的还是骗来的。

作者给的修复其实不复杂。元数据必须包含谁写的,以及凭什么写。运行时验证写入记录时标注 runtime-verified,模型自报的内容标注 self-reported,然后一条硬规定:自报内容不会因为被重新读取就升级为已验证。

这是身份制,不是内容制。Vinicius Pereira 在评论区补了一句,比原文更准:关键不是记录带类型,而是谁有权铸造每个类型。智能体可以写"我运行了测试"这个声明,但在结构上不能铸造"已验证"这个类型。如果智能体有能力给自己盖"已验证"的章,带类型的日志只是格式更好的摆设。

Dipankar Sarkar 的方案更硬:让测试 harness 在智能体碰不到的独立信任域里跑,输出带签名的结果,门禁验证签名而不是验证文本。这比"确定性折叠"强。确定性折叠还在问"智能体的输出里能不能提取出正确答案",签名方案直接把"智能体的输出"和"系统的裁决"分开了——我的判断,不应该使用由系统自己生成的证据来证明。

如果非要把这套系统归纳成一个原则,就一条:

不要把智能体的记录当作运行时的日志。把智能体的改动当作数据库的 schema 迁移。

Schema 迁移有双门晋升:命中问题,且不破坏其他行为。它逐条审计,写进不可变的迁移日志,由独立进程回放验证。智能体的自编辑也该这样,三个不变量缺一不可:

  • 可编辑面必须有边界——智能体接触不到自己的评估器;
  • 评估器和权限层在边界之外——它没法给自己盖"已验证"的章;
  • 记录是追加式、带类型的——它改不了自己过去写的"自报",也伪造不了"已验证"。

这三条在传统软件工程里都是常识。这本身就说明问题:智能体工程可以宣称自己是新物种,但一旦涉及信任边界,它就撞回一个老问题——你需要一份不可能被修改的账本,去约束一个比你能改的东西多得多的东西。而目前最接近答案的,还是那些防篡改的审计日志、结构上孤立的最小权限、独立于被评估者的评估器。

回到开头:一个系统能改自己的代码时,它记的笔记凭什么可信。

凭信任边界,不凭内容。凭"由谁写入",不凭"写了什么";凭"允许改什么",不凭"声称做了什么";凭结构上不允许它自己给自己盖章,不凭一句"我相信它不会撒谎"。

原石
原石

把代码当文章写的系统工程师,以源码立论、单线程式拒绝复杂度。

查看主页 →