跳至主要內容

Claude Code v2.1.311:ultrathink 用 xhigh、修正 1M context

Claude Code v2.1.311 讓互動式終端機中的 ultrathink 以 xhigh effort 執行該輪,修正標準 context session 因「Usage credits required for 1M context」停止的問題,並調整 JSON 輸出的跳脫方式。

Claude Code v2.1.311 共有 92 條變更:56 條修正、16 條改進、15 條行為變更、5 條新增。其中多條行為變更會影響設定與腳本:互動式終端機中的 ultrathink 現在以 xhigh effort 執行該輪、模型名稱在 [1m] 後綴沒有作用時不再帶有它、JSON 輸出會跳脫更多字元,而 Bedrock、Mantle、Vertex 與 Foundry 上的 Claude Code 會從一個經簽署的檔案載入模型設定。修正方面,標準 context 的 session 不再因「Usage credits required for 1M context」而停止,SubagentStop hook 改為在 subagent 結束時執行一次、不再約每分鐘執行兩次,另有兩條改進縮短了啟動時間。

v2.1.311 接在 v2.1.310 之後,隔天又發布了 v2.1.312。

值得注意的行為變更

ultrathink 以 xhigh 執行該輪

在互動式終端機中,透過 Anthropic API 使用 Opus 5.5、Sonnet 5.5、Haiku 5.5 與 Fable 5.1 時,ultrathink 現在會以 xhigh effort 執行該輪。在 Claude 工作途中輸入它,則會提高該輪剩餘部分的 effort。彩虹標示現在只會出現在這個關鍵字能提高 effort 的地方;當這個字被引號括住或是檔案路徑的一部分時,就不會出現。各 effort 等級的意義,請參閱〈Ultracode 與 Effort 等級〉。

沒有作用的 [1m] 後綴不再顯示

在 [1m] 後綴沒有作用的模型上,模型名稱與 ID 現在會拿掉這個後綴及其標籤。後綴仍然可以使用,所以含有它的設定照常運作;但讀取模型名稱或 ID 的腳本,不應再預期這些模型會帶有它。

JSON 輸出會跳脫更多字元

使用 --output-format json 或 stream-json 時,Claude Code 現在會把字串中的 DEL、C1 控制字元與 Unicode 格式字元寫成 \uXXXX 跳脫序列。解析後的值不變,因此解析 JSON 的程式看到的字串相同;只有比對或搜尋原始文字的工具才會看到差異。

Bedrock、Mantle、Vertex 與 Foundry 從簽署檔案載入模型設定

Bedrock、Mantle、Vertex 與 Foundry 上的 Claude Code,現在會從 downloads.claude.ai 上一個經簽署的檔案載入模型設定。若要關閉,請設定 CLAUDE_CODE_MODEL_CATALOG=off。

DISABLE_COMPACT 只能關閉壓縮

設定檔中的 DISABLE_COMPACT,以及 mod 透過 $.env.set 設定的 DISABLE_COMPACT,現在只能關閉壓縮(compaction),不能再把它打開。另有兩條修正也與它有關:設定 DISABLE_COMPACT 時,agent teammate 不再壓縮自己的歷史紀錄,rewind 選單也不再提供「Summarize from here」與「Summarize up to here」。

VS Code 依循自身的遙測設定

當 VS Code 的遙測設定關閉時,擴充套件現在會在設定 DISABLE_TELEMETRY 的狀態下啟動 Claude Code session,因此這些 session 不會送出使用量指標或錯誤報告,也不會取得 feature flag。

