Context Weight 是做什麼的?
啟動時載入的任何內容都會在會話的每個請求中重新發送。一個 150k token 的 CLAUDE.md 在每個請求開始任何工作之前就要花費 150k token。此技能可以測量該負載、削減它,並用數字證明削減的效果。
腳本是此技能目錄中的 scripts/cw.py。請根據此檔案的位置解析其絕對路徑。它需要 Python 3.8+ 且無其他依賴。它絕不會更改使用者的檔案,只會輸出數字,絕不輸出對話內容,而它寫入的唯一檔案是透過 --svg 或 --open 要求產生的圖片。
即時監控? 想知道「我現在的上下文有多滿」,請使用工具本身的命令:Claude Code /context,Codex /status。此技能關注的是儲存庫和歷史記錄。
1. 測重(唯讀)
python3 <技能目錄>/scripts/cw.py report <儲存庫> --days 30 --svg
--svg 會將報告繪製成一張圖片存放在系統暫存資料夾中,並在最後一行列印路徑(Picture: ...)。將該路徑提供給使用者,以便他們一目了然地查看數字;當使用者要求查看時,可以加上 --open 直接為他們開啟。使用 --svg FILE 可指定儲存位置,但除非使用者要求,否則不要使用儲存庫內的路徑。
文字輸出包含四個部分:
- 每個工具在啟動時載入的指令檔案,以估計的 token 數表示;
- 針對每個工具的預算限制的技能清單;
- 此儲存庫的已測量會話數據;
- 排名後的發現結果。
更狹義的檢視:files <repo>、skills <repo>、sessions --top 20、sessions --project <name> --compare-at YYYY-MM-DD。任何命令都可以加上 --json。
當你向使用者報告時,請提供:
- 每個工具的啟動 token 數;
start(會話第一個請求的中位數上下文大小);start%(所有輸入中,該啟動負載被重新發送的比例);>threshold tok的比例;- 發現結果。
說明哪些數字是估計值(files、skills)、哪些是實際測量值(sessions)。Claude Code 的技能預算取決於模型的上下文視窗,但日誌中並未記錄:cw.py 預設假設為 200k 並會說明。如果使用者執行的是 1M 上下文的模型,請重新執行並加上 --window 1000000。
2. 根據數字選擇應採取的槓桿
| 信號 | 槓桿 |
|---|---|
儲存庫指令超過約 5k token,start% 很高 | 精簡指令檔案(步驟 3) |
>threshold tok 超過 50% | 會話衛生(步驟 4) |
| 「不同工具遵循不同規則」 | 建立一個標準的 AGENTS.md(步驟 3) |
| Codex「永遠看不到」警告 | 精簡,或將部分內容移至巢狀的 AGENTS.md 檔案 |
| 技能清單超過預算 | 解除安裝未使用的技能或插件。先詢問:這是使用者的設定 |
從最大的數字開始。不要碰任何數字沒有指向的內容。
3. 精簡指令檔案
完整程序請參閱 references/slimming.md。在編輯之前請先閱讀該文件。簡短形式:
- 備份檔案,然後記錄
cw.py files <repo>。 - 將每個章節分類為五種類型之一:規則(保留它,使其簡潔)、指標、參考、日誌或重複。
- 將參考和日誌移至
docs/agent-notes/。留下一行包含純路徑的指標。不要使用@:Claude Code 會在啟動時展開@imports,而 Codex 會忽略它們。 - 將核心內容保持在 200 行以內、約 5k token,低於 Codex 的 32 KiB 鏈結限制。
- 讓 AGENTS.md 成為唯一的標準檔案。CLAUDE.md 應包含
@AGENTS.md以及任何僅限 Claude 使用的行。 - 證明它:
verify-split退出碼為 0,files顯示減少,並且--max-tokens門檻通過。
移動文字是安全的。刪除知識則由使用者決定:在刪除任何非確認為重複的行之前,請先詢問。
4. 會話衛生
大多數輸入 token 來自長時間會話中的後期請求。每個請求都會重新發送先前所有的內容。
- 每個工作使用一個會話。
- 當上下文約達到視窗的一半,或工作變更時,請撰寫簡短的交接紀錄(目標、狀態、下一步、觸及的檔案),然後重新開始。在 Claude Code 中使用
/clear;在 Codex 中使用/new。優先使用此方法,而非反覆壓縮。 - 避免將大量工具輸出留在上下文中:過濾它、只取開頭部分,或將其寫入檔案後僅讀取所需內容。
5. 證明它
- 立即: 比較
cw.py files <repo>修改前後的結果,並確認verify-split退出碼為 0。 - 防止重新增長: 將
python3 <skill-dir>/scripts/cw.py files . --max-tokens 6000加入 CI 或 pre-commit。當儲存庫指令增長超過限制,或 Codex 會截斷任何內容時,它會以退出碼 1 終止;當路徑錯誤時則以退出碼 2 終止,因此拼寫錯誤永遠不會通過。 - 實際使用幾天後: 執行
cw.py sessions --project <name> --compare-at <修改日期>,並報告修改前後的start和start%。
在最後一個命令執行並取得修改後的會話結果之前,不要聲稱已實現節省效果。
退出碼
0 正常,1 檢查失敗(--max-tokens、verify-split),2 輸入錯誤(路徑不存在、檔案無法讀取、日期錯誤)。錯誤訊息輸出到 stderr。
參考資料
references/harnesses.md:每個工具載入的內容和時機、大小限制、技能資料夾,包含來源。references/slimming.md:精簡程序與驗證。