用途
本技能用于智能体(agent)会话的上下文压缩,适用于以下情形:会话超出上下文窗口限制、代码库超出上下文窗口(如 500 万 token 以上的系统)、设计对话摘要策略、调试智能体“忘记”修改过哪些文件的问题、构建压缩质量评估框架、生成可持久交接的摘要(保留决策、文件、风险与下一步动作)。
本技能明确不覆盖相邻领域的工作:通用 token 效率手段(如掩码、前缀缓存、分区)属于 context-optimization;在选定缓解措施前诊断长上下文失败原因属于 context-degradation;把原始输出、日志或计划写入文件而不做摘要属于 filesystem-context;跨会话的长期语义记忆设计属于 memory-systems;模型自行决定何时何地重写自身上下文属于 self-managed-context——但“替换文本必须保留什么”仍归本技能。
主要能力
核心观点是:上下文压缩在 token 节省与信息损失之间取舍,应从三种可投入生产的方案中选择:
- 锚定式迭代摘要:适合长会话、需跟踪文件的场景。维护结构化、持久的摘要,显式包含会话意图、文件修改、决策、下一步等分区。压缩触发时只摘要新被截断的区段,与既有摘要合并,而不是从头再生成一次,从而避免整体重生成带来的漂移。结构强制保留信息,因为专门分区如同清单,摘要器必须逐项填充,让遗漏变得可见。
- 不透明压缩:用于短会话、重取成本低、需要最大 token 节省的场景。其压缩表示针对重建保真度优化,可实现 99%+ 的压缩率,但完全牺牲可解释性。因为没有运行探针评估就无法验证保留了哪些信息,所以调试或产物跟踪关键时绝不能使用。
- 再生式全量摘要:当摘要可读性至关重要且会话有清晰阶段边界时使用。每次压缩触发都生成详细的结构化摘要。其弱点是跨反复循环的累计细节损失——每次全量重生成都可能把早前摘要保留的细节降权。
使用方式与关键做法
以“每任务 token”而非“每请求 token”为优化目标:衡量任务开始到完成的全部 token 消耗。当压缩丢掉文件路径、错误消息或决策理由时,智能体必须重新探索、重读文件、重新推导结论,浪费的 token 远超压缩节省。压缩后重取频率应作为首要质量信号——若智能体反复要重读已处理过的文件,说明压缩过于激进。
优先解决产物轨迹问题:产物轨迹完整性往往是压缩评估中最薄弱的一维,需主动处理,因为通用摘要无法可靠维持它。每个压缩周期都要显式保留:创建了哪些文件(完整路径)、修改了哪些文件及改了什么(含函数名,而不只是文件名)、读取过但未修改的文件、具体标识符(函数名、变量名、错误消息、错误码)。建议在智能体脚手架中实现独立的产物索引或显式文件状态跟踪,而非依赖摘要器自行捕获。
用强制分区构建摘要:为摘要设置显式分区,每项都像摘要器必须填充的清单,使遗漏可见而非静默。示例分区包括会话意图、修改的文件、做出的决策、当前状态、下一步。分区应随智能体领域调整:调试类智能体需要“根因”和“错误消息”;迁移类智能体需要“源 schema”和“目标 schema”。结构本身比具体分区更重要——任何显式 schema 都优于自由形式摘要。
有策略地选择压缩触发点:依据会话可预测性选择触发策略。固定阈值(70-80% 上下文占用)简单但可能过早压缩;滑动窗口(保留最近 N 轮加摘要)上下文大小可预测;基于重要性(先压缩低相关区段)复杂但保留信号;任务边界(在逻辑任务完成时压缩)摘要干净但时机不可预测。对编码智能体默认使用滑动窗口加结构化摘要,兼顾可预测性与质量;当会话有清晰阶段转换(如先研究、再实现、后测试)时使用任务边界触发。
以探针而非指标评估:ROUGE 或嵌入相似度等传统指标无法捕捉功能性压缩质量——摘要可能在字面重叠上得分很高,却漏掉智能体继续所需的那一个文件路径。应使用基于探针的评估:压缩后提问,检验关键信息是否存活。探针类型包括回忆(事实保留,如“原始错误消息是什么”)、产物(文件跟踪,如“我们修改过哪些文件”)、续作(任务规划,如“下一步该做什么”)、决策(推理链,如“关于 Redis 问题我们决定了什么”)。
六维评分:从准确率(路径、函数名、错误码是否正确)、上下文感知(是否反映当前会话状态)、产物轨迹(是否知道哪些文件被读或被改)、完整性(是否覆盖问题各部分)、连续性(能否无需重取而继续)、指令遵循(是否遵守已述约束)评估压缩质量。准确率与产物轨迹保留往往比字面相似度更能区分方法优劣。
大代码库的三阶段工作流:对超出上下文窗口的代码库,按三阶段顺序压缩:研究阶段探索架构图、文档与关键接口,压缩为组件、依赖与边界的结构化分析,输出单份研究文档替代原始探索;规划阶段把研究文档转成含函数签名、类型定义与数据流的实现规格,500 万 token 代码库可压缩到约 2000 词规格;实现阶段依据规格执行,上下文聚焦规格加活跃工作文件,此阶段因规格已紧凑而很少需要进一步压缩。
以示例产物作为压缩种子:当提供手动迁移示例或参考 PR 时,将其用作模板理解目标模式,而非从头探索代码库。示例揭示了静态分析无法暴露的约束:哪些不变量必须成立、哪些服务会在改动时损坏、干净实现长什么样。当智能体无法区分本质复杂性(业务需求)与偶然复杂性(遗留绕行方案)时,这一点尤其重要。
锚定式迭代摘要的步骤:定义匹配领域的显式摘要分区;首次触发压缩时把截断历史摘要进这些分区;后续压缩只摘要新截断内容,不重新摘要既有摘要;把新信息合并进既有分区而非重生成,按文件路径与决策身份去重;标记信息来自哪个压缩周期,便于摘要漂移时调试。
适用场景与限制
选用锚定式迭代摘要:会话长时间运行(100+ 消息)、文件跟踪重要(编码、调试)、需要验证保留信息。选用不透明压缩:需要最大 token 节省、会话相对较短、重取成本低(如无需文件系统访问)。选用再生式摘要:摘要可解释性对人类审查至关重要、会话有清晰阶段边界、每次压缩触发可接受全上下文审查。
资料给出的压缩比与方法对照(作为来源特定基准,非通用常数):锚定迭代 98.6%、质量分 3.70,质量最佳、压缩略少;再生式 98.7%、质量分 3.44,质量良好、压缩中等;不透明 99.3%、质量分 3.35,压缩最佳、质量有损。对于存在重取成本的任务,这一取舍通常偏向结构化方案。
注意事项
- 绝不压缩工具定义或 schema:压缩函数调用 schema、API 规格或工具定义会彻底破坏智能体功能,参数名或类型被摘要掉后智能体无法调用工具。工具定义应视为不可变锚点,绕过压缩。
- 压缩摘要会臆造事实:LLM 摘要对话历史时可能引入原对话中不存在的似是而非细节。丢弃原始内容前务必对照源材料验证压缩输出,尤其是文件路径、错误码与数值。
- 压缩会破坏产物引用:文件路径、提交 SHA、变量名与代码片段在压缩中被改写或丢弃。“更新了配置文件”这类摘要会让智能体重新探索。应在专门分区中原样保留标识符,而非嵌入散文。
- 早期轮次含不可替代约束:会话最初几轮常含任务设置、用户约束与架构决策,无法重新推导。应保护早期轮次不被压缩,或将其约束提取到持久前言中,使其存活于所有压缩周期。
- 激进压缩比会跨周期累积:95% 压缩率看似单次安全,但反复应用会累积损失;三次 95% 后仅剩原 token 的 0.0125%。校准压缩比要假定多次压缩周期,而非单次。
- 代码与散文需要不同压缩:散文因自然语言冗余而压缩良好;代码不行——从函数签名或导入路径中删一个 token 就可能使其失效。应对散文区段激进摘要,同时原样保留代码块与结构化数据。
- 探针评估会给出虚假信心:探针可能通过,尽管关键信息已丢,因为探针只测试它问到的东西。只查文件名不查函数签名的探针集会漏掉签名损失。探针设计应覆盖全部六个评估维度,并在多次评估运行间轮换探针集以避免盲区。
与其他技能的关系
本技能与若干技能相连:context-degradation——压缩是降级的缓解策略;context-optimization——压缩是众多优化技术之一;evaluation——探针评估适用于压缩测试;memory-systems——压缩与便笺及摘要式记忆模式相关;self-managed-context——当模型自行触发与放置上下文时,本技能仍负责替换文本必须保留什么。