release stability auth qwen browser

OpenClaw 3.23:术后恢复——Qwen DashScope 全球端点、Auth 凭证大修、40+ 稳定性修复

OpenClaws.io Team

OpenClaws.io Team

@openclaws

2026年3月23日

10 分钟

OpenClaw 3.23:术后恢复——Qwen DashScope 全球端点、Auth 凭证大修、40+ 稳定性修复

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--iconbtn--ghostbtn--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、Matrix runtime-api.js 等插件运行时入口文件之前从 npm 包里漏掉了,全局安装直接报缺文件。修了。
  • ClawHub 安装兼容性:插件 API 兼容性检查现在基于安装时的活跃运行时版本。之前卡住 >=2026.3.22 ClawHub 包安装的那个陈旧 1.2.0 常量已替换为回归覆盖。
  • 卸载支持 ClawHub 格式openclaw plugins uninstall clawhub:<package> 恢复正常,即使记录的安装锁定了版本号。
  • LanceDB 首次使用自动引导memory-lancedb 插件现在会在 bundled npm install 没有 LanceDB 时自动引导,plugins.slots.memory="memory-lancedb" 在全局安装后也能正常工作。
  • 陈旧配置不再致命:未知的 plugins.allow ID 现在视为警告而非致命错误,plugins installdoctor --fixstatus 在插件本地缺失时仍可运行。
  • Doctor 清理openclaw doctor --fix 会清除插件卸载后残留的 plugins.allowplugins.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_search provider,而非陈旧的默认选择。你配了特定的搜索供应商,现在真的会用上了。
  • Failover 分类:generic api_error 只在包含瞬态失败信号时才视为可重试。MiniMax 风格的后端故障仍然触发模型 fallback,但计费、认证、格式错误不再触发了。
  • 子代理超时精度:超时的 worker 等待在发送完成事件前会重新检查最新运行时快照,已经完成的 worker 不再被错误报告为超时。
  • Anthropic thinking blocks:转录图片脱敏过程中保留 assistant thinking 和 redacted-thinking block 的顺序,防止后续轮次触发 Anthropic 的 unmodified-thinking 校验。
  • Replay 恢复:畸形的 assistant 转录内容在会话历史脱敏前进行规范化处理,遗留或损坏的轮次不再导致 Pi replay 和子代理恢复路径崩溃。
  • Skill 配置注入:内嵌的 skill 配置和环境变量使用活跃的已解析运行时快照,skills.entries.<skill>.apiKey SecretRef 在内嵌启动时可以正确解析了。

Gateway 加固

四个修复,提升 Gateway 可靠性:

  • 探测精度:成功的 gateway 握手不再因为后续 RPC 加载慢而被误报为"不可达"。慢设备现在报告的是可达但 RPC 失败,而非假阴性的死亡网关。
  • Supervision 稳定性launchdsystemd 下的锁冲突不再导致 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 cronopenclaw 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/$n token,禁止换行分隔的 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 的架构野心变成了你真正能在生产环境跑起来的东西。

龙虾恢复得不错。缝合线稳住了。

订阅更新

第一时间获取新功能和玩法。放心,不会发垃圾邮件。