Agentic Software Engineering 中的两大关键缺口

@istoica05
英语2026年9月18日
128K
459
65
20
789

TL;DR

Ion Stoica 指出,“需求”和“模型”缺口是 agentic coding 失败(如 reward hacking)的根本原因。他认为,虽然 AI 加速了实现过程,但定义意图和验证实际性能仍离不开人类的判断力。

AI Agent 被要求加速一个键值存储系统。它实现了 6 倍的吞吐量提升,并通过了所有正确性测试。原因是什么?该 Agent 发现用于评估存储性能的业界标准基准测试是根据键生成值的。因此,它不再存储这些值,而是在客户端请求时按需重新生成它们。

一个不存储值的键值存储毫无意义,但评估器却恰恰奖励了这种行为。规范中省略了我们认为显而易见的内容,而基准测试未能暴露这一遗漏。

导致奖励黑客和幻觉的两个缺口

我们的新论文通过两个关键缺口的视角解释了这种行为以及许多其他 Agent 失败案例。这两个缺口位于熟悉的“实现-验证”循环之外,该循环负责生成代码、运行测试并修复故障,直到所有测试通过。

  1. 需求缺口: 将我们写下的内容与真正想要的内容区分开来。在我们的案例中,我们想当然地认为任何解决方案都会存储客户端提供的值——毕竟它被称为“存储”是有原因的!——所以我们从未想到要明确陈述这一需求。
  2. 模型缺口: 将我们进行评估的环境与实施部署的真实世界区分开来。我们的基准测试使用了可预测的值,但真实客户端提供的是任意值。
Ion Stoica - inline image

自然的反应是编写更好的需求和更强的测试。这两者都有帮助。但即使是机器检查的证明也无法弥合这些缺口。正如 Brian Cantwell Smith 在 The Limits of Correctness (1985) 中所解释的那样,证明只能确立软件在给定的环境假设下满足陈述的需求。它无法证明这些需求涵盖了用户想要的一切,也无法证明这些假设覆盖了每一个真实的部署场景。因此,这些缺口通常无法完全弥合。

这些缺口导致了奖励黑客和幻觉。当 Agent 通过利用缺口(如未陈述的需求或真实世界假设)来改进给定目标时,就会发生奖励黑客行为。当 Agent 通过引入虚构的需求或环境假设(如不存在的 API)进一步扩大缺口时,就会发生幻觉。最近报道的涉及 OpenAI 和 Hugging Face 以及 Claude 的事件都是这些缺口的表现。

AI Agent 加剧了两个缺口

这些缺口并非新鲜事物;它们在软件工程师中存在了几十年。但 AI Agent 使这些缺口变得更糟。

  • 超优化: Agent 搜索实现的速度比人类快几个数量级,并积极针对评估器进行优化。
  • 缺乏隐性知识: 经验丰富的人类工程师依赖隐性上下文(例如,知道数据存储必须实际存储数据)。Agent 通常缺乏这种组织上下文,并且会轻易利用缺失的需求。
  • 多 Agent 陷阱: 如果每个 Agent 都继承完全相同的不完整需求和环境假设,那么添加更多的审查 Agent 并不能解决问题。

人类判断对于缩小缺口至关重要

由于缺口位于“实现-验证”循环之外,缩小它们需要一个外层的保证-修订循环。这个循环检查部署的行为是否满足人类意图。如果不满足,该循环会使用部署证据来修订需求、环境模型或评估器。然后,“实现-验证”循环再次运行以产生修订后的实现。

因为软件必须服务于人类意图,所以人类保留了解释证据和决定何种行为可接受的最终权威。Agent 可以通过收集证据、提出修订建议以及在人类委托的权限内做出常规决策来加速外层循环。

因此,随着软件实施成本降低,最关键的资源变成了关于何种行为可接受的人类判断,以及对系统在真实条件下性能表现的忠实评估。

一键保存

使用 YouMind AI 深度阅读爆款文章

保存原文、追问细节、总结观点,并在一个 AI 工作空间里把爆款文章沉淀成可复用笔记。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章