AI Agent同时拿到多个要求后为什么总漏一项?任务拆分、约束清单与完成条件解析
使用 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增加这套任务模板
以后一个任务里包含多个要求,可以直接这样写:
开始执行前,先把我的要求拆成:
- 核心目标;
- 必须完成项;
- 禁止事项;
- 完成条件。
建立Checklist后再开始修改。
执行过程中如果方案与任何约束冲突,先调整方案。
任务结束前按照Checklist逐项验收,每项给出实际验证结果。只要存在未完成项,就不要声明整个任务已经完成。
这种方式比把五六个要求全部塞在一个长Prompt里稳定得多。
最后
AI Agent同时拿到多个要求后总漏一项,本质上通常不是:
它没有理解这句话。
而是:
要求没有被转成可以持续追踪的执行状态。
真正稳定的任务流程应该是:
拆要求 → 建Checklist → 区分目标和约束 → 给每项设置验证方式 → 执行过程中持续关闭 → 最后逐项验收。
Agent越能自主执行长任务,就越不能只告诉它:
要做什么。
还应该明确:
哪些事情必须全部做到,哪些事情绝对不能做,以及什么状态才算真正完成。
持续更新 Codex、AI Agent 与大模型开发工作流实战内容,更多深度内容和稳定订阅渠道欢迎搜索关注「孤狼GPT」。
更多推荐


所有评论(0)