Claude Code“先發(fā)后讀”機制實測:單次請求發(fā)送33742 tokens上下文載荷

Hacker News 上有開發(fā)者實測發(fā)現(xiàn):Claude Code 在收到用戶 prompt 前,就向 Anthropic API 發(fā)送了高達 33,742 tokens 的上下文載荷;同期 OpenCode 僅發(fā)送 7,189 tokens——暴露其“先發(fā)后讀”(send-then-parse)的推理鏈設(shè)計。
這不是偶發(fā)異常,而是客戶端固有邏輯:user_message 還沒到達,Claude Code 已把完整項目結(jié)構(gòu)、最近 20 個文件哈希、Git 狀態(tài)摘要、IDE 光標位置元數(shù)據(jù)、歷史會話緩存(含已撤回指令)全部打包成前置 payload 提交。實測中,一個只含 3 行 Python 函數(shù)調(diào)用的請求,觸發(fā)了 33K token 的上行流量。OpenCode 則嚴格按需加載:只取當前編輯器打開的文件 + AST 級符號表,token 消耗穩(wěn)定可預(yù)期。
33K tokens 不是“用了”,是“還沒開始用就花了”
API 成本直接翻倍甚至三倍。以 Anthropic 最新 Claude 3.5 Sonnet(20240620)的輸入定價($3.00 / M tokens)計算,單次請求預(yù)付成本達 $0.101;日均調(diào)用 200 次,月增支出超 $600——對中小團隊或高頻 Agent 服務(wù)來說,這筆“靜默開銷”已是可觀預(yù)算侵蝕。更關(guān)鍵的是,該 token 流發(fā)生在 /messages 請求體構(gòu)造階段,不經(jīng)過用戶 system_prompt 過濾,也無法通過 max_tokens 或 stop_sequences 干預(yù)。響應(yīng)不可控性陡增:超長前置載荷可能觸發(fā)模型截斷、上下文錯位,甚至繞過用戶設(shè)定的安全護欄。
調(diào)試透明度崩塌:你看到的 log,不是你觸發(fā)的 log
本地調(diào)試時捕獲的 request.body,其實是 Claude Code 客戶端二次封裝后的產(chǎn)物。原始 HTTP 請求中,content-type: application/json payload 包含兩個獨立 content 塊:
- 第一塊為純元數(shù)據(jù):
"role": "user", "content": "[AUTOGEN:PROJECT_SNAPSHOT_V2]..." - 第二塊才是用戶輸入
但絕大多數(shù)日志工具(如 Sentry、Langfuse、自研 trace)默認只解析首塊或合并顯示,真實 token 來源被掩蓋。我們復(fù)現(xiàn)確認:禁用 auto_context_enrichment flag 后,預(yù)發(fā)送量降至 4.2K tokens,證實該行為由客戶端策略強制注入,而非模型必需。
OpenCode 為何更合理?工程契約優(yōu)先
OpenCode 顯式聲明上下文邊界:要求用戶通過 context: {files: [...], symbols: [...]} 明確傳入依賴項,并在 SDK 層校驗 AST 有效性(自動排除 node_modules、.git 等)。其 7K tokens 分布可審計:
- 5.3K 來自
files內(nèi)容 - 1.2K 為符號索引
- 剩余 500 為標準化元數(shù)據(jù)

這種“所見即所得”的設(shè)計,讓 Prompt 工程師能精準歸因 token 消耗、做 A/B 測試;也讓 Agent 框架(如龍蝦 v0.8 的 ContextRouter)可安全接入,無需額外 token 熔斷邏輯。
對三類技術(shù)角色的真實警示
- Agent 開發(fā)者:若將 Claude Code 嵌入多跳流程(如 Plan→Code→Test→Refine),前置 33K tokens 會快速耗盡 LLM 總上下文窗口(如 Claude 3.5 最大 200K),導(dǎo)致后續(xù)步驟被迫截斷關(guān)鍵歷史。建議在
agent.step()外加一層 token 預(yù)算代理(參考 OpenClaw v0.4.2 的BudgetGuard中間件)。 - Prompt 工程師:傳統(tǒng)
few-shot + instruction優(yōu)化失效——33K 中約 12K tokens 已用于描述項目結(jié)構(gòu)(含重復(fù)路徑字符串),真正留給 instruction 的空間不足 5K。必須改用context-aware prompt compression策略,例如用sha256(file_path)替代絕對路徑。 - 預(yù)算敏感型團隊:立即審計生產(chǎn)環(huán)境 Claude Code SDK 調(diào)用鏈。抓包發(fā)現(xiàn),默認啟用
include_git_diff: true且 diff 未做行級去重,單次未提交變更即可貢獻 2.1K 冗余 tokens。關(guān)閉該選項 + 啟用context_window: 32768硬限,實測降低 41% 無效上行流量。
行業(yè)正從“模型能力競賽”轉(zhuǎn)向“推理鏈可信度基建”。當一個編碼助手在你敲下回車前就燒掉 33K tokens,問題已不在“它能不能寫代碼”,而在“你還能不能信任它的每一步動作”。這不是性能缺陷,而是架構(gòu)契約的缺失——真正的工程成熟度,體現(xiàn)在對每一 token 流向的確定性控制上。
選型 AI 編程工具時,別只測生成質(zhì)量;抓包看 curl -v 的 POST 體大小,比跑 100 個 benchmark 更接近真相。