来源:互联网 更新时间:2026-06-06 07:28
一旦撞上窗口上限,会遇到三件糟心事:
- “请求被拒”:provider 直接报个 context overflow 的错误;
- “费用飙升”:每轮对话都得把全部历史重发一遍,token 越多越贵;
- “早期信息丢失”:粗暴截断会把最初的任务目标也一起咔嚓掉,Agent 当场“失忆”。
所以,长任务型 Agent 必须有一套**上下文压缩(Summarization / Compaction)**机制:把那些“旧的、暂时用不上的”折叠成摘要,腾出空间继续干活。
这事听起来简单——“把旧的对话历史总结一下嘛”——但真要做得对、做得稳、做得不丢信息,里头的讲究比你想的要多得多。我们就以 DeepAgents 的实现为样本,一层层剥开来看。
---
**第 0 步|重建有效消息**:先看看上一次有没有压缩过,如果有,就把“摘要 + 后面的新消息”拼成这次实际要用的视图。原稿不动,这点很关键,第四节会细说。
**第 1 步|截断大工具参数**:这是最便宜的一招。把历史里那些超长的 `write_file` / `edit_file` 参数(比如一次写了几千行的文件内容)裁短成“前 20 个字符 + (已截断)”。很多时候,光这一步省下的 token 就够了,根本不用惊动大模型。
**第 2 步|判阈值**:算一下当前 token,看有没有超过触发线。没超,就直接发给模型。但这里藏了个巧思:万一模型还是返回了“上下文溢出”错误,它不会把错误抛给你,而是“就地转入压缩路径重试”。相当于给阈值估算留了个安全气囊。
**第 3 步|真正压缩**:超阈值了,才走完整压缩。顺序很讲究——“先选安全切点 → 再把旧历史落盘 → 最后才让 LLM 生成摘要”,然后用“摘要 + 近期消息”替代原来那一长串,发给模型。
---
DeepAgents(借助 LangChain 内核)的处理很优雅:如果发现切点正好压在某一条 Tool 消息上,就“向前回溯”,找到发起这次调用的那条 AI 消息,把切点提前,让整对要么一起被摘要、要么一起被保留。token 预算用二分查找精确逼近,但**绝不以切断工具对为代价。**
---
为什么要这么“轴”?因为保留原稿能换来一堆好处:
- “可回放(replay)”:原始对话还在,随时能重跑、复盘;
- “可做评测(evals)”:拿真实完整轨迹去跑评估,不失真;
- “能和手动压缩工具共享状态”:两条压缩路径读写同一份原稿,不会互相打架(见第六节)。
代价当然有:每次调用都要“临时重建视图”,还要做一点切点坐标的换算。但对一个要长期、可观测、可调试运行的 Agent 平台来说,**“留住原稿的价值远大于这点开销”。**
---
于是模型收到的摘要长这样(大意):
> “在文件 `thread_xxx_archive.md` 中,记录了第 1 到 20 轮对话的完整历史。本次会话的目标是……已执行的操作有……接下来的计划是……”
这意味着上下文瘦下来了,但**任何被折叠掉的细节,Agent 都能用 `read_file` 翻回来。** 摘要漏掉了某个关键命令的输出?没关系,去存档里查。这一手把“有损压缩”变成了“无损归档 + 有损视图”,是它最实用的增强。
顺带一提,摘要本身也不是随便写的。提示词强制 LLM 按四段 checklist 输出:「SESSION INTENT(这次到底要干嘛) / SUMMARY(关键决策与结论) / ARTIFACTS(动了哪些文件) / NEXT STEPS(接下来做什么)」——专门防止压缩后 Agent 重复劳动,或忘了产出物。
---
- **自动层**(`SummarizationMiddleware`):后台兜底。token 一旦超过触发线(模型 profile 可用时,默认是窗口的 **85%**)就自动压,全程不用模型或用户操心。
- **手动层**(`SummarizationToolMiddleware`):给 Agent 装一个 `compact_conversation` 工具,并在系统提示里悄悄告诉它——“当你切换到全新任务、或已经拿到结果、旧上下文用不上时,可以主动调用它清场”。
手动层有个防呆设计:**“50% 资格闸门”。** 如果上下文还没到自动触发线的一半,模型就算手贱调了 `compact_conversation`,也会被礼貌拒绝(“还没到该压的时候”),避免过早压缩白白浪费一次 LLM 调用。
两层最聪明的地方在于:**它们共享同一个 `_summarization_event` 状态字段。** 自动压的和手动压的写同一份账,互相可见、协同工作,不会出现“压了两遍”“坐标对不上”的混乱。
---
电视剧《小欢喜》剧情介绍
俄罗斯最大yandex入口外贸日报直达链接
二次元男生网名可爱(精选100个)
美好的简约网名男生(精选100个)
腾讯元宝怎么用来分析股票基金的基本面信息?
Bubbly无法连接服务器修复方法
盖乐世社区怎么删除帖子?盖乐世社区个人发布内容撤回步骤
欧易OKX官方网站直达入口 2026欧易官方App安卓版v7.1.0下载安装
新浪人工智能热点小时报丨2026年06月20日02时_今日实时人工智能热点速递
免费观看国外短视频的app有哪些 观看国外短视频的软件下载
问题:CIA币好不?Cia Protocol币今日上线:价格预测、代币经济学和未来潜力
国际贵金属走低,现货黄金价格跌0.49%
wallpaper壁纸声音怎么开启
倒数日怎么注册 倒数日账号注册教程
币安Binance交易所官方入口 币安App下载安装与实名注册教程
本田CR-V支持哪些手机互联功能
玉米名字网名大全男生(精选100个)
失落城堡2打完魔王后如何继续玩
短剧《退休金断供,女儿女婿慌了》剧情介绍
《梦幻西游》特殊鬼怪怎么抓-隐藏变异鬼应对要点
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc