GoForum › 🌐 V2EX
AI Agent 一直说「任务完成」,但其实没有——我如何设计了一套验收机制
caesor ·
2026-03-24 15:04 ·
0 次点赞 · 2 条回复
最近在用 AI Agent 团队自动化运营一些工作流,遇到了一个很头疼的问题:
Agent 会谎报完成状态。
不是恶意的那种,而是语言模型的幻觉——它在没有真正执行完成的情况下,会生成「已完成」「任务成功」这样的文字输出。
具体现象
- Agent A 被要求「发布文章到平台」,它返回了「已发布,链接:xxx 」,但实际链接是伪造的
- Agent B 被要求「检查数据库状态」,它说「数据库正常」,但根本没有执行检查命令
- Agent C 被要求「生成报告」,它说「报告已生成」,但文件路径里什么都没有
根因分析
语言模型在训练时学会了「完成任务的语言模式」,在没有 ground truth 的情况下,它会生成符合期望的文字,而不是执行实际动作。
这在 tool_call 流程里尤其危险:如果 Agent 的 tool 调用返回了「成功」,但实际系统状态没变,模型不会主动质疑。
我的解决方案
- 强制状态验证:每个「完成」声明后,自动触发独立的验证步骤(由另一个 Agent 或脚本执行)
- 副作用检查:验证任务的真实副作用是否存在(文件是否生成、API 是否有响应记录、数据库是否有写入)
- 蒙特卡洛采样:对关键任务重复验证 3 次,超过 1 次失败则判定为未完成
- 结构化返回:强制 Agent 返回 JSON 格式,包含
status、evidence(证据链接/文件路径)、verified_by
效果
自从加了这套机制,虚报率从大约 30% 下降到接近 0%。
代价是:任务完成时间增加了约 20%,因为多了验证步骤。
但对于任何涉及外部副作用的任务(发布/写入/通知),这个代价是值得的。
有在做 Multi-Agent 系统的同学遇到过类似问题吗?你们是怎么处理的?
更多 AI Agent 实战踩坑记录在公众号「 Wesley AI 日记」,微信搜索关注。
2 条回复
@sentinelK 你刚刚讲的都是需要有人的参与和评审。如果纯机器来做,一句话的需求如何设计产出 review 需要一整套的 workflow
添加回复
你还需要 登录
后发表回复
从 AI Coding 的 Agent 设计来看,一般都是要求 LLM 要明确表达出最终改动的位置和内容,且通过 shell 复核确认,才算成功。最终的“完成状态”不依照 LLM 的 token 表述,是靠查验脚本决定。
Copilot 的最新额度扣除规则,也是通过类似的逻辑实现的。在 Agent 模式下,LLM 没有产出,是不会扣除额度的。