# Context Compression

> 当对话上下文接近容量上限时，自动进行上下文压缩以保持会话连续性。

- Skill: `azrael-hao/context-compression` (Agent Skill)
- Install (CLI): `npx skillmds@latest add azrael-hao/context-compression`
- Raw SKILL.md: https://api.skillmd.com/api/skills/azrael-hao/context-compression/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: azrael-hao (https://skillmd.com/u/azrael-hao)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/azrael-hao/context-compression

---


# 上下文压缩

## 触发条件

当感知到以下任一信号时，表明上下文即将耗尽，必须立即执行压缩：

1. 对话轮次已超过 20 轮且包含大量工具调用结果
2. 已读取或生成了大段代码/数据（累计超过 2000 行）
3. 子任务（Task/subagent）执行时间超过 5 分钟仍未完成
4. 感觉到回复被截断或无法完整生成

## 压缩策略

### 1. 主动告知用户
在回复开头明确说明：
> "上下文已接近容量上限，正在进行压缩以保持会话连续性。"

### 2. 生成结构化摘要
将当前会话的关键信息压缩为以下结构：
- **当前任务**：一句话描述正在做什么
- **已完成**：已完成的步骤列表
- **待完成**：尚未完成的步骤列表
- **关键文件**：涉及的文件路径及其作用
- **关键决策**：已做出的技术决策和原因
- **待确认**：需要用户确认的问题

### 3. 避免重复读取
压缩后不要重新读取已经处理过的文件内容，仅引用文件路径。对于大型数据结果，只保留统计摘要而非原始数据。

### 4. 拆分大任务
如果任务过大无法在单次会话中完成：
- 将剩余工作拆分为可独立执行的子步骤
- 用 TODO 列表记录进度
- 优先使用脚本自动化（Python/Shell）代替逐行手动操作
- 避免使用 subagent 处理需要生成大量文本的任务

## 预防措施

在整个会话过程中遵循以下原则以减缓上下文消耗：

- 读取文件时优先使用 offset/limit 参数，避免一次读取超过 200 行
- SSH 命令输出过长时使用 `head`/`tail` 截断
- 生成大型文档时使用 Python 脚本而非逐行手写
- 工具调用结果超过 100 行时，提取关键信息后不再引用原始输出
- 每完成一个里程碑就更新 TODO 列表，确保进度可追溯

