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

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

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

小夜