欢迎光临
我们一直在努力

ChatGPT、Codex工程机制:Agent任务为什么越跑越长?什么时候应该主动停下来?

最近用 ChatGPT、Codex 跑复杂任务时,我越来越关注一个问题:

Agent什么时候应该继续,什么时候其实应该停下来。

因为真实项目里经常会出现这种情况:

一开始只是让Agent修一个Bug。

结果它先读代码。

再搜调用链。

然后改两个文件。

测试失败以后继续修。

又发现一个关联模块。

再补测试。

再跑一轮。

接着顺手重构。

最后本来半小时能判断清楚的问题,任务跑了很久还没有真正结束。

最容易产生的错觉是:

Agent还在工作,说明任务还在推进。

但实际上并不一定。

很多长任务真正的问题不是:

执行能力不够。

而是:

没有明确的停止条件。

这也是复杂Agent Workflow里一个越来越重要的问题:

Execution Budget——执行预算。


一、先分清:执行得久,不等于推进得多

假设Codex执行了20个步骤。

表面上看:

工作量很大。

但拆开以后可能是:

读取相关文件:4步
定位根因:3步
有效修改:3步
验证:2步

重复搜索:3步
重复测试:2步
无效尝试:2步
无关重构:1步

真正推动任务接近完成的可能只有:

12步。

另外8步虽然也在“执行”,却没有明显增加任务完成度。

所以复杂任务里更重要的不是:

Agent执行了多少步。

而是:

有多少步骤真正产生了有效进展。

这两个概念差别很大。


二、为什么Agent任务特别容易越跑越长?

最常见的原因之一就是:

任务边界会在执行过程中不断扩张。

例如一开始只是:

修复订单接口偶发失败。

Agent开始以后发现:

接口失败来自数据库。

继续查数据库又发现:

事务边界有问题。

再往下又看到:

消息队列可能重复消费。

然后测试覆盖还不够。

最后任务从:

修一个接口

变成:

接口
+ 数据库
+ 消息队列
+ 测试
+ 重构

问题不是这些发现一定没价值。

而是:

这些东西是不是都应该在当前任务里处理?

如果没有边界控制,

Agent非常容易从:

解决问题

变成:

顺着所有关联问题一直往下挖。


三、第二个原因:失败以后默认继续重试

Agent的一个明显优势就是:

失败以后可以继续尝试。

但这也是风险。

比如:

修改方案A

测试失败

修方案A

再次失败

换方案B

又失败

继续调整

如果没有限制,

它可能不断尝试新的路径。

问题在于:

前三次失败之后,

继续尝试第四次是否还有足够的新Evidence?

如果没有,

那后面的动作很可能只是:

Retry Without New Information

没有新信息的重复尝试。

这种执行最容易消耗:

时间。

Token。

调用次数。

却没有增加多少成功概率。


四、第三个原因:Agent会把“发现问题”当成“应该修问题”

比如Agent在修改支付模块时,

顺手发现:

一个函数命名不好。

一个测试结构很乱。

一个旧API已经Deprecated。

一段代码可以重构。

这些都是真的问题。

但它们和当前任务:

未必有关。

如果Agent每发现一个问题都继续处理,

任务就会不断膨胀。

所以复杂Workflow里最好明确区分:

Blocking Issue

不解决就无法完成当前任务。

和:

Related Issue

和当前任务相关,但可以以后处理。

还有:

Opportunistic Improvement

顺手优化。

后两类默认都不应该自动进入当前Write Scope。


五、所以任务开始前最好有“执行预算”

所谓Execution Budget,不只是:

最多运行30分钟。

它更像是:

提前定义Agent能把任务推进到什么程度。

我现在更推荐至少控制五类预算。


第一类:步骤预算

例如:

最多执行15个主要步骤

目的不是机械限制。

而是当任务跑到15步还没明显收敛时,

强制触发一次检查:

为什么还没结束?


第二类:修改范围预算

例如:

预计修改不超过6个文件

如果最后已经改到:

15个文件。

就说明:

任务范围可能发生了变化。

这时候应该暂停,

重新确认影响面。


第三类:失败重试预算

例如:

同一假设最多验证3次

连续失败以后:

不要继续换参数硬试。

先重新检查:

根因假设是不是错了。


第四类:验证预算

例如:

允许两轮完整测试

如果每一轮都出现完全不同的问题:

说明任务可能已经超过原始边界。


第五类:资源预算

例如:

时间。

Token。

工具调用。

长任务尤其需要考虑:

执行成本是否还值得继续。


六、什么时候应该主动暂停?

我通常会看几个很明显的信号。

第一个:

修改范围突然扩大

例如预计:

3个文件。

实际已经改了:

12个文件。

这时候不要继续往下写。

先重新确认:

为什么扩散。


第二个:

连续失败,但没有新Evidence

例如三次测试失败,

每次只是换一种猜法。

这种时候继续尝试的价值通常已经很低。


第三个:

新发现的问题开始偏离原始目标

比如原本修Bug,

做到最后开始重构框架。

这就是典型的Scope Drift。


第四个:

Agent已经不能清楚解释下一步为什么有价值

这是一个很好用的判断方式。

直接问:

下一步动作会验证什么假设?

如果Agent自己都无法明确回答,

那通常说明任务已经开始失去方向。


七、最危险的其实不是“停下来”

很多人会担心:

Agent一停,

任务是不是就断了?

但工程上真正危险的往往是:

不该继续的时候继续执行。

因为每一次错误修改都会增加:

Diff。

上下文。

验证成本。

回滚成本。

例如原本只需要撤销:

2个文件。

继续执行10步以后,

可能已经变成:

15个文件。

所以:

暂停不是失败。

很多时候它是一种:

风险控制机制。


八、Continue ≠ Progress

