两大核心机制
上下文压缩
当对话超出模型窗口时,智能总结旧消息,释放空间给新内容——而不丢失关键信息。
输出恢复
当模型的单次输出超出 Token 上限时,自动检测并无缝续写——用户完全无感知。
上下文压缩:五层管线
上下文压缩不是简单的「删除旧消息」——它是一个精细的五层管线,每一层处理不同粒度的信息压缩:第一层:工具结果预算
当一轮对话中有多个工具调用(比如专家并行搜索 10 个网页),所有工具结果的总量受聚合预算管控。超出预算的结果会被按优先级截断。第二层:历史工具结果收缩
越早的消息中的工具结果,对当前决策的参考价值越低。这一层自动将旧轮次的工具输出压缩为摘要——保留「做了什么、结论是什么」,丢弃原始细节。第三层:冷区消息折叠
对话中最早的一批消息(「冷区」)被 AI 摘要为一段结构化总结,作为系统消息注入。摘要保留:- 用户的关键决策和偏好
- 重要的工具执行结果
- 对话中建立的约定和上下文
第四层:记忆刷出
在压缩发生前,将对话中识别出的有长期价值的信息(用户偏好、项目上下文、关键决策)写入专家的长期记忆。即使对话消息被折叠,这些信息不会丢失。第五层:实时工具输出压缩
工具执行返回的结果如果过长(比如一个bash 命令输出了数千行日志),在进入对话状态之前就被智能截断:
输出恢复:透明续写
有时候专家需要生成很长的内容——一篇完整的文章、一个复杂的代码文件、一份详尽的分析报告。当输出长度超过模型的单次最大 Token 限制时,输出恢复机制会自动接管。工作原理
1
截断检测
Runtime 监听模型的停止信号——不同供应商有不同的截断标记(
max_tokens、length),统一识别。2
尾部锚点压缩
被截断的输出可能长达数万 Token。将其压缩为最后约 2000 字符的「尾部锚点」——AI 只需要知道它「说到哪了」就能续写。这一步节省了 91% 的重复输入成本。
3
续写指令注入
注入一条特殊指令:“你的输出被截断了。直接从中断处继续,不要道歉,不要复述,不要摘要。”
4
半截工具调用处理
如果截断发生在工具调用的参数中间,自动剥离不完整的工具调用,指示 AI 重新发起完整的调用。
5
恢复上限
最多恢复 3 次。如果 3 次恢复后仍未完成,展示一个「输出被截断」提示并提供「继续生成」按钮。
用户体验
整个恢复过程对用户完全透明:输出恢复不是「让 AI 写得更多」的 hack——它是对模型物理限制的工程化解决方案。就像网络传输中的分包和重组一样自然。
反应式压缩
除了预防性的分层压缩,系统还有一道反应式防线: 当模型调用返回一个上下文溢出错误时(某些供应商会直接拒绝过长输入),Runtime 不会简单报错——而是:- 识别溢出信号
- 触发紧急压缩(更激进的摘要策略)
- 用压缩后的上下文重新发起请求
智能摘要的质量保证
上下文压缩的核心挑战不是技术实现,而是「不丢失关键信息」。袋袋的摘要策略遵循几个原则:原则一:决策优先
原则一:决策优先
用户明确做出的决策(「用 React」「不要 TypeScript」「预算 1 万」)在摘要中享有最高优先级,永不被压缩掉。
原则二:结果优于过程
原则二:结果优于过程
工具执行的结论(「文件创建成功」「测试通过 42/42」)比执行过程(完整的命令输出)更重要。
原则三:可重获取则可丢弃
原则三:可重获取则可丢弃
文件内容可以被 AI 重新读取,网页可以重新搜索——这类信息在空间紧张时优先被压缩。但用户口头描述的需求无法重获取,必须保留。
原则四:近期完整,远期概括
原则四:近期完整,远期概括
最近 2-3 轮的对话保持完整原文;更早的消息逐步被更高层次的摘要取代。这模拟了人类的记忆衰减——近期事件细节清晰,远期只记得要点。

