3.22 拆掉了舊架構,重建了地基。12 項 Breaking Changes、一個全新的外掛註冊中心、30 個安全補丁。那是 OpenClaw 史上最大的一次版本發布。
也是炸出問題最多的一次。
3.23 的任務很明確:確保病人從手術台上活著下來。3 項 Breaking Changes——都是向前看的。40 多個修復——大部分在收拾 3.22 留下的爛攤子。兩個版本之間只隔了一天,因為有些問題等不了。
Breaking Changes
這次只有三項,而且沒有一項是在刪你正在用的東西。
Qwen 接入 DashScope 標準端點
Qwen 供應商現在同時提供 DashScope 標準(按量計費)端點,支援中國和全球 API Key,和原有的 Coding Plan 端點並存。供應商組重新命名為 Qwen (Alibaba Cloud Model Studio)。
為什麼這事重要?因為之前的 Qwen 整合只支援 Coding Plan 金鑰——這只是阿里雲產品線的一個子集。如果你在國內用標準計費的 DashScope API Key,或者用全球 Key,現在可以開箱即用了,不用再寫各種繞路設定。
Control UI 介面整合
按鈕基元合併了(btn--icon、btn--ghost、btn--xs)。Knot 主題改成黑紅配色,對比度達到 WCAG 2.1 AA 標準。設定頁各段落——Diagnostics、CLI、Secrets、ACP、MCP——加了專屬圖示。圓角滑桿改成了離散檔位。全域加了 aria-labels,無障礙支援更完整了。
如果你有自訂 CSS 依賴舊的按鈕類別名稱或 Knot 主題變數,檢查一下你的覆寫。
CSP 指令碼雜湊
index.html 中的內聯 <script> 區塊現在會計算 SHA-256 雜湊值並寫入 CSP script-src 指令。內聯指令碼預設仍被阻擋——只有經過雜湊的引導程式碼才放行。如果你之前往 Control UI 裡注入過自訂內聯指令碼,現在會被攔住,除非你也給它加上雜湊。
Auth 憑證系統大修
八個修復集中在 auth 和憑證系統。這是 3.22 之後炸得最狠的一塊,修復的過程本身就是一個教訓:在運行中的系統底下重建基礎設施,會發生什麼。
頭號修復:gateway 的 auth-profile 即時寫入會把剛儲存的憑證偷偷還原成記憶體裡的舊值。你貼上一個新的 OpenAI token,儲存,眼睜睜看著它彈回到過期的那個。Configure 流程、Onboard 流程、貼上 token 的流程全中招,根因一樣。修了。
Operator scope 保留:裝置 auth 旁路路徑在靜默丟棄 operator scope,導致 operator 工作階段失敗或者在需要 read 權限的頁面直接白屏。現在會忽略快取的低權限 token,真正缺 read scope 時會顯示明確的回退提示。
CLI 頻道認證:單頻道設定現在自動選擇唯一可用的登入頻道。Channel ID 做了原型鏈和控制字元注入的加固。按需頻道安裝可以乾淨地回退到基於 catalog 的安裝。
ClawHub macOS 認證(三個關聯修復):ClawHub 登入 token 現在能從 macOS Application Support 路徑讀取,同時也支援 XDG config 路徑作為 fallback。Gateway 的 skill 瀏覽使用已登入的 auth 狀態,不再偷偷回退到未認證模式。browse-all 請求切換到 search,避免打到未認證的 429 限流。
OAuth 代理支援:env 設定的 HTTP/HTTPS proxy dispatcher 現在會在 token exchange 和 preflight 請求之前初始化,這樣需要代理的環境也能完成 MiniMax 和 OpenAI Codex 的登入流程。之前在代理環境下,Codex OAuth token 過期後使用者會被直接鎖在外面。
斜線命令授權:當頻道 allowFrom 解析命中未解析的 SecretRef 帳號時,授權不再崩潰或丟棄整個有效白名單。系統只對受影響的模型推理路徑 fail closed。
瀏覽器穩定性:別急著宣告勝利
兩個修復,一個主題:在瀏覽器真正就緒之前,別急著判定狀態。
macOS Chrome 連線:透過 MCP 附加到已有 Chrome 工作階段時,初始交握就被當成「就緒」了——但瀏覽器分頁其實還沒真正可用。結果就是 macOS 上不斷出現使用者設定檔逾時和反覆彈出授權確認。修復方式是等分頁在 attach 之後真正可用了才往下走。
無頭 Linux CDP:在較慢的無頭 Linux 環境中,CDP 偵測時一次短暫的可達性失敗就會立即觸發完整的瀏覽器重啟。這導致了二次啟動/開啟瀏覽器的回歸——修復方式是在短暫的可達性失敗後復用已經在跑的回環瀏覽器,而不是急著走重啟偵測路徑。
兩個 bug 的模式一模一樣:系統太急於判斷狀態變化。短暫的回應延遲被當成了失敗,觸發了代價高昂的恢復路徑,然後事情反而更糟了。
外掛生態:ClawHub 遷移收尾
3.22 把外掛生態遷移到了 ClawHub。3.23 負責掃尾。
- •打包的執行時期 sidecar 回來了:WhatsApp
light-runtime-api.js、Matrixruntime-api.js等外掛執行時期入口檔案之前從 npm 套件裡漏掉了,全域安裝直接報缺檔案。修了。 - •ClawHub 安裝相容性:外掛 API 相容性檢查現在基於安裝時的活躍執行時期版本。之前卡住
>=2026.3.22ClawHub 套件安裝的那個陳舊1.2.0常數已替換為回歸覆蓋。 - •解除安裝支援 ClawHub 格式:
openclaw plugins uninstall clawhub:<package>恢復正常,即使記錄的安裝鎖定了版本號。 - •LanceDB 首次使用自動引導:
memory-lancedb外掛現在會在 bundled npm install 沒有 LanceDB 時自動引導,plugins.slots.memory="memory-lancedb"在全域安裝後也能正常運作。 - •陳舊設定不再致命:未知的
plugins.allowID 現在視為警告而非致命錯誤,plugins install、doctor --fix、status在外掛本地缺失時仍可執行。 - •Doctor 清理:
openclaw doctor --fix會清除外掛解除安裝後殘留的plugins.allow和plugins.entries參照,也不再把whatsapp這種內建頻道 ID 追加到plugins.allow裡。 - •Matrix 和 LINE 執行時期修復:Jiti 下重複的 runtime-api 匯出不再導致 Matrix 打包安裝啟動時崩潰。LINE 在 star export 之前預匯出重疊的執行時期符號,避免
TypeError: Cannot redefine property。
Agent 可靠性
六個修復,讓 Agent 的行為更可預測:
- •web_search provider:Agent 輪次現在使用活躍執行時期的
web_searchprovider,而非陳舊的預設選擇。你設定了特定的搜尋供應商,現在真的會用上了。 - •Failover 分類:generic
api_error只在包含瞬態失敗訊號時才視為可重試。MiniMax 風格的後端故障仍然觸發模型 fallback,但計費、認證、格式錯誤不再觸發了。 - •子代理逾時精度:逾時的 worker 等待在傳送完成事件前會重新檢查最新執行時期快照,已經完成的 worker 不再被錯誤報告為逾時。
- •Anthropic thinking blocks:轉錄圖片脫敏過程中保留 assistant thinking 和
redacted-thinkingblock 的順序,防止後續輪次觸發 Anthropic 的 unmodified-thinking 校驗。 - •Replay 恢復:畸形的 assistant 轉錄內容在工作階段歷史脫敏前進行規範化處理,遺留或損壞的輪次不再導致 Pi replay 和子代理恢復路徑崩潰。
- •Skill 設定注入:內嵌的 skill 設定和環境變數使用活躍的已解析執行時期快照,
skills.entries.<skill>.apiKeySecretRef 在內嵌啟動時可以正確解析了。
Gateway 加固
四個修復,提升 Gateway 可靠性:
- •探測精度:成功的 gateway 交握不再因為後續 RPC 載入慢而被誤報為「不可達」。慢裝置現在報告的是可達但 RPC 失敗,而非假陰性的死亡閘道器。
- •Supervision 穩定性:
launchd和systemd下的鎖衝突不再導致 crash-loop。重複程序會在重試等待中保持,而非在健康的 gateway 仍持有鎖時退出並報錯。 - •Auth 強制:canvas 路由現在要求認證,agent session reset 要求 admin scope。匿名的 canvas 存取和非 admin 的 reset 請求被 fail closed。
- •OpenRouter 定價:
openrouter/auto的定價重新整理不再在引導階段無限遞迴,auto 路由可以正常填充快取定價和usage.cost了。
頻道修復
Telegram 修了三個問題:主執行緒中繼資料缺失時 DM topic 的執行緒上下文正確填充了。同聊天的入站訊息防抖順序得到保留,不再導致過時的忙碌工作階段後續訊息被卡住。asDocument 作為 forceDocument 的使用者側別名加入了圖片和 GIF 傳送。
Discord:權限不足時,原生斜線命令現在回傳明確的未授權回覆,而不是穿透到 Discord 那個誤導性的通用完成提示。
Plivo 語音:replay key 做了穩定化處理,webhook 重試和重放保護不再在有效的後續投遞上產生衝突。
外部頻道目錄現在可以覆寫出廠的 fallback 中繼資料,並在頻道安裝時遵循覆寫的 npm 套件規格,自訂目錄不再在 channel ID 匹配時回退到內建套件。
其他修復
- •Mistral:打包的 max-token 預設值下調到安全的輸出預算。
openclaw doctor --fix修復仍帶有 context-sized output limit 的舊持久化設定,避免確定性的 422 拒絕。 - •CLI cron:
openclaw cron add|edit --at ... --tz <iana>現在正確處理無偏移量的一次性日期時間的本地時間,包括日光節約時間邊界。 - •設定警告:同 base 的修正版本(如
2026.3.23-2)寫入的設定被2026.3.23讀取時,不再彈出令人困惑的「更新版 OpenClaw」警告。 - •Exec trust:shell-multiplexer wrapper 二進位檔在策略檢查中得到保留,不影響已批准命令的重建,BusyBox/ToyBox 的白名單和稽核流程保持一致。
- •安全/exec 審批:shell-wrapper 白名單比對拒絕單引號的
$0/$ntoken,禁止換行分隔的 exec,但仍接受exec -- carrier形式。 - •快取診斷:cache-trace JSONL 輸出中的憑證欄位被脫敏,同時保留非敏感診斷欄位和圖片脫敏中繼資料。
- •飛書文件:頻道設定範例中
botName改為name,與嚴格的 account schema 對齊。 - •發布打包:打包的外掛和 Control UI 資源保留在發布的 npm 安裝中,發布檢查會在出廠資源缺失時報錯。
貢獻者
16 位貢獻者在 3.23 中落地了修復。特別感謝 @vincentkoc,一人提交了 14 項修復,橫跨瀏覽器、Gateway、Agent、外掛、安全和發布基礎設施——這種全方位的貢獻,是大版本發布之後專案能穩住的關鍵。
感謝 @BunsDev(4 項修復)、@scoootscooob、@openperf、@futhgar、@07akioni、@Drickon、@osolmaz、@bakhtiersizhaev、@Lukavyi、@ayushozha、@RolfHegr、@drobison00、@haroldfabla2-hue、@jzakirov 和 @sallyom。
升級建議
- •Qwen 使用者:檢查你的供應商設定。如果之前用了繞路設定來使用標準 DashScope Key,現在可以切到原生端點了。
- •Mistral 使用者:執行
openclaw doctor --fix修復帶有 context-sized output limit 的舊設定。 - •自訂 CSS 使用者:Knot 主題配色和按鈕類別名稱改了,檢查你的覆寫。
- •Control UI 指令碼注入使用者:內聯指令碼現在需要 CSP SHA-256 雜湊。
---
3.22 打開了胸腔,換了引擎。3.23 確保每一針縫合都扎實。
40 多個修復、8 個 auth 補丁、2 個瀏覽器回歸解決、外掛生態在 ClawHub 遷移後終於跑順了。不是光鮮的活兒,但正是這個版本,把 3.22 的架構野心變成了你真正能在生產環境跑起來的東西。
龍蝦恢復得不錯。縫合線穩住了。