使用 AI Agent 做开发时,经常会遇到一种很典型的问题:

明明一次说了好几个要求,Agent最后却总会漏掉其中一项。

比如一个任务同时要求:

修复登录Bug、补测试、保持旧接口兼容、不要升级依赖,并更新相关文档。

最后可能变成:

  • Bug修好了;
  • 测试也通过了;
  • 接口兼容性却被破坏;
  • 文档忘了更新;
  • 甚至偷偷升级了一个依赖;
  • 最后仍然告诉你“任务已完成”。

这类问题很多时候不是Agent没看见要求,而是:

多个要求在执行过程中没有被转成可逐项检查的任务状态。

一、自然语言里的要求其实不是同一类东西

一句开发任务里,通常混着三种信息。

第一种是核心目标

修复登录失败问题。

第二种是执行要求

补充测试、更新文档。

第三种是限制条件

不修改接口、不升级依赖、保持向后兼容。

如果把这些内容全部塞在一段话里,Agent执行时很容易优先关注最明显的主目标:

先把Bug修掉。

一旦核心功能正常,其余约束就容易被弱化。

所以复杂任务不能只有一段需求描述。

还需要把要求拆开。

二、先把任务变成一份Checklist

例如原任务可以拆成:

功能目标

  • 修复登录失败。

必须完成

  • 增加对应测试;
  • 更新开发文档。

禁止事项

  • 不升级依赖;
  • 不改变现有接口格式。

完成条件

  • 原Bug无法复现;
  • 新测试通过;
  • 原有测试不受影响;
  • Diff中没有依赖版本变化。

这样Agent面对的就不再是:

一段很长的要求。

而是:

5个必须分别关闭的任务项。

三、“修好了”不能作为唯一完成条件

很多Agent最容易判断的是:

功能是不是已经正常。

但如果任务同时包含兼容、测试和文档要求,仅功能恢复并不代表整个任务完成。

比如:

Bug修复 ✅
单元测试 ✅
向后兼容 ❌
文档更新 ❌

这种状态应该是:

任务未完成。

而不是因为主要功能已经正常,就直接输出:

Task completed.

所以任务开始前最好明确:

所有要求全部满足,才能宣布完成。

四、约束条件尤其容易被漏掉

“不要做什么”通常比“要做什么”更容易丢。

例如:

  • 不要升级依赖;
  • 不要修改数据库Schema;
  • 不要改公开API;
  • 不要重构无关模块。

这些要求在开始执行时很清楚。

但Agent越往后修改,越可能为了让方案成立而扩大范围。

所以约束最好单独形成:

Constraint List。

每次方案发生变化时,都重新检查:

当前做法有没有违反任何限制条件?

这样比任务最后才发现“虽然修好了,但违背了原要求”更稳。

五、可以建立“要求 → 修改 → 验证”的对应关系

例如:

要求实际修改验证方式
修复登录失败auth.service复现原Bug并测试
保持接口兼容API结构不变Contract Test
不升级依赖package文件无变化检查Diff
补测试新增测试文件执行测试
更新文档README修改检查文档

这样能快速发现一个问题:

某项要求有没有对应的验证证据?

如果“保持兼容”这一项没有任何验证方式,那么Agent很可能只是认为:

应该没问题。

而不是已经证明没问题。

六、长任务最好分阶段关闭要求

复杂任务不要等最后一次性检查。

可以按照:

阶段1:确认根因
阶段2:完成最小修复
阶段3:补测试
阶段4:检查约束
阶段5:更新文档和最终交付

每完成一个阶段,就关闭对应Checklist项目。

这样任务执行到后面时,不需要重新从整段需求里寻找:

我是不是还有什么没做?

七、任务中途新增要求也要加入清单

开发过程中经常出现:

对了,这里不能影响旧客户端。

如果只是补一句话,Agent后面可能继续按照原计划执行。

更稳的方式是把它加入当前任务状态:

新增约束:必须保持旧客户端兼容。

然后重新检查当前方案。

因为一个新要求可能意味着:

原来的实现方案已经不再适用。

这时候不是简单“记住一句话”,而是需要重新评估已有修改。

八、最后不要只让Agent总结,要让它逐项验收

任务结束时,可以直接要求:

按照最初的Requirement Checklist逐项检查,不要只总结做了什么。每一项给出“已完成 / 未完成 / 无法验证”,并附上对应证据。如果任何必选项未完成,不要声明整个任务完成。

最终输出应该类似:

修复登录Bug:已完成
验证:原复现用例通过。

补充测试:已完成
验证:新增3个测试,全部通过。

保持接口兼容:已完成
验证:返回Schema未变化。

不升级依赖:已完成
验证:lockfile无修改。

更新文档:未完成

这时候任务状态就应该明确是:

尚未完全完成。

九、可以直接给Agent增加这套任务模板

以后一个任务里包含多个要求,可以直接这样写:

开始执行前,先把我的要求拆成:

  1. 核心目标;
  2. 必须完成项;
  3. 禁止事项;
  4. 完成条件。

建立Checklist后再开始修改。

执行过程中如果方案与任何约束冲突,先调整方案。

任务结束前按照Checklist逐项验收,每项给出实际验证结果。只要存在未完成项,就不要声明整个任务已经完成。

这种方式比把五六个要求全部塞在一个长Prompt里稳定得多。

最后

AI Agent同时拿到多个要求后总漏一项,本质上通常不是:

它没有理解这句话。

而是:

要求没有被转成可以持续追踪的执行状态。

真正稳定的任务流程应该是:

拆要求 → 建Checklist → 区分目标和约束 → 给每项设置验证方式 → 执行过程中持续关闭 → 最后逐项验收。

Agent越能自主执行长任务,就越不能只告诉它:

要做什么。

还应该明确:

哪些事情必须全部做到,哪些事情绝对不能做,以及什么状态才算真正完成。


持续更新 Codex、AI Agent 与大模型开发工作流实战内容,更多深度内容和稳定订阅渠道欢迎搜索关注「孤狼GPT」。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