其他行為變更

  • 設定檔中關於權限規則的啟動警告,現在每位使用者只會顯示一次,直到該規則變更為止。
  • 設定了 CLAUDE_CODE_SYNC_SKILLS 且關閉 feature flag 取得的 session,現在會重複使用同一台電腦上其他 session 取得、最多 10 分鐘前的 claude.ai skill 清單。
  • /code-review 現在會告訴 Claude 把 effort 等級放在最前面,並且只有在被要求時才使用 max。
  • Cowork 雲端 session 現在會忽略外掛或你的設定所指定的 agent。過去指定了 agent 時,這些 session 在重啟後會失去連接器與大部分工具。
  • claude purge 現在會說明它只刪除這台電腦上的資料,不會刪除 Anthropic 儲存的任何資料。
  • Agent view 中的 Ctrl+D 現在與 prompt 一致:輸入為空時,按兩次即可結束。
  • 在全螢幕清單中,點擊捲軸箭頭與捲軸列現在會在放開滑鼠按鍵時才作用,因此在放開前把游標移出捲軸即可取消點擊。
  • 在 VS Code 中,session 清單側邊欄現在會在第一次開啟 Web 分頁時才載入 Web session,而不是在啟動時載入。
  • 對於你自己的 Slack 帳號看得到的私人 Slack 頻道,Claude Tag 管理設定現在會顯示鎖頭圖示,而不是 #。

新功能

  • 自架 runner:--hold-idle-file 與 --max-hold-min。 self-hosted-runner 新增這兩個選項,可在主機回報仍有遺留行程在執行時,保留閒置的 session。
  • Explanatory 輸出風格提示。 當你請 Claude 解釋時,現在會出現 Explanatory 輸出風格的提示。
  • VS Code:語法顏色與 hook 狀態。 Claude 回覆中的程式碼區塊,在淺色、深色與高對比深色主題下都會套用語法顏色。執行較久的 UserPromptSubmit hook 現在會顯示「Running UserPromptSubmit hooks」轉圈狀態,並提供螢幕閱讀器播報。
  • Claude Tag:Skills 檢視。 Claude Tag 分析新增 Skills 檢視,顯示 Claude 在 Slack 頻道中執行每個附加 skill 的頻率以及哪些沒被使用,並在管理設定中提供 Usage 連結。

Context、壓縮與用量

  • 「Usage credits required for 1M context」。 標準 context 的 session 在單一請求超過 200K token 時,會以這則訊息停止。現在 Claude Code 會壓縮對話並繼續。
  • 過期的記憶檔內容。 自動壓縮剛完成時,如果 MEMORY.md 與 CLAUDE.md 在 session 稍早被編輯過,Claude 看到的會是它們過期的內容。
  • 缺少摘要。 當模型的回覆中沒有摘要時,Claude Code 現在通常會再要求一次摘要,然後才取代對話。
  • Prompt cache 未命中。 /usage 現在會在「What’s contributing to your limits usage?」底下顯示大量的 prompt cache 未命中;在 plan 模式中,當 plan 模型與 session 模型不同時,/effort 現在會警告 prompt cache 未命中。
  • /teleport。 當經過壓縮的雲端 session 從最後一次壓縮處載入時,/teleport 與 claude --teleport 現在會發出警告,因為被摘要的訊息不在本機副本中。
  • 訂閱訊息。 Claude Pro 與 Max 訂閱者在訂閱無法使用時,會被告知去找管理員。現在訊息會引導至帳單設定。

Hook、subagent 與 agent teams

  • SubagentStop hook 過去會針對每個執行中的 subagent 約每分鐘執行兩次,而不是在它結束時執行一次。
  • Subagent 中的 MCP 工具。 如果 MCP 伺服器在 subagent 啟動後才完成連線,subagent 就無法使用它的工具。
  • Worktree。 當 subagent 啟動的背景 subagent 仍在其中工作時,該 subagent 的隔離 worktree 會被移除。
  • Auto 模式。 在 auto 模式下等待自己 shell 的背景 agent,每次喚醒都會啟動一輪新的主對話。
  • Agent teams 任務清單。 以 --resume、--continue、/resume 或 --session-id 回到 session 時(包括在 /clear 或當機之後),任務清單會是空的,而 /branch 會寫入原 session 的清單。
  • Skill 重複執行。 雲端或背景 session 重啟時,已完成的 /code-review 或其他在 subagent 中執行的 skill 會再執行一次。
  • 重複訊息。 在 agent 的聊天分頁按 ↑,會叫回一則仍在等待送達的訊息,重送後就會送出第二份。

