很多开发者刚开始使用ChatGPT、Codex时,会把注意力放在一个问题上:

怎么把任务说清楚。

比如:

要补哪些背景。

要不要写得更详细。

要不要加限制条件。

这些都重要。

但当AI越来越能独立执行以后,一个新的问题开始变得更关键:

不是“怎么让AI开始做”,而是“怎么让AI知道什么时候算真正做完”。

这听起来像一句很简单的话。

但在真实工程里,它其实决定了很多问题:

为什么AI明明测试通过了,你还是不敢合并?

为什么Agent总喜欢继续优化?

为什么一个任务已经做了很久,最后还是觉得“不够完整”?

很多时候,真正缺少的不是Prompt。

而是:

Done Criteria,也就是明确的完成标准。


一、真实开发场景:AI说“完成了”,你却不知道能不能结束

假设你让Codex处理一个问题:

“修复用户登录后偶发失效的问题。”

AI开始执行。

它读取相关模块。

分析Token。

检查Session。

修改代码。

补测试。

最后告诉你:

任务完成。

你打开结果,测试确实通过了。

但你还是会继续问:

接口行为变了吗?

兼容逻辑有没有影响?

有没有改到不该改的文件?

异常场景验证了吗?

这时候你会发现一个很尴尬的问题:

AI有自己的“完成”。

你心里也有一个“完成”。

但这两个“完成”并不一定一样。

这就是很多长任务不稳定的根源之一。

不是AI不愿意完成。

而是:

“完成”这个词本身没有被工程化定义。


二、为什么任务越复杂,“做完”越容易变得模糊?

简单任务里,完成标准通常天然清晰。

比如:

把一个变量名改掉。

增加一个空值判断。

补一个单元测试。

结果一眼就能判断。

但复杂任务不一样。

比如:

“优化认证系统稳定性。”

这个任务什么时候算结束?

是Bug消失就算?

测试全绿就算?

性能提升就算?

还是还要:

兼容旧客户端。

保持Public API不变。

不改变权限逻辑。

补回归测试。

没有新增高风险依赖。

如果这些没有提前定义,AI就只能自己推断:

“我认为这样差不多完成了。”

问题是:

Agent能力越强,它越有能力继续做。

于是一个模糊任务很容易变成一个没有明确终点的开放任务。


三、背后的机制:Agent需要的不只是Goal,还需要Terminal State

可以把一个Agent任务想成一个状态系统。

它不断经历:

当前状态 → 下一步行动 → 新状态。

但这个系统要真正结束,还需要一个东西:

Terminal State,终止状态。

也就是:

系统满足什么条件以后,就不应该再继续执行。

如果没有这个终止状态,Agent会不断问:

还有什么可以改?

还有什么可以优化?

还有什么风险可以处理?

于是你会看到:

任务本来已经解决。

AI却继续:

重构。

补更多测试。

调整结构。

优化无关逻辑。

从AI视角看,这些动作并不荒唐。

因为它没有被明确告诉:

“到这里就算完成,后面的事情不属于当前任务。”


四、为什么Done Criteria比“详细Prompt”更重要?

详细Prompt解决的是:

开始时的信息质量。

Done Criteria解决的是:

结束时的判断标准。

这两者作用完全不同。

比如同样是:

“修复登录问题。”

如果你只把背景写得非常详细,但没有定义完成条件,AI依然可能在后面继续扩大范围。

反过来,如果你明确:

完成标准是:

登录问题不再复现。

现有接口保持不变。

原有测试通过。

新增一个回归测试。

不进行无关重构。

那AI在执行过程中就有一个稳定的判断框架。

所以复杂任务里,真正稳定的控制结构不应该只有:

Goal。

还应该包括:

Goal + Constraint + Non-goal + Done Criteria。

这四个东西一起,才构成一个完整任务边界。


五、为什么AI越强,Done Criteria反而越重要?

这是一个很反直觉的地方。

弱AI的时候,任务范围有限。

它能做的事情少。

即使目标模糊,也不容易跑太远。

但AI越强以后:

它能读更多代码。

能做更多判断。

能自主调用更多工具。

能持续执行更久。

这意味着它的行动空间越来越大。

行动空间越大,终止条件越重要。

这就像自动驾驶。

能力越强,越需要清晰知道:

什么时候继续。

什么时候减速。

什么时候停车。

Agent也是一样。

真正成熟的Agent不是:

“永远继续做有价值的事。”

而是:

在满足当前任务目标以后,知道这次工作已经结束。


六、为什么未来“完成标准”会越来越成为AI工作流的基础设施?

因为未来AI任务会越来越长。

不再只是:

改一行代码。

而是:

完成一个Feature。

处理一个复杂Bug。

迁移一个模块。

持续运行几十分钟甚至更久。

任务链越长,中间会不断出现新的信息。

这些新信息可能诱导AI改变局部目标。

比如:

原始目标是修复Bug。

中途发现测试结构不好。

又发现模块重复。

再发现日志可以优化。

如果没有Done Criteria,AI很容易把“发现新问题”理解成“应该继续做”。

