站点图标 高效码农

OpenClaw 2026.4.21 升级必读:图像生成升级2K/4K,修复关键安全漏洞

OpenClaw 2026.4.21 版本更新:更可靠的图像生成、更安全的命令权限与细节优化

OpenClaw 在 2026 年 4 月 21 日发布了新版本 v2026.4.21。这次更新没有增加颠覆性的新功能,而是聚焦于几个实际使用中容易被忽略但影响不小的细节:图像生成的默认模型升级、插件依赖的可恢复性、命令权限的严格化、Slack 线程消息的稳定性、浏览器操作的响应速度,以及 npm 安装过程中的依赖警告清理。

如果你正在使用 OpenClaw 搭建自己的网关或自动化工作流,这个版本值得关注。下面我们逐一拆解这些改动,用最直接的方式说清楚:改了哪里、为什么改、对你有什么影响

一、图像生成:默认模型升级为 gpt-image-2,支持 2K/4K 尺寸提示

发生了什么变化?

在之前的版本中,OpenClaw 自带的图像生成功能默认使用一个较早的模型。从 2026.4.21 开始,默认的图像生成提供方(provider)和实时媒体测试所使用的模型都切换为 gpt-image-2

同时,在图像生成的文档和工具元数据中,明确增加了对 2K 和 4K 尺寸的提示支持。这意味着你在调用图像生成接口时,可以更自然地指定“输出 2K 画质”或“生成 4K 图片”,而不需要自己换算像素值或查找隐藏参数。

为什么改这个?

gpt-image-2 是 OpenAI 在图像生成能力上较新的模型,相比旧模型在细节保留、风格一致性和分辨率上限上都有提升。将默认模型切换到它,能让新用户开箱即用就获得更好的生成效果。

而 2K/4K 尺寸提示的标准化,则减少了调用时的猜测成本。以前你可能需要写 width=2560&height=1440,现在可以直接在提示词或参数中写明 size="2K",工具层会自动映射到对应的像素尺寸。

对你有什么实际影响?

  • 如果你从未手动配置过图像生成的 provider,升级后会自动使用 gpt-image-2
  • 如果你在代码或配置文件中显式指定了其他模型,本次更新不会覆盖你的设置。
  • 在调用实时媒体相关功能时,内部烟雾测试(smoke tests)也使用同一个模型,保证测试结果与生产环境一致。
  • 文档里会开始出现 2K / 4K 这样的尺寸提示,你可以直接参考使用。

如果生成失败怎么办?

这次更新还附带了一个日志改进:当某个 provider 或模型生成图像失败时,OpenClaw 会先在日志中输出 警告级别(warn) 的记录,说明是哪个候选失败了、原因大概是什么,然后再自动尝试下一个可用的 provider。

以前这种失败信息可能只在最终全部失败时才报错,中间候选的失败过程是不可见的。现在即使后面有一个 provider 成功了,你也能在网关日志中看到之前哪些尝试失败了。这对于调试 API 密钥问题、配额限制或网络异常非常有帮助。

二、插件依赖修复:doctor 命令能恢复运行时依赖了

问题背景

OpenClaw 支持插件系统。有些插件会依赖外部渠道(如 Discord、Telegram)或特定的 provider(如 OpenAI、Google)。在打包安装(packaged install)的环境下,如果某个插件的运行时依赖缺失,以前你可能需要全局安装一大堆核心依赖才能修复,这不仅麻烦,还可能引入不必要的包。

本次修复做了什么?

更新了 plugins/doctor 子命令。现在运行 openclaw doctor(或者插件相关的诊断命令)时,它会:

  1. 检查每个已安装插件的运行时依赖列表
  2. 根据当前环境的路径信息,自动修复缺失的依赖,而不需要安装整个核心依赖集

简单说:原来你缺一个螺丝,可能要买一整箱工具。现在医生只给你补那一颗螺丝。

实际使用场景

假设你通过打包好的二进制或 deb/rpm 包安装了 OpenClaw,然后启用了某个需要 @slack/web-api 的插件。如果这个依赖没被打包进去(或者因为版本冲突被跳过),以前 doctor 可能建议你运行 npm install -g 装一堆东西。现在它会直接定位到插件目录,只安装缺失的包。

这对生产环境容器化部署尤其有用,因为你不需要在运行环境中保留完整的 Node.js 开发工具链。

