很多人用ChatGPT、Codex处理复杂任务时,都经历过一种非常典型的过程。

AI第一次理解错了。

你补一句:

“不是这个意思,重点是兼容现有逻辑。”

AI重新调整。

看起来好了很多,但又改了不该改的地方。

于是你继续:

“这里不要动,只改前面的实现。”

它再次修改。

结果又出现一个新问题。

你再补:

“上一版的处理方式保留,但这里按现在这个方案。”

几轮以后,对话已经堆满各种要求:

这个不要。

那个保留。

上一条忽略。

前面的继续。

这里恢复。

那里重新改。

最后会出现一个很奇怪的现象:

你明明一直在纠正AI,但AI反而越来越难准确理解你现在到底要什么。

这时候很多人的第一反应是:

“AI怎么越改越笨了?”

但真正的问题可能不是模型突然变差。

而是当前任务里已经积累了太多:

历史指令、局部修正和互相覆盖的要求。

AI面对的已经不是最开始那个干净的任务。

而是一条越来越复杂的:

Correction Stack——纠正栈。


一、真实开发场景:每一句纠正都对,为什么最后还是乱了?

假设你让Codex完成一个任务:

“给订单接口增加重试机制,不改变现有接口行为。”

AI第一次修改以后,你发现:

它把重试次数写死了。

于是你告诉它:

“重试次数改成配置项。”

第二次,它把配置加进去了,但顺手调整了异常处理。

你说:

“异常处理不要改,保持原来的逻辑。”

第三次,它恢复异常处理,但测试开始失败。

你继续:

“测试按照新的重试逻辑调整,但原来的异常测试保留。”

第四次以后,你又发现:

它把一个旧测试删掉了。

于是继续纠正:

“旧测试不要删,恢复,然后只增加新的Case。”

每一句单独看都非常合理。

问题在于:

到了第五轮,AI需要同时理解:

最初目标是什么。

第一次哪些修改保留。

第二次哪些要求已经被覆盖。

第三次哪些地方必须恢复。

第四次哪些测试属于新要求。

哪些旧指令现在已经失效。

这时候任务难度已经发生变化。

最开始AI只需要解决:

如何增加重试机制。

现在它还要解决:

几十条历史要求之间到底是什么关系。


二、为什么“纠正AI”本身会产生新的Context?

这是最容易忽略的一点。

很多人会认为:

AI第一次做错了。

我纠正它。

错误就被新指令替换掉了。

但在长对话或者复杂Agent任务里,事情并不总是这么简单。

因为旧内容通常仍然存在于Context里。

例如前面出现过:

“重构这个模块。”

后来你说:

“不要重构,只做最小修改。”

再后来又说:

“公共部分可以适当抽象。”

对于人来说,我们可能很清楚:

最后一句是在第二句基础上的局部放宽。

但AI看到的是一系列连续信息:

重构。

不要重构。

允许部分抽象。

它需要自己推断:

当前真正有效的边界到底在哪里。

所以每一次纠正不只是修复错误。

它还会给任务增加新的解释负担。


三、背后的机制:Correction不是删除,而更像“追加补丁”

可以把一个长任务的指令想象成代码。

最开始是:

Instruction V1。

第一次纠正以后,并不一定真的把V1删除。

而更像:

V1 + Patch A。

第二次:

V1 + Patch A + Patch B。

第三次:

V1 + Patch A + Patch B + Patch C。

随着Patch越来越多,AI需要不断回答:

哪个规则优先?

哪些已经失效?

哪些仍然有效?

哪些只针对某个局部情况?

这和软件开发其实非常像。

一段代码如果不断打补丁,却从来不重新整理结构,最后就会越来越难维护。

AI任务也是一样。

指令本身也会产生“技术债”。

当纠正越来越多以后,这种债务就开始影响任务稳定性。


四、为什么“上一条忽略”没有想象中那么干净?

这是很多ChatGPT用户常用的一句话:

“上一条忽略。”

“前面的不要管。”

“重新按这个来。”

对于简单对话,这通常没什么问题。

但复杂任务里,它可能仍然存在两个问题。

第一个问题是:

你到底让AI忽略哪一部分?

上一条回答可能同时包含:

方案。

约束。

代码。

测试建议。