啟動、速度與請求

  • 啟動時間。 Pro 與 Max 帳號在距上次檢查一小時內的啟動會略過兩個網路請求;只帶有選項及其值的啟動(例如 claude --model opus)也會啟動得更快。
  • CLAUDE.md 中很長的清單項目。 CLAUDE.md 檔案中有一個非常長的清單項目時,會在啟動以及讀取或編輯檔案後造成長時間凍結。
  • 大型編輯。 修改檔案中數千行時,Write 與 Edit 執行後會停頓最多 5 秒,並回報變更了 0 行。
  • 中斷。 當 MCP 伺服器尚未回應資源讀取,或某個 skill 仍在下載時,中斷 Claude 要等到逾時才會生效。
  • 重試。 Claude Code 會重試 API 標示為不可重試的請求,可能讓一輪卡住好幾分鐘;在無人值守重試模式(CLAUDE_CODE_RETRY_WATCHDOG)下甚至會無限期卡住。
  • 長時間思考。 在 Google Vertex AI、Microsoft Foundry 與 Claude Platform on AWS 這些端點會送出思考進度更新的平台上,長時間的隱藏思考會被當成閒置而中斷。
  • 更清楚的錯誤訊息。 「Connection dropped」API 錯誤現在會說明先查哪裡:使用中的 proxy 或 gateway,否則是 VPN 或防火牆。這只適用於 Anthropic API;Bedrock、Vertex 與 Foundry 不變。貼上的登入代碼被拒絕時,訊息現在會說明代碼可能已過期或已被使用,並請你重新登入。

MCP、外掛與 Linux sandbox

  • 在儲存庫根目錄以下執行時,claude mcp add、claude mcp remove 與 /mcp 會寫出目前的資料夾,而不是 ~/.claude.json 中存放 local-scope 伺服器的那個專案項目。
  • claude mcp list 與 claude mcp get 在連線失敗的那一行會把錯誤代碼顯示兩次,例如 ENOENT: ENOENT: …。
  • 對於不需登入也能運作的遠端伺服器,/mcp 會在「Clear authentication」後把它顯示為失敗;對於 Claude Code 不會送出任何憑證的遠端伺服器,/mcp 則會顯示「authenticated」。
  • 當資料夾頂層有一個空的 .mcp.json 時,以 --plugin-dir 指定、內含多個外掛的資料夾會被當成單一外掛載入。
  • 在 Linux 上,當某個 --plugin-dir 資料夾同時也是新增的目錄,且開啟了 permissions.blockReadsOutsideWorkingDirectories 時,sandbox 中的 Bash 命令會以 bwrap: Can't create file 失敗。

