← 返回更新日志

OpenClaw v2026.5.10-beta.2 预发布

2026-05-10 · GitHub 原文
### Changes - QA/Mantis:新增基于 Convex 租赁凭据的 Telegram 实时 PR 证据自动化功能,支持 Crabbox 转录捕获、动态 GIF 预览及 PR 内联评论。 - QA/Mantis:新增 Telegram 桌面端场景构建器,可租赁 Crabbox、安装原生 Telegram Desktop、使用租赁的机器人凭据配置 OpenClaw Telegram 网关,并记录 VNC 截图/视频产物。 - Discord/语音:新增实时语音诊断功能,涵盖发言轮次、播放重置、插话检测及音频截断分析。 - Talk:新增 `talk.realtime.instructions`,使操作员可在保留 OpenClaw 内置代理咨询指导的同时,追加实时语音风格指令。(#79081) 感谢 @VACInc。 - Discord/语音:测试和源码安装默认使用纯 JS 的 `opusscript` 解码器,忽略可选的原生 `@discordjs/opus` 构建,从而避免在非专用语音性能通道中缓慢的原生插件编译。 - Discord/语音:为实时语音性能通道新增可选的原生 `@discordjs/opus` 安装脚本和解码器偏好设置,且不会为无关的 Docker/测试环境强制进行原生插件构建。 - Gateway/技能:新增由 `skills.install.allowUploadedArchives` 控制的可选私有技能归档上传安装路径,使受信任的 Gateway 客户端仅在操作员显式启用代码安装接口时,才能暂存并安装基于 zip 的技能。(#74430) 感谢 @samzong。 - 依赖项:刷新工作区锁定版本及补丁目标,包括 ACPX `@agentclientprotocol/claude-agent-acp` `0.33.1`、Codex ACP `0.14.0`、Baileys `7.0.0-rc10`、Google GenAI `2.0.1`、OpenAI `6.37.0`、AWS SDK `3.1045.0`、Kysely `0.29.0`、Tlon 技能 `0.3.6`、Aimock `1.19.5` 及 tsdown `0.22.0`。 - 代理/压缩:在嵌入式压缩和回合后运行时上下文中保留作用域内的后台执行/进程会话引用,且不暴露无关作用域的会话。修复 #79284。(#79307) 感谢 @TurboTheTurtle。 - CLI/引导:改进 setup、onboarding、configure 和 channel 命令的导航指引,使终端流程能说明下一步的有用命令,而非依赖简略的设置标签。 - 代理/Codex:移除可配置的 Codex 动态工具配置文件,使 Codex 应用服务器始终独占 workspace、edit、patch、exec、process 和 plan 工具,同时保留 OpenClaw 集成工具。 ### Fixes - Telegram:通过网关消息操作传递代理作用域的媒体根目录,避免活跃代理的工作区本地媒体被误判为跨代理访问而拒绝。感谢 @frankekn。 - CLI/网关:保持 `gateway status --deep` 的插件感知能力,使配置好的插件清单警告(包括缺失的频道配置元数据)在安装和更新冒烟测试期间保持可见。 - ACPX:默认运行并等待嵌入式 ACP 后端启动探测,使网关 `ready` 信号不再在 acpx 运行时可用或报告探测失败前触发;设置 `OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE=0` 可恢复延迟启动。修复 #79596。感谢 @bzelones。 - OpenAI 兼容模型:默认从重放的 Chat Completions 历史中剥离先前的 assistant 推理字段,防止 oMLX/vLLM Qwen 的后续回合因过时的 `reasoning` 载荷而拒绝或卡住。修复 #46637。感谢 @zipzagster 和 @lexhoefsloot。 - CLI/引导:为非 Azure 自定义提供商提供安全生成的上下文窗口,并修复遗留的 4k 向导条目,同时不覆盖显式的有效小模型限制,防止首回合压缩循环。修复 #79428。(#79911) 感谢 @Jefsky。 - OpenAI 兼容模型:新增 `compat.strictMessageKeys`,将 Chat Completions 重放消息剥离为仅含 `role` 和 `content`,以适配拒绝 OpenAI 风格工具键和元数据键的严格提供商。修复 #50374。感谢 @choutos。 - 语音/Ollama:在经典嵌入式语音响应中遵循路由语音代理的 `tools.allow` 配置(含空白名单),使无工具 Ollama 代理不会接收工具模式。修复 #79506。感谢 @donkeykong91。 - 网关:在首次进程内重启循环启动后从磁盘重新读取配置,防止 SIGUSR1 重启复用过时的启动快照并丢弃启动后写入的配置。修复 #79947。感谢 @TheLevti。 - 代理:在提供商流设置仍待处理时应用 LLM 空闲看门狗,防止静默的流前模型挂起等待完整的代理超时时间。 - Cron:允许隔离的自清理运行检查自身的作业运行历史,同时保持其他 cron 作业和变更操作被阻止。修复 #80019。感谢 @hclsys。 - CLI/配置:持久化显式 `config set` 和 `config patch` 中等于运行时默认值的配置,而非报告成功却将其丢弃。修复 #79856。(#80106) 感谢 @abodanty 和 @hclsys。 - OpenAI/实时语音:接受兼容 Codex 的旧版音频和转录事件别名,防止提供商协议漂移导致助手音频或字幕丢失。 - Discord/语音:防止默认 agent-proxy 实时会话在强制 OpenClaw 咨询回答前自动填充语音,在实时响应完成时结束 Discord 播放,并将后续精确语音回答排队至播放空闲时,避免句中替换。 - 网关:对格式错误的编码 session-kill HTTP 路径返回确定的 `400 invalid_request_error` 响应,而非让路由匹配请求透传到后续网关处理器。(#72439) 感谢 @rubencu。 - 控制 UI:从 `/__openclaw__/` SPA 路由提供根目录 PWA 和 favicon 资源,使标签页图标、安装元数据和服务工作器在内部导航后不会返回 404。修复 #80072。感谢 @CodeNovice2017。 - OpenAI/实时语音:本地遵循禁用的输入音频中断设置,使操作员设置 `interruptResponseOnInputAudio: false` 后,服务器 VAD 语音启动事件不会清除 Discord 播放。 - Telegram:保持无回复的 DM 回合静默,而非将其重写为可见的静默回复对话。修复 #78188。(#78228) 感谢 @Beandon13。 - Telegram:在处理原始回调回退之前,先处理托管的选择按钮回调,同时保留包含分隔符的选项值(如 `env|prod`)。(#79816) 感谢 @moeedahmed。 - OpenAI 兼容模型:处理返回给流式请求的 JSON 聊天补全体,保留推理字段和可见文本,而不是完成一个空的智能体回合。修复 #77870。 - Discord/模型:在加载路由、模型和偏好数据之前,延迟模型选择器组件的交互,防止在网关负载下出现“此交互失败”超时。修复 #77283。感谢 @colin-chang。 - xAI:为具备推理能力的 Grok 模型暴露 `/think low|medium|high`,并在原生 Responses 负载中保留 `reasoning.effort`,同时为非推理路由保留仅关闭行为。修复 #79210。感谢 @colinmcintosh。 - CLI/媒体:允许显式的图像描述模型引用使用内置的静态提供商目录和通用的模型支持图像钩子,使 `openclaw infer image describe --model zai/glm-4.6v` 能像直接运行模型一样工作,并避免 Anthropic 身份验证探测使用过时的 Claude 3 Haiku 目录条目。 - 模型/Anthropic:当配置了 Anthropic 默认模型时,将 `anthropic/claude-haiku-4-5` 添加到 Anthropic API 密钥智能体白名单默认值中,以便 cron 模型覆盖可以选择当前的 Haiku 别名。修复 #78000。 - 智能体/Anthropic 兼容:为明确声明 `supportsReasoningEffort: false` 的自定义 Anthropic 兼容模型剥离重放的思考块,防止 Kimi 兼容提供商重新发送不支持的 `thinking` 内容。修复 #47452。 - 浏览器:延长现有会话 Chrome MCP 状态和非深度诊断探测的等待时间,使首次连接缓慢时不会错误报告离线,同时保持原始 CDP 状态探测的简短。(#77473) 感谢 @rubencu。 - 网关/日志:在前置网关快速路径解析之前安装控制台捕获,并在详细模式下抑制已知的 libsignal 会话转储,防止原始终端日志打印 WhatsApp 会话密钥材料。(#76306) 感谢 @rubencu。 - 执行审批:将 `exec.approval.list` 保留在轻量级策略摘要路径上,以便列出待处理审批时不再加载丰富的 tree-sitter 命令解释器。(#76943) 感谢 @rubencu。 - 智能体:当 `exec`/`bash` 工具调用在助手声称成功后失败时,显示简洁的默认可见警告,同时除非启用详细模式,否则隐藏原始 stderr。修复 #60497。(#80003) 感谢 @jbetala7。 - 智能体:在分发前停止空白的模型生成工具调用,同时保留基于 ID 的工具名称恢复机制,防止 Kimi/NVIDIA 空白名称重试循环,且不创建可调用的 `_blank` 哨兵。修复 #34129。(#56391) 感谢 @smartchainark。 - 智能体/Telegram:发送标准的最终助手答案,而不是重放累积的预工具文本块,防止重复的 Telegram 回复和看起来像原始的工具输出片段泄露到聊天交付中。修复 #79621 和 #79986。感谢 @nonzeroclaw 和 @dudaefj。 - 自动回复/TUI:在主模型生命周期错误后,通过输出回退进度并将终端 TUI 错误推迟到恢复有机会完成时,保持回退超时恢复的可交付性。修复 #80000。(#80009) 感谢 @TurboTheTurtle。 - CLI/智能体:允许 `openclaw agent --model` 使用后端/管理员网关作用域,避免因缓存的设备令牌作用域静默降级请求。(#78837) 感谢 @VACInc。 - CLI/帮助:保持帮助和版本调用无需配置,同时改进共享端口、频道、插件、任务、会话、消息、配对和身份验证恢复的文本。 - CLI/配置:通过有效示例和纯字符串逃生通道解释严格的 JSON 解析失败。 - CLI/密钥:将离线网关重新加载失败转化为可操作的恢复文本。 - CLI/频道:通过后续命令解释缺失或模糊的频道选择。 - CLI/频道:将引导式频道状态收集推迟到选择频道之后,使 `openclaw channels add` 首屏更安静。 - 插件/CLI:将禁用的 Matrix 和 LanceDB 内存命令根路由到插件启用指南,而不是通用的未知命令错误。 - 浏览器/Docker:从 `PLAYWRIGHT_BROWSERS_PATH` 和 Linux 上的默认 Playwright 缓存检测 Playwright 管理的 Chromium,因此持久化 `/home/node/.cache/ms-playwright` 的 Docker 安装不再需要 `browser.executablePath`。 - Ollama:即使 Ollama Cloud `/api/show` 省略了 `thinking` 能力,也保持 DeepSeek V4 云模型的思考能力,因此 `/think high` 不再拒绝 `ollama/deepseek-v4-*:cloud`。 - ACPX/Claude ACP:当同一会话中到达自主任务通知结果时,保持前台提示等待其自身结果,并将补丁重新定位到 Claude Agent ACP `0.33.1`。 - WhatsApp:在 `7.0.0-rc10` 中防止 Baileys 媒体上传将非 Dispatcher 智能体传递给 undici,并修补内置的 Baileys 声明,使最新的 tsdown 构建保持无警告。 - 构建:通过外部化已知的第三方声明边缘,并将相对频道配置模块增强替换为显式内置频道字段,使 tsdown `0.22.0` 保持无警告。 - ACP 会话:将标准运行时选项映射到后端声明的 ACP 配置键(如 Claude 的 `effort`),同时保持持久化的 OpenClaw 状态为标准。(#79926) 感谢 @InTheCloudDan。 - 模型/Discord:在 `agents.defaults.models` 中支持 `provider/*` 条目,使 `/model`、`/models` 和模型选择器能够显示所选提供商的动态发现模型,而无需精确的模型白名单。修复 #79485。感谢 @rendrag-git。 - 网关/watch:在从源代码签出启动网关之前,重新构建或重新打包缺失的内置插件 dist 和运行时后构建输出,防止不完整的 watch 模式运行时树。(#70805) 感谢 @rubencu。 - CLI/更新:允许在自更新期间从上一版网关协议重启健康检查探针,并使插件干运行报告精确的 npm 目标版本而非 `unknown`,同时保持未更改状态。 - OpenAI/Codex:在 canonical `openai/*` 迁移后,将持久化的 `openai-codex` OAuth 配置文件元数据转发至 Codex 插件运行环境尝试中,使仅 OAuth 安装继续原生使用 Codex 认证,而非回退到直接 OpenAI API 密钥认证。修复 #79978。 - OpenAI/Codex:将网关缺失密钥恢复和向导文档指向 canonical `openai/gpt-5.5` 及 Codex OAuth 路由,并修复轨迹导出错误,使其建议有效的 `openclaw sessions` 命令。 - Google/Gemini:在配置加载和无关配置写入期间,规范化已弃用的 `google/gemini-3-pro-preview` 主用、回退及模型映射引用,使保存的配置继续指向 Gemini 3.1 Pro Preview。 - Google/Gemini:规范化已发出的 Google 提供商模型配置内的已弃用 Gemini 3 Pro Preview ID,使重新生成的 models.json 行测试 `google/gemini-3.1-pro-preview`。 - Google/Gemini:规范化从现有合并 models.json 提供商中保留的已弃用 Gemini 3 Pro Preview ID,使配置输出继续指向 `google/gemini-3.1-pro-preview`。 - GitHub Copilot:使用运行时请求相同的 `vscode-chat` 集成标识签发短期 Copilot API 令牌,并刷新缺少该标识的旧版缓存令牌,使支持图像的 Copilot 模型不再继承 `copilot-language-server` 作用域。修复 #79946、#80074。感谢 @TurboTheTurtle。 - 插件/诊断:当 `openclaw doctor --fix` 移除遮蔽内置插件的 npm 包时,丢弃过期的托管 npm 安装记录,使重建的注册表不再恢复已移除的包元数据。 - Discord/语音:复用或抑制延迟的实时咨询工具调用,而不窃取较新的说话者上下文或重复播报强制回退答案。 - Discord/语音:跳过可能不完整的实时强制咨询转录片段及无操作性的结尾,使陈旧的局部语音不会在下一次交互中排队延迟答案。 - Discord/语音:从发出的 Discord PCM 合成实时播放时间戳,使 OpenAI 实时打断截断不再看到 `audioEndMs=0` 并跳过合法中断。 - 插件 SDK:当禁用内置插件回退时,保持已激活的链接插件运行时外观可加载。感谢 @shakkernerd。 - 飞书:当活跃会话为 group_topic 或 group_topic_sender 时,自动在主题内对 `message(action="send")` 回复进行线程化,并通过文本、卡片和媒体出站适配器传播 `replyInThread`,使主题范围会话不再发布到群组根目录。修复 #74903。(#77151) 感谢 @ai-hpc。 - WhatsApp:将路由上下文传入语音笔记转录回显预检,使回显的转录能投递至原始聊天。修复 #79778。(#79788) 感谢 @hclsys。 - 定时任务/故障转移:将结构化的 OpenAI 兼容 `server_error` 负载分类为 `server_error`,在定时任务状态中暴露该原因,并使一次性定时任务重试策略尊重 `retryOn: ["server_error"]`,无需原始 `5xx` 文本。(#45594) 感谢 @clovericbot。 - Slack:在交互式回复按钮/选择器点击后唤醒已解析的线程会话,并通过排队交互事件携带 Slack 投递上下文,使点击能继续可见对话。修复 #79676 和 #61502。(#79836) 感谢 @velvet-shark、@tianxiaochannel-oss88 和 @Saicheg。 - WhatsApp/流式传输:当文本结束块回复在工具调用周期中重复先前前言时,仅发送新的后缀,防止累积 WhatsApp 前言消息。修复 #78946。(#79120) 感谢 @brokemac79 和 @papawattu。 - 测试/安全审计:在基于每个用例的 OpenClaw 主目录临时目录中沙盒化 `audit-exec-surface.test.ts`,重定向 `OPENCLAW_HOME`(在 `resolveRawHomeDir` 中优先级高于 `HOME`/`USERPROFILE`)以及 `HOME` 和 `USERPROFILE`,使其 `saveExecApprovals(...)` 调用绝不触碰运行测试套件主机上的真实 `~/.openclaw/exec-approvals.json`。同类的 exec-approvals 测试已使用临时目录模式;该文件未使用,因此在贡献者本地签出运行 `pnpm test` 时,会静默将其真实审批截断为 `{ "version": 1, "agents": {} }`。(#79885) 感谢 @omarshahine。 - ACP/网关:在生命周期边界内保留 `AcpRuntimeError` 原因链(代码/方法/JSON-RPC 详情),使网关日志、Telegram 回复和工具结果文本显示实际的上游故障,而非不透明的 `Internal error`/`[object Object]`,并在原因链到达日志或回复表面之前应用脱敏。 - 渠道/iMessage:当已安装的 imsg 版本声明该能力时(通过 `imsg send-rich --help` 探测一次并缓存私有 API 状态),将 `action: "reply"` 附件通过 `imsg send-rich --file` 接入。回复现在通过共享出站解析器填充 `media`/`mediaUrl`/`fileUrl`/`mediaUrls[0]`/`filePath`/`path`/base64 `buffer`+`filename`,通过现有 `withTempFile` 辅助函数暂存缓冲区,使用针对性错误拒绝 `http(s)://` URL 附件并指引调用者使用 `send` 的完整附件解析器管道,并在旧版 imsg 版本中回退到明确的 `imsg#114 not landed yet` 错误。依赖于上游 `openclaw/imsg#114` 能力落地到可安装版本;在此之前,新路径保持受限,用户将看到相同的明确回退 `#79822`。(#79864) 感谢 @omarshahine。 - Telegram:在追加真实部分流增量时保留首次预览去抖,使编辑草稿预览在提供商输出增量内容时不再重复先前文本。(#80045) 感谢 @TurboTheTurtle。 - 代理/Anthropic:即使本地模型配置仍声明 200k,也为 Claude Opus/Sonnet 4 模型报告 1M 会话上下文,以匹配模型发现并防止过早的状态/UI 溢出。修复 #66766。 - Models/OpenRouter:当仅由嵌套的 OpenRouter 模型 ID(如 `openrouter/google/...`)重复时,在 `/model status` 中隐藏缺少认证的直连提供商行,同时保留显式配置的直连提供商。修复 #62317。 - Models:当其他提供商拥有相同的裸模型别名时,保留显式选择的提供商/模型(如 `opencode-go/deepseek-v4-pro`)。修复 #79325。 - Models/config:当模型仅存在于 `agents.defaults.models` 中时,解释缺少 `models.providers.<provider>.models[]` 注册的原因,而不是返回裸的未知模型错误。修复 #80089。 - MCP/tools:为以数字开头的捆绑 MCP 服务器/工具片段添加前缀,确保生成的工具名称对 Moonshot/Kimi 及其他严格提供商有效。修复 #79179。 - Models/OpenRouter:将 `403 API key budget limit exceeded` 视为计费问题,以便模型回退机制继续推进,而不是重试已耗尽的主模型。修复 #60191。感谢 @omgitsgela。 - Models/OpenRouter:修复丢失外层 `openrouter/` 提供商包装器的陈旧会话覆盖,使会话能返回配置的 OpenRouter 模型,而不是作为未知直连提供商模型失败。修复 #78161。感谢 @hjamal7-bit。 - Google/Gemini:将默认 API 密钥引导配置恢复为 `google/gemini-3.1-pro-preview`,以便新的 Gemini 测试配置能测试 Gemini 3.1 Pro Preview。 - Telegram:在模型选择器中显示嵌套 OpenRouter 模型 ID 的完整提供商/模型标签,使 `openrouter/openai/gpt-5.4-mini` 不再显示为 `openai/gpt-5.4-mini`。修复 #67792。(#72752) 感谢 @iot2edge。 - Models/OpenRouter:保留实时的 `supported_parameters` 工具支持元数据,使非工具类 Perplexity Sonar 模型不再接收智能体工具负载,避免不必要的回退。修复 #64175。感谢 @Catfish-75。 - Models/OpenRouter:将 MoonshotAI Kimi K2.5 添加到捆绑的 OpenRouter 目录中,使引导/模型选择器无需等待实时发现即可提供该模型。修复 #14601。 - Models/OpenRouter:使基于 keyRef/tokenRef 的认证配置对只读 PI 模型发现可见,这样 OpenRouter 模型在模型选择器中保持可用,且无需存储明文密钥。修复 #58106。感谢 @ThalynLabs。 - Models/list:在默认配置视图中包含显式配置的提供商行和只读认证支持的目录行,无需加载 PI 的完整注册表,使控制面板 UI 选择器与可用的模型认证保持一致。引用 #79381。感谢 @ismael-81。 - Security/audit:在报告小模型 Web/浏览器暴露时,遵循 `tools.byProvider["provider/model"].deny` 设置,使按模型配置的 OpenRouter 缓解措施能够清除 `models.small_params` 暴露信号。修复 #80118。 - Models/Moonshot:接受直接的 `moonshotai/...` 和 `moonshot-ai/...` 引用作为标准 `moonshot/...` 的别名,使复制的 OpenRouter Kimi ID 不再因未知直连模型而失败。修复 #73876。(#74946) 感谢 @jeffrey701。 - Kimi Code:在捆绑目录、引导流程和文档中使用 Kimi 稳定的 `kimi-for-coding` API 模型 ID,同时规范化旧的 `kimi-code` 和 `k2p5` 引用。修复 #79965。 - Volcengine/Kimi:为直连和编码计划模型移除提供商不支持的工具 schema 长度和项目约束关键字,使托管的 Kimi 运行环境不会因 `minLength` 拒绝消息工具。修复 #38817。 - DeepSeek:为未拥有的 OpenAI 兼容代理提供商回填 V4 `reasoning_content` 回放字段,防止在捆绑的 DeepSeek 和 OpenRouter 路由之外出现后续请求失败。修复 #79608。 - iMessage:当因未附加 imsg 私有 API 桥接而导致操作被阻止时,输出 WARN 级别日志,使操作员能在 `~/.openclaw/logs/openclaw.log` 中看到静默丢弃记录,而无需查阅每个会话轨迹 JSONL 的 `tool.result` 负载。网关重启后从 Messages.app 卸载 dylib 时常见此情况。(#80035) 感谢 @omarshahine。 - Codex:在 schema 验证前交叉填充缺失的 `thread.id` 和 `thread.sessionId`,使未包含 `sessionId` 的实时 Codex 应用服务器响应不再导致 `thread/start` 或 `thread/resume` 失败。修复 #80124。(#80137) 感谢 @kagura-agent。