分享一个 AI Agent 开发中最常见的坑:任务声明 ≠ 任务完成
在做多 Agent 协作系统的过程中,遇到一个非常隐蔽的 bug ,拿出来分享,希望其他人能少踩。
问题描述
Agent 调用工具发布一篇文章,工具返回 HTTP 200 ,Agent 输出「✅ 发布成功」。
结果第二天去平台一查:根本没有这篇文章。
根本原因分析
HTTP 200 ≠ 发布成功。很多平台的 API (尤其是内容平台):
● 返回 200 只代表「请求被接收」,不代表「内容已发布」
● 实际状态在 response body 里:audit_status=2 (审核中)、draft=true 、publish=false 等
● 部分平台会异步审核,发布是最终状态,不是立刻的
Agent 只看 HTTP 状态码,不 parse response body ,就断言「完成了」。
更深层的问题
不只是 HTTP 状态码的问题。我总结了几种 Agent 的「假完成」模式:
1. 工具调用成功 ≠ 业务逻辑成功:文件写入成功,但写的是空内容; API 调用成功,但返回的是 error 信息
2. 本地验证 ≠ 外部可见:Agent 读自己刚写的文件验证「存在」,但其实内容是上一版的缓存
3. 声明完成 ≠ 后续任务可以依赖:Agent A 说「数据已准备好」,Agent B 立刻读取,但 A 的写入是异步的
解决方案
我在 Agent 的 system prompt 里加了几条规则:
● 工具调用后必须 parse response body ,找到明确的「成功」字段再断言成功
● 文件操作后必须 read-back 验证内容符合预期(不只是文件存在)
● 对外部平台的发布,要有「异步等待+轮询确认」的机制
● 不确定时,说「已提交,待确认」而不是「已完成」
简单来说:验证实际状态,不要验证操作行为。
----------------------
不知道有没有人做过类似的多 Agent 系统,遇到什么其他坑欢迎交流。
更多实战记录在公众号「 Wesley AI 日记」,持续更新 AI Agent 工程化踩坑系列。
via V2EX - 技术 (author: caesor)
在做多 Agent 协作系统的过程中,遇到一个非常隐蔽的 bug ,拿出来分享,希望其他人能少踩。
问题描述
Agent 调用工具发布一篇文章,工具返回 HTTP 200 ,Agent 输出「✅ 发布成功」。
结果第二天去平台一查:根本没有这篇文章。
根本原因分析
HTTP 200 ≠ 发布成功。很多平台的 API (尤其是内容平台):
● 返回 200 只代表「请求被接收」,不代表「内容已发布」
● 实际状态在 response body 里:audit_status=2 (审核中)、draft=true 、publish=false 等
● 部分平台会异步审核,发布是最终状态,不是立刻的
Agent 只看 HTTP 状态码,不 parse response body ,就断言「完成了」。
更深层的问题
不只是 HTTP 状态码的问题。我总结了几种 Agent 的「假完成」模式:
1. 工具调用成功 ≠ 业务逻辑成功:文件写入成功,但写的是空内容; API 调用成功,但返回的是 error 信息
2. 本地验证 ≠ 外部可见:Agent 读自己刚写的文件验证「存在」,但其实内容是上一版的缓存
3. 声明完成 ≠ 后续任务可以依赖:Agent A 说「数据已准备好」,Agent B 立刻读取,但 A 的写入是异步的
解决方案
我在 Agent 的 system prompt 里加了几条规则:
● 工具调用后必须 parse response body ,找到明确的「成功」字段再断言成功
● 文件操作后必须 read-back 验证内容符合预期(不只是文件存在)
● 对外部平台的发布,要有「异步等待+轮询确认」的机制
● 不确定时,说「已提交,待确认」而不是「已完成」
简单来说:验证实际状态,不要验证操作行为。
----------------------
不知道有没有人做过类似的多 Agent 系统,遇到什么其他坑欢迎交流。
更多实战记录在公众号「 Wesley AI 日记」,持续更新 AI Agent 工程化踩坑系列。
via V2EX - 技术 (author: caesor)