工具、檔案與 transcript

  • 達到逾時的 shell 命令,現在會顯示目前為止的輸出,並說明該命令仍在背景執行。
  • Bash 工具的描述聲稱工作目錄在每次呼叫之間都會保留;環境區塊則會寫出命令實際上並不在其中執行的 shell,例如 Bash 工具使用 zsh 時寫成 fish。
  • @ 檔案選擇器會忽略 .ignore/.rgignore 中重新納入 git 忽略檔案的否定規則。
  • 當某一行比終端機還寬時,Write 工具的檔案預覽會跳過幾列,並算錯隱藏的行數。
  • 貼上提到圖片檔的文字(例如 ! open /tmp/shot.png 或 /review look at /tmp/shot.png)時,會附加該圖片,並從 prompt 中拿掉它的路徑。
  • 引號或括號中的單一反斜線(例如 "\" 或 (\))會從 Claude 的回應中消失。
  • claude -p 與 SDK session 會以錯誤的順序儲存 transcript 訊息,或保留已收回的訊息。
  • 對於有多個檢視的 artifact,Claude 現在會依連結的 #name 切換各個檢視,也不再說切換檢視時網址列保持不變。在頁面與文件之間做選擇時,Artifact 工具現在會把說明性內容與視覺或互動性作品做成 artifact 頁面,文件則留給大家會持續編輯或轉傳的文字。
  • 在傳訊息到你沒有指名的 Slack 頻道之前,Claude 現在會先檢查該頻道的主題中是否有發文規則。

背景 session、Remote Control 與雲端

  • 在兩輪之間當機的背景 session,若處於附加、釘選狀態,或設有排程任務或喚醒,就不會被重新啟動。
  • 「background service did not respond」錯誤會建議執行已停用的 claude daemon restart。現在它會建議 claude daemon stop --any,並說明這會結束背景 session。
  • claude respawn <id> 會先啟動背景服務,才回報沒有符合該 ID 的背景 session。
  • 背景 session 的行程結束時顯示的訊息,不再承諾一個不會發生的重新啟動,並會說明如何恢復該 session。
  • 從支援連結的終端機開啟背景 session 後,狀態列中的連結仍是純文字。
  • 當網路 proxy 擋下一個啟動請求時,Remote Control session 會停在「Connecting」約兩分鐘。
  • Claude 傳到雲端或 Remote Control session 的訊息,在 Claude 行動應用程式中會顯示成你自己的訊息。
  • 透過 Remote Control 或傳到雲端 session 的訊息所附的檔案,因磁碟已滿而無法儲存時,Claude 不會被告知原因;一則訊息中超過前 20 個的附件被略過時,Claude 也不會被告知。
  • 在 Cowork 雲端 session 中,WebFetch 與 WebSearch 會卡在停滯的回應上。現在未完成的請求會在 300 秒後失敗。
  • 在 Anthropic 託管環境中的 routine,在擁有者離開組織又重新加入後會一直被鎖住。現在擁有者可以把它們重新開啟。
  • 刪除或重新產生 routine API token 失敗時,如果編輯對話框已經關閉,就不會有任何提示。現在會顯示錯誤 toast。
  • 雲端環境對話框(包括管理員對話框)會接受重複的名稱。現在會拒絕清單中其他環境已經使用的名稱。

終端機介面與無障礙

  • 在後續訊息會從對話中移除的情況下,/rewind 的確認訊息仍說對話「will be forked」;/rewind 的警告也錯誤地說手動與 Bash 編輯絕不會受程式碼還原影響。
  • /ide 會在安裝完成前或安裝失敗時,就說 VS Code 擴充套件已安裝;在什麼都沒安裝時,也會說已安裝 JetBrains 外掛。
  • 在寬的全螢幕終端機中編輯後,即使沒有內容可顯示,diff 窗格也會自行開啟。
  • Prompt 中有文字時,回饋草稿卡仍會顯示其 1/2/0 與 Esc 快捷鍵,但此時這些按鍵作用在 prompt 上,而不是卡片上。
  • 在螢幕閱讀器模式中,plan 核准會送出你已用 Escape 取消的回饋。現在在 /permissions 中刪除規則時會立即播報「Deleted allow rule …」,Claude 的問題則會列成「Questions: Color (answered), Pages」,不帶箭頭或符號。

VS Code 與 JetBrains

  • 從 VS Code 或 JetBrains 面板送出的自訂 skill 與自訂 slash command,會漏掉一般訊息會附上的已開啟檔案或選取的行(anthropics/claude-code#102799)。
  • 在 macOS 與 Linux 上,登入 shell 為了讀取 PATH 而執行啟動檔時,擴充套件主機會凍結。
  • 點擊工具結果中的圖片或關閉其預覽時,也會在編輯器分頁中開啟該結果的文字。
  • 用 Send 按鈕送出訊息後,語音聽寫仍會繼續錄音。現在送出時會先停止聽寫,與按下 Enter 的行為一致。

自架 runner、Claude Tag 與 Code Review

  • 自架 runner。 當速率限制(HTTP 429,或以代碼 75 結束的 git wrapper)擋住一個新增的唯讀儲存庫時,session 會無法啟動。現在 session 會在沒有該儲存庫的情況下啟動。
  • Claude Tag。 在新 session 中執行的 routine,沒有東西可回報時,現在可以直接結束,不必在頻道中貼出一則用完即丟的訊息。
  • Code Review。 因暫時性伺服器故障而無法啟動 session 的審查,現在會自動重試一次,並在 check run 中說明。當模型在自動重試時仍無法分析某項變更,check run 現在會說明不會再自動啟動審查。

此版本共包含 92 項變更;所有項目請參閱完整變更日誌。

如何更新

  1. 檢查已安裝的版本:claude --version
  2. 直接就地更新:claude update

相關連結