智能体每调一次工具,就会把返回结果追加进上下文。查十次数据库、翻二十页文档,一轮任务下来,上下文里大半是工具返回的原始文本。窗口还没满,模型先开始丢三落四:早期的用户要求被淹没,中间步骤的结论被覆盖,最后一步算出的结果和第一步的前提对不上。上下文膨胀不只是费钱,更是可靠性问题,治理要从工具结果的管理入手,而不是等窗口满了再抢救。

首先给工具结果分级。不是所有返回都值得原样保留。结构化数据只留关键字段,列表类结果只留命中项和总数,长文本只留摘要和定位信息。分级标准要写在工具封装层,而不是指望模型自己判断该删什么。模型在上下文紧张时做取舍,往往删掉的正是后面要用的前提。分级规则越明确,模型的行为就越可预期。

其次设配额。每个工具的返回都要设定字数上限,超限按策略截断:日志类取尾部,列表类取头部加总数,文档类取命中段落。配额不是一刀切,关键工具可以放宽,但放宽也要有上限,总预算由任务级统一控制。配额超了不能静默丢弃,要在摘要里记一笔,说明丢了什么、去哪里找回,否则排障时根本无从查起。

再次设压缩点。每隔固定轮数做一次检查点压缩:把已确认的结论、待办事项、已排除的选项写成结构化小结,用小结替换掉原始对话轮次。压缩必须保留决策链:结论是什么、依据哪次工具返回、还有什么没确认。只留结论不留依据的压缩,下次纠错时无从查起,等于把排障线索一起压缩掉了。

最后是引用代替复述。体积大的原始结果存到任务外部存储,上下文里只留编号和摘要。需要细节时再按编号取回,而不是全程背着全文跑。这样做还有一个好处:复核和排障时能看到模型当时到底拿到了什么,而不是只看到被压缩过的版本,出了问题也能还原现场。

落地时盯三个指标:上下文占用率、截断发生率、任务成功率。截断率上升但成功率没掉,说明压缩策略有效;成功率跟着掉,说明砍到了关键信息。先从配额和分级动手,压缩点后上,不要一上来就全量重构,循序渐进才能看出每一步的真实收益。