化:六個技巧顯著降低 Token 消耗)
Claude Code 是 Anthropic 推出的命令行 AI 編程助手直接在終端里使用可以生成代碼、修改文件、執(zhí)行命令、讀取測試結(jié)果。作為日常開發(fā)輔助它確實方便但很多人的第一感受是token 燒得比想象中快。一個典型場景是上午開了一個會話下午還在同一個上下文里改另一個模塊對話歷史里塞滿了舊代碼。下面這六條實用技巧是我反復(fù)測試后篩選出來的適合已經(jīng)裝上 Claude Code、想在正常開發(fā)里控制成本的人。先說明一句能不能真降一半取決于任務(wù)類型和使用習(xí)慣。如果主要浪費來自長會話、大文件、反復(fù)試錯降幅可以非常大如果任務(wù)本身很小效果可能沒那么明顯。1. 先搞清楚 token 到底花在哪再談省1.1 token 消耗的四個主要去向在優(yōu)化成本之前先得明白 Claude Code 的 token 花在哪些地方。很多人以為它只消耗“聊天記錄”實際并不是。Claude Code 是操作型工具它不只是“回答”還要讀文件、改文件、跑命令、根據(jù)結(jié)果繼續(xù)執(zhí)行。所以 token 消耗點比普通聊天工具更多??梢源致苑殖伤念愊到y(tǒng)提示詞和項目規(guī)則。每次請求都會攜帶運行環(huán)境的基礎(chǔ)說明還會讀取項目根目錄下的 CLAUDE.md。這部分雖然單次不高但每次請求都扣一次。對話歷史和工具調(diào)用結(jié)果。用戶輸入、AI 的思考輸出、工具執(zhí)行返回的內(nèi)容都會作為后續(xù)請求的上下文。這里是最容易被低估的一塊。文件內(nèi)容。AI 需要修改代碼時通常會讀入文件內(nèi)容。文件越大讀入的輸入 token 越高。AI 輸出。生成的代碼、解釋、計劃、修改 diff以及它調(diào)用工具時生成的參數(shù)都屬于輸出 token。注意一個關(guān)鍵點在 Claude Code 里工具調(diào)用并不是免費的。AI 要先發(fā)出“我要讀取某個文件”的調(diào)用系統(tǒng)把文件內(nèi)容返回AI 再基于返回內(nèi)容繼續(xù)生成下一步動作。這個過程每循環(huán)一次就會產(chǎn)生一輪新的輸入和輸出。換句話說一個表面上只需改一個函數(shù)的小任務(wù)背后可能發(fā)生十幾輪文件讀取和結(jié)果返回。所以判斷 token 消耗不能只看你輸入了多少字還要看 AI 為了完成任務(wù)實際“讀”了多少內(nèi)容。1.2 什么情況下 token 消耗最容易失控結(jié)合我自己的測試下面幾種場景最容易讓 token 快速上漲長會話不清理。一個會話從上午開到下午中間聊了需求、改過配置、跑過測試。每一次新提問都會攜帶全部歷史輸入 token 會不斷膨脹。大文件被整文件讀入。讓 AI 修改一個幾百行的函數(shù)結(jié)果它把整個上千行的文件讀進(jìn)來。如果文件超過數(shù)萬行一次讀入就很可觀。大范圍任務(wù)。比如讓 AI“重構(gòu)整個登錄模塊”它需要反復(fù)讀取多個模塊文件、判斷依賴、猜測改動范圍輸入和輸出都會翻倍。失敗重試。代碼運行報錯后把報錯日志貼回去AI 又讀一遍相關(guān)文件再生成一版新代碼。來來回回token 就像滾雪球。多終端并發(fā)。在多個終端窗口同時跑 Claude Code每個任務(wù)的上下文獨立計算總消耗疊加賬單自然上漲。之所以先講這些是因為后面的六個技巧基本都圍繞同一件事減少 AI 在無關(guān)內(nèi)容上的投入減少無效重試。2. 技巧一和技巧二先把上下文管住六大技巧里最先要做的不是調(diào)參數(shù)而是管住上下文長度。上下文是 Claude Code 成本的大頭長上下文會讓每次請求的輸入 token 持續(xù)膨脹。2.1 技巧一及時用 /compact 壓縮上下文在交互式會話里輸入/compactClaude Code 會把當(dāng)前會話的歷史對話壓縮成一份摘要后續(xù)請求不再攜帶完整對話原文而是攜帶摘要。這樣能顯著降低長時間對話后的輸入 token。什么時候適合用我的判斷標(biāo)準(zhǔn)有三個同一個會話已經(jīng)連續(xù)完成多個任務(wù)上下文里堆了很多舊內(nèi)容。后續(xù)回復(fù)開始明顯變慢或者你感覺模型“記不住重點”。日志里顯示輸入 token 越來越大但當(dāng)前任務(wù)還沒結(jié)束。需要留意的是/compact 不是無損操作。壓縮后會丟失一部分細(xì)節(jié)比如之前的臨時結(jié)論、具體路徑、你隨口提過但沒寫進(jìn)代碼的參數(shù)。所以在壓縮前先把重要結(jié)果保存到文件里或者確保它們已經(jīng)寫進(jìn) CLAUDE.md。如果當(dāng)前任務(wù)已經(jīng)徹底結(jié)束更干脆的做法是直接輸入/clear清空整個會話從零開始。清空后對話歷史不再作為上下文自然不再產(chǎn)生歷史累積。我一般會給自己定一個節(jié)奏每完成一個相對獨立的功能就 /clear 一次同一個功能里需要反復(fù)調(diào)整時等基本穩(wěn)定后先 /compact再繼續(xù)下一階段。這樣不會因為頻繁清空丟掉任務(wù)背景也不會讓歷史無限膨脹。這里需要注意/compact 和 /clear 都是交互式命令不影響代碼文件本身。它們只是控制“模型看得到多少上下文”。2.2 技巧二用 CLAUDE.md 沉淀項目規(guī)則CLAUDE.md 是 Claude Code 在項目根目錄讀取的項目規(guī)則文件。啟動后它會自動把它當(dāng)作上下文背景。這意味著你不必在每個新會話里重新解釋項目技術(shù)棧、目錄結(jié)構(gòu)、測試命令和編碼約定。這部分省 token不是靠“減少單次開銷”而是靠“減少反復(fù)交代的次數(shù)”。假設(shè)你每次開新會話都要花 200 token 解釋項目規(guī)則一天 10 個會話就是 2000 token。這些規(guī)則寫進(jìn) CLAUDE.md 后每次會話開頭自動帶上雖然也會消耗 token但不會因為你忘了說而變化也不會因為你重復(fù)描述而翻倍。一個示例 CLAUDE.md 內(nèi)容# 項目規(guī)則 - 技術(shù)棧Python 3.11 FastAPI SQLAlchemy - 測試命令pytest tests/ - 代碼規(guī)范使用 ruff 檢查不要修改 migrations/ 下已有文件 - 啟動命令uvicorn app.main:app --reload創(chuàng)建方式有兩種手動創(chuàng)建或者在 Claude Code 中輸入 /init 讓它先生成一版再人工精簡。這里有一個反向風(fēng)險CLAUDE.md 并不是越詳細(xì)越好。因為它會作為每一次請求的固定上下文發(fā)送寫太多反而增加每次調(diào)用的輸入 token??刂圃谝粋€合理范圍很重要我個人建議盡量精簡到 30 到 80 行只寫“經(jīng)常用、不經(jīng)常變、寫錯代價大”的信息。比如不要放整段代碼示例不要放大段架構(gòu)歷史也不要放幾百個依賴清單。真正值得放的是測試命令、構(gòu)建命令、目錄約定、禁止改動的地方。這樣每次請求只是多帶幾十行文本卻能避免很多無效輪次。寫作時要注意CLAUDE.md 本質(zhì)上是給模型看的“項目記憶”它不是執(zhí)行腳本也不用寫成正式文檔。寫得越直接越省 token。3. 技巧三和技巧四別讓 AI 做“大而全”的輸出上下文管住后第二類開銷是輸出 token。很多人在 prompt 里沒有限制輸出范圍AI 會給出一大段解釋、計劃、示例甚至反復(fù)生成完整文件。這部分的浪費同樣