本文目錄
Claude Code 報出 Prompt is too long 時,官方錯誤參考裡的定義是:"The conversation plus attached files exceeds the model's context window." 也就是:當前對話加上附帶的檔案,已經超出這個模型的上下文視窗。這是視窗滿了,不是套餐額度用盡,也不是 529 Overloaded 這類服務端過載。同一則執行時報錯,在 CLI、Desktop 和雲會話裡都會出現;雲會話頁寫明,和 CLI、Desktop 共用這份錯誤參考。
下面的步驟按 Anthropic 的 Claude Code 官方文檔來寫。我們還沒有在本機執行過 Claude Code,也還沒有復現過這則報錯。文中出現的 94k、200k、967K、32MB,或大約 1,000 tokens,都只按官方文檔原樣引用,不是本站測到的數字。
互動裡還會看到什麼
基準原文是 Prompt is too long。在互動會話裡,同一情況通常顯示為:
Context limit reached · /compact or /clear to continue如果設了 DISABLE_COMPACT,這行只點名 /clear。更長的形態,包括下面的壓縮失敗形態,仍以 Prompt is too long · 開頭。在 -p 輸出和 transcript 裡,文字仍是 Prompt is too long。
如果在使用者設定裡關掉了自動壓縮,互動行還會說明:
Context limit reached · /compact or /clear to continue · auto-compact is off · /config to turn it on/config 裡的 Auto-compact 開關會把 autoCompactEnabled 寫入使用者設定。官方寫明:這條提示只在改 /config 就會生效時出現;若是 DISABLE_AUTO_COMPACT 或 DISABLE_COMPACT 關掉的,或專案/託管設定等更高優先順序範圍把 autoCompactEnabled 設成 false,提示不會出現。v2.1.235 之前,這行沒有自動壓縮提示。
Amazon Bedrock 把同一情況報成 Input is too long for requested model.,Claude Code 按同樣方式處理。v2.1.217 之前無法識別該措辭,因而不會因此觸發自動壓縮,/compact 也會以同一則報錯失敗。經 Claude apps gateway 時,雲端上游若以對方自己的錯誤形狀拒絕請求,可能報 capability_rejected: prompt_too_long;Claude Code 把它與 Prompt is too long 同等處理。v2.1.228 之前無法識別該 token,因而不會因此觸發自動壓縮。
若這一輪已經跑過自動壓縮,卻因底層錯誤失敗(例如模型不可用或認證失敗),報文會寫成:
Prompt is too long · automatic compaction failed: <the underlying error>官方的辦法是先解決被點名的那個錯誤,否則 /compact 會因同一原因失敗。v2.1.229 之前,失敗的自動壓縮只露出光禿禿的 Prompt is too long,不帶原因。
官方建議先試 /compact 或 /clear
官方“What to do”清單的第一步,是跑 /compact 總結更早的回合並騰出空間,或跑 /clear 重新開始。/clear 會清空對話上下文,但專案記憶還在。命令頁把 /reset、/new 列為 /clear 的別名。還想接著同一段對話,用 /compact;要開一段全新對話,用 /clear。/compact [instructions] 可以附帶聚焦說明。/clear [name] 可以給上一段對話起名,方便以後在 /resume 裡找到。
如果 /compact 回覆 Not enough messages to compact.,說明這是單輪對話、沒有更早內容可總結,空間被這一次提示詞以及 Claude Code 每次請求都會帶上的內容佔滿。官方接下來的步驟是:跑 /clear,用更少的貼上或更小的附件重發,或按下述辦法減少工具定義和記憶檔案。
如果是在 Claude 正在壓縮時把它停掉,然後立刻看到這則報錯,官方寫:對話其實沒變,仍然大到需要壓縮。應再跑 /compact 並重發訊息,並升級到 v2.1.304 或更新;該版本之前,在那一時刻停止可能直接以這則報錯結束本輪。在 v2.1.305,若接了許多 MCP 工具且直連 Anthropic API,這則報錯可能把底層無關的 400 或 422 擋住。官方建議升級到 v2.1.306 或更新,才能看到原來的錯誤。
用 /context 看看到底是什麼佔滿了視窗
/context 是官方給出的檢視佔用方式:彩色網格,並給出工具過重、記憶膨脹、容量警告等建議。排障頁寫明,明細按系統提示、系統工具、MCP 工具、自定義 subagent(含來源)、記憶檔案、skills 和對話訊息分類。全屏模式下明細會收起,加 all 即 /context all 可展開。子目錄 CLAUDE.md 是按需載入,不出現在會話開始時的那張明細裡。
對話已經超過模型上下文視窗時,/context 會在輸出頂部給出警告。下面這句是官方文檔例句,其中的 200k 和 94k 只是文件裡的示例數字,不是某臺機器或本站實測:
Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.出現 Context exceeds 之後,官方寫:自動壓縮開著(預設)時,直接發下一條訊息即可;若仍失敗並變成 Prompt is too long,回到該小節。自動壓縮關著時,在會話裡跑警告點名的 /compact,或 /clear 重來;在此之前,訊息會以 Context limit reached 失敗(-p 輸出裡是 Prompt is too long)。
如果超過的是壓縮視窗(例如 1M 上下文模型上的 200K 邊界),警告會改寫成另一句。官方寫:壓縮視窗可以低於模型上下文視窗,超過它的請求仍可能成功。這也是官方文檔例句:
Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.兩種形態在設了 DISABLE_COMPACT 時都改點名 /clear,不再點名 /compact。v2.1.216 之前,/context 只顯示佔用超過 100%,沒有解釋含義或如何恢復的警告行。
關掉不用的 MCP,精簡過大的 CLAUDE.md
官方清單裡包括用 /mcp disable <name> 關掉不用的 MCP 伺服器,把它們的工具定義移出上下文。/mcp 也可以在不開啟列表的情況下關掉某個或全部伺服器。第一次怎麼接線,看怎麼在 Claude Code 裡接上 MCP 伺服器(2026年11月)。
過大的 CLAUDE.md 應精簡,或改成只在相關路徑才載入的規則。記憶頁的建議是每個檔案控制在 200 行以內:更長的檔案會佔用更多上下文,也可能降低遵從度。超過 4 MiB 的檔案會被跳過。用 @path 拆檔案有助於整理,但不會減少上下文,因為被匯入的檔案會隨匯入它的 CLAUDE.md 一起載入。單個檔案超過建議長度時,啟動和 /status 會警告;多個未超單檔案建議長度的檔案合計超過組合上限時,也會警告。
按需載入的子目錄 CLAUDE.md 和規則檔案還有按字元的上限,取決於會話的上下文視窗:官方寫,200K 視窗為 40,000 字元;1M 視窗在 Claude Opus 4.6 和 Claude Sonnet 4.6 上是 200,000 字元,在更新的模型上是 150,000 字元。超過則只送出檔案開頭。v2.1.309 之前,該限制不用於按需載入的檔案。
自動壓縮預設是開著的
autoCompactEnabled 在 /config 裡顯示為 Auto-compact,預設是 true。設為 false 則不自動壓縮,手動 /compact 仍可用,idle compaction 也會關掉。DISABLE_AUTO_COMPACT=1 會關閉自動壓縮和 idle compaction,手動 /compact 仍可用,並會覆蓋 autoCompactEnabled。官方設定頁寫明:兩者只要有一個把它關掉,另一個也不能再開啟。DISABLE_COMPACT=1 會關閉全部壓縮,包括自動壓縮和手動 /compact;這時提示裡只會點名 /clear。
自動壓縮預設開啟,官方寫它通常能避免這則報錯。若在 /config 或用 DISABLE_AUTO_COMPACT 關過,按文件應再開啟。若堅持關掉,就要自己在視窗滿之前跑 /compact。
命令頁還列有 /autocompact [auto|<tokens>],用來設定自動壓縮視窗,例如 500k,或 auto 回到該模型的調定視窗。無引數時開啟對話方塊,顯示當前視窗。該命令需要 Claude Code v2.1.221 或更新。上下文頁也寫了在自動壓縮之前可以先做的事:帶聚焦的 /compact、用 /rewind 只總結一部分、用 /autocompact 500k 等把自動壓縮提前、換不相干任務時用 /clear、把大檔案閱讀交給 subagent。
自動壓縮在這則報錯上執行時,通常總結最舊的回合、保留最新的。官方寫的最後手段是:如果無法總結任何一個完整回合,會原樣保留最新的提示詞,並總結它之前的一切;若此時對話並非以該提示詞結尾,則改為總結整段對話。若準備帶下去的內容裡沒有模型回覆、且自己的文字不足大約 1,000 tokens(例如在一次過大貼上之後只發了很短的重試),Claude Code 會跳過這次恢復,需跑 /clear。v2.1.269 之前,只要無法總結完整回合,壓縮就會失敗,該狀態的會話每一輪都會再撞上這則報錯。這裡的“大約 1,000 tokens”是官方原文,不是本站實測。
只有一輪、無法壓縮時
單輪對話沒有更早回合可總結。若本應觸發自動壓縮,Claude Code 會跳過嘗試,並說明請求被什麼填滿。API 未在錯誤裡報告 token 數時,官方原文是:
Prompt is too long · this conversation is a single exchange and cannot be compacted — the request size comes mostly from system prompt, tool definitions, or attachments.API 報告了 token 數,且對話自身內容佔了請求的大部分時,官方原文是(佔位符保持原樣,不填假數):
Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) and this conversation's own content is most of it. A single-exchange conversation cannot be compacted; start with less content (smaller files or pasted text).大部分請求在對話之外時,官方原文是:
Prompt is too long · the request is ~<request tokens> tokens (limit <limit>) but this conversation is only ~<conversation tokens> tokens — the rest is system prompt, tool definitions, and attachment content. A single-exchange conversation cannot be compacted; reduce attached files/tools or start with less context.官方的恢復辦法是減少貼上、附件、工具或記憶檔案,再 /clear 重發。v2.1.162 之前,Claude Code 仍會嘗試壓縮,失敗時只露出光禿禿的 Prompt is too long。
預設自動壓縮閾值,以及未識別的模型 ID
未單獨設定自動壓縮視窗時,Claude Code 一般在對話到達該模型上下文上限時再壓縮,但官方寫了這些例外:雲會話在接近模型上限時壓縮;未開 extended context 的 Sonnet 4.6 和 Opus 4.6 在 200K 邊界壓縮;設了 CLAUDE_CODE_DISABLE_1M_CONTEXT=1 時,原生 1M 視窗的模型(官方舉例 Sonnet 5 和 Fable)也在 200K 邊界壓縮;原生 1M 視窗的模型會在視窗填滿之前壓縮,預設大約 967K tokens(官方列舉:Fable、Sonnet 5 及更新、Haiku 5.5、Opus 4.7 及更新);未識別的模型 ID 按 Claude Code 為該 ID 假定的視窗壓縮。這裡的 967K 是官方預設值,不是本站實測。
若這則報錯出現在約 200K tokens 附近,而該模型實際接受更大視窗,官方給出的原因之一是:Claude Code 不識別這個模型 ID,因而按 200K 視窗來處理。要繼續用過該點,須按 model-config「Correct the window for a gateway or custom model ID」告訴它真實視窗。啟動時可能看到類似官方例句 Model "my-gateway-opus" isn't recognized · context assumed to be 200k tokens;例句裡的 "my-gateway-opus" 是佔位,不是真實產品名。
給未識別 ID 宣告真實視窗的辦法,包括 CLAUDE_CODE_MAX_CONTEXT_TOKENS(單位 tokens)、給已知模型做 modelOverrides/modelPicker 對映,或對應當使用 1M 視窗的 ID 追加 [1m]。官方寫明,該變數對哪些 ID 生效,以當日 model-config 小節為準,不要簡化成“設了就一定管用”。識別該 ID 或採用給出的視窗之後,啟動警告不再出現。若使用自定義 ANTHROPIC_BASE_URL,且錯誤以 Prompt is too long · automatic compaction failed 開頭,官方建議設定該模型的上下文視窗,或升級到 v2.1.299 或更新;該版本之前,Claude Code 會在假定的 200K 視窗附近直接以該報文結束本輪,而不是把請求發出去。
需要更大視窗而不是更短對話時,官方寫 Fable、Sonnet 5 及更新、Haiku 5.5、Opus 4.6 及更新、Sonnet 4.6 支援 100 萬 token 上下文。如何按套餐選用 [1m] 變體,以當日 model-config 的 Extended context 節為準,這裡不編造套餐資格。套餐說明也可看Claude 價格(2026年11月),價表不搬進這篇。
壓縮之後還留下什麼
按 context-window 頁的「What survives compaction」表,壓縮之後是這樣處理的:系統提示和 output style 仍生效;專案根目錄 CLAUDE.md 與無路徑範圍的規則會從磁碟重新注入;auto memory 從磁碟重新注入;skill 描述在 v2.1.304 或更新版本會重建並重新注入;若會話開始時帶有 Git status snapshot,會從倉庫重新讀一份新的;plan mode 的計劃從磁碟重新注入;帶 paths: 的規則和子目錄 CLAUDE.md 按需再載入;Claude 讀過或編輯過的檔案最多再讀 5 個,先最近修改的,超過 5,000 tokens 的檔案只保留路徑,顯示為 Referenced file 而不是 Read;已呼叫的 skill 正文會重新注入,單個 skill 上限 5,000 tokens、合計 25,000 tokens,超出時先丟掉最舊的;後臺命令和後臺 subagent 繼續執行,Claude Code 會提醒模型哪些還在跑;此前由 hooks 加入的內容會隨對話一起被總結;匹配 compact 來源的 SessionStart hooks 會再執行,輸出加入壓縮後的上下文。上述 5,000 tokens 等數字來自官方表,不是本站實測。
帶路徑範圍的規則和子目錄 CLAUDE.md 是在讀、寫或編輯到觸發檔案時載入訊息歷史的,所以壓縮時會隨其他內容一起被總結掉。只出現在對話裡、尚未再載入的子目錄 CLAUDE.md,或壓縮之後還沒再匹配到檔案的路徑規則,看起來會像“丟了”。官方建議把只存在於對話裡的說明寫進 CLAUDE.md;若一條規則必須在壓縮後仍然生效,可去掉 paths:,或把它放到專案根目錄的 CLAUDE.md。
不要和額度用盡、529、32MB 請求過大,或壓縮反覆填滿混在一起
套餐額度用盡,在錯誤參考裡是另一組句子,例如 You've hit your session limit、You've hit your weekly limit,以及 Opus、Sonnet 限額的變體。那是帳戶或套餐額度,不是模型上下文視窗。專門說明見Anthropic 仍只用倍數說明 Claude Code 額度,各方案究竟能用多少。
529 Overloaded 是服務端過載,不是視窗滿了。那篇教程是Claude Code 出現「529 Overloaded」怎麼辦?Anthropic 文件的說明與可以嘗試的做法。
Request too large (max 32MB) 也是另一則報錯。官方定義是:原始請求體在 tokenization 之前超過 API 的 32MB 限制,通常因為大量貼上、工具結果或附件,並且寫明該限制與上下文視窗是分開的。若報文寫 compacting cannot make it fit,按官方:按兩次 Esc 退回到加入大內容的那一輪之前,或 /clear 重來;否則可 /compact,官方寫它會丟掉累積的圖片和附件。大檔案應按路徑引用,讓它分段讀取,而不是整份貼進對話。32MB 不是 Prompt is too long 的另一種叫法。32MB 是官方 API 限制,不是本站實測。
Autocompact is thrashing: the context refilled to the limit... 又是另一則報錯,出現在排障頁,而不是 Prompt is too long 這一節。那裡自動壓縮已經成功,但檔案或工具輸出又把視窗填滿,Claude Code 停止重試以免空耗。官方恢復步驟包括:讓它按更小的範圍讀過大的檔案、帶聚焦的 /compact、把大檔案工作交給 subagent,或在不再需要先前對話時 /clear。這與本題相關,但不是 Prompt is too long 的定義。
GitHub 上有使用者這樣報告,但這不是官方結論
anthropics/claude-code 倉庫裡的 GitHub issue #103279,標題是 [BUG] Auto-compact stops triggering on 1M-context sessions, which then fail with "Prompt is too long" (VS Code extension 2.1.301),在這次開啟時仍是 open,有 1 條評論,標籤含 bug、platform:windows、area:core、platform:vscode。作者不是官方帳號(author_association 為 NONE)。
作者描述的是 Windows 11 上的 Claude Code VS Code 擴展 2.1.301,模型 claude-opus-5-5 且為 1M 上下文,Max 訂閱,autoCompactEnabled: true,未設壓縮相關環境變數。按該使用者的說法,兩個長會話在 2026 年 10 月 18 日(該 issue 建立於 2026-10-18T20:27:08Z,即 2026-10-19 04:27 Asia/Shanghai)沒有自動壓縮,後來以合成的 Prompt is too long 失敗(isApiErrorMessage: true,error: invalid_request),之後每一輪同樣失敗,直到 /clear。作者根據自己的 transcript,認為自動壓縮閾值大約在 967,000 到 971,000 tokens。這與官方“原生 1M 視窗預設大約在 967K tokens 壓縮”是同一數量級,但 967K 只引用官方文檔;issue 裡的逐次計數只是該使用者報告的會話資料,不是官方閾值。作者自己的辦法是大約在 900,000 tokens 時手動 /clear——這是使用者辦法,不是官方建議。
一條評論寫於 2026-10-28T15:02:47Z,即 2026-10-28 23:02 Asia/Shanghai,來自 Linux CLI 2.1.310,同樣 author_association: NONE:在約 940k tokens 的長跑 subagent 上,下一條約 2 KB 的訊息立刻返回 Prompt is too long;之後只發單詞 continue,出現了 compact_boundary 和摘要,會話在約 207k tokens 上繼續。同樣是使用者報告,不是官方步驟,也不能據此猜測根因。issue #103279 當時仍為 open,且無官方評論。官方文檔描述的是應有行為和恢復步驟;單憑這份使用者報告,不能把它當成已確認的產品缺陷,或已修復/未修復的結論。
以上內容依據官方錯誤參考,以及命令、上下文視窗、設定、環境變數、模型配置、記憶、排障和雲會話等實際引用過的頁面。docs.anthropic.com 的 Claude Code errors 入口會跳到同一份 code.claude.com 錯誤參考,不是內容不同的第二套文件。
