Files
everything-claude-code/docs/zh-CN/skills/context-budget/SKILL.md
2026-03-29 21:21:18 -04:00

144 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: context-budget
description: 审核Claude Code上下文窗口在代理、技能、MCP服务器和规则中的消耗情况。识别膨胀、冗余组件并提供优先的令牌节省建议。
origin: ECC
---
# 上下文预算
分析 Claude Code 会话中每个已加载组件的令牌开销,并提供可操作的优化建议以回收上下文空间。
## 使用时机
* 会话性能感觉迟缓或输出质量下降
* 你最近添加了许多技能、代理或 MCP 服务器
* 你想知道实际有多少上下文余量
* 计划添加更多组件,需要知道是否有空间
* 运行 `/context-budget` 命令(本技能为其提供支持)
## 工作原理
### 阶段 1清单
扫描所有组件目录并估算令牌消耗:
**代理** (`agents/*.md`)
* 统计每个文件的行数和令牌数(单词数 × 1.3
* 提取 `description` 前言长度
* 标记:文件 >200 行(繁重),描述 >30 词(臃肿的前言)
**技能** (`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检测问题
识别以下问题模式:
* **臃肿的代理描述** — 前言中描述 >30 词,会在每次任务工具调用时加载
* **繁重的代理** — 文件 >200 行,每次生成时都会增加任务工具的上下文
* **冗余组件** — 重复代理逻辑的技能,重复 CLAUDE.md 的规则
* **MCP 超额订阅** — >10 个服务器,或包装了可免费使用的 CLI 工具的服务器
* **CLAUDE.md 臃肿** — 冗长的解释、过时的部分、本应成为规则的指令
### 阶段 4报告
生成上下文预算报告:
```
上下文预算报告
═══════════════════════════════════════
总预估开销:约 XX,XXX 个词元
上下文模型Claude Sonnet (200K 窗口)
有效可用上下文:约 XXX,XXX 个词元 (XX%)
组件细分:
┌─────────────────┬────────┬───────────┐
│ 组件 │ 数量 │ 词元数 │
├─────────────────┼────────┼───────────┤
│ Agents │ N │ ~X,XXX │
│ Skills │ N │ ~X,XXX │
│ Rules │ N │ ~X,XXX │
│ MCP tools │ N │ ~XX,XXX │
│ CLAUDE.md │ N │ ~X,XXX │
└─────────────────┴────────┴───────────┘
WARNING: 发现的问题 (N)
[按可节省词元数排序]
前 3 项优化建议:
1. [action] → 节省约 X,XXX 个词元
2. [action] → 节省约 X,XXX 个词元
3. [action] → 节省约 X,XXX 个词元
潜在节省空间:约 XX,XXX 个词元 (占当前开销的 XX%)
```
在详细模式下,额外输出每个文件的令牌计数、最繁重文件的行级细分、重叠组件之间的具体冗余行,以及 MCP 工具列表和每个工具模式大小的估算。
## 示例
**基本审计**
```
/context-budget
技能:扫描设置 → 16个代理12,400个令牌28个技能6,20087个MCP工具43,5002个CLAUDE.md1,200
标记3个重型代理14个MCP服务器3个可替换为CLI
最高节省移除3个MCP服务器 → -27,500个令牌减少47%开销)
```
**详细模式**
```
/context-budget --verbose
技能:完整报告 + 按文件细目显示 planner.md213 行1,840 个令牌),
MCP 工具列表及每个工具的大小,重复规则行并排显示
```
**扩容前检查**
```
User: 我想再添加5个MCP服务器有空间吗
Skill: 当前开销33% → 添加5个服务器约50个工具会增加约25,000个tokens → 开销将升至45%
建议先移除2个可用CLI替代的服务器以保持在40%以下
```
## 最佳实践
* **令牌估算**:对散文使用 `words × 1.3`,对代码密集型文件使用 `chars / 4`
* **MCP 是最大的杠杆**:每个工具模式约消耗 500 令牌;一个 30 个工具的服务器开销超过你所有技能的总和
* **代理描述始终加载**:即使代理从未被调用,其描述字段也存在于每个任务工具上下文中
* **详细模式用于调试**:需要精确定位导致开销的确切文件时使用,而非用于常规审计
* **变更后审计**:添加任何代理、技能或 MCP 服务器后运行,以便及早发现增量