上下文预算 是做什么的?
分析 Claude Code 会话中每个已加载组件的令牌开销,并提供可操作的优化建议以回收上下文空间。
何时使用
- 会话性能感觉缓慢或输出质量下降
- 你最近添加了许多技能、代理或 MCP 服务器
- 你想知道实际还有多少上下文空间
- 计划添加更多组件,需要确认是否有足够空间
- 运行
/context-budget命令(此技能支持该命令)
工作原理
阶段 1:盘点
扫描所有组件目录并估算令牌消耗:
代理(agents/*.md)
- 统计每个文件的行数和令牌数(单词数 × 1.3)
- 提取
descriptionfrontmatter 的长度 - 标记:文件 >200 行(重)、描述 >30 词(frontmatter 臃肿)
技能(skills/*/SKILL.md)
- 统计每个 SKILL.md 的令牌数
- 标记:文件 >400 行
- 检查
.agents/skills/中是否有重复副本——跳过相同副本以避免重复计数
规则(rules/**/*.md)
- 统计每个文件的令牌数
- 标记:文件 >100 行
- 检测同一语言模块中规则文件之间的内容重叠
MCP 服务器(.mcp.json 或活跃的 MCP 配置)
- 统计配置的服务器数量和工具总数
- 估算模式开销:每个工具约 500 令牌
- 标记:工具 >20 个的服务器、包装简单 CLI 命令(
gh、git、npm、supabase、vercel)的服务器
CLAUDE.md(项目级 + 用户级)
- 统计 CLAUDE.md 链中每个文件的令牌数
- 标记:合计 >300 行
阶段 2:分类
将每个组件归入一个桶:
| 桶 | 标准 | 操作 |
|---|---|---|
| 始终需要 | 在 CLAUDE.md 中引用、支持活跃命令或匹配当前项目类型 | 保留 |
| 有时需要 | 领域特定(例如语言模式)、未在 CLAUDE.md 中引用 | 考虑按需激活 |
| 很少需要 | 无命令引用、内容重叠或无明确项目匹配 | 移除或延迟加载 |
阶段 3:检测问题
识别以下问题模式:
- 臃肿的代理描述 —— frontmatter 中描述 >30 词,每次 Task 工具调用都会加载
- 沉重的代理 —— 文件 >200 行,每次生成都会膨胀 Task 工具上下文
- 冗余组件 —— 技能重复代理逻辑、规则重复 CLAUDE.md
- MCP 过度订阅 —— >10 个服务器,或包装可免费使用的 CLI 工具的服务器
- CLAUDE.md 臃肿 —— 冗长解释、过时章节、应改为规则的指令
阶段 4:报告
生成上下文预算报告:
上下文预算报告
═══════════════════════════════════════
总估计开销:~XX,XXX 令牌
上下文模型:Claude Sonnet(200K 窗口)
有效可用上下文:~XXX,XXX 令牌(XX%)
组件细分:
┌─────────────────┬────────┬───────────┐
│ 组件 │ 数量 │ 令牌 │
├─────────────────┼────────┼───────────┤
│ 代理 │ N │ ~X,XXX │
│ 技能 │ N │ ~X,XXX │
│ 规则 │ N │ ~X,XXX │
│ MCP 工具 │ N │ ~XX,XXX │
│ CLAUDE.md │ N │ ~X,XXX │
└─────────────────┴────────┴───────────┘
警告:发现 N 个问题:
[按可节省令牌数排序]
Top 3 优化建议:
1. [操作] → 节省 ~X,XXX 令牌
2. [操作] → 节省 ~X,XXX 令牌
3. [操作] → 节省 ~X,XXX 令牌
潜在节省:~XX,XXX 令牌(当前开销的 XX%)
在详细模式下,额外输出每个文件的令牌计数、最重文件的逐行细分、重叠组件之间的特定冗余行,以及包含每个工具模式大小估计的 MCP 工具列表。
示例
基本审计
用户:/context-budget
技能:扫描配置 → 16 个代理(12,400 令牌)、28 个技能(6,200)、87 个 MCP 工具(43,500)、2 个 CLAUDE.md(1,200)
标记:3 个沉重代理、14 个 MCP 服务器(其中 3 个可被 CLI 替代)
最大节省:移除 3 个 MCP 服务器 → -27,500 令牌(降低 47% 开销)
详细模式
用户:/context-budget --verbose
技能:完整报告 + 每个文件的细分显示 planner.md(213 行,1,840 令牌)、
MCP 工具列表及每个工具大小、并排显示的重复规则行
扩展前检查
用户:我想添加 5 个更多 MCP 服务器,还有空间吗?
技能:当前开销 33% → 添加 5 个服务器(约 50 个工具)将增加约 25,000 令牌 → 推高到 45% 开销
建议:先移除 2 个可被 CLI 替代的服务器,以保持开销低于 40%
最佳实践
- 令牌估算:对于散文使用
单词数 × 1.3,对于代码密集型文件使用字符数 / 4 - MCP 是最大的杠杆:每个工具模式约成本 500 令牌;一个 30 工具的服务器比所有技能加起来还贵
- 代理描述总是加载的:即使代理从未被调用,其描述字段也存在于每次 Task 工具上下文中
- 详细模式用于调试:当你需要精确定位导致开销的具体文件时使用,不适合常规审计
- 变更后审计:在添加任何代理、技能或 MCP 服务器后运行,尽早发现膨胀