![]()
新智元報道
編輯:艾倫
【新智元導讀】OpenClaw 之父 Peter Steinberger 昨天發布 OpenClaw 3.22 時漏打包了一個資源包,控制臺直接白屏,六個插件集體失效,報錯信息還指向錯誤方向。不到一天緊急推出了 3.23 修復,順手給 CI 加上了「以后再遺漏自動攔截」的保險。
OpenClaw 之父 Peter Steinberger,在昨天發布 OpenClaw 3.22 版本時,漏掉了發布流程里的一個關鍵步驟:把 Web 控制臺的 UI 資源打包進去。
結果這個版本一出,升級的用戶打開小龍蝦,發現控制臺頁面直接加載失敗——那個你平時用來管理 AI、配置頻道、查看運行狀態的核心入口,不見了。
我們昨天介紹 OpenClaw 3.22 的文章發布后,大量讀者也在評論區反饋了同樣的問題。
![]()
剛剛,OpenClaw最猛升級!底層架構大換血,全網等了9天
Peter 本人在 X 上發帖承認了這件事,順手宣布了緊急修復計劃。
![]()
今天,OpenClaw 3.23 緊急正式推送。
![]()
這個 Bug 到底有多「草臺」
說起來簡單到離譜。
Web 控制臺(ClawControl)的 UI 資源,是獨立打包后附在 npm 發布產物里的。
發布流程里有一步是把這些靜態資源一起打進去,Peter 昨晚發版時跳過了。
于是 npm 包里壓根就沒有控制臺文件,用戶裝上去之后,瀏覽器一訪問控制臺地址,直接空白。
![]()
正常的控制臺登錄界面
官方 3.23 的修復日志里,有一條寫著:確保已發布的 npm 包里包含之前版本攜帶的 bundled 插件和 Control UI 資源,并在發布檢查時,若這些產物缺失則直接讓流程報錯。
![]()
這最后一句是重點——以后再漏,CI(Continuous Integration,持續集成,指的是開發者頻繁地將代碼合并到主分支,每次合并后自動觸發構建和測試,從而盡早發現問題)會自己攔住,不等上線。
而且這次 3.22 的問題不止控制臺一個。
WhatsApp、ACPX 等六個插件也因為類似原因悄悄失效了:它們被移入了「可選 Bundled 插件」列表,但 npm 發布流程沒有設置對應的環境變量,導致這些插件根本就沒被打進發布包里。
用戶升級之后,頻道直接斷了,而且報錯信息還是一條讓人摸不著頭腦的「stale config entry」——不報插件缺失,報的是「配置項過時」,完全沒法定位問題。
一個發版漏打包,導致了多處連鎖失效,還配上了錯誤的報錯信息。
你就說草臺不草臺吧
3.23 修了什么
普通用戶能感受到哪些
控制臺的事只是開胃菜,3.23 這次的修復清單中,很多是影響日常使用的實際問題。
飛書帶附件的消息發送走錯了路徑,文件和圖片根本發不出去。
這次把它導回了正確的出站媒體路徑,附件總算能正常發出去了。
瀏覽器控制這塊改動不少。
Chrome MCP 模式修了一個體驗很差的問題:之前 OpenClaw 附加到已有 Chrome 標簽頁時,會把握手完成的那一刻當「可用」,但其實頁面還沒真正就緒,導致用戶配置文件頻繁超時、macOS 上反復彈出確認框。
現在會等頁面真正可用再繼續。
另外,Headless Linux 環境里第二次啟動瀏覽器總是失敗的問題也修掉了——原本一旦短暫連不上就直接放棄重新檢測,現在會先復用已有的瀏覽器實例。
ClawHub 登錄狀態的問題也整了一輪。
之前在 macOS 上瀏覽 Skills、運行openclaw skills ...命令時,會悄悄退回未登錄狀態;
現在會正確讀取 macOS Application Support 里的本地登錄 token,也兼容 XDG 路徑,登錄態不會再莫名丟失了。
還有兩個問題影響面挺廣。
OpenRouter 的 Auto 路由,之前在啟動時會陷入無限遞歸刷新定價數據,導致計費信息根本填不進緩存,用量統計一片空白。
Mistral 那邊則是默認的最大 token 數設得太大,和 Mistral 自己的上限沖突,導致必然觸發 422 報錯;
新版本把默認值調低了,還教會了openclaw doctor --fix自動修復舊配置。
![]()
Agent 層面,網絡搜索的提供商選擇修了一個老問題:之前 Agent 跑任務時,不管你在設置里選了什么搜索源,它都會用默認的,配置形同虛設。
現在它會正確讀取運行時的實際配置。
安全這塊也沒落下。
Canvas 路由現在強制需要認證,Agent Session 的重置接口也加上了管理員權限校驗,匿名請求和非管理員的重置請求都會被拒絕。
Peter 在推文里也說,他正在把整個發布流程自動化,并加上端到端測試。
這種草臺班子的重大 Bug,或許會大幅減少。
附錄:完整更新日志
修復
瀏覽器 / Chrome MCP:附加到已有會話的瀏覽器標簽頁后,等待其真正可用再標記就緒,而非將 Chrome MCP 的初始握手視為準備完成——此舉減少了 macOS Chrome 附加流程中用戶配置文件超時和反復彈出授權確認的問題。
瀏覽器 / CDP:在初次可達性檢測短暫失敗后復用已運行的回環瀏覽器,而非立即回退至重啟檢測——修復了在較慢的無頭 Linux 環境中二次啟動/打開瀏覽器的回歸問題。
ClawHub / macOS 認證:正確讀取 macOS 認證配置及 XDG 認證路徑中保存的 ClawHub 憑據,使openclaw skills ...及網關技能瀏覽持續使用已登錄的認證狀態,而非靜默回退至未認證模式。
ClawHub / macOS:從 macOS Application Support 路徑讀取本地 ClawHub 登錄信息,同時在 macOS 上繼續兼容 XDG 配置,使技能瀏覽在默認及 XDG 風格的配置下均能使用已登錄的令牌。
ClawHub / Skills:為網關技能瀏覽正確解析本地 ClawHub 認證令牌,并將「瀏覽全部」請求切換為搜索模式,避免 ClawControl 陷入未認證狀態的 429 錯誤及已認證后技能列表為空的問題。
插件 / 消息工具:將 Discord 組件和 Slack 消息塊重新設為可選字段,并將飛書message(..., media=...)的發送請求路由至出站媒體路徑——使置頂/取消置頂/表情回應等操作不再觸發 Schema 校驗失敗,飛書文件/圖片附件亦能正常發送。
網關 / 模型定價:修復了openrouter/auto定價刷新在啟動階段無限遞歸的問題,使 OpenRouter 自動路由能夠再次正常填充緩存定價及usage.cost數據。
Mistral / 模型:將內置 Mistral 最大 token 默認值降至安全的輸出預算范圍,并使openclaw doctor --fix能夠修復仍保留上下文長度級輸出限制的舊版持久化 Mistral 提供商配置,避免全新及現有配置中出現確定性的 Mistral 422 拒絕錯誤。
Agent / web_search:使用當前運行時激活的web_search提供商,而非陳舊或默認的配置,確保 Agent 每輪調用均命中用戶實際配置的提供商。
模型 / OpenAI Codex OAuth:在令牌續期執行前,于存儲憑據的刷新路徑上提前初始化環境變量所配置的 HTTP/HTTPS 代理調度器,使過期的 Codex OAuth 配置在需要代理的環境中能夠成功刷新,而非在首次令牌過期后將用戶鎖定。
模型 / OpenAI Codex OAuth 及插件 / MiniMax OAuth:確保在 OAuth 預檢及令牌交換請求發出前,環境變量所配置的 HTTP/HTTPS 代理調度器已完成初始化,使需要代理的環境能夠再次正常完成 MiniMax 和 OpenAI Codex 的登錄流程。
插件 / memory-lancedb:在首次使用時,若內置 npm 安裝中尚未包含 LanceDB,則將其初始化至插件運行時狀態——使plugins.slots.memory="memory-lancedb"在全局 npm 安裝后無需將 LanceDB 納入 OpenClaw 核心依賴即可正常運行。
配置 / 插件:將plugins.allow中過期的未知插件 ID 視為警告而非致命配置錯誤,使插件在本地缺失時,plugins install、doctor --fix和status等恢復命令仍能正常執行。
Doctor / WhatsApp:阻止自動啟用功能將whatsapp等內置頻道 ID 追加至plugins.allow,使openclaw doctor --fix在修復內置頻道時不再寫入 Schema 無效的插件白名單條目。
Telegram / 自動回復:在不遺留過期忙碌會話后續消息的前提下,保持同一會話入站防抖的處理順序,并在防抖鍵飽和時維持同鍵溢出輪次的有序處理。
Telegram / 消息工具:為圖片和 GIF 發送新增asDocument作為forceDocument的用戶側別名,同時在兩者同時存在時保留forceDocument的顯式優先級。
Discord / 命令:對于需要特權的原生斜杠命令,在鑒權攔截發送者時返回明確的「未授權」回復,而非落入 Discord 含糊的通用完成響應。
頻道 / 目錄:允許外部頻道目錄覆蓋內置的回退元數據,并在頻道安裝時遵循覆蓋后的 npm 包規格,使自定義頻道目錄在頻道 ID 匹配時不再回退至內置包。
語音通話 / Plivo:穩定 Plivo v2 重放鍵,避免 Webhook 重試與重放保護機制在有效的后續消息投遞中產生沖突。
Agent / 技能:在嵌入式技能配置及環境變量注入時,優先使用當前已解析的運行時快照,使skills.entries.
.apiKey
中的 SecretRef 在嵌入式啟動階段能夠正確解析,而非在原始源配置上失敗。
Agent / 子 Agent:在發送完成事件前,對照最新運行時快照重新檢查已超時的工作進程等待狀態,避免將實際已成功完成的快速工作進程誤報為超時。
Agent / Anthropic:在對話記錄圖像清洗過程中,保留最新 assistantthinking及redacted-thinking塊的原始順序,使后續對話輪次不觸發 Anthropic 的「思考內容未被修改」校驗。
插件 / DeepSeek:將內置 DeepSeek 提供商重構至共享的單提供商插件入口,將其測試覆蓋遷移至擴展測試通道,并在生成的清單路徑上保留內置認證的環境變量元數據。
插件 / Matrix:避免在 Jiti 環境下重復導出resolveMatrixAccountStringValues運行時 API,使內置 Matrix 安裝不再在啟動時因Cannot redefine property: resolveMatrixAccountStringValues而崩潰。
安全 / 執行審批:通過拒絕單引號包裹的$0/$n令牌、禁止換行分隔的 exec 寫法,同時繼續接受exec --載體形式,將 shell 包裝器的位置參數白名單匹配限定在真實的直接載體上。
網關 / 探測:避免在連接后詳情 RPC 仍在加載期間,將已成功完成的網關握手誤判為不可達超時,使慢速設備報告「可達但 RPC 失敗」而非錯誤地標記網關不可用。
網關 / 監管:通過讓重復進程保持重試等待狀態(而非在其他健康網關持有鎖時以失敗退出),避免 launchd 和 systemd 下的鎖沖突導致崩潰循環。
網關 / 認證:對 canvas 路由要求身份認證,對 Agent 會話重置要求管理員權限范圍,使匿名 canvas 訪問及非管理員重置請求均以「拒絕」方式安全失敗。
發布 / 安裝:在已發布的 openclaw npm 安裝包中保留此前發布的內置插件和控制界面資源,并在這些已交付產物缺失時使發布檢查失敗。
參考資料:
https://github.com/openclaw/openclaw/releases
https://x.com/steipete/status/2036218803001114779
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.