这是这篇最核心的一句话。

Agent还能继续做,

只说明:

它还有下一步动作。

不代表:

下一步值得执行。

比如:

再搜一个文件
再试一个参数
再补一个测试
再重构一个模块

这些都可以无限继续。

真正需要判断的是:

每一步是不是让任务更接近完成。

如果不是:

继续执行本身就没有价值。


九、我更推荐设置一个“暂停检查点”

例如每完成5个关键步骤,

让Agent输出一次:

当前目标:
当前进度:
已确认Evidence:
剩余问题:
修改范围:
下一步动作:
继续执行的理由:

然后再判断:

继续。

暂停。

或者重新规划。

这相当于给长任务增加:

Execution Checkpoint

避免Agent一口气从:

分析

一路跑到:

大规模修改。


十、暂停以后应该做什么?

停下来不是:

什么都不做。

我更推荐四步。

第一步:总结Current State

现在已经确认了什么。


第二步:列出未解决问题

哪些是真正阻塞当前任务的。


第三步:清理无关分支

哪些问题先不处理。


第四步:重新决定预算

后续还值得执行多少步。

也就是:

Pause

Summarize

Refocus

Resume

这样恢复执行以后,

Agent会重新回到主目标。


十一、执行预算不是越小越好

也不要走另一个极端:

给Agent限制得特别死。

比如:

只能改两个文件。

只能尝试一次。

只能跑一次测试。

这样复杂任务根本没法做。

Execution Budget真正的作用不是:

限制Agent能力。

而是:

在任务失控之前建立一个重新判断的机会。

预算可以动态调整。

但调整本身应该是:

显式决策。

而不是无上限地继续。


十二、不同任务的预算应该不一样

例如一个明确的小Bug:

可以用很小的预算:

5—8步
3个文件以内
2次测试

但一个大型重构可能需要:

30个步骤
多个阶段
十几个文件
多轮验证

所以预算不是统一数字。

真正应该提前定义的是:

什么情况代表“超出预期”。

一旦超过这个阈值,

就触发暂停。


十三、Agent最应该停下来的时刻:假设已经不可信

比如原始假设:

慢查询来自索引失效。

Agent围绕这个方向:

改索引。

调SQL。

重新测试。

结果性能还是没变化。

这时候真正应该做的不是:

继续优化索引。

而是:

停下来重新验证根因。

因为继续执行已经建立在:

一个可能失效的假设上。

这和昨天讲的Plan Drift其实类似:

计划没变。

但支撑计划的前提已经没有足够Evidence。


十四、给自己看一个指标:有效执行率

这篇我建议只看一个指标:

Effective Execution Rate——有效执行率

可以简单理解为:

真正推动任务接近完成的有效步骤 ÷ 总执行步骤

比如:

一次任务共执行20个主要步骤。

真正产生:

根因确认。

有效修改。

验证结果

的只有:

12个。

那么:

有效执行率 = 60%。

剩下40%可能都花在:

重复搜索。

重复重试。

无关修改。

无效验证。


十五、有效执行率低说明什么?

不一定说明Agent能力差。

更可能说明:

任务边界不清。

停止条件不足。

重试机制失控。

影响面不断扩大。

Evidence不够。

如果有效执行率长期只有:

40%—50%。

再增加更多AI调用,

并不会自动让任务更高效。

反而可能只是:

更快地执行更多无效步骤。


十六、怎么提高有效执行率?

我会优先做几件事。

第一:

任务开始前明确目标和完成条件。

第二:

提前设置修改范围。

第三:

连续失败必须带来新Evidence才能继续。

第四:

相关问题和阻塞问题分开。

第五:

阶段性执行Checkpoint。

第六:

达到预算后必须重新判断。

核心目标只有一个:

让每一步执行都有理由。


十七、Plus和Pro怎么判断?

如果你现在跑复杂任务时经常出现:

Agent越跑越长。

范围越来越大。

重复测试。

不断换方案。

最终还要人工大量收尾。

那当前真正限制效率的,

通常不是 ChatGPT、Codex 容量。

而是:

执行控制还没有建立起来。

这种阶段Plus通常已经够用。

更值得先把:

Execution Budget。

Checkpoint。

重试上限。

范围边界。

暂停条件

做好。

否则增加更多容量,

很可能只是让Agent:

跑得更久。

改得更多。


如果你的Workflow已经能够做到:

每个任务有明确预算。

超过范围自动暂停。

重复失败会重新验证假设。

每一步都能解释为什么继续。

有效执行率也比较稳定。

同时还有大量成熟任务排队等待Agent处理,

这时候Pro才更容易放大真实效率。

因为增加的容量是在:

一个可控的执行系统里工作。


最后

Agent任务为什么会越跑越长?

很多时候不是因为任务真的那么复杂。

而是因为:

没有人告诉它什么时候“不值得继续”。

复杂Agent Workflow真正成熟以后,

不应该只拥有:

执行能力。

还应该拥有:

停止能力。

当任务出现:

范围扩张。

重复失败。

Evidence不足。

目标漂移。

无效步骤越来越多。

主动暂停,

重新整理Current State,

往往比继续往前冲更重要。

所以以后再让 ChatGPT、Codex 跑长任务时,

除了问:

“它还能继续做什么?”

也应该多问一句:

“下一步真的还值得做吗?”

真正高效的Agent,

不是永远不停下来。

而是知道:

什么时候继续,什么时候应该停。

持续分享 Codex、大模型开发与 AI 编程实战内容。
长期深度使用各类代码大模型,也整理了
稳定的Plus/Pro会员订阅渠道,有需要可自取。

赞(0)
未经允许不得转载:171主机测评 » ChatGPT、Codex工程机制:Agent任务为什么越跑越长?什么时候应该主动停下来?
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址