← 返回更新日志

OpenClaw v2026.4.23-beta.4 预发布

2026-04-24 · GitHub 原文
### 变更 - **Providers/OpenAI**:通过 Codex OAuth 添加图像生成和参考图像编辑功能,使 `openai/gpt-image-2` 无需 `OPENAI_API_KEY` 即可运行。修复 #70703。 - **Providers/OpenRouter**:通过 `image_generate` 添加图像生成和参考图像编辑功能,使 OpenRouter 图像模型能配合 `OPENROUTER_API_KEY` 使用。通过 #67668 修复 #55066。感谢 @notamicrodose。 - **图像生成**:允许智能体请求提供商支持的质量和输出格式提示,并通过 `image_generate` 工具传递 OpenAI 特有的背景、审核、压缩和用户提示。(#70503) 感谢 @ottodeng。 - **Agents/subagents**:为原生 `sessions_spawn` 运行添加可选的 fork 上下文,使智能体能在需要时让子进程继承请求者会话,同时默认保持干净的隔离会话;包含提示指南、上下文引擎钩子元数据、文档和 QA 覆盖。 - **Agents/tools**:为图像、视频、音乐和 TTS 生成工具添加可选的每调用 `timeoutMs` 支持,使智能体仅在特定生成需要时扩展提供商请求超时。 - **Memory/local embeddings**:添加可配置的 `memorySearch.local.contextSize`(默认 4096),使本地嵌入上下文可在不修补内存主机的情况下为受限主机进行调整。(#70544) 感谢 @aalekh-sarvam。 - **Dependencies/Pi**:将捆绑的 Pi 包更新至 `0.70.0`,使用 Pi 上游 `gpt-5.5` 目录元数据支持 OpenAI 和 OpenAI Codex,并仅保留本地 `gpt-5.5-pro` 前向兼容处理。 - **Codex harness**:为嵌入式 harness 选择决策添加结构化调试日志,使 `/status` 保持简洁,而网关日志可解释自动选择和 Pi 回退原因。(#70760) 感谢 @100yenadmin。 ### 修复 - **Codex harness**:将原生 `request_user_input` 提示路由回原始聊天,保留排队的后续答案,并遵循更新的应用服务器命令批准修订决策。 - **Codex harness/context-engine**:在日志记录前对上下文引擎组装失败进行脱敏,防止回退警告序列化原始错误对象。(#70809) 感谢 @jalehman。 - **WhatsApp/onboarding**:将首次运行设置条目加载保持在 Baileys 运行时依赖路径之外,使打包的 QuickStart 安装可在运行时依赖就位前显示 WhatsApp 设置。修复 #70932。 - **Block streaming**:在部分块传递中止且已发送文本块完全覆盖最终回复时,抑制最终组装的文本,防止重复回复且不丢弃无关短消息。修复 #70921。 - **Codex harness/Windows**:在启动原生应用服务器前通过 PATHEXT 解析 npm 安装的 `codex.cmd` 填充,使 `codex/*` 模型无需手动 `.exe` 填充即可工作。修复 #70913。 - **Slack/groups**:将 MPIM 群组 DM 分类为群组聊天上下文,并在 Slack 非 DM 界面抑制详细工具/计划进度,使内部“工作中…”跟踪不再泄露到房间。修复 #70912。 - **Agents/replay**:停止 OpenAI/Codex 会话重放在 Anthropic、Gemini 和 Bedrock 传输拥有的会话中合成缺失工具结果,同时保留合成修复。(#61556) 感谢 @VictorJeon 和 @vincentkoc。 - **Telegram/media replies**:在最终回复路径将远程 Markdown 图像语法解析为出站媒体负载,使 Telegram 群聊在模型或工具输出 `![...](...)` 而非 `MEDIA:` 标记时不再回退到纯文本图像 URL。(#66191) 感谢 @apezam 和 @vincentkoc。 - **Agents/WebChat**:从嵌入式运行器暴露不可重试的提供商故障(如计费、认证和速率限制错误),而非记录 `surface_error` 且让 WebChat 无渲染错误。修复 #70124。(#70848) 感谢 @truffle-dev。 - **WhatsApp**:统一直接发送和自动回复的出站媒体规范化。感谢 @mcaxtr。 - **Memory/CLI**:在内存核心清单中声明内置 `local` 嵌入提供商,使独立 `openclaw memory status`、`index` 和 `search` 能像网关运行时一样解析本地嵌入。修复 #70836。(#70873) 感谢 @mattznojassist。 - **Gateway/WebChat**:通过将图像附件卸载为媒体引用而非丢弃,为仅文本主模型保留图像附件,使配置的图像工具仍可检查原始文件。修复 #68513、#44276、#51656、#70212。 - **Plugins/Google Meet**:在离开时挂断委托的 Twilio 调用,在启动失败时清理 Chrome 实时音频桥,并使用扁平的提供商安全工具架构。 - **Media understanding**:在原生视觉跳过前遵循显式图像模型配置,包括 `agents.defaults.imageModel`、`tools.media.image.models` 以及 MiniMax VL 等提供商图像默认值(当活动聊天模型为纯文本时)。修复 #47614、#63722、#69171。 - **Codex/media understanding**:通过受限 Codex 应用服务器图像回合支持 `codex/*` 图像模型,同时保持 `openai-codex/*` 在 OpenAI Codex OAuth 路由上,并验证应用服务器响应是否符合生成的协议合约。修复 #70201。 - **Providers/OpenAI Codex**:在 Codex 目录发现遗漏时合成 `openai-codex/gpt-5.5` OAuth 模型行,使 cron 和子代理运行在认证期间不会因“未知模型”失败。 - **Models/Codex**:在从聊天或 CLI 命令添加模型时保留 Codex 提供商元数据,使手动添加的 Codex 模型保持正确的认证和路由行为。(#70820) 感谢 @Takhoffman。 - **Providers/OpenAI**:当激活 `openai-codex` 配置集时,直接将 `openai/gpt-image-2` 路由通过配置的 Codex OAuth,而非先探测 `OPENAI_API_KEY`。 - **Providers/OpenAI**:强化图像生成认证路由和 Codex OAuth 响应解析,使回退仅适用于公共 OpenAI API 路由和受限 SSE 结果。感谢 @Takhoffman。 - **OpenAI/image generation**:将参考图像编辑作为受保护的多部分上传发送而非 JSON 数据 URL,恢复复杂的多参考 `gpt-image-2` 编辑。修复 #70642。感谢 @dashhuang。 - **Providers/OpenRouter**:在图像部分前将图像理解提示作为用户文本发送,恢复 OpenRouter 多模态模型的非空视觉响应。修复 #70410。 - **Providers/Google**:遵循 Gemini 图像生成请求的私有网络 SSRF 选择加入,使将 Google API 主机解析为私有地址的可信代理设置可使用 `image_generate`。修复 #67216。 - **Agents/transport**:停止嵌入式运行降低进程级 undici 流超时,使慢速 Gemini 图像生成和其他长时间提供商请求不再继承短暂的运行尝试标头超时。修复 #70423。感谢 @giangthb。 - **Providers/OpenAI**:遵循 OpenAI 兼容图像生成端点的私有网络 SSRF 选择加入,使可信 LocalAI/LAN `image_generate` 路由无需全局禁用 SSRF 检查即可工作。修复 #62879。感谢 @seitzbg。 - **Providers/OpenAI**:停止通过回退目录播报已移除的 `gpt-5.3-codex-spark` Codex 模型,并用 GPT-5.5 恢复提示抑制过时行。 - **Control UI/chat**:将助手生成的图像持久化为经过身份验证的托管媒体,并接受助手媒体获取的配对设备令牌,使 WebChat 历史重载保持显示生成的图像。(#70719、#70741) 感谢 @Patrick-Erichsen。 - **Control UI/chat**:在网关重连时队列停止按钮中止,使断开连接的活跃运行在重连时被取消,而非仅清除本地 UI 状态。(#70673) 感谢 @chinar-amrutkar。 - **Memory/QMD**:在启动修复发现集合名称已存在时重建过时的托管 QMD 集合,使根内存重新窄化到 `MEMORY.md` 而非保持宽泛的工作区 Markdown 索引。 - **Agents/OpenAI**:从 PI、Codex 和自动回复 harness 路径暴露所选模型容量故障,并附带模型切换提示而非通用空响应错误。感谢 @vincentkoc。 - **Plugins/QR**:用受限的 `qrcode-tui` 助手替换遗留的 `qrcode-terminal` QR 渲染,用于插件登录/设置流程。(#65969) 感谢 @vincentkoc。 - **Voice-call/realtime**:在问候或转发缓冲音频前等待 OpenAI 会话配置,并在流设置前拒绝未列入允许名单的 Twilio 呼叫者。(#43501) 感谢 @forrestblount。 - **ACPX/Codex**:停止为 Codex ACP、Codex 应用服务器和 Codex CLI 运行具体化 `auth.json` 桥接文件;Codex 拥有的运行时现在直接使用其正常的 `CODEX_HOME`/`~/.codex` 认证路径。 - **Auto-reply/system events**:通过持久会话传递上下文路由异步执行事件完成回复,使长时间命令结果返回到原始频道,而非在实时原始元数据缺失时被丢弃。(#70258) 感谢 @wzfukui。 - **Gateway/sessions**:将 WebChat 会话变更保护扩展到 `sessions.compact` 和 `sessions.compaction.restore`,使 `WEBCHAT_UI` 客户端被一致拒绝于压缩侧会话变更,与现有补丁/删除保护相同。(#70716) 感谢 @drobison00。 - **QA channel/security**:在媒体获取前拒绝非 HTTP(S) 入站附件 URL,并记录被拒绝的方案,使可疑或错误配置的负载在调试时可见。(#70708) 感谢 @vincentkoc。 - **Plugins/install**:将主机 OpenClaw 包链接到声明 `openclaw` 对等依赖的外部插件,使仅对等插件 SDK 导入在安装后解析且不捆绑重复主机包。(#70462) 感谢 @anishesg。 - **Plugins/Windows**:在打包运行时依赖修复期间就位刷新打包插件 SDK 别名,使网关和 CLI 插件启动不再在相同访客 npm 更新后因 `ENOTEMPTY`/`EPERM` 竞争而失败。 - **Teams/security**:要求共享 Bot Framework 受众令牌通过验证的 `appid` 或 `azp` 命名配置的 Teams 应用,阻止全局受众上的跨机器人令牌重放。(#70724) 感谢 @vincentkoc。 - **Plugins/startup**:相对于目标插件模块而非中央加载器解析打包插件 Jiti 加载,使 Bun 全局安装在发现打包图像提供商时不再挂起。(#70073) 感谢 @yidianyiko。 - **Anthropic/CLI security**:从 OpenClaw 现有 YOLO 执行策略派生 Claude CLI `bypassPermissions`,保留显式原始 Claude `--permission-mode` 覆盖,并剥离格式错误的权限模式参数而非静默回退到绕过。(#70723) 感谢 @vincentkoc。 - **Android/security**:要求 Android 手动和扫描路由仅环回明文网关连接,使私有 LAN 和链路本地 `ws://` 端点现在失败关闭,除非启用 TLS。(#70722) 感谢 @vincentkoc。 - **Pairing/security**:要求私有 IP 或环回主机用于明文移动配对,并停止将 `.local` 或无点主机名视为安全明文端点。(#70721) 感谢 @vincentkoc。 - **Plugins/security**:停止设置 API 查找回退到启动目录,使工作区本地 `extensions/<plugin>/setup-api.*` 文件在提供商设置解析期间无法执行。(#70718) 感谢 @drobison00。 - **Approvals/security**:要求显式聊天执行批准启用,而非因批准者从配置或所有者允许列表解析而自动启用批准客户端。(#70715) 感谢 @vincentkoc。 - **Discord/security**:保持原生斜杠命令频道策略不绕过配置的所有者或成员限制,同时在没有更严格访问规则时保留频道策略回退。(#70711) 感谢 @vincentkoc。 - **Android/security**:停止 `ASK_OPENCLAW` 意图自动发送注入的提示,使外部应用操作仅预填充草稿而非立即调度它。(#70714) 感谢 @vincentkoc。 - **Secrets/Windows**:从文件支持的机密剥离 UTF-8 BOM,并使不可用 ACL 检查失败关闭,除非受信任的文件或执行提供商明确选择加入 `allowInsecurePath`。(#70662) 感谢 @zhanggpcsu。 - **Agents/image generation**:转义工具警告中被忽略的覆盖值,使解析的 `MEDIA:` 指令无法通过不支持的模型选项注入。(#70710) 感谢 @vincentkoc。 - **QQBot/security**:要求框架认证用于 `/bot-approve`,使未经授权的 QQ 发送者无法通过未认证的预分发斜杠命令路径更改执行批准设置。(#70706) 感谢 @vincentkoc。 - **MCP/tools**:停止 ACPX OpenClaw 工具桥列出或调用仅所有者工具(如 `cron`),关闭非所有者 MCP 调用者的权限提升路径。(#70698) 感谢 @vincentkoc。 - **Feishu/onboarding**:通过仅设置的 barrel 加载 Feishu 设置界面,使首次运行设置不再在打包运行时依赖就位前导入 Feishu 的 Lark SDK。(#70339) 感谢 @andrejtr。 - **Approvals/startup**:允许原生批准处理器在网关认证后报告就绪,同时在后台重放待处理批准,使缓慢或失败的重放传递不再阻止处理器启动或放大重连风暴。 - **WhatsApp/security**:将联系人/vCard/位置结构化对象自由文本保留在行内消息体之外,并通过围栏不受信任的元数据 JSON 渲染,限制名称、电话字段和位置标签/注释中的隐藏提示注入负载。 - **Group-chat/security**:将频道来源的群组名称和参与者标签保留在行内群组系统提示之外,并通过围栏不受信任的元数据 JSON 渲染。 - **Agents/replay**:在严格重放消毒过程中保留 Kimi 风格 `functions.<name>:<index>` 工具调用 ID,使自定义 OpenAI 兼容 Kimi 路由保持多轮工具使用完整。(#70693) 感谢 @geri4。 - **Discord/replies**:通过出站传递保留最终回复权限上下文,使 Discord 回复在发送时保持相同的频道/成员路由规则。 - **Plugins/startup**:从打包安装和外部运行时依赖阶段根恢复打包插件 `openclaw/plugin-sdk/*` 解析,使 Telegram/Discord 在缺失依赖修复后不再因 `Cannot find package 'openclaw'` 崩溃循环。(#70852) 感谢 @simonemacario。 - **CLI/Claude**:在 `claude-cli` 回合上运行与直接嵌入式运行相同的提示构建钩子和触发/频道上下文,保持 Claude Code 会话与 OpenClaw 工作区身份、路由和钩子驱动提示突变一致。(#70625) 感谢 @mbelinky。 - **Discord/plugin startup**:将子代理钩子保留在 Discord 频道条目后的惰性位置,使打包条目导入保持狭窄,并用频道 ID 和条目路径报告导入失败。 - **Memory/doctor**:将根持久内存规范化为 `MEMORY.md`,停止将小写 `memory.md` 视为运行时回退,并让 `openclaw doctor --fix` 将真正的分裂脑根文件合并到 `MEMORY.md` 并备份。(#70621) 感谢 @mbelinky。 - **Providers/Anthropic Vertex**:通过解决发出的发现条目恢复轻量级提供商发现路径后的 ADC 支持模型发现,在引导发现上暴露合成认证,并在探测默认 GCP ADC 路径时遵循复制的环境快照。修复 #65715。(#65716) 感谢 @feiskyer。 - **Codex harness/status**:每个会话固定嵌入式 harness 选择,在 `/status` 中显示活动的非 PI harness ID(如 `codex``),并保持 PI 上的遗留会话直到 `/new` 或 `/reset`,使配置更改无法热切换现有会话。 - **Gateway/security**:通过允许列表一组狭窄的代理可调提示、模型和提及门控路径(包括 Telegram 主题级 `requireMention`),对代理驱动的 `gateway config.apply`/`config.patch` 运行时编辑失败关闭,而非依赖可能遗漏新敏感配置键的手动维护的保护子树拒绝列表。(#70726) 感谢 @drobison00。 - **Webhooks/security**:在每个请求上重新解析 `SecretRef` 支持的 webhook 路由机密,使 `openclaw secrets reload` 立即撤销先前机密,而非等待网关重启。(#70727) 感谢 @drobison00。