三、安全修复:owner 命令不再被普通用户绕过(#69774)

漏洞描述

这是本次更新中最值得关注的安全相关修复,由贡献者 @drobison00 报告并修复。

在 OpenClaw 中,有一类命令被标记为 owner-enforced(仅所有者可执行)。例如 shutdownreload configplugin install 等。为了控制谁能执行这些命令,系统会检查:

  • 发送者的身份是否匹配 owner 配置中定义的用户列表;
  • 或者是否属于内部 operator.admin 角色。

但之前的逻辑中,存在一个**危险的回退(fallback)**情况:

enforceOwnerForCommands=true(这是推荐的安全设置)但 commands.ownerAllowFrom 没有明确配置时,系统会错误地将通配符 allowFrom空的 owner-candidate 列表视为“允许任何人执行”。

这意味着,如果你的配置是这样的:

enforceOwnerForCommands: true
# commands.ownerAllowFrom 未设置

那么任何用户——包括非 owner 的普通聊天成员——都可能通过某些渠道绕过限制,执行原本只有管理员才能用的命令。这是一个权限提升漏洞

修复后的行为

2026.4.21 开始:

  • 必须存在明确的 owner 身份匹配(用户 ID 在 owner 列表中,或拥有 operator.admin 角色)才能执行 owner-enforced 命令。
  • 空的 owner-candidate 列表或通配符 allowFrom 不再被视为充分条件
  • 如果你确实想让所有人都能执行某个 owner 命令,需要显式配置 commands.ownerAllowFrom: ["*"],并理解其安全风险。

你需要做什么?

  • 检查你的配置文件,确保 enforceOwnerForCommandstrue 时,owner 列表不为空,或者 commands.ownerAllowFrom 有明确的值。
  • 如果你之前依赖“不配置就能让所有人执行 owner 命令”的行为,升级后需要主动添加白名单
  • 建议 review 日志中是否有来自非预期用户的命令执行记录。

四、Slack 集成:保持线程别名,消息不跑偏(#62947)

问题现象

如果你通过 OpenClaw 向 Slack 发送消息,并且希望消息进入某个特定的线程(thread),通常需要在调用时提供 threadTs 参数。但在之前的版本中,运行时系统在转发或处理消息时,可能会丢失这个 threadTs 别名,导致消息被发到了父频道而不是期望的子线程。

贡献者 @bek91 发现并修复了这个问题。

修复内容

现在,当调用方(例如一个自动化脚本或另一个插件)在出站消息中提供了 threadTs,OpenClaw 的 Slack 适配器会完整保留该值,并确保最终的 API 调用指向正确的线程。

这个修复同时适用于:

  • 通过 runtime.send 发送的消息
  • 由网关内部生成并投递到 Slack 的消息

对 Slack 使用者的价值

如果你用 OpenClaw 做以下事情,这次更新对你很有用:

  • 将外部事件(如监控告警)发送到某个 Slack 讨论串中,保持上下文连续;
  • 让多个机器人回复在同一个线程里,而不是散落在各处;
  • 通过 OpenClaw 桥接其他平台消息到 Slack 线程。

升级后,你不再需要额外的工作区来“重新关联”线程。

五、浏览器操作:无效的辅助功能引用不再卡住超时(#69924)

背景

OpenClaw 内置了一个浏览器自动化模块,可以通过 act 指令与网页交互,比如点击、填写表单、读取内容。其中一种定位元素的方式是通过辅助功能树引用,例如 ax1ax2 等。这些引用来自浏览器的可访问性 API。

问题是什么?

如果你在 act 路径中写了一个不存在的辅助功能引用,比如 ax99 但页面上最多只有 ax5,旧版本的 OpenClaw 会一直等待,直到浏览器操作超时(通常是几十秒),然后才报错。这严重拖慢了自动化脚本的执行,尤其在批量操作或错误处理逻辑中。

修复后的行为

2026.4.21 开始,系统会立即检测 ax<N> 格式的引用是否在当前页面的辅助功能树中存在。如果不存在,会立刻拒绝该 act 步骤并返回明确的错误,而不是傻等超时。

这个修复由 @Patrick-Erichsen 贡献。

使用建议

  • 如果你自己编写浏览器自动化脚本,现在可以更快地发现元素定位错误。
  • 如果你通过 LLM 生成 act 路径,错误的引用也能被迅速反馈,从而让模型更快调整。
  • 注意:这只针对 ax<N> 格式的引用。其他选择器(如 CSS 选择器、XPath)的行为不变。

六、npm 安装体验:消除 node-domexception 废弃警告

这个警告从哪来?

在使用 npm 安装 OpenClaw 或其依赖时,部分用户会看到类似这样的警告:

npm WARN deprecated node-domexception@1.0.0: Use your platform's native DOMException instead

这个警告来自于一个深层依赖链:

google-auth-library → gaxios → node-fetch → fetch-blob → node-domexception

node-domexception 是一个历史包,用于在 Node.js 早期版本中模拟浏览器的 DOMException。现在 Node.js 已经原生支持,这个包被标记为废弃。虽然不影响功能,但每次安装都会输出警告,干扰日志可读性。

如何修复?

OpenClaw 在根目录的 package.json 中添加了 overrides 字段,将 node-domexception 别名指向一个空占位符(或者一个无操作的模块)。这样 npm 在解析依赖树时,会直接跳过这个废弃包,不再输出警告。

贡献者 @vincentkoc 处理了这个问题。

对用户的影响

  • 使用 npm install 安装 OpenClaw 时,控制台不再出现 node-domexception 的相关警告。
  • 不影响任何实际功能,因为 DOMException 已经由 Node.js 原生提供。
  • 如果你自己维护基于 OpenClaw 的衍生项目,这个 override 配置可以作为参考。

常见问题(FAQ)

问:如何确认我当前使用的 OpenClaw 版本?

运行以下命令:

openclaw --version

或者在网关启动日志中查看第一行输出的版本号。

问:owner-enforced 命令具体指哪些?

取决于你的插件和配置,常见的有:

  • shutdown(关闭网关)
  • reload(重载配置)
  • plugin install / uninstall
  • exec(执行系统命令,如果启用)

你可以通过 commands.ownerOnly 配置自定义。

问:我升级后图像生成不工作了怎么办?

首先检查日志中的 warn 级别记录。如果看到 gpt-image-2 失败,可能是 API 密钥权限不足或配额用完。你可以回退到之前的模型,在配置中指定:

imageGeneration:
  provider: "openai"
  model: "dall-e-3"

问:Slack 线程修复需要我改代码吗?

不需要。只要你的调用代码正确传递了 threadTs 字段,升级后会自动生效。如果你之前用了 workaround(比如在消息文本中手工关联),现在可以简化了。

问:浏览器自动化中的 ax 引用是什么?

ax 是 Accessibility Tree 的缩写。浏览器为每个可访问元素分配一个临时 ID,如 ax1ax2。你可以用 act ax1 click 来点击该元素。修复后,错误的 ax99 会立刻报错。

问:为什么我的 npm 安装还是有警告?

请确保你使用的是 OpenClaw v2026.4.21 或更高版本。如果你是从源码构建,请删除 node_modulespackage-lock.json 后重新安装。如果警告仍然存在,可能是其他依赖链引入了类似的废弃包,但核心警告已消除。


如何升级到这个版本?

如果你使用 Docker

拉取最新镜像并重启容器:

docker pull openclaw/openclaw:v2026.4.21
docker stop openclaw
docker rm openclaw
docker run -d --name openclaw -v ./config:/config openclaw/openclaw:v2026.4.21

如果你使用 npm 全局安装

npm update -g @openclaw/core

如果你使用二进制包(Linux / macOS)

GitHub Releases 下载对应平台的压缩包,替换原有可执行文件即可。

升级后建议

  • 运行一次 openclaw doctor 检查插件依赖状态。
  • 查看日志确认没有意外的权限拒绝记录(如果之前存在非 owner 调用 owner 命令的情况,升级后会被拒绝)。
  • 测试你的 Slack 线程功能和图像生成调用。

本次更新总览(表格形式)

类别 问题描述 修复方式 影响用户
图像生成 默认模型老旧,尺寸提示不明确 默认改为 gpt-image-2,文档增加 2K/4K 所有使用图像生成的用户
日志 图像生成失败时中间候选不可见 增加 warn 级别记录 调试图像生成问题的用户
插件依赖 打包安装环境下依赖恢复困难 doctor 命令只修缺失依赖 使用插件且环境受限的用户
权限安全 非 owner 可能绕过 owner 命令限制 严格验证 owner 身份,移除危险 fallback 所有配置了 enforceOwnerForCommands 的用户
Slack 线程别名 threadTs 丢失 完整传递该字段到出站请求 将消息发送到 Slack 特定线程的用户
浏览器 无效 ax 引用导致长时间超时 立即校验并拒绝 使用浏览器自动化的用户
npm 安装 node-domexception 废弃警告 通过 overrides 屏蔽 使用 npm 安装的用户

总结

OpenClaw 2026.4.21 是一个典型的稳定性和安全性维护版本。它没有引入耀眼的新特性,但解决了好几个在特定场景下会让人头疼的问题:权限绕过漏洞、依赖修复困难、日志缺失、线程消息错位、自动化超时浪费、安装警告干扰。

如果你重视生产环境的可靠性和可维护性,这个版本值得升级。尤其是对于 Slack 重度用户、浏览器自动化使用者以及对外暴露 OpenClaw 网关的团队,本次修复能直接减少故障排查时间。

最后提醒:升级后请留意 owner 命令的权限日志,确保预期行为与实际一致。如果遇到任何问题,可以在 OpenClaw 的 GitHub Issues 中反馈,社区维护者通常会快速响应。

退出移动版