context-compression:长会话 Agent 的上下文压缩与 token 优化

前言

Coding Agent 跑久了,对话和工具输出会迅速堆满上下文窗口。常见做法是每次请求前尽量「压短」历史,单次 prompt 的 token 数确实下降了,但任务后半段 agent 反复重读文件、重问已做过的决策,总 token 反而更高。下面介绍仓库 Agent-Skills-for-Context-Engineering 中的 context-compression Skill:它把优化目标从「单次请求 token」改成「完成任务所需总 token」,并给出可落地的压缩策略、摘要结构和评估方式。

这是什么

context-compression 是一份 Agent Skill(SKILL.md 指令),由 muratcankoylan/Agent-Skills-for-Context-Engineering 维护,归属该集合中的 Context Engineering 主题。

官方描述指出:当长运行会话需要上下文压缩、结构化摘要、 compaction、按任务优化 token,或需要可交接的 durable handoff 摘要(保留决策、文件、风险与后续动作)时,应启用本 Skill。

它不负责通用 token 技巧(见同仓库 context-optimization)、压缩前的退化诊断(context-degradation)、仅把日志写到文件而不摘要(filesystem-context)、跨会话语义记忆(memory-systems),也不替代模型自管上下文时机(self-managed-context);但在需要替换上下文时,本 Skill 规定「替换文本必须保留什么」。

核心功能

三种生产向压缩路径

资料将压缩视为「省 token」与「丢信息」的权衡,并给出三种可选方案:

  1. Anchored Iterative Summarization(锚定迭代摘要)
    适合长会话且需要跟踪文件变更的场景。维护带固定栏位的持久摘要(会话意图、文件修改、决策、下一步等)。触发压缩时,只摘要新截断的片段并与既有摘要合并,而不是整段重写,以降低多次全量重写带来的漂移和静默丢细节。

  2. Opaque Compression(不透明压缩)
    适合短会话、重拉取成本低、且需要极高压缩率的场景。产出面向重建保真度的压缩表示,资料称可达 99%+ 压缩比,但不可读;无法在不跑探测式评估的情况下核对保留了什么。调试或工件追踪关键时不应使用。

  3. Regenerative Full Summary(再生全量摘要)
    适合摘要可读性重要、且会话有清晰阶段边界的场景。每次压缩触发时生成新的结构化详摘要;弱点是多次全量再生会累积丢细节。

优化目标:tokens-per-task

应统计从任务开始到完成的总 token,而非单次请求。压缩若丢掉路径、错误信息或决策理由,agent 会重新探索、重读文件、重推结论,浪费往往超过压缩所省。资料建议把「重复请求重读已处理文件」的频率当作压缩是否过激进的主信号。

工件轨迹(artifact trail)

资料称工件轨迹完整性往往是压缩评估中最弱的一维(引用 claim-context-compression-factory-benchmark)。每个压缩周期应显式保留:

  • 新建文件(完整路径)
  • 修改文件及变更(含函数名,不只文件名)
  • 已读未改文件
  • 具体标识:函数名、变量名、错误信息与错误码

建议在 agent 脚手架里单独维护 artifact index 或文件状态跟踪,而不是完全依赖摘要模型自行记住细节。

强制分节的结构化摘要

用固定分节当作 checklist,减少静默遗漏。官方示例骨架如下(可按领域改栏位,如调试 agent 增加 Root Cause / Error Messages):

## Session Intent
[What the user is trying to accomplish]

## Files Modified
- auth.controller.ts: Fixed JWT token generation
- config/redis.ts: Updated connection pooling
- tests/auth.test.ts: Added mock setup for new config

## Decisions Made
- Using Redis connection pool instead of per-request connections
- Retry logic with exponential backoff for transient failures

## Current State
- 14 tests passing, 2 failing
- Remaining: mock setup for session service tests

## Next Steps
1. Fix remaining test failures
2. Run full test suite
3. Update documentation

压缩触发策略

