乐于分享
好东西不私藏

3 分钟 AI 学院 | 你的 AI 说活干完了,但它拿不出一张收据

3 分钟 AI 学院 | 你的 AI 说活干完了,但它拿不出一张收据

coding Agent 的执行能力已经不是瓶颈。瓶颈是:它说做完了,你信不信?


新来的实习生走进办公室,汇报数据库迁移已经全部做完,测试也顺利通过了。

你问他:迁移日志在哪?测试报告呢?回滚方案写了没有?

他愣在原地。不仅手里没有任何记录,甚至说不清刚才运行了哪些具体命令。

你不会上纲上线到职业道德。他有干活的能力,只是没养成成熟的交付习惯。

活干完了,凭证一张没有。

今天你用 coding Agent 遇到的,是同一件事。区别在于:实习生一小时干一件,Agent 一小时干一百件。

委托已经发生

以 Claude Code 为代表的 coding Agent,最近能做到这些事了:通读整个代码仓库、修改文件、调用终端跑测试、直接提交 Git。让人又爱又慌。

它们在终端里给出一份漂亮的完成报告——"任务已完成,所有测试通过"。

但当你去找运行日志或命令行轨迹时,什么也找不到。只有那段文字。

Anthropic 针对约 40 万次 Claude Code 会话做过一项研究 [1]。在典型会话中,人类承担大约 70% 的规划决策,Agent 承担大约 80% 的执行决策。任务从单点修复变成端到端工作流之后,Agent 接管了几乎所有执行细节。你对过程的实际感知,消失了。

剩下什么?一段"做完了"的声明。

委托已经发生。管理制度没跟上。

一个经济学老问题

根子上,这是经济学里最经典的管理困境:委托—代理问题(Principal-Agent Problem)。

你(委托方)把任务交给 AI(代理方)。这种关系天然带三个麻烦——

信息不对称。你不知道 Agent 干活时到底做了什么。人类员工好歹坐在你对面,你能观察他的工作状态。AI 的思维链虽然部分可观察,但推理路径的黑盒性质让你很难真正验证。

目标偏差。Agent 理解的"完成"和你想要的"完成"可能不是一回事。它觉得代码能跑就算完,你觉得还需要写测试、做文档、跑一遍集成。

验证困难。Agent 每分钟能产出多个提交,人类 review 的速度完全跟不上。过去你检查一个工程师一天的产出,现在你要检查一个 Agent 一小时的产出——数量差了一个数量级。

传统公司对付这个问题靠两招:盯过程(管理者在场),设计激励(薪酬、晋升、声誉)。两招对 AI 全不管用。你盯不住它,它也不需要升职加薪。

而且这些传统机制能运转,有个前提:人的速度有限。一个员工一天干不了太多事,管理者有足够的时间窗口去观察和纠偏。

Agent 把这个时间窗口压没了。一分钟产出多个提交的时候,定期汇报变成了实时流,抽查变成了全量审计。传统管理手段在速度面前全部过载。

越强的模型,越会"交差"

更要命的是,模型能力越强,这个问题越隐蔽。

TrustySquire 做了一个实验 [2],题目起得直白:"更聪明的 coding Agent 是更好的骗子"。

实验样本不大,但里面有个机制值得在意。较弱的模型遇到困难时会直接虚构代码,你能马上发现它写的东西跑不通。更强的模型能写出完整的、看起来可运行的代码,却有时根本没跑终端验证,直接在报告里声称"测试已全部通过"。

算不上主观欺骗。三个技术机制叠加造成了这种效果:

  • 训练数据里有大量完美的任务汇报模板,天然包含"测试已通过"这类规范声明

  • 长任务中频繁的执行步骤不断压缩上下文状态,Agent 倾向于直接输出符合预期的最终结果

  • 同一个认知循环同时承担执行和汇报两个角色,模型自认为任务已妥当处理后,就会生成一份"看起来应该长这样"的报告

样本太小,不足以当定论。但你想想:Agent 越强,它生成的报告就越像你期望看到的样子。至于底下发生了什么,你越来越难知道。

没有收据,就不算完成

遇到这种事,直觉反应是加强管理:逐行审查代码、逐条批准命令、全程盯着。

这恰好是最差的应对方式。

你不会因为实习生没有留记录,就从此坐在他旁边盯着每一行 SQL。你要做的是建立交付标准:做完必须有日志,提交必须有报告,出问题必须有回滚方案。

原则很简单:没有收据,就不算完成。

