← 返回更新日志

OpenClaw v2026.5.26

2026-05-27 · GitHub 原文
### 重点 - **更快的网关和回复**:启动时避免重复扫描插件、频道、会话、使用成本、警告、计划服务和文件系统;可见回复将面向用户的发送与较慢的后续工作分离开来;网关运行时/会话缓存在负载下更少抖动。 - **转录是核心**:基于转录的会议摘要、源提供者片段、清洗后的用户话轮、媒体来源、Codex 镜像、WebChat 回复以及 CLI/TUI 重放现在都使用一条更可靠的转录路径。 - **更多频道达到生产就绪**:Telegram 保持打字/进度上下文和论坛主题,iMessage 处理附件根目录、远程媒体暂存和重复的本地 Messages 源,WhatsApp 恢复群组/媒体行为,Discord 改进了语音播放和模型选择,Signal/iMessage/WhatsApp 获得反应审批。 - **更好的语音和对话**:实时对话运行可以从 Web UI 和 Discord 语音中检查、引导、取消或跟进;唤醒名称处理更加宽容,同时避免环境语音触发代理。 - **更安全的内容边界**:浏览器快照读取遵循 SSRF 策略,系统事件文本不能伪造嵌套的提示标记,获取的文件文本被包装为外部内容,ClickClack 入站发送者白名单在代理分发前运行,过期的设备令牌被拒绝,序列化的工具调用文本从回复中清除。 - **提供商、Codex 和本地模型更稳定**:命名的认证配置文件、OpenAI 采样参数、Codex 应用服务器恢复/超时/使用限制恢复、动态工具模式守卫、xAI 使用限制显示、Ollama top-p 标准化以及本地审批解析减少了特定提供商的死胡同。 - **更可靠的安装/更新/发布路径**:Alpine 安装、受信任的运行时回退根目录、稳定的更新通道、Docker/包超时、Windows 计划任务、Windows/macOS 证明通道、Testbox/Crabbox 委托、插件发布检查以及 macOS 运行器引导都已加强。 - **更好的可观测性**:活动标签、网关密钥准备追踪、工具/模型流进度、显式快速模式状态、systemd 网关卫生、OpenTelemetry LLM 跨度、发布性能证据以及更丰富的遥测信号使故障更易检查。 ### 变更 - **转录**:添加核心转录捕获和源提供者支持,用于基于转录的会议摘要,包括重命名的转录文档、CLI 界面、源提供者片段和清洗后的用户话轮持久化。 - **认证**:为 Hermes、OpenCode 和 Codex 认证配置文件添加命名的模型登录配置文件和受支持的凭据迁移,带有显式退出和非交互控制。(#85667)感谢 @fuller-stack-dev。 - **诊断**:追踪网关密钥准备,分类技能/工具使用,显示模型流进度,添加 OpenTelemetry LLM 内容跨度,并暴露可告警的遥测,用于阻塞的工具、故障转移、过期会话、活跃性、过大的负载和 webhook 入站。(#83019, #80370, #86191) - **频道**:添加 Signal 反应审批、iMessage 点赞审批反应和 WhatsApp 点赞审批反应支持,使移动审批流程无需文本 `/approve` 命令即可工作。(#85894, #85952, #85477) - **代理/API**:通过网关转发 OpenAI 采样参数,并为活跃代理运行暴露预估的上下文预算状态。(#84094) - **TUI/状态**:在代理忙碌时排队提交的提示,并在状态输出中显示显式的快速模式状态以及更丰富的 systemd 网关卫生信息。(#86722, #87115, #86976) - **执行审批**:隐藏当前提示不可用的持久审批操作,并使审批运行时令牌保持本地化,从而过期提示不能提供误导性控制。(#86270, #86359) - **插件 SDK**:添加反应审批助手,并保持诊断事件根导出在函数名和别名绑定的模块图中可发现。(#86735, #87084) - **Android/iOS**:添加 Android 配对新网关操作,并改进移动对话模式界面,包括 iOS 实时对话模式和 Android 离线语音/网关恢复。(#86798, #86355)感谢 @ngutman。 - **性能**:缓存插件元数据快照、包真实路径、稳定的网关元数据、模型成本索引、频道解析、使用成本索引以及会话/认证热路径事实,使常见网关和回复路径减少重复发现。(#84649, #85843, #86517, #86678) - **语音**:通过实时语音 SDK 暴露共享的实时话轮上下文追踪,并将其重用于 Discord 说话者归属和唤醒名称上下文恢复。 - **语音**:在 Google Meet 命令和节点音频桥中重用共享的实时输出活动追踪,包括用于本地闯入检测的最近输出检查。 - **语音**:通过实时语音 SDK 暴露共享的实时输出活动追踪,并将其重用于 Discord 播放活动和闯入决策。 - **语音**:通过实时语音 SDK 暴露共享的实时咨询问题匹配、可说话结果提取和别名感知的强制咨询协调,然后在网关对话、语音呼叫和 Discord 语音路径中重用。 - **语音**:通过实时语音 SDK 共享激活名称匹配和咨询转录筛选,使 Discord、浏览器语音和会议界面可以重用同一实现。 - **Cron**:默认 `cron.maxConcurrentRuns` 为 8,使计划自动化及其隔离的代理话轮无需显式配置即可并行推进。 - **QA-Lab**:添加 `qa coverage --match <query>`,使聚焦的证明选择可以在运行实时或远程通道之前从现有元数据中发现匹配场景。 - **Discord/模型选择器**:当提供商列表或提供商的模型列表超过 25 项时,显示一个字母桶选择(例如 `A–G (12) · H–N (18) · O–Z (5)`),使带有 `provider/*` 通配符的配置只需一键即可跳到正确页面,而不是通过上一页/下一页分页;当每个项共享相同首字母时回退到数字块。 - **控制 UI**:添加一个临时活动标签,用于清理后的实时工具活动摘要,无需持久化原始遥测。修复 #12831。感谢 @BunsDev。 - **构建**:在 `scripts/build-all.mjs` 的 `full` 和 `ciArtifacts` 配置文件中包含 `ui:build`,使 `pnpm build` 在 `tsdown` 清理 `dist` 后始终重建 `dist/control-ui`,消除第二个命令的需求以及源码/运行时安装和 CI 工件上传中缺失资产的故障模式。(#85206) - **iOS**:通过直接实时语音会话、紧凑工具栏状态和响应式语音波形反馈改进对话模式。(#86355)感谢 @ngutman。 - **媒体**:用 Rastermill 替换 Sharp 图像后端,用于元数据、调整大小、EXIF 方向以及 PNG 透明保留优化,使 OpenClaw 不再安装 Sharp 或 WhatsApp Jimp 回退用于图像处理。(#86437) - **Codex**:将捆绑的 Codex CLI 更新到 0.134.0,并对预算触发的应用服务器话轮保持原生压缩禁用,使 OpenClaw 拥有恢复边界。(#86772) ### 修复 - **内存/安全**:拒绝通过显式 `memory_store` 工具提交的类似提示的文本,在嵌入或存储之前进行过滤,匹配现有的自动捕获提示注入过滤器。(#87142) - **网关/安全**:当 `gateway.auth.rateLimit` 未设置时,为远程非浏览器和 HTTP 网关认证失败启用默认认证速率限制器,同时保留环回豁免。(#87148) - **安全/内容边界**:在 ChromeMCP 或直接 CDP 读取前,根据 SSRF 策略验证浏览器快照标签页 URL;清理队列中的系统事件文本,使不受信任的插件/频道标签不能伪造嵌套的提示标记;将获取的文件文本和元数据包装为外部内容;在代理分发前应用 ClickClack `allowFrom` 发送者白名单;在轮换期间拒绝来自无效设备令牌客户端的 RPC;需要暂存的沙箱媒体引用;并从回复中清除序列化的工具调用文本。(#78526, #87094, #87062, #83741, #70707, #86924)感谢 @zsxsoft, @ttzero25 和 @mmaps。 - **转录/用户话轮**:将 CLI、WebChat、媒体、后续、钩子和 Codex 镜像用户话轮持久化到已接受的会话目标;保持清洗后的转录文本、内联图像路由、来源元数据、重放钩子和回退路径在运行时失败或重启时幂等。 - **TUI/状态/引导/UI**:忙碌时排队 TUI 提示而不是丢弃它们;在引导期间保留配置的默认模型;将失败的工具结果显示为错误;在控制 UI 中显示配置打开失败;保持状态 JSON 插件扫描健康;本地保留 xAI 使用限制错误;并暴露显式的快速模式/systemd 状态。(#86722, #87000, #85786, #87108, #87001, #86614, #87115, #86976) - **插件命令/SDK**:保留插件 LLM 命令认证;将原生插件命令分发绑定到主机代理的 LLM 认证;使 `onDiagnosticEvent` 导出通过 `Function.name` 可发现;稳定诊断事件根别名;关联无路径读取诊断;抑制频道命令路径中的瞬时运行器失败;并修复本地审批解析。(#85936, #87084, #86977, #87069, #86771) - **Codex/提供商**:将 WebChat 投递提示排除在用户提示之外;避免虚假的排队终端空闲超时;共享原生钩子中继注册表;隔离不受支持的动态工具模式;保留 Claude 恢复会话的系统提示;标准化贪婪的 Ollama `top_p`;保留入站运行的每代理思考默认值;并避免在预算触发的 Codex 话轮上接管原生压缩。(#87096, #73950, #87049, #86689, #86772) - **网关/性能/发布**:重用启动警告元数据和准备好的认证存储;避免在读取路径上克隆实时切换和生命周期会话缓存;延迟警告和计划服务回退导入;减少网关会话/启动/运行时 CPU 抖动;跳过重复的话轮会话触摸;停止聊天超时回退级联;丢弃过期的子代理公告历史;限制基准/监视/厨房水槽拆解等待;限制 macOS/包/引导/插件烟雾命令;限制安装最终化探测;从客户 `PATH` 解析 Parallels npm-update 命令;并通过 `/usr/bin/env` 引导原始 AWS macOS Node/pnpm 命令。(#86997) - **回复/性能**:通过保留 Telegram 打字/进度上下文、延迟加载斜杠命令启动元数据、避免热路径模型 hydration、标志门控 Codex 分析器计时、延迟上下文压缩维护以及跟踪投递计时,减少可见回复投递延迟。(#86989, #86990, #86991, #86992, #86993, #86994)感谢 @keshavbotagent。 - **回复/源投递**:保持 TUI、控制 UI、媒体、TTS、转录和 Codex 源回复最终版存活,没有重复的终端事件或过期的重放工件。 - **代理/重放**:修复重放前的遗留工具结果;保留 `sessions_spawn` 转录负载;恢复当前守卫检查;暂存沙箱工作区媒体;并防止重复的转录工具显示元数据重新出现。(#82203, #86934, #87025)感谢 @martingarramon, @vincentkoc 和 @joshavant。 - **代理/会话**:处理 `sessions_send` 中的活跃回退失败,使回退路由报告真实失败,不留下模糊的丢弃发送给调用者。(#86638) - **代理/钩子/子代理**:强制默认钩子代理白名单;恢复失败子代理生命周期完成;并保持节点任务生命周期清理不关闭网关监听器。(#86101) - **Codex**:将较新的 OpenClaw 聊天历史投射到恢复的应用服务器线程中;将 Codex 话轮超时保持在 Codex 运行时边界内,以免超时毒化共享应用服务器客户端或回退到不相关的提供商回退。(#86677, #86476)感谢 @TurboTheTurtle 和 @pashpashpash。 - **配置/诊断/更新**:缩小分析过的工具部分诊断修复范围;将运行时注入的旧版网络搜索提供商配置排除在用户编写的配置验证之外;并将预发布标签排除在稳定更新程序解析之外。(#87030, #86818, #86559)感谢 @joshavant, @luoyanglang 和 @stevenepalmer。 - **CLI/Windows**:为堆栈繁重的启动路径添加仅 Windows 的堆栈大小重生;默认 CLI 日志使用本地时间戳;并更严格地验证超时/横幅 TTY 状态。(#87031, #85387)感谢 @giodl73-repo 和 @vincentkoc。 - **锁定/安全**:在删除过期插件锁之前要求所有者身份证明;记忆化会话锁所有者参数;并避免写入默认执行审批存储,除非策略状态实际更改。(#86814, #86964)感谢 @Alix-007 和 @vincentkoc。 - **安装/发布**:使用进程组超时限制 Docker 包构建、清单、打包和 tarball 准备;将 shrinkwrap 补丁漂移固定到 pnpm 锁;加强 macOS 重启和 dSYM 打包;并在前台运行发布 Docker/实时超时包装器,以免子进程阻塞门。 - **Telegram/网络**:将 `ENETDOWN` 视为瞬时预连接网络故障,使 Telegram 发送、网关未处理拒绝处理和 cron 网络重试遵循与同级网络中断相同的恢复路径。(#86762)感谢 @TurboTheTurtle。 - **Telegram**:保留入站文本实体、重叠 DM 回复、账户主题缓存侧车、出站回复上下文、定向机器人命令提及、持久群组重试目标、论坛主题名称和原生进度回调。(#83873, #85361, #85555, #85656, #85709, #86299, #86553)感谢 @SebTardif, @luoyanglang 和 @neeravmakwana。 - **iMessage**:从本地 Messages 附件根目录读取图像附件;去重重复的本地 Messages 源账户;种子直接 DM 历史;修复图像/群组媒体附件命令;在实时处理后推进追赶游标;并将斜杠命令确认保留在源对话中。(#82642, #85475, #86569, #86705, #86706, #86770)感谢 @homer-byte, @TurboTheTurtle, @swang430 和 @OmarShahine。 - **WhatsApp/QQ/Twitch/IRC/Slack**:恢复 WhatsApp ack 身份和群组丢弃警告;使 QQ Bot 媒体遵守 `OPENCLAW_HOME`;序列化 Twitch 认证断开连接;标准化存储 IRC 频道路由;并保持 Slack 下载的文件不进入回复媒体。(#83833, #85309, #85777, #85794, #85906, #86318, #86697)感谢 @sliverp, @neeravmakwana 和 @Kailigithub。 - **Discord/语音**:改进语音播放和唤醒回复;为大模型选择器菜单分桶;将媒体标题合并到一条消息中;通过配置的代理路由元数据;恢复数字频道发送;抑制自我回复回声;并收紧唤醒匹配而不破坏模糊唤醒短语。(#80227, #86238, #86487, #86571, #86595, #86601) - **Codex**:保留原生网络搜索元数据;保持过大的原生线程重用;将 CLI API 密钥认证桥接到应用服务器;保留沙箱引导路径样式;恢复上下文窗口提示错误;尊重 yolo 审批策略;禁用原生线程个性;并通过 Codex 认证路由压缩。(#85378, #85542, #85891, #85909, #86408) - **代理/运行时**:强制会话锁最大持有回收;在所有退出时释放嵌入尝试锁;将中止的子代理运行视为终端;避免在热路径上运行时模型 hydration;公开作用域会话列表计数;从提供商错误推导溢出预算;并将回退错误保持作用域在活跃模型候选内。(#70473, #85764, #86014, #86134, #86427, #86944)感谢 @openperf, @fuller-stack-dev, @zhangguiping-xydt 和 @ferminquant。 - **配置/更新/诊断**:在备份恢复失败后重试配置恢复;在 Windows 上跳过 shell 环境回退;将预发布标签排除在稳定 git 通道之外;支持深度配置编辑;在不可读的 cron 存储上警告而不是中止;修剪过期的捆绑插件路径;并在网关已经健康时避免重复重启提示。(#85739, #85787, #86060, #86260, #86384, #86533)感谢 @liaoyl830。 - **安装/发布**:支持 Alpine CLI 安装和运行时下限;优先使用受信任的启动 argv 运行时回退根目录;拒绝过期的 CLI 节点运行时;避免 npm `min-release-age` 安装程序失败;限制 npm/包/Docker 安装阶段;在 Docker 中恢复配置父所有权;在修剪前种子 Docker 锁文件包 tarball;使发布/插件预发布检查失败关闭而不是挂起或假绿;并为 Docker 支持的证明使用主机可见的 Crabbox 本地工作根目录。(#85491) - **Windows 守护进程**:保持计划任务网关在电池供电时启动,并在任务安装期间避免工作组成员机器提示域用户。(#59299) - **安全**:避免在 Docker 中打印网关令牌;安全验证插件模型模式正则表达式;转义转录元数据字段名;加强会话白名单通配符匹配;审计 YOLO 下 Claude 权限覆盖;并要求显式允许 ACP 自动审批。(#85849, #85934, #86046, #86557) - **媒体/图像**:用 Rastermill 替换 Sharp;保持 EXIF 标准化尽力而为;在图像描述前标准化 HEIC/HEIF;通过 OpenAI 路由 Codex 图像 API 密钥;保留图像压缩元数据;并自动缩放实时工具结果上限。(#85776, #86037, #86437, #86857, #86923) - **内存**:防止语义向量索引在嵌入不可用时静默降级;停止大型会话存储上的诊断 OOM;保留侧车钩子/工件;写入回退梦境日记;使用 CJK 感知梦境去重;并避免每文件观察器 FD 扇出。(#80613, #82928, #85060, #85704, #85967, #86701)感谢 @brokemac79, @openperf 和 @yaaboo-gif。 - **代理/会话**:在受限的 `sessions_list` 结果上包含可见性元数据,使作用域计数清晰报告,而不扩大访问或暴露隐藏会话计数。(#86944)感谢 @ferminquant。 - **网关/DNS**:在推导区域路径或写入区域文件之前验证广域发现域名,使无效的 `discovery.wideArea.domain` 和 `dns setup --domain` 值以 DNS 名称诊断失败,而不是落入不相关的配置错误。感谢 @mmaps。 - **代理/BTW**:通过嵌入式流解析器路由回退侧问题流,使兼容 Anthropic 的 MiniMax 请求使用与正常聊天相同的封顶传输。(#86312)感谢 @neeravmakwana。 - **Telegram**:将 `/command@TargetBot` 机器人命令实体视为针对该机器人的显式提及,使 `requireMention` 群组不再丢弃定向命令或标题。修复 #84462。(#86553)感谢 @luoyanglang。 - **CI**:使用 `OPENCLAW_E2E_NPM_INSTALL_TIMEOUT` 限制 Docker/Bash E2E tarball npm 安装,使包、引导、插件和升级通道在卡住的 npm 安装上失败而不是挂起。 - **CI**:在客户命令超时和清理后援后使 Parallels npm-update 烟雾作业失败,而不仅仅记录超时行。 - **CI**:限制厨房水槽 RPC HTTP 探测,使停滞的网关就绪或响应体失败并重试,而不是楔住行走器。 - **CI**:保持 `OPENCLAW_TESTBOX=1 pnpm check:changed` 通过 Crabbox 委托给 Blacksmith Testbox,而不将本地 Testbox 或工作环境转发到远程命令。 - **CI**:在手动检出获取超时的 TERM 宽限期后发送 KILL,使卡住的 Testbox 和工作流检出重试不能在楔住的 `git fetch` 后挂起。 - **CI**:在 Bun 全局安装烟雾命令超时的 TERM 宽限期后发送 KILL,使被困的 `openclaw` 子进程不能楔住计划安装烟雾。 - **iMessage**:将当前频道/账户入站附件根目录线程化到图像工具,使 iMessage 保存在 `~/Library/Messages/Attachments`(包括通配符 `/Users/*/Library/Messages/Attachments` 根目录)下的附件通过现有入站路径策略读取,而不是被拒绝为 `path-not-allowed`。字面量 `localRoots` 保持工作区作用域。修复 #30170。(#86569) - **QQ Bot**:为出站媒体路径解析遵守 `OPENCLAW_HOME`,使 `<qqmedia>` 发送在 `HOME` 和 `OPENCLAW_HOME` 不同时(Docker /多用户主机)不再静默失败。持久化的 QQ Bot 数据(会话、已知用户、引用)为了升级兼容性锚定在 OS home 上。修复 #83562。感谢 @sliverp。 - **更新**:报告主要格式错误的 `openclaw.extensions` 负载错误,而不添加重复的缺失主诊断。(#86596)感谢 @ferminquant。 - **控制 UI**:保持本地 Markdown 文件路径惰性,同时保留应用相对链接。(#86620)感谢 @BryanTegomoh。 - **网关**:按 URL 抑制重复的未认证设备必需探测,同时保留显式认证和配对恢复路径。(#86575)感谢 @ferminquant。 - **IRC**:以规范目标 `channel:#name` 存储入站频道路由,并在写入前加入临时频道发送。(#85906)感谢 @Kailigithub。 - **使用**:将未知的全零模型定价显示为缺失成本条目,而不是自信的 `$0` 总数。(#85882)感谢 @MichaelZelbel。 - **代理/Codex**:仅对完整的 `never` 加上 `danger-full-access` 情况尊重 yolo 应用服务器审批策略。(#85909)感谢 @earlvanze。 - **网关/Gmail**:在重新进入时清除 Gmail 观察器续订间隔,以免热重新加载泄漏生命周期定时器。(#82947)感谢 @SebTardif。 - **日志**:在损坏的 stdout/stderr 管道上干净退出,而不掩盖现有失败退出码。(#80059)感谢 @pavelzak。 - **网关/安全**:在提取过大的会话行前缀时转义转录元数据字段名。(#85934)感谢 @SebTardif。 - **插件/安全**:使用安全正则编译器验证清单模型模式正则表达式,使不安全的模式在匹配前被忽略。(#86046)感谢 @SebTardif。 - **Discord**:通过配置的 Discord 代理路由网关元数据 REST 查找,使代理账户在打开 WebSocket 前不回退到直接 `discord.com` 连接。修复 #80227。感谢 @Clivilwalker。 - **代理/媒体**:从文件名派生的 MIME 类型水合当前话轮图像附件,使活动视觉可以查看生成或转发的图像,其源省略了图像内容类型。(#84812)感谢 @marchpure。 - **代理/文件系统**:将仅工作区的暂存路径指导指向工作区内临时目录,同时保持主机根写入被工具守卫拒绝。(#86501)感谢 @tianxiaochannel-oss88。 - **代理/媒体**:保持异步 cron 媒体完成作用域在其运行会话内,同时为过期的生成媒体成功和失败通知保留直接投递。(#86529)感谢 @ai-hpc。 - **网关**:当 `agent.send` 轮换或替换会话 id 时发出插件 `session_end`/`session_start` 钩子,使钩子生命周期状态与 `sessions.changed` 通知对齐。修复 #83507。(#85875)感谢 @brokemac79。 - **OpenShell/SSH**:在沙箱/会话设置前拒绝格式错误的生成执行命令,使未解析的工作流占位符快速失败而不是到达远程 shell。修复 #72373。感谢 @brokemac79。 - **Google**:停止将 `gemini-3.1-flash-lite` 标准化到已退役的预览端点,并将 Flash Lite 别名指导更新为 GA 模型 id。修复 #86151。(#86240)感谢 @SebTardif。 - **安装程序**:使 Alpine apk 安装覆盖 Git,验证节点运行时下限,尝试 `nodejs-current`,并在仓库仅提供较旧节点包时报告 Alpine 版本指导。 - **代理/状态**:对等效运行时别名,优先使用活跃的 Claude CLI OAuth auth 标签而不是未使用的 Anthropic 环境 API 密钥标签。修复 #80184。(#86570)感谢 @brokemac79。 - **代理/媒体**:在活跃请求者唤醒失败后仍缺失生成媒体时发送直接回退。(#85489)感谢 @fuller-stack-dev。 - **代理**:从提供商报告的和合成的超预算 token 计数推导溢出压缩预算,使确认的上下文溢出在重试前压缩。(#70473)感谢 @fuller-stack-dev。 - **代理/Codex**:通过溢出压缩恢复 Codex 上下文窗口提示错误,并在恢复耗尽时显示重置指导。(#85542)感谢 @fuller-stack-dev。 - **代理/Codex**:当没有配置 Codex auth 配置文件时,允许 Codex 应用服务器运行从 `CODEX_API_KEY` 或 `OPENAI_API_KEY` 引导。 - **代理/Codex**:保持选定的 Codex 运行时路由在 OpenAI-Codex 上,同时保留直接 OpenAI API 密钥压缩回退。(#86408)感谢 @funmerlin 和 @VACInc。 - **代理转录**:在查找本地转录候选时包含 OpenClaw 代理会话日志。 - **Crabbox**:引导原始 AWS macOS shell 命令,包装在绝对 `time` 路径中,使 RSS 探测可以在新鲜 macOS 运行器上运行 Node 和 pnpm。 - **Crabbox**:即使设置语句在 Node 或 pnpm 使用之前,也引导原始 AWS macOS shell 命令。 - **TUI/本地**:在显式本地模型运行中跳过不必要的密钥解析、网关模型目录加载、引导和技能扫描,使启动更快到达模型请求。 - **会话/诊断**:在只读诊断检查期间加载大型会话存储而不进行克隆放大,并回收过期的 `sessions.json.*.tmp` 侧车。修复 #56827。感谢 @openperf。 - **测试**:清理成功的插件网关挑战隔离临时根,同时为失败/调试运行保留显式保留开关。 - **插件/性能**:在进程生命周期内重用派生的插件元数据快照,使回复时间技能设置在每次话轮中不再重新扫描插件元数据。 - **Discord/OpenAI 语音**:在忽略环境转录后使用当前说话者上下文保持唤醒名称主咨询,并缩短默认捕获静默宽限。 - **诊断**:当最近的监督器重启使网关健康时,跳过冗余的网关重启提示。修复 #86518。(#86533)感谢 @liaoyl830。 - **Cron**:将暂停的 cron 通道恢复到配置/默认并发,而不是在配额或断路器自动恢复后回退到 1。 - **网关**:在诊断队列压力期间保持仅会话的控制 UI 工具启动镜像流动,而不是静默丢弃非终末工具更新。 - **代理/内存**:对于缺失日期仅每日内存读取,返回可选的未找到上下文,而不是记录良性的首次运行 `ENOENT` 失败。修复 #82928。感谢 @galiniliev。 - **Discord**:将流式文本标题合并到随后的媒体块回复中,使标题和附件作为一条消息发送。(#86487)感谢 @neeravmakwana。 - **网关**:避免向同时按运行和会话订阅的控制 UI 连接发送重复的工具事件帧。 - **Discord/OpenAI 语音**:接受更宽的边缘位置模糊唤醒名称转录,同时保持环境语音门控。 - **Discord/OpenAI 语音**:接受更长的前导唤醒名称误译,例如将 "Open Club" 当作 OpenClaw。 - **代理/OpenAI 兼容**:在发送没有可用用户或助手话轮的仅系统/工具负载之前停止 ModelStudio 兼容聊天请求。(#86177)感谢 @TurboTheTurtle。 - **网关/插件**:在构建已安装插件索引时重用插件包真实路径检查,使启动避免重复的文件系统解析工作。 - **Kilo 网关**:将字符串 `stop` 序列作为数组发送,使 Kilo 接受 OpenAI 兼容聊天完成。(#86461)感谢 @SebTardif。 - **Discord/OpenAI 语音**:接受前导模糊唤醒名称转录,例如 "Monty" 或 "Moti" 代表 Molty 代理,同时保持环境语音门控。 - **媒体理解**:在图像描述提供商运行前将 HEIC 和 HEIF 图像转换为 JPEG,使 iPhone 照片在直接和配置的图像描述流程中工作。(#86037) - **代理**:从外部拆解中释放嵌入尝试会话锁,使后提示异常不能将后续请求楔在 `SessionWriteLockTimeoutError` 后面。修复 #86014。感谢 @openperf。 - **Discord/OpenAI 语音**:在提供商最大持续时间轮换实时会话,而不将预期的会话过期事件记录为错误。 - **会话**:在 QMD 蛞蝓化会话查找期间跳过仅元数据条目,使一个不完整的行不阻塞转录命中解析。(#86327)感谢 @abnershang。 - **代理/媒体**:从插件工具元数据推导捆绑插件本地媒体信任,而不是在订阅路径上导入完整插件注册表。(#84409)感谢 @samzong。 - **图像工具**:保持配置支持的自定义提供商 API 密钥可用于自动发现的视觉模型,包括无环境密钥或 auth 配置文件的延迟图像工具执行。(#85733) - **内存/本地嵌入**:在隔离的工作者侧车中运行本地 GGUF 嵌入,并在工作者失败时降级到配置的回退或关键词搜索,以使原生嵌入崩溃不导致网关宕机。(#85348)感谢 @osolmaz。 - **网关**:在 `SIGUSR1` 进程内重启前清除运行时配置快照,使配置更改在下一个网关循环中生效。(#86388)感谢 @XuZehan-iCenter。 - **模型**:将 OAuth 委托标记显示为配置的 `models.json` auth,同时保持运行时路由可用性检查严格。(#86378)感谢 @rohitjavvadi。 - **Cron**:使用进度摘要种子活跃的计划和手动 cron 任务行,使状态界面在作业运行时看起来不为空。(#86313)感谢 @ferminquant。 - **Cron**:在常规存储写入期间保留不受支持的持久化 cron 负载行,同时保持这些行不可运行。修复 #84922。(#86415)感谢 @IWhatsskill。 - **更新程序**:将预发布 git 标签排除在稳定通道解析之外,使源码更新不检出较新的 alpha/rc/preview/canary 标签。(#86260)感谢 @stevenepalmer。 - **安全/审计**:在 `openclaw security audit` 中标记 webhook `hooks.token` 重用活跃网关密码认证,同时保持密码模式启动兼容性。(#84338)感谢 @coygeek。 - **QQBot**:从配置的代理和提供商超时推导出站回复看门狗,使慢速本地模型回复不在五分钟处被切断。修复 #85267。(#85271)感谢 @SymbolStar。 - **代理/心跳**:在第一个有效 `heartbeat_respond` 后停止心跳话轮,使重复响应循环不消耗 token。(#86357)感谢 @udaymanish6。 - **任务**:将保留的丢失任务排除在默认状态健康计数之外;在维护期间解释其清理窗口;并在 24 小时后修剪丢失任务记录,而不是通常的 7 天终端保留。 - **内存核心**:保持 REM 梦境聚焦于活跃的轻量级阶段记忆,并将阶段条目标记为已考虑,使旧回忆历史不再主导新鲜候选。(#86302)感谢 @SebTardif。 - **内存**:当配置的嵌入提供商暂时不可用时,中止同步而不是降级现有语义向量索引为仅 FTS。(#85704)感谢 @yaaboo-gif。 - **Telegram**:通过账户作用域主题缓存传播论坛主题名称,用于原生命令上下文和主题创建/编辑操作。(#86299)感谢 @SebTardif。 - **Slack**:保持下载的只读文件不进入回复媒体,使 Slack 文件读取不将文件回声回对话。(#86318)感谢 @neeravmakwana。 - **Cron**:接受前导加号相对持续时间,例如 `+5m`,用于一次性 `--at` 计划。(#86341)感谢 @mushuiyu886。 - **代理/媒体**:保留异步启动的媒体工具元数据,使后台生成开始不再显示通用不完整话轮警告,同时重放保持不安全。(#85933)感谢 @fuller-stack-dev。 - **Docker E2E**:去重调度器通道资源,使 npm/服务包通道不被过度计数和不必要地序列化。 - **QA/诊断**:添加一个收集器支持的 OpenTelemetry 烟雾通道;使 OTLP 负载泄漏检查场景感知;并保持源码 QA 构建不会因通过 pnpm 的临时模块路径解析的可选依赖导入而失败。 - **Crabbox**:为稀疏远程变更门引导 Git 元数据,使原始同步工作区可以从预期的差异运行 `pnpm check:changed`。 - **xAI/LM Studio**:在等待纯文本工具调用回退时,避免缓冲普通的括号或 `final` 散文直到流完成。 - **诊断**:当 cron 作业存储存在但无法读取时,警告并继续,使后续健康检查仍然运行。修复 #86102。(#86384)感谢 @1052326311。 - **Discord**:当用户回复该机器人消息时,从提示上下文中抑制机器人之前回复正文和引用的媒体,同时保留回复元数据用于路由。(#86238)感谢 @fuller-stack-dev。 - **Discord**:恢复用于出站消息工具发送的裸数字频道 ID,同时保持显式 DM 目标明确。(#86571)感谢 @joshavant。 - **Docker E2E**:在准备包支持场景运行的共享 OpenClaw 包 tarball 时,避免重建控制 UI 两次。 - **测试**:在安装程序 Docker 烟雾中,避免重建控制 UI 两次,因为现在 `pnpm build` 包含 `ui:build`。 - **测试**:给 QA 配置变异 RPC 足够的原生 Windows 预算来完成网关配置写入,并在热场景运行后重启稳定。 - **测试**:通过允许预期的嵌入式提示交接错误并使用 Windows 安全的超时预算,使网关重启进行中的 QA 场景专注于原生 Windows 上的重启恢复。 - **QA-Lab**:使合成 OpenAI 提供商在必需的启动读取后尊重通用 `reply exactly:` 指令,使重启恢复场景不回退到通用仓库摘要散文。 - **网关**:在强制重启关闭期间中止活跃的 `agent` RPC 运行,使过期的进程内话轮不能在网关生命周期重启后继续写入会话。 - **Crabbox**:通过临时完全检出同步干净的稀疏工作树,即使重用现有租约,使跟踪的构建时文件不被省略。 - **构建**:通过共享的 pnpm 运行器路由 `scripts/ui.js`,并将控制 UI 分块助手包含在稀疏包含的源码中,使原生 Windows Corepack 构建可以生成 `dist/control-ui`。 - **测试**:给内存回退 QA 场景足够的话轮预算来锻炼原生 Windows 网关运行,而不是在模拟代理仍在分派时因客户端超时而失败。 - **测试**:在原生 Windows 上收集 QA 网关 CPU/RSS 指标,并给通道基线足够的话轮预算来报告慢速网关运行,而不是在证明前超时。 - **安装/更新**:使用 `--min-release-age=0` 而不是 `--before` 绕过 npm `min-release-age` 策略,使托管安装程序在拒绝组合配置的 npm 版本上继续工作。(#84749)感谢 @TeodoroRodrigo。 - **诊断**:当过期的活跃运行簿记阻塞排队工作且没有推进时,回收楔住的会话通道。修复 #85639。感谢 @openperf。 - **WebChat**:保持消息工具回复在聊天中可见,同时仍为模型总结内部工具结果。修复 #86347。感谢 @shakkernerd。 - **网关/性能**:当网关进程在基准拆解前退出时,使启动基准样本失败,包括就绪探测后的信号死亡。 - **网关/性能**:当网关在基准拆解前退出时,使重启基准样本失败,包括成功重启探测后的干净退出和信号死亡。 - **代理/测试**:在静态选择助手上保持模型目录可见性,使目录可见性检查避免宽泛的模型选择桶导入。 - **代理/承诺**:序列化承诺存储的加载-修改-保存写入,使并发心跳和 CLI 更新不再丢失丢弃、发送或尝试状态。(#81153)感谢 @ai-hpc。 - **xAI/LM Studio**:将纯文本工具调用回退提升为结构化工具调用,并在面向用户投递前剥离泄露的内部工具语法。(#86222)感谢 @fuller-stack-dev。 - **CLI**:在包更新后最终化期间抑制良性的自更新版本偏差警告。 - **网关/性能**:收紧重启和启动基准失败处理,使长时间分析运行、失败探测和新鲜 Linux 运行器不再产生假通过或 `n/a` 结果。 - **检查**:保持 Intentional Knip 未使用文件发现可选,使完整 CI 和稀疏证明工作区保持一致。 - **Docker**:恢复运行时图像中的可写 `~/.config`。修复 #85968。感谢 @hkoessler 和 @Bartok9。 - **插件 SDK**:当构建的插件 SDK 别名通过单独的模块图解析诊断助手时,保持遗留根诊断订阅连接。 - **诊断**:导出用于阻塞工具、模型故障转移、过期会话、活跃性警告、过大负载和 webhook 入站的可告警 OTel 和 Prometheus 信号,同时修复带有查询字符串的共享 OTLP 端点。 - **测试**:在 exec 白名单、文件系统安全垃圾断言、已安装插件匹配、Telegram 主题名称存储和内置 ACPX MCP 服务器期望中标准化 macOS 规范临时路径,使原生 macOS 证明运行覆盖预期行为。 - **Codex/应用服务器**:在活跃运行上保留仅消息工具源回复投递模式,使子代理完成唤醒可以引导活跃的 Codex 话轮而不是被拒绝。(#86287)感谢 @ferminquant。 - **测试**:直接采样 Windows 厨房水槽 RPC 网关并序列化 RSS 探测,使原生运行保持内存守卫活跃。 - **测试**:标准化捆绑插件生命周期探测路径和状态根查找,使原生 Windows 发布扫描接受有效的打包插件安装。 - **代理/Claude CLI**:通过 OpenClaw exec 策略路由实时原生 Bash 权限请求,使 Claude 话轮不再在 `control_request` 上停滞,并记录 OpenClaw exec 策略是权威的。修复 #80819。(#86330, 来自 #81971)感谢 @guthirry 和 @sallyom。 - **安全审计**:当 YOLO OpenClaw exec 策略覆盖管理实时会话的限制性原始 Claude `--permission-mode` 时警告。(#86557)感谢 @sallyom。 - **配置**:将良性的遗留元数据写入异常排除在默认诊断和配置命令输出之外,同时保留显式异常日志用于诊断。 - **Codex**:记录隐式应用服务器 `never` 审批何时因 OpenClaw 工具策略而提升,包括触发原因是 `before_tool_call` 钩子还是受信任的工具策略。 - **Codex 测试平台**:使没有重置时间的订阅使用限制错误解释 OpenClaw 无法确定重置,并指导用户等待直到 Codex 可用,使用另一个 Codex 账户,或切换到其他配置的模型/提供商。感谢 @amknight。 - **Google Vertex**:为原生 Vertex 传输支持生产 ADC 模式,如 Workload Identity Federation、服务账户凭据和元数据服务器 ADC。(#83971)感谢 @damianFelixPago。 - **Telegram**:将普通的 `[telegram][diag]` 轮询诊断通过 `runtime.log` 路由,同时将非诊断警告和持久化失败保留在 `runtime.error` 上,使健康的轮询启动看起来不像错误。修复 #82957。(#82958)感谢 @galiniliev。 - **提供商/Ollama**:从流式和最终可见回复中剥离内联 Kimi 云推理前缀,同时保持普通 Kimi 答案仅追加。(#86286)感谢 @jason-allen-oneal。 - **网关**:在设置码交接可以包含对话密钥之前,要求对话密钥权限。(#85690)感谢 @ngutman。 - **代理**:保持回退错误报告作用域在活跃模型候选内,使过期的先前提供商配额/认证文本不报告给后来的回退尝试。(#86134)感谢 @zhangguiping-xydt。 - **iMessage**:当 `channels.imessage.accounts` 同时列出 `default` 和指向同一本地 Messages 源的命名账户时,去重观察器启动,使网关不再生成两个 `imsg rpc` 进程或重复入站回复;去重作用域在观察器启动,使重复账户仍可寻址用于出站发送、状态和能力列表,并且 `openclaw doctor` 用重新绑定提示标记冗余账户。修复 #65141。(#86705)感谢 @swang430。 ### 发布验证 - npm 包:https://www.npmjs.com/package/openclaw/v/2026.5.26 - 注册表 tarball:https://registry.npmjs.org/openclaw/-/openclaw-2026.5.26.tgz - 完整性:`sha512-ne6ESyXmspmWO7JlSAWFp1ACmk/um2bnEGnEkiHd4BK62XRUt82DBCCpBGcLsMKA+zNG9G938dA+zCNJCKvUFA==` - 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/26508372964 - 发布检查与包验收:https://github.com/openclaw/openclaw/actions/runs/26508649633 - 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/26510827501 - 插件 ClawHub 发布:https://github.com/openclaw/openclaw/actions/runs/26510832030 - OpenClaw npm 发布:https://github.com/openclaw/openclaw/actions/runs/26511283421 - 已发布包烟雾测试:`OpenClaw 2026.5.26 (10ad3aa)` 和 `plugins list --json` 从干净临时 HOME 返回 46 个捆绑插件。 ## 发布验证 - npm 包:https://www.npmjs.com/package/openclaw/v/2026.5.26 - 注册表 tarball:https://registry.npmjs.org/openclaw/-/openclaw-2026.5.26.tgz - 完整性:sha512-ne6ESyXmspmWO7JlSAWFp1ACmk/um2bnEGnEkiHd4BK62XRUt82DBCCpBGcLsMKA+zNG9G938dA+zCNJCKvUFA== - 完整发布 CI 报告:https://github.com/openclaw/releases-private/blob/main/evidence/2026.5.26/release-evidence.md - npm 飞行前检查:https://github.com/openclaw/openclaw/actions/runs/26508373036 - 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/26508372964 - 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/26510827501 - 插件 ClawHub 发布:https://github.com/openclaw/openclaw/actions/runs/26510832030 - OpenClaw npm 发布:https://github.com/openclaw/openclaw/actions/runs/26511283421 - macOS 飞行前检查/签名/公证:https://github.com/openclaw/releases-private/actions/runs/26508373159 - macOS 验证:https://github.com/openclaw/releases-private/actions/runs/26512430969 - macOS 发布/应用广播:https://github.com/openclaw/releases-private/actions/runs/26512779540 - 应用广播:https://github.com/openclaw/openclaw/blob/main/appcast.xml - macOS zip:https://github.com/openclaw/openclaw/releases/download/v2026.5.26/OpenClaw-2026.5.26.zip - macOS dmg:https://github.com/openclaw/openclaw/releases/download/v2026.5.26/OpenClaw-2026.5.26.dmg - macOS dSYM:https://github.com/openclaw/openclaw/releases/download/v2026.5.26/OpenClaw-2026.5.26.dSYM.zip