上下文預算 是做什麼的?
分析 Claude Code 會話中每個已載入元件的 token 開銷,並提供可操作的優化建議以回收上下文空間。
使用時機
- 會話效能感覺緩慢或輸出品質正在下降
- 你最近新增了許多 skills、agents 或 MCP 伺服器
- 你想知道實際上還有多少上下文空間可用
- 計劃新增更多元件,需要確認是否還有空間
- 執行
/context-budget指令(此技能為其後端支援)
運作方式
階段一:盤點
掃描所有元件目錄並估算 token 消耗:
Agents(agents/*.md)
- 計算每個檔案的行數與 token 數(字數 × 1.3)
- 擷取
descriptionfrontmatter 長度 - 標記:檔案 >200 行(過重)、description >30 字(frontmatter 臃腫)
Skills(skills/*/SKILL.md)
- 計算每個 SKILL.md 的 token 數
- 標記:檔案 >400 行
- 檢查
.agents/skills/中是否有重複副本——跳過相同副本以避免重複計算
Rules(rules/**/*.md)
- 計算每個檔案的 token 數
- 標記:檔案 >100 行
- 偵測同語言模組中 rule 檔案之間的內容重疊
MCP 伺服器(.mcp.json 或作用中的 MCP 設定)
- 計算已設定的伺服器數量與工具總數
- 估算結構開銷約為每個工具 500 個 token
- 標記:工具 >20 個的伺服器、包裝簡單 CLI 指令(
gh、git、npm、supabase、vercel)的伺服器
CLAUDE.md(專案層級 + 使用者層級)
- 計算 CLAUDE.md 鏈中每個檔案的 token 數
- 標記:合計行數 >300 行
階段二:分類
將每個元件歸入一個類別:
| 類別 | 條件 | 動作 |
|---|---|---|
| 總是需要 | 在 CLAUDE.md 中被引用、支援作用中的指令,或與當前專案類型相符 | 保留 |
| 有時需要 | 特定領域(例如語言模式)、未在 CLAUDE.md 中被引用 | 考慮按需啟用 |
| 很少需要 | 無指令引用、內容重疊,或沒有明顯的專案相符項 | 移除或延遲載入 |
階段三:偵測問題
識別以下問題模式:
- 臃腫的 agent 描述 — frontmatter 中 description >30 字,每次 Task tool 呼叫時都會載入
- 過重的 agents — 檔案 >200 行,每次 spawn 時會膨脹 Task tool 的上下文
- 冗餘元件 — 重複 agent 邏輯的 skills、重複 CLAUDE.md 的 rules
- MCP 過度訂閱 — 伺服器數量 >10 個,或包裝了可免費使用的 CLI 工具
- CLAUDE.md 臃腫 — 冗長的說明、過時的部分、應改為 rules 的指示
階段四:報告
產生上下文預算報告:
Context Budget Report
═══════════════════════════════════════
Total estimated overhead: ~XX,XXX tokens
Context model: Claude Sonnet (200K window)
Effective available context: ~XXX,XXX tokens (XX%)
Component Breakdown:
┌─────────────────┬────────┬───────────┐
│ Component │ Count │ Tokens │
├─────────────────┼────────┼───────────┤
│ Agents │ N │ ~X,XXX │
│ Skills │ N │ ~X,XXX │
│ Rules │ N │ ~X,XXX │
│ MCP tools │ N │ ~XX,XXX │
│ CLAUDE.md │ N │ ~X,XXX │
└─────────────────┴────────┴───────────┘
WARNING: Issues Found (N):
[ranked by token savings]
Top 3 Optimizations:
1. [action] → save ~X,XXX tokens
2. [action] → save ~X,XXX tokens
3. [action] → save ~X,XXX tokens
Potential savings: ~XX,XXX tokens (XX% of current overhead)
在詳細模式中,還會額外輸出每個檔案的 token 計數、最重量級檔案的逐行分解、重疊元件之間的特定重複行,以及 MCP 工具清單(含每個工具的結構大小估計)。
範例
基本稽核
User: /context-budget
Skill: Scans setup → 16 agents (12,400 tokens), 28 skills (6,200), 87 MCP tools (43,500), 2 CLAUDE.md (1,200)
Flags: 3 heavy agents, 14 MCP servers (3 CLI-replaceable)
Top saving: remove 3 MCP servers → -27,500 tokens (47% overhead reduction)
詳細模式
User: /context-budget --verbose
Skill: Full report + per-file breakdown showing planner.md (213 lines, 1,840 tokens),
MCP tool list with per-tool sizes, duplicated rule lines side by side
新增前檢查
User: I want to add 5 more MCP servers, do I have room?
Skill: Current overhead 33% → adding 5 servers (~50 tools) would add ~25,000 tokens → pushes to 45% overhead
Recommendation: remove 2 CLI-replaceable servers first to stay under 40%
最佳實踐
- Token 估算:純文字使用「字數 × 1.3」,程式碼較多的檔案使用「字元數 / 4」
- MCP 是最大的槓桿:每個工具結構耗費約 500 token;一個 30 個工具的伺服器花費比所有 skills 加起來還多
- Agent 描述總是載入:即使 agent 從未被呼叫,其 description 欄位仍會出現在每次 Task tool 的上下文中
- 詳細模式用於除錯:當你需要精確找出造成開銷的檔案時使用,不適用於常規稽核
- 變更後進行稽核:在新增任何 agent、skill 或 MCP 伺服器後執行,及早發現膨脹