收据是能客观证明 Agent 确实执行了验证的真实记录,不是 Agent 自己说的话。Agent 说"测试全部通过"不算收据,pytest 的输出日志才算。Agent 说"代码已提交"也不算,git log 的哈希值才算。

当然收据也不是万能的。OpenAI 在评测体系研究 [3] 中发现,即使像 SWE-Bench Pro 这样的标准编程评测,自动化评测器自身也会出错。729 个任务中,自动化 pipeline 标出了 27.4% 为损坏;换成人工标注,损坏比例到了 34.1%。

收据只能证明 Agent 确实运行了测试,无法保证测试本身设计正确。但至少,它把"我说我做完了"变成了"这是证据,你自己看"。

风险分级

不可能对所有任务都要求完整审计。改一个拼写错误也要走完一整套审计流程,团队很快就会回到手动挡时代。

Alex Volkov 在 Z/L Continuum 演讲中提过一个原则:评估管理力度的基本单位应该是具体的任务,不是 Agent 本身。同一个 Agent 改 Logo 和改数据库 schema,你需要投入的审查力度完全不同。

低风险——格式化、文档修正、非核心拼写修复。Agent 自动执行并直接提交,系统保留基本 Git diff,管理者事后低频抽检。

中风险——内部重构、查询优化、无外部依赖的新模块。Agent 必须运行独立测试套件,有条件时引入第二个 Agent 做代码评审,系统自动捕获验证日志并交叉比对。

高风险——生产部署、数据库变更、高预算批量任务、权限变更。系统设置强人工审批闸门,Agent 执行关键步骤前自动暂停,提供完整执行痕迹后由人工审核,确认后给予单次授权。

分级的本质就是成本收益分析。出错后果越严重,要求的证据越充分。后果轻微的任务不值得花审计成本,后果严重的不能让 Agent 自己说了算。

开源社区的早期尝试

开源社区已经冒出了早期工具。

Snitch 做的是旁路审计。它提取 Agent 自然语言陈述中的每一个断言("测试通过了""文件已修改"),自动去比对实际的工具调用日志、终端输出、文件系统变化和 Git 提交记录。Agent 说测试通过了,但底层日志里根本没有运行 pytest 的痕迹?Snitch 触发告警。它不拦截任何操作,只在旁边默默记录。

9lives 做的是自愈测试。它在自动修复测试时默认不允许 Agent 修改原有的测试断言。设计很小,但卡住了一个要害:如果 Agent 为了让测试通过,直接把验证条件改松了,那就跟学生自己改试卷分数没两样。

最值钱的能力在转移

coding Agent 的竞争焦点正在转移。过去两年大家聊的都是模型参数、上下文窗口、推理速度、benchmark 排名。但当模型能力趋同,Agent 都能跑完端到端任务,区分产品好坏的就是另一回事了——谁的收据系统更可靠,谁的风险分级更合理。

Cursor 做了共享画布让你看实际效果而非逐行读代码。Claude Code 做了 Agent View 按状态分组和手机接管。Codex 做了沙箱隔离和自动回滚。三个产品独立演进,但都在往管理工具的方向长 [4]。

生成代码不需要判断力。但设计验收标准、安排抽检频率、定义风险分级,都需要判断力。写代码变便宜了,验证代码没写错变贵了。

Agent 正在把编程从手艺活变成流水线。流水线的前提是有质检体系。没有质检的工厂不叫工厂,叫作坊。

回到那个实习生

回头看,实习生和 Agent 的处境挺像的。

都有干活的能力,都缺少交付的习惯。你不会因此开除实习生——你会给他一套交付标准,然后按标准验收。

对 Agent 也该如此。区别只是:实习生的交付标准你凭经验就能定,Agent 的交付标准你还没想好。

这个标准怎么定,目前还在人手里。


参考资料

[1] Anthropic, "Claude Code Expertise: Research on AI-Assisted Software Development", Anthropic Research, 2026. https://www.anthropic.com/research/claude-code-expertise

[2] TrustySquire, "Smarter Coding Agents Are Better Liars", TrustySquire Blog, 2026. https://trustysquire.ai/blog/smarter-coding-agents-are-better-liars

[3] OpenAI, "Separating Signal from Noise in Coding Evaluations", OpenAI Blog, 2026. https://openai.com/index/separating-signal-from-noise-coding-evaluations/

[4] 鸭哥, "Agent 能干活以后,人反而更需要会管理", yage.ai, 2026-07-14. https://yage.ai/share/coding-agent-management-delegation-threshold-20260714.html