← 返回更新日志

OpenClaw v2026.5.20-beta.2 预发布

2026-05-21 · GitHub 原文
### 变更 - 执行审批:移除了旧的 `cat SKILL.md && printf ... && <skill-wrapper>` 允许列表兼容路径,因此技能文件必须通过读取工具加载,且仅真正的技能可执行文件被自动允许。 - Discord:让语音会话跟随已配置的 Discord 用户进入语音频道,包含允许频道检查、多用户移交、有限制的协调以及 DAVE 恢复保留。(#84264) 感谢 @fuller-stack-dev。 - Discord/语音:默认在实时语音会话指令中包含有限的 `IDENTITY.md`、`USER.md` 和 `SOUL.md` 配置文件上下文,并提供 `voice.realtime.bootstrapContextFiles: []` 选项以禁用它。(#84499) 感谢 @fuller-stack-dev。 - 依赖:将捆绑的 Codex 工具集升级至 `@openai/codex` `0.132.0`,并刷新应用服务器模型列表文档以适配新目录。 - CLI/策略:添加捆绑的策略插件,用于策略支持的通道合规检查、诊断 lint 发现以及可选的工作区修复。(#80407) 感谢 @giodl73-repo。 - 代理/配置:允许 `agents.list[].experimental.localModelLean`,以便可以为单个配置的代理启用精简本地模型模式,而非全局启用。 - 提供商/xAI:添加设备代码 OAuth 登录,以便远程和无头设置可以在没有本地主机浏览器回调的情况下授权 xAI。(#84005) 感谢 @fuller-stack-dev。 - 提供商/OpenRouter:尊重提供商级别的 `params.provider` 路由策略用于 OpenRouter 请求,模型和代理参数可覆盖默认值。感谢 @amknight。 ### 修复 - CLI/任务:在 `openclaw tasks maintenance --json` 中包含陈旧运行任务的维护决策,以便保留和协调候选任务能解释备份会话、cron、CLI 和卡住子代理状态。(#84691) 感谢 @efpiva。 - Codex 应用服务器:当引导钩子仅提供路径和内容的工作区文件时,保持系统提示报告正常工作,因此钩子提供的 SOUL/IDENTITY/TOOLS/USER 上下文仍能正确报告注入的字符数。(#84736) 感谢 @JARVIS-Glasses。 - 提供商/MiniMax 音乐:停止宣传 `durationSeconds` 控制,并移除提示注入的时长提示,因此 `music_generate` 将 MiniMax 时长报告为不支持的覆盖项,而非暗示 MiniMax 可以强制曲目长度。修复 #84508。感谢 @neeravmakwana。 - 诊断:当沙盒工具策略在提供商请求之前隐藏了已配置的 MCP 服务器工具时发出警告。(#84699) 感谢 @nxmxbbd。 - WhatsApp:将 Baileys 更新至 `7.0.0-rc12`。 - 构建:抑制每个语言环境的 `rolldown-plugin-dts:fake-js` CommonJS dts 警告(在捆绑故意内联的 `zod/v4/locales/*.d.cts` 文件时发出),以便在 0.25.1 插件升级后 `pnpm build` 输出保持可读。感谢 @romneyda。 - CLI/节点:将惰性插件注册日志路由至 stderr 用于 JSON 模式的 `openclaw nodes` 命令,以便 stdout 保持可解析。(#84684) 感谢 @TurboTheTurtle。 - 审批:将手动 `/approve` 决策通过受信任的审批运行时路由,以便活跃的执行和插件审批不再显示为未知或已过期。 - Mac 应用:将关于设置中的版权年份更新为 2026。(#84385) 感谢 @pejmanjohn。 - 依赖:将 `@openclaw/fs-safe` 更新至 `0.2.7`,以便 OpenClaw 的默认 Python 助手关闭策略在 Linux/macOS 上为私有存储、秘密写入、运行日志和媒体附件保留尽力而为的 Node 写入回退。 - 基础设施/秘密:恢复 `tryReadSecretFileSync` 的失败关闭契约,以便传递 `rejectSymlink: true`(Telegram、LINE、Zalo、IRC、Nextcloud Talk 令牌)的凭证加载器拒绝符号链接的凭证文件而非静默接受,并且基础设施状态 CI 分片的秘密文件符号链接测试再次通过。感谢 @romneyda。 - 浏览器:尊重已配置的图像消毒限制(用于屏幕截图和带标签的快照),以便浏览器捕获的图像遵循与其他图像结果相同的调整大小策略。(#84595) - 诊断:在 `doctor --fix` 期间移除未识别的 `models.providers.*.models[*].compat.thinkingFormat` 值,以便升级后过时的提供商模型配置可以验证。修复 #77803。 - 诊断:当 `openclaw.json` 存储明文的包含秘密的配置字段(包括模型提供商 API 密钥和敏感提供商标头)时发出警告。(#84718) 感谢 @lukaIvanic。 - 状态:当会话仍然固定在与 `agents.defaults.model.primary` 不同的模型上时,显示已配置的默认模型、会话选择的模型、原因、清除提示和文档链接。 - WebChat:当会话变更事件标记活跃聊天运行完成时,清除过时的打字指示器。 - Mac 应用:使用稳定的应用身份对本地打包进行签名以进行权限测试,并修复当前 Vite/Highlight.js 导出下的 Control UI 生产构建。 - macOS 应用:将嵌入的 Peekaboo 桥接更新至 3.2.1,以便 OpenClaw 托管的 UI 自动化与当前 Peekaboo CLI 捕获流程配合使用。 - Cron:当诊断中仍存在尾随的纯工具警告时,为成功的计划运行交付首选的最终助手输出,而非将运行标记为失败。 - 修复(mattermost):在缺少频道类型时失败关闭 [AI]。(#84091) 感谢 @pgondhi987。 - 重新检查重建的 system.run argv [AI]。(#84090) 感谢 @pgondhi987。 - CLI:除非设置了 `OPENCLAW_ENABLE_PRIVATE_QA_CLI=1`,否则将私有 QA 子命令排除在导出的命令描述符之外,以便根帮助和子命令标记与运行时注册匹配。(#84519) - CLI/cron:限制 `openclaw cron show` 作业查找分页,以便不推进或无限期的 `cron.list` 响应失败而非挂起命令。修复 #83856。(#83989) - 代理/消息:在成功的源频道 `message` 发送后停止仅消息工具回合,同时在会话写锁下保留转录镜像。(#84289) - 代理:从嵌入的上下文快照中过滤静默心跳响应工具转录工件,以便后续用户回合不会被心跳无操作消息污染。(#83477) 感谢 @fuller-stack-dev。 - 代理/OpenAI:对重复的严格工具模式降级诊断每个提供商/模型/工具签名记录一次,减少重复调试噪音,同时保留 `strict=false` 回退行为。修复 #82930。(#82933) 感谢 @galiniliev。 - 代理/代码模式:在模型可见的模式文本中明确 `exec` 工具的 JavaScript/TypeScript、无 Node 模块和目录桥接约束,以便代理无需试错即可使用已启用的工具。(#84269) 感谢 @Kaspre。 - Codex:当未设置每次调用或配置的图像超时时,为 `image_generate` 动态工具调用提供 120 秒默认看门狗,因此图像生成不再回退到通用的 30 秒桥接超时。(#84254) 感谢 @moritzmmayerhofer。 - Codex:在大型诊断积压耗尽时避免重复的动态工具终端诊断阻塞工具响应。(#82937) 感谢 @galiniliev。 - CLI/消息:当频道发送返回消息 ID 时,在 `openclaw message --json` 输出中包含稳定的顶级 `messageId`。(#84191) 感谢 @100menotu001。 - Cron:在加载或添加计划作业时保留传统的顶级数组 `jobs.json` 存储,以便旧的 cron 作业在升级期间不会被当作空存储。修复 #60799。(#84433) 感谢 @IWhatsskill。 - 网关/代理:当 `agents.list[].name` 未设置时,在网关代理摘要中使用代理的 `identity.name`,以便配置的代理标签在客户端中保持可见。(#84355; 引用 #57835) 感谢 @luoyanglang。 - 频道/回复:保持消息工具回复中正常的 `/verbose` 失败工具进度紧凑,并防止延迟的纯文本工具输出出现在最终答案之后。(#84303) 感谢 @VACInc。 - 插件/钩子:为 `before_compaction` 和 `after_compaction` 钩子应用默认的 30 秒超时,以便挂起的插件处理器不再阻止压缩完成。(#84153) - Discord:在适配和渲染 Discord 消息控件时保留禁用的呈现按钮。(#84188) 感谢 @100menotu001。 - Twitch:添加仅测试的客户端管理器注册重置辅助函数,以便非隔离的 Twitch 测试可以在测试用例之间清除缓存的管理器。修复 #83887。(#84244) 感谢 @hclsys。 - Cron:在 cron 拥有的唤醒通道上运行主会话计划工作,同时保留回复交付上下文,以便后台 cron 回合不再阻塞人类主会话聊天。修复 #82766。(#82767) 感谢 @galiniliev。 - Cron:对隔离的计划任务使用结构化的嵌入运行拒绝元数据,以便被阻止的执行请求使作业失败,而不会将普通的助手散文视为拒绝。(#84067) 感谢 @abnershang。 - Cron:在成功的计划运行中保留恢复的工具警告诊断,以便最终的 cron 输出被交付而非被后处理警告替换。(#84045) 感谢 @abnershang。 - 插件/性能:通过 `loadBundledCapabilityRuntimeRegistry`、`resolveBundledPluginSources` 和 `listChannelCatalogEntries` 传递显式插件发现结果,以便已持有发现结果的调用者跳过冗余的文件系统遍历。感谢 @SebTardif。 - 强化更新重启脚本创建 [AI]。(#84088) 感谢 @pgondhi987。 - Docker:在官方发布镜像保留列表中保留捆绑的 Codex 插件,以便默认的 OpenAI 代理工具集在 Docker 修剪后仍然可用。修复 #83613。(#83626) 感谢 @YuanHanzhong。 - CLI/频道:当滚动尾部窗口恰好从行边界开始时,保留 `openclaw channels logs` 输出的第一行,镜像已修复的 `readLogSlice` 行为(位于 `src/logging/log-tail.ts`)。 - Control UI:将终端会话状态视为对过期活跃运行标志的权威,因此已完成的终端运行不再显示中止/实时 UI。(#84057) - CLI:保留内联根选项值中的嵌入等号,而不会在第二个分隔符后截断。(#83995) 感谢 @ThiagoCAltoe。 - Matrix/配置:接受 `messages.queue.byChannel.matrix` 队列覆盖,并保持队列提供商模式/类型键对齐 Matrix、Google Chat 和 Mattermost。感谢 @bdjben。 - CLI:通过共享错误格式化器格式化 `openclaw acp client` 失败,以便对象形状的错误保持可读,而非打印 `[object Object]`。修复 #83904。(#84080) - 提供商/Ollama:将未知能力的模型默认为支持工具,因此当 `/api/show` 省略能力时,发现的本地 Ollama 模型可以使用工具。(#84055) 感谢 @dutifulbob。 - 安装程序/Windows:以附加子进程方式启动 `install.ps1` 入门流程,因此全新的原生 Windows 安装不会在 `Starting setup...` 处明显冻结或损坏向导的终端渲染。 - CLI/更新:保持重启健康检查在单版本 CLI/网关协议偏差下工作,并在包根未更改时使用管理的网关服务 Node 执行所有后续命令,因此当存在多个 Node 安装时,`openclaw update` 不再静默地将网关切换到不同的 Node 二进制文件。感谢 @amknight。 - CLI/网关:在 `gateway status` JSON 输出中包含正在运行的网关版本,保留现有的服务器元数据,同时回退到状态 RPC 数据用于读取探测。修复 #56222。感谢 @galiniliev。 - 内存/搜索:当主动内存搜索超时时关闭本地嵌入提供商,以便挂起的本地模型加载和嵌入上下文被中止并释放。(#83858) 感谢 @brokemac79。 - CLI/节点:在 `openclaw nodes approve` 之前请求挂起的节点表面批准范围,以便具有执行能力的节点批准可以使用管理员范围的网关凭证,而不会因 `missing scope: operator.admin` 失败。(#84392) 感谢 @joshavant。 - 网关:在出站缓冲区无界增长之前拒绝慢速节点事件发送,并记录被拒绝的有效负载诊断。(#84387) 感谢 @samzong。 - 代理:在 `pi-trajectory-flush` 超时警告中包含有限的轨迹排队写入器诊断,以便刷新停滞显示待写入、排队字节和追加状态。修复 #82961。(#82962) 感谢 @galiniliev。 - 代理/子代理:通过重试不支持转录等待的唤醒(无需转录等待)并在请求者运行已过时强制消息工具移交,来恢复过时的完成公告。修复 #83699。(#83700) 感谢 @galiniliev。 - 代理/子代理:将通配符子代理目标允许列表限制为已配置的代理,同时保留显式列出的兼容性目标。修复 #84040。(#84357) 感谢 @joshavant。 - 提供商/Anthropic:将通过 Claude CLI 认证选择的 Anthropic 模型引用路由到 Claude CLI 运行时,因此诸如 `anthropic/opus-4.7` 的简写引用不再回退到嵌入的 Anthropic 计费。修复 #84222。(#84374) 感谢 @joshavant。 - 代理:对云和自托管提供商,尊重高于默认空闲看门狗的显式 `models.providers.<id>.timeoutSeconds` 值,因此当提供商超时更高时,较长的首次令牌等待不会在大约 120 秒时回退。(#83979) 感谢 @yujiawei。 - 代理/Codex:保持加密的响应推理重放限于来源,因此过时的镜像 Codex 转录在请求组装前丢弃无效的加密内容,同时保留匹配的同一会话重放。修复 #83836。(#84367) 感谢 @joshavant。 - 代理/子代理:对休眠的完成请求者跳过过时的嵌入运行唤醒探测,因此延迟的子代理完成直接进入请求者代理/直接移交,而不会产生 `reason=no_active_run` 队列噪音。(#82964) 感谢 @galiniliev。 - CLI:在临时失败后重试配置快照读取,因此一次拒绝的读取不会污染同一进程中的后续命令。(#83931) 感谢 @honor2030。 - 媒体:在使用 URL 路径基础名称作为远程媒体回退文件名之前进行解码,因此诸如 `My%20Report.pdf` 的文件显示为 `My Report.pdf`。修复 #84050。(#84052) 感谢 @jbetala7。 - WhatsApp:澄清入站群组诊断,以便观察到但未注册的群组指向 `channels.whatsapp.groups`,而不更改路由或发件人授权。(#83846) 感谢 @neeravmakwana。 - WhatsApp:除了重新连接处理器外,在 30 秒定期计时器上排空待处理的出站交付,因此当提供商已连接时入队的消息不再等待下一次重新连接才能发送。(#79083) 感谢 @Oviemudiaga。 - CLI/TUI:在 TUI 自动补全中包含网关插件斜杠命令,因此连接的会话可以建议由正在运行的网关暴露的插件拥有的命令。(#83640) 感谢 @se7en-agent。 - 网关/移动:为 iOS 和 Android 入门流程恢复 QR 设置代码传递有限的运营商令牌,同时将管理员和配对范围排除在引导之外。(#83684) 感谢 @ngutman。 - iOS:修复用于 TestFlight 构建的 Release 归档编译。(#84255) 感谢 @ngutman。 - 代理/压缩:使用主机安全超时限制插件拥有的 CLI 转录压缩,因此挂起的上下文引擎不再阻塞回合后清理。(#84083) 感谢 @100yenadmin。 - Control UI/使用:在用法面板中截断较长的上下文技能、工具和文件名,同时在悬停时保留完整名称。(#42197) 感谢 @Rain120。 - Codex:尊重显式的 `models auth order set` 和 `config.auth.order` 优先级(高于过时的 `lastGood`),在 `/codex account` 中,当每个显式顺序的配置文件都不符合条件时显示 `no working credential`,而非将较低排名的配置文件标记为活跃。修复 #84386。(#84412) 感谢 @openperf。 - 代理:对可变工具失败尊重 `messages.suppressToolErrors`,因此配置的聊天表面不会收到单独的警告负载。(#81561) 感谢 @moeedahmed。 - 代理/回退:针对混合速率限制加计费回退耗尽显示计费指导,而非通用失败文本。修复 #79396。(#79489) 感谢 @aayushprsingh。 ### 发布验证 - npm 包:https://www.npmjs.com/package/openclaw/v/2026.5.20-beta.2 - registry tarball:https://registry.npmjs.org/openclaw/-/openclaw-2026.5.20-beta.2.tgz - 完整性:`sha512-+4KVWXl74QqLVS/ODKI9+xJXcW1O3pNw6VlNEnQ/lRJvdJbJfymVLOFrYer+2WI9dYH0V4UOoWT78Pfn3hZdOQ==` - 发布发布:https://github.com/openclaw/openclaw/actions/runs/26236203338 - npm 预检:https://github.com/openclaw/openclaw/actions/runs/26234059241 - 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/26234053358 - 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/26236412882 - 插件 ClawHub 发布:单独分发,不依赖于此次证明:https://github.com/openclaw/openclaw/actions/runs/26236416443 - OpenClaw npm 发布:https://github.com/openclaw/openclaw/actions/runs/26236812220 - npm Telegram 测试版端到端测试:未提供