风险判断。

你说“上一条忽略”,到底全部作废,还是只作废其中一个方案?

第二个问题是:

即使你声明某些内容失效,历史过程仍然可能影响当前任务理解。

特别是当后续指令又引用:

“之前那个方法。”

“原来的逻辑。”

“还是按刚才的结构。”

这时候AI必须重新解析大量历史关系。

所以复杂任务真正稳定的做法,不应该无限依赖:

补一句纠正。

而应该在适当的时候:

重新生成一个干净的当前任务状态。


五、为什么Codex里这个问题比普通聊天更危险?

因为普通聊天里的指令冲突,最多导致:

回答不够准确。

但Codex里的指令冲突可能已经进入真实代码状态。

例如:

第一轮AI按照方案A改了5个文件。

第二轮你要求部分恢复。

第三轮又基于剩余修改继续方案B。

第四轮再要求保留A里的某个实现。

这时候不仅Context里有历史。

代码本身也带着历史。

于是任务同时存在两个“纠正栈”:

指令纠正栈。

以及:

代码修改栈。

如果这两个状态开始不一致,问题就更麻烦。

AI可能认为某个要求已经撤销。

但相关代码还留着。

也可能认为某段代码属于当前方案。

其实那只是第一次失败尝试留下来的东西。

所以连续纠正越多,越需要关注:

当前代码到底对应哪一版意图。


六、为什么AI越强,这个问题反而可能越来越隐蔽?

因为强模型通常很擅长处理复杂Context。

即使前面已经有很多纠正,它仍然可以给你一个看起来很合理的回答。

这容易让人产生一种错觉:

“它应该都理解了。”

但能解释这些信息,不等于所有约束之间已经完全没有冲突。

AI可能会做一件很自然的事情:

尝试同时满足尽可能多的要求。

问题是,有些要求本来就已经不应该同时满足。

例如:

最开始要求“大幅重构”。

后来要求“只做最小修改”。

如果旧目标没有被清晰废弃,AI可能最后做成:

一个看起来“比较克制的重构”。

逻辑上似乎折中了。

但这可能根本不是你现在想要的结果。


七、为什么未来“纠正栈”会越来越常见?

因为我们和AI的关系正在从:

一次问答。

变成:

持续协作。

以前一个Prompt失败:

重新开一个问题。

现在一个Codex任务可能持续很久。

AI做一步。

人Review。

再反馈。

AI继续。

再Review。

随着这种循环越来越长,人类反馈本身就会成为Context的重要组成部分。

这意味着未来Agent系统需要管理的不只是:

代码状态。

还需要管理:

Instruction State——当前有效指令状态。

哪些要求仍然有效?

哪些已经废弃?

哪些只针对某个阶段?

哪些是全局约束?

如果这些全部依赖自然语言历史自己推断,任务越长,成本越高。


八、可以用“纠正密度”判断自己的任务是不是已经开始变乱

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

纠正密度

它不是单纯统计你说了多少句话。

而是看:

一个任务从开始到完成,需要多少次人工追加纠正。

比如一个任务:

开始时定义清楚。

AI执行。

你在中间纠正一次Scope。

最后完成。

纠正密度很低。

通常没有问题。

另一种任务:

刚开始5分钟,你已经连续说:

这里不对。

那个别改。

恢复上一版。

测试不要这样。

重新按前面的方案。

如果一个任务需要大量这种局部纠正才能继续,纠正密度就很高。

这通常说明:

当前任务状态已经不够干净。


九、还可以观察三个非常明显的失控信号

第一个信号:

你开始频繁引用历史。

比如:

“按第三轮那个方案。”

“保留前面第二版。”

“不是刚才那个,是再之前那个。”

说明当前意图已经无法独立表达。

第二个信号:

AI开始反复修改同一个地方。

改过去。

改回来。

再换一种写法。

通常说明指令和代码状态都开始摇摆。

第三个信号:

你需要越来越长的文字才能解释“现在到底要什么”。

这是最明显的信号。

如果当前任务已经需要一大段话才能修复历史指令之间的关系,继续追加补丁通常不是最优解。


十、什么时候应该停止纠正,直接“重建任务”?

不是AI一做错就重新开始。

那样效率也很低。

真正需要重建任务的情况通常是:

连续纠正已经达到三四轮以上。

核心方案发生过多次改变。

你开始频繁要求恢复旧修改。

当前Diff里同时存在不同阶段的实现。

你已经很难一句话说清:

“现在最终要求是什么。”

这时候最好的动作往往不是:

再补一句。

而是:

把当前任务重新压缩成一个新的V2任务定义。


十一、怎么做一次“干净重置”?

可以让AI先停止修改。

然后重新整理四类信息。

第一:

当前目标。

现在真正要完成什么?

第二:

当前有效约束。

哪些规则必须继续遵守?

第三:

已废弃要求。

明确哪些旧方案不再有效。

第四:

当前代码状态。

哪些修改已经确认保留,哪些需要回滚?

最后重新形成一个干净任务:

当前只需要完成A。
保留B。
不再执行C和D。
不修改E。
满足F以后任务结束。

这时候再继续执行。

本质上是在做:

Instruction Compaction——指令压缩。

把十几轮历史,压缩成一个当前有效状态。


十二、为什么这比继续补Prompt更有效?

因为它减少了AI需要处理的“历史关系”。

AI不再需要判断:

第二轮和第五轮哪个优先。

上一版哪些地方还有效。

某一句“不要”到底针对哪个方案。

它只需要面对:

现在的任务是什么。

这会显著降低决策复杂度。

所以未来真正成熟的Prompt Engineering,可能并不只是:

怎么写第一条Prompt。

还包括:

长任务跑到中间以后,怎么重新整理Prompt。

这其实已经从Prompt Engineering走向:

State Management。


十三、纠正密度低:Plus通常已经够用

如果你的日常任务:

目标比较明确。

AI通常一两轮就能进入正确方向。

很少需要反复推翻前面的要求。

任务Context也不会持续积累大量冲突。

那么Plus通常已经能够覆盖很多ChatGPT和Codex使用场景。

因为你的主要需求还是:

稳定完成日常任务。


十四、纠正密度高,也不要先想到Pro

如果你现在大量任务都需要:

不断补Prompt。

反复纠正。

改了又恢复。

重新解释。

这时候第一反应不应该是:

“需要更强AI。”

因为问题可能来自:

任务初始定义不清。

历史指令没有清理。

代码状态和意图不同步。

Correction Stack已经过长。

更高的AI容量并不会自动把这些历史整理干净。

应该先优化:

任务定义。

阶段总结。

Instruction Compaction。

状态重置。

如果这些做好以后,纠正次数明显下降,说明真正的瓶颈原本就在Workflow。


十五、什么时候Pro才真正开始匹配?

更接近Pro的状态是:

你的复杂任务已经有比较成熟的状态管理。

初始任务定义清楚。

长任务会阶段性压缩Context。

旧要求能够及时废弃。

代码状态和当前意图保持一致。

纠正密度也已经控制下来。

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

大量复杂Codex任务。

大型Repository。

高Context任务。

长时间Agent执行。

多个高价值任务并行。

这时候AI侧的能力和容量才真正可能成为限制。

所以判断逻辑不是:

“我要不停纠正AI,所以需要Pro。”

而应该是:

“我已经把纠正和状态管理做好了,现在AI侧吞吐才成为瓶颈。”


最后:AI越能长期协作,我们越不能把每一次纠正都当成“没有成本”

AI第一次做错。

纠正当然是必要的。

问题在于:

如果一个任务已经连续纠正了很多次,还一直用:

“再补一句。”

“再解释一下。”

“上一条改一下。”

最终你管理的就不再是一个任务。

而是一整段:

历史指令之间的关系。

真正成熟的AI使用方式,不是从来不纠正AI。

而是知道:

什么时候继续纠正。

什么时候应该停下来,把当前意图重新整理成一个干净状态。

如果你的纠正密度低、任务通常一两轮就能稳定:

Plus通常已经够用。

如果状态管理已经成熟,而大量复杂Agent任务仍然受AI侧能力限制:

Pro才真正开始匹配。

未来AI协作真正拉开差距的,可能不是谁能写更多Prompt。

而是谁知道:

什么时候应该停止给旧Prompt打补丁,重新告诉AI——现在,我们真正要做的只有这些。

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

Logo

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

更多推荐