所以未来稳定的Agent Workflow,很可能会把完成条件变成显式结构,而不是靠人最后凭感觉判断。


七、可以用“完成标准清晰度”判断自己的任务是不是容易失控

这里可以建立一个自测指标:

完成标准清晰度

不需要精确打分,可以问自己几个问题。

第一,这个任务结束时,我能不能明确说出“必须满足的三个结果”?

如果说不出来,标准通常太模糊。

第二,有没有明确写出“哪些事情这次不做”?

如果没有,Agent很容易顺手扩Scope。

第三,结果是不是可以被验证?

比如:

“优化一下代码。”

很难验证。

但:

“接口P95降低到某范围,同时保持现有行为不变。”

就清楚很多。

第四,AI完成以后,我是不是还要临时想:

“还应该检查什么?”

如果经常这样,说明完成标准在任务开始前没有定义完整。


八、Done Criteria不等于把任务写成几十条规则

另一个常见误区是:

为了避免AI跑偏,就把任务写成非常长的清单。

这也不一定好。

完成标准的目标不是:

把所有细节都提前写死。

而是:

把真正决定“是否可以结束”的条件写清楚。

比如一个Bug任务,可能只需要:

问题不再复现。

相关回归测试通过。

公共接口不变。

不做无关重构。

这已经足够。

关键是:

少而明确。

可验证。

不冲突。


九、怎么设计更好的完成标准?

可以用四个层次。

第一层:

结果条件。

要解决什么?

第二层:

约束条件。

哪些东西不能变?

第三层:

验证条件。

用什么证据证明完成?

第四层:

非目标。

哪些发现即使有价值,也不属于本次任务?

比如:

目标:修复Session丢失。

约束:不改变Public API。

验证:原测试通过 + 新增回归测试。

非目标:不重构认证模块。

这样Agent就能明确知道:

“什么叫完成。”

也知道:

“什么叫不该继续。”


十、为什么Done Criteria还能降低Review成本?

因为Review最耗时间的地方,很多时候不是看代码。

而是:

不知道应该按照什么标准判断。

如果任务开始前没有完成标准,Review时你就会临时考虑:

这个改动是否合理?

范围是不是太大?

有没有漏掉什么?

但如果Done Criteria已经清楚,Review会变成一个更直接的问题:

这几个标准满足了吗?

这会明显降低验收成本。

所以Done Criteria不只是控制Agent。

它还在帮助人类更快Review。


十一、完成标准清晰度高:Plus通常已经能完成很多真实任务

如果你的日常AI工作主要是:

普通Bug。

明确Feature。

中小型项目。

而且你已经习惯在任务开始前定义:

Goal。

Constraint。

Done Criteria。

大多数任务都能稳定完成。

那么你的核心需求还是:

提高执行效率。

这种情况下,Plus通常已经能覆盖很多Codex使用场景。


十二、完成标准很模糊,也不要先想到Pro

如果你现在大量任务都出现:

AI不知道什么时候结束。

反复顺手优化。

任务完成后还要大量返工。

第一反应不应该是:

“需要更高能力。”

因为更强的Agent也不会自动替你定义“什么叫完成”。

甚至能力越强,可能越容易在开放任务里继续探索。

这时候应该先优化:

任务目标。

约束。

非目标。

Done Criteria。

如果这些做完以后,稳定性明显提升,说明真正的问题在任务设计。


十三、什么时候Pro才真正匹配?

更接近Pro的状态是:

你的任务设计已经成熟。

复杂任务有明确Done Criteria。

Agent知道什么时候停止。

Review也能快速按照验收标准完成。

但真实工作中仍然持续存在:

大量复杂Codex任务。

高Context项目。

长时间Agent执行。

多个高价值任务并行。

这时候,AI侧的容量和持续执行能力才更可能真正限制工作流。

所以判断逻辑不是:

“任务复杂,所以我要Pro。”

而是:

“我已经把复杂任务设计得足够清楚,现在真实工作量才开始需要更高AI吞吐。”


最后:AI时代真正难的,不是告诉AI“开始做什么”,而是告诉它“做到哪里可以停”

Prompt解决的是启动问题。

Done Criteria解决的是结束问题。

而复杂Agent真正难的地方,往往就在结束。

因为AI越强,越能不断发现:

还有哪里能优化。

还有什么风险能处理。

还有什么代码能重构。

但软件工程真正需要的不是无限改进。

而是:

在正确的时间,以足够好的结果结束当前任务。

如果你的完成标准清晰、任务边界稳定:

Plus通常已经够用。

如果你的工作流已经能稳定管理复杂任务,而AI侧吞吐开始成为真实瓶颈:

Pro才真正开始匹配。

未来真正成熟的AI开发者,不只是会告诉AI:

“做什么。”

还会更清楚地告诉它:

“满足这些条件以后,这次就结束。”

持续更新Codex、大模型开发相关技术内容。
长期使用各类代码大模型,整理了稳定的AI会员订阅渠道,有需要可自取!

Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。

更多推荐