Strategy Trigger Point Trade-off
Fixed threshold 70-80% context utilization Simple but may compress too early
Sliding window Keep last N turns + summary Predictable context size
Importance-based Compress low-relevance sections first Complex but preserves signal
Task-boundary Compress at logical task completions Clean summaries but unpredictable timing

对 coding agent,资料默认推荐 sliding window + 结构化摘要;会话有明显阶段(调研 → 实现 → 测试)时可用 task-boundary。

用探测(probe)评估,而非单靠 ROUGE

ROUGE 或 embedding 相似度难以反映「能否继续干活」。压缩后应对关键事实提问:答对说明保留有效,答错或臆测说明压缩过激。

Probe Type What It Tests Example Question
Recall Factual retention “What was the original error message?”
Artifact File tracking “Which files have we modified?”
Continuation Task planning “What should we do next?”
Decision Reasoning chain “What did we decide about the Redis issue?”

对 coding agent,资料还提出在多个维度上打分(含准确度与 artifact-trail 保留等);准确度与工件轨迹往往比字面重叠更能区分方法优劣。

何时启用

在以下情况激活本 Skill(摘自官方 When to Activate):

  • Agent 会话超过上下文窗口
  • 代码库规模超过上下文(资料举例 5M+ token 系统)
  • 设计对话摘要策略
  • 调试 agent「忘记」改过哪些文件
  • 构建压缩质量评估框架
  • 制作可交接摘要,保留决策、文件、风险与 next actions

安装与启用

本 Skill 为文本指令,无单独二进制。常见加载方式(与 awesome-agent-skills 社区索引一致,具体以各平台文档为准):

Claude Code

/skills add https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering

安装集合后,在对话中说明要使用 skills/context-compression 下的压缩策略,或由 agent 按描述自动加载对应 Skill。

npx skills(Vercel labs)

npx skills find context-compression
npx skills add muratcankoylan/Agent-Skills-for-Context-Engineering
npx skills list

Claude.ai

可将该 Skill 目录下 SKILL.md 的 raw URL 粘贴到新对话(社区 Quick Start 所述方式)。

Cursor 等兼容 Agent

社区索引将 Cursor 列为兼容平台;通常将 Skill 目录放入项目或用户级 skills 配置路径后,在任务描述中引用「按 context-compression 做压缩与摘要」。Cursor 侧路径以当前产品文档为准,资料未给出专用命令时不臆造配置项。

Skill 源文件路径:

https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/tree/main/skills/context-compression

典型用法

  1. 选型:长会话改代码 → 优先 Anchored Iterative Summarization + 脚手架侧 artifact index;短任务极致省 token → 评估 Opaque Compression 是否可接受重拉取成本;要可读交接文档 → Regenerative Full Summary,并控制全量再生频率。

  2. 定触发:coding 场景默认 sliding window(保留最近 N 轮 + 结构化摘要);上下文利用率到 70–80% 的 fixed threshold 可作为辅助信号。

  3. 写摘要:每次压缩填充 Session Intent、Files Modified、Decisions Made、Current State、Next Steps 等强制分节;路径与函数级变更写全。

  4. 验质量:压缩后跑 Recall / Artifact / Continuation / Decision 四类 probe;若 agent 频繁重读同一文件,收紧压缩或加强 artifact 跟踪。

适用场景与注意

适合:自主 coding agent、长 horizon 任务、需要 handoff 的多人或多 agent 协作、要为压缩方案写评估与回归用例的团队。

注意:

  • 不要为省单次请求 token 牺牲工件轨迹;tokens-per-task 才是主指标。
  • Opaque Compression 在需要审计「保留了什么」时不适用。
  • 与 context-optimization、self-managed-context 等相邻 Skill 分工明确,避免在同一问题上混用多套互相矛盾的指令。

结尾

context-compression 把长会话里「怎么压上下文」写成可执行的策略与检查清单:三种压缩路径、结构化摘要 schema、触发策略表,以及 probe 式评估。若你正在做生产级 Agent 的 Context Engineering,可从官方目录直接加载该 Skill:

https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/tree/main/skills/context-compression

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