上下文預算 是做什麼的?
分析 Claude Code 會話中每個已載入元件的 Token 開銷,並提出可行的最佳化建議,以回收上下文空間。
使用時機
- 會話效能感覺遲緩或輸出品質正在下降
- 您最近新增了許多技能、代理程式或 MCP 伺服器
- 您想知道實際上還有多少上下文空間
- 計劃新增更多元件,需要知道是否還有空間
- 執行
/context-budget指令(此技能支援該指令)
運作方式
第一階段:盤點
掃描所有元件目錄並估算 Token 消耗量:
代理程式 (agents/*.md)
- 計算每個檔案的行數與 Token 數(字數 × 1.3)
- 擷取
descriptionFrontmatter 長度 - 標記:檔案 >200 行(過重),描述 >30 字(Frontmatter 臃腫)
技能 (skills/*/SKILL.md)
- 計算每個 SKILL.md 的 Token 數
- 標記:檔案 >400 行
- 檢查
.agents/skills/中是否有重複副本 — 跳過相同副本以避免重複計數
規則 (rules/**/*.md)
- 計算每個檔案的 Token 數
- 標記:檔案 >100 行
- 偵測相同語言模組內規則檔案之間的內容重疊
MCP 伺服器 (.mcp.json 或有效的 MCP 配置)
- 計算已配置的伺服器數與工具總數
- 估算 Schema 開銷:每個工具約 500 個 Token
- 標記:工具數 >20 的伺服器、包裝簡單 CLI 指令 (
gh,git,npm,supabase,vercel) 的伺服器
CLAUDE.md(專案層級 + 使用者層級)
- 計算 CLAUDE.md 鏈中每個檔案的 Token 數
- 標記:合計行數 >300 行
第二階段:分類
將每個元件歸類到一個類別:
| 類別 | 條件 | 動作 |
|---|---|---|
| 始終需要 | 在 CLAUDE.md 中被引用、支援有效指令或符合當前專案類型 | 保留 |
| 有時需要 | 領域特定(例如語言模式),未在 CLAUDE.md 中被引用 | 考慮按需啟用 |
| 鮮少需要 | 無指令引用、內容重疊或無明顯的專案匹配 | 移除或延遲載入 |
第三階段:檢測問題
識別以下問題模式:
- 代理程式描述臃腫 — 描述 >30 字的 Frontmatter 會載入到每個 Task 工具呼叫中
- 過重的代理程式 — 檔案 >200 行會在每次產生時膨脹 Task 工具上下文
- 冗餘元件 — 技能重複代理邏輯、規則重複 CLAUDE.md 內容
- MCP 過度訂閱 — 伺服器數 >10 個,或包裝了可免費使用的 CLI 工具的伺服器
- CLAUDE.md 臃腫 — 冗長的說明、過時的部分、應作為規則的指示
第四階段:報告
產生上下文預算報告:
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 工具清單(含每個工具的 Schema 大小估算)。
範例
基本審計
User: /context-budget
Skill: 掃描設定 → 16 個代理程式 (12,400 tokens),28 個技能 (6,200),87 個 MCP 工具 (43,500),2 個 CLAUDE.md (1,200)
標記:3 個過重代理程式,14 個 MCP 伺服器 (3 個可被 CLI 取代)
最大節省:移除 3 個 MCP 伺服器 → -27,500 tokens (減少 47% 開銷)
詳細模式
User: /context-budget --verbose
Skill: 完整報告 + 逐檔案解析顯示 planner.md (213 行,1,840 tokens),
MCP 工具清單(含每個工具的大小),以及重複的規則行並排顯示
擴充前檢查
User: 我想新增 5 個 MCP 伺服器,還有空間嗎?
Skill: 當前開銷 33% → 新增 5 個伺服器 (~50 個工具) 將增加約 25,000 tokens → 開銷推升至 45%
建議:先移除 2 個可被 CLI 取代的伺服器,使開銷維持在 40% 以下
最佳做法
- Token 估算:散文使用
words × 1.3,程式碼密集檔案使用chars / 4 - MCP 是最大的槓桿:每個工具 Schema 約耗費 500 tokens;一個 30 個工具的伺服器比您所有的技能加起來還貴
- 代理程式描述始終被載入:即使代理程式從未被叫用,其描述欄位也存在於每個 Task 工具上下文中
- 詳細模式用於除錯:當您需要精確定位導致開銷的檔案時使用,不適用於常規審計
- 變更後進行審計:在新增任何代理程式、技能或 MCP 伺服器後執行,以便及早發現異常增長