周五下午接手跨模块重构时,终端里的景象往往令人窒息。智能体连续运行了两小时,排查并修改了二十多个文件。测试套件突然吐出上千行报错堆栈,终端随即显示正在压缩上下文。屏幕前的人以为它在做内存垃圾回收,片刻后就能继续推进修复。终端却突然抛出提示词长度超限的致命错误,整个交互当场冻结死锁。工作区里散落着数十个修改了一半的脏文件,之前的排查进展瞬间报废。
2026 年 9 月下旬,Anthropic 发布了 Claude Code 的 v2.1.284 版本。社区焦点都在新接入的模型能力上。但更新日志里悄悄塞入了一条极其狼狈的紧急补丁。官方试图修补一个高频缺陷。智能体在自动压缩历史之后,后续请求依然频繁超出窗口限制。面对自省压缩造成的死锁,官方拿出的修复手段相当生硬。客户端在首次压缩超限后,只能强行触发二次压缩。外部程序直接抛弃更早的上下文切片,哪怕那包含着关键的接口约束。与此同时,终端状态栏强制上线了月度美元花费熔断。消费一旦超过阈值,网络请求物理切断。这两处补丁看似仓促,却撕开了大模型自省治理的工程硬伤。
模型越想精简信息上下文越膨胀
很多工程团队在搭建智能体时,习惯把整理上下文的责任交给模型本身。这种设计的直觉非常自然。大模型拥有很强的文本理解能力。只要提示词要求它总结之前的排查记录,似乎就能换回一份紧凑精炼的摘要。但在实际工程场景中,概率模型的自省机制往往走向反面。

长程排查会留下极其混乱的代码现场。上千行堆栈报错与大量文件改动充斥在窗口中。当系统要求模型压缩时,自注意力机制会本能地追求信息完整。语言模型是基于概率采样的预测器。它在物理上无法确定哪一行报错日志包含真正的根因。出于防止遗漏的本能,模型会把所有改动的类名与尝试路径密密麻麻塞进摘要。
精心提炼出来的压缩文本,信息密度往往大幅反弹。外部客户端还要装配当前任务的必要组件。刚读取的代码片段需要加入请求。底层的工具接口定义和近两轮问答也必须完整带上。各方载荷拼装在一起,总请求体积瞬间击穿服务端的三万两千词刚性限制。智能体在自己生成的密集摘要里撞墙,进程不可逆地陷入停滞。
让一个擅长发散生成的概率模型去精简历史,往往把冗余记忆越理越乱。
外部宿主在工具出口踩死物理刹车
要终结压缩死锁的循环,控制权必须彻底收回到外部宿主程序手中。

稳固的工程底座绝不允许未经清洗的原始日志直接灌入模型上下文。工具调用的标准输出接口必须设立第一道防线。单元测试如果打印出几千行次级报错,宿主程序必须单步强制截断。只要提取到首个失败断言,后续产生的海量日志立刻丢弃。在污染源头掐断冗余噪声,注意力窗口就不会被次级信息挤占。
更深层的架构治理,在于彻底抛弃单向滚雪球的历史继承模式。智能体执行长程重构任务时,不应背着完整的对话历史向前走。排查过程中验证通过的结构化结论,应当落盘写入独立的状态文件。主会话只保留当前修改的局部代码与最新的错误断言。任务推进一个阶段,临时上下文便立即清空销毁。新一轮探索始终在干净正交的环境中装配启动。
外部网关还必须配备冷酷的物理断路器。Claude Code 引入的月度美元消耗熔断,就是很直接的防线。传统的程序死循环最多打满处理器,崩溃过程并不产生额外开销。但在智能体时代,每次无效的自省重试都在真实扣减账单。官方未能从算法上根治压缩膨胀,转而选择在终端状态栏加上消费熔断。这在工程现场呈现出奇特的讽刺。程序自身的逻辑缺陷,最终由用户的账单限额来充当刹车片。开发者承受着半成品脏代码的折磨,还要为工具自身的逻辑漏洞买单。依靠确定性的宿主契约守死边界,智能体才不会在后台静默烧钱。
真正的工程防线从不靠模型自律,而来自宿主在每个出口处的物理截断。
复杂软件工程能够稳定交付,依靠的是确定性的基础设施契约。概率模型负责局部的代码推理,外部宿主负责守死物理边界。管住每一处输入和输出,智能体才能在长程任务里安全落地。
