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