14. 上下文压缩与清除
随着会话进行,上下文会不断增长。理解如何管理上下文对于保持性能至关重要。
🎯 什么是上下文?
上下文的组成
当前会话上下文 =
├── 对话历史(你的消息 + Claude 的回复)
├── 读取过的文件内容
├── 执行过的命令输出
├── 工具调用记录
└── 项目结构信息为什么需要管理上下文?
问题:上下文过大
大量上下文 → 处理变慢 → 成本增加 → 性能下降解决:上下文管理
定期清理 → 保持性能 → 控制成本 → 提升体验📊 上下文生命周期
会话开始
↓
[添加上下文]
文件读取、对话、命令执行
↓
上下文增长 → 性能下降
↓
[压缩上下文]
移除不重要的内容
↓
[清除上下文]
完全重置会话
↓
重新开始💻 实战示例
示例 1: 查看上下文使用情况
你: 显示当前上下文使用情况
Claude:
📊 上下文使用报告
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Token 使用:
- 已使用: 45,234 / 200,000
- 使用率: 22.6%
- 剩余: 154,766
组成部分:
- 对话历史: 28,456 tokens (63%)
- 文件内容: 12,345 tokens (27%)
- 命令输出: 3,123 tokens (7%)
- 其他: 1,310 tokens (3%)
最大的文件:
1. src/redux/store.js (4,567 tokens)
2. src/components/App.jsx (3,456 tokens)
3. package.json (1,234 tokens)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
建议:性能良好,无需清理示例 2: 压缩上下文
你: 压缩当前上下文
Claude:
→ 分析上下文内容...
→ 识别可压缩部分...
→ 执行压缩...
✓ 上下文已压缩
压缩结果:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
压缩前: 45,234 tokens
压缩后: 23,456 tokens
节省: 21,778 tokens (48%)
保留内容:
✓ 当前对话摘要
✓ 打开的文件
✓ 重要配置
移除内容:
✗ 旧对话细节
✗ 命令输出
✗ 临时文件内容
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━示例 3: 清除特定内容
你: 清除 src/redux/store.js 的上下文
Claude:
→ 从上下文中移除 src/redux/store.js
✓ 已清除 (节省 4,567 tokens)
当前上下文: 40,667 tokens示例 4: 完全重置
你: 清除所有上下文
Claude:
⚠️ 警告:这将清除所有对话历史和文件上下文
确认? (yes/no): yes
→ 清除对话历史
→ 清除文件缓存
→ 清除工具记录
✓ 上下文已重置
当前: 0 tokens
[会话重新开始]示例 5: 智能清理
你: 智能清理上下文
Claude:
→ 分析上下文重要性...
→ 自动选择保留内容...
✓ 智能清理完成
清理策略:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
保留:
✓ 最近 10 条对话
✓ 当前打开的文件
✓ 项目配置文件
✓ 最近的错误信息
移除:
✗ 旧的对话历史 (20 分钟前)
✗ 已关闭的文件
✗ 命令输出
✗ 重复的信息
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
节省: 35,432 tokens (75%)🎛️ 上下文管理命令
基本命令
bash
# 查看上下文使用
context info
context stats
# 压缩上下文
context compress
context trim
# 清除特定内容
context clear <file>
context clear --history
context clear --files
# 完全重置
context reset
context clear --all
# 智能清理
context cleanup
context smart-clean自动配置
json
// ~/.claude/config.json
{
"context": {
"autoCompress": true,
"compressThreshold": 0.7, // 70% 使用率时压缩
"autoCleanup": true,
"cleanupInterval": "30m", // 每 30 分钟清理
"keepRecentMessages": 20, // 保留最近 20 条消息
"keepOpenFiles": true, // 保留打开的文件
"maxTokenSize": 150000 // 最大 150k tokens
}
}📊 上下文优化策略
策略 1: 分段对话
❌ 不好:一个长会话
[2 小时的连续对话]
→ 上下文过大
→ 性能下降
✅ 好:分段会话
会话 1: 架构设计 [30 分钟]
↓ 保存摘要,开始新会话
会话 2: 实现 A 部分 [30 分钟]
↓ 保存摘要,开始新会话
会话 3: 实现 B 部分 [30 分钟]
→ 每个会话保持精简策略 2: 定期清理
时间线:
0 min → 开始 (0 tokens)
15 min → 检查 (15k tokens) ✓ 良好
30 min → 检查 (35k tokens) ✓ 良好
45 min → 检查 (55k tokens) ⚠️ 注意
60 min → 清理 (60k tokens) → 25k tokens
75 min → 检查 (40k tokens) ✓ 良好策略 3: 选择性保留
你: 完成这个大任务,然后清理上下文
Claude:
→ [执行大任务...]
✓ 任务完成
→ [清理上下文]
✓ 已清理
→ [保存摘要]
✓ 摘要已保存:
"完成了用户认证功能:
- 实现了登录/注册
- 添加了 JWT
- 集成了 Redux
下一步:实现密码重置"策略 4: 使用项目记忆
markdown
<!-- CLAUDE.md -->
# 项目上下文
## 重要信息
- 框架:React + Redux
- 状态管理:Redux Toolkit
- 样式:Tailwind CSS
## 最近完成
- [x] 用户认证 (2024-03-15)
- [x] 导航系统 (2024-03-14)
## 进行中
- [ ] 密码重置功能这样即使清除上下文,重要信息也在 CLAUDE.md 中。
🎯 最佳实践
✅ DO - 应该做的
定期检查使用情况
每 15-20 分钟检查一次上下文完成后清理
完成功能后立即清理使用 CLAUDE.md
重要信息保存在项目文件中分段处理大任务
不要在一个会话中做太多事
❌ DON'T - 避免做的
❌ 让上下文无限增长
定期清理是必要的❌ 在会话中读取大文件
使用摘要或片段❌ 保留不必要的历史
旧对话会占用空间❌ 忘记保存摘要
清理前保存重要信息
🛠️ 高级技巧
1. 自动压缩脚本
bash
#!/bin/bash
# auto-compress.sh
# 检查上下文使用率
USAGE=$(claude context info | grep "使用率" | awk '{print $2}')
# 如果超过 70%,自动压缩
if (( $(echo "$USAGE > 70" | bc -l) )); then
claude context compress
echo "✓ 上下文已自动压缩"
fi2. 上下文快照
bash
# 保存当前上下文
claude context snapshot save before-cleanup
# 清理
claude context cleanup
# 如果需要,可以恢复
claude context snapshot restore before-cleanup3. 选择性压缩
bash
# 只压缩对话历史
claude context compress --history-only
# 只压缩文件内容
claude context compress --files-only
# 压缩除特定文件外的所有内容
claude context compress --keep src/config.js4. 上下文分析
bash
# 分析上下文组成
claude context analyze
输出:
📊 上下文分析
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
类型分布:
对话: 60%
文件: 30%
命令: 7%
其他: 3%
时间分布:
最近 10 分钟: 45%
10-30 分钟前: 35%
30+ 分钟前: 20%
建议:
- 压缩 30+ 分钟前的内容
- 保留最近对话
- 清除命令输出
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━📈 性能监控
实时监控
你: 启用上下文监控
Claude:
✓ 已启用实时监控
[在提示符中显示]
[45k/200k tokens] 22% │
[60k/200k tokens] 30% │
[85k/200k tokens] 42% │⚠️
[45k/200k tokens] 22% │ (压缩后)性能指标
bash
# 查看性能指标
claude context metrics
输出:
📊 性能指标
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
响应时间:
- 平均: 1.2s
- 最快: 0.8s
- 最慢: 2.3s
Token 处理:
- 输入速度: 12.5k tokens/s
- 输出速度: 8.3k tokens/s
压缩效率:
- 压缩次数: 3
- 平均节省: 45%
- 总节省: 67k tokens
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━🚨 常见问题
Q: 上下文满了怎么办?
A: 立即执行以下步骤:
1. 保存当前工作摘要
2. 清除上下文
3. 开始新会话
4. 从摘要恢复上下文Q: 如何避免丢失重要信息?
A: 使用 CLAUDE.md:
1. 定期更新项目文件
2. 记录重要决策
3. 保存配置信息Q: 压缩会影响性能吗?
A: 不会,压缩只会:
- 移除不必要的内容
- 保留重要信息
- 提升后续性能📚 下一步
了解上下文管理后,继续学习 15. 项目记忆文件 (CLAUDE.md)
🔗 相关资源
💡 API 推荐:https://apipro.maynor1024.live/ - 一站式接入各种AI服务,注册即送0.2刀