← 返回更新日志

OpenClaw v2026.7.2-beta.2 预发布

2026-07-17 · GitHub 原文
## 2026.7.2 ### 亮点 - **远程编码会话:** 在云端工作节点上运行 Control UI 会话,在各自宿主机上的终端中打开 Codex 和 Claude 目录会话,并直接在终端中恢复 OpenCode 和 Pi 会话。(#107670、#107086、#107200) - **原生自动化与节点:** 为移动端实现自动化功能对等,在 Android 上添加前台语音唤醒,并从无头 Linux 节点中暴露摄像头、定位和通知能力。(#106355、#107081、#107193) - **更安全的频道操作:** 防止重启后 Telegram 持久化入口丢失,在活跃轮次中保持 Signal 停止和审批控件的响应,并阻止频道白名单授予所有者权限。(#107288、#107422、#107403)感谢 @obviyus、@arduano 和 @yetval。 - **引导式 Control UI 设置:** 从设置中配置模型提供商,通过引导式设置页面加入频道,并在创建会话时选择图像和模型。(#106490、#106469、#107358)感谢 @alexandre-leng 和 @fuller-stack-dev。 - **网关与会话恢复:** 防止重启准入阻塞网关,在最终确定停滞时恢复回复会话,并在生命周期声明竞争期间保持一次性 cron 任务启用。(#107339、#106792、#107236)感谢 @obviyus、@joshavant、@charliemeyer2000 和 @SL4N。 - **安装与打包:** 添加附带网关引导提示的 Linux deb 和 AppImage 包,从基于稳定主分支的版本中发布它们,并在 winget 添加 Node.js 后让 Windows 安装立即继续。(#106533、#106891、#106862) ### 变更 - **外部网关监督:** 为生命周期所有者(如 OCM)添加 `OPENCLAW_SUPERVISOR_MODE=external`,保留经过验证的重启和延迟行为而不暴露原生服务权限,阻止原生服务变更和自更新,并提供版本化的原子重启交接消费契约。感谢 @shakkernerd。 - **ClickClack 引导设置:** 通过 `openclaw onboard` 或 `openclaw channels add clickclack` 配置 ClickClack,包含 URL、令牌和工作空间提示、默认账户环境回退、非致命性实时连接验证以及网关感知的下一步操作,当 OpenClaw 已运行时自动连接。感谢 @shakkernerd。 - **ClickClack 命令菜单:** 在网关启动时将每个机器人的原生 OpenClaw 命令发布到 ClickClack 编辑器自动补全中,提供按账户选择退出功能,并对较旧令牌和服务器进行非致命性兼容性处理。感谢 @shakkernerd 和 @vincentkoc。 - **技能工坊审批:** 默认情况下,无需额外审批提示即可执行由代理发起的应用、拒绝和隔离操作,同时保留 `skills.workshop.approvalPolicy: "pending"` 作为可选的审批门控。感谢 @shakkernerd。 - **TUI 模糊选择器:** 将列表匹配委托给 pi-tui,添加斜杠令牌和字母数字匹配,同时移除本地匹配器分支。 - **macOS 配对节点终端:** 从嵌入节点主机通告双工 Codex 和 Claude 终端恢复命令,并通过原生应用桥接转发交互式输入和取消操作。(#107335) - **Control UI 目录终端:** 在其网关或配对节点主机上的原生 CLI 中打开符合条件的 Codex 和 Claude Code 会话,支持查看器与终端偏好、经过验证的恢复命令以及交互式 PTY 中继。(#107086)感谢 @vincentkoc。 - **技能工坊历史审查:** 添加手动、最新优先的会话扫描,逐步搜索较旧的实质性工作以获取保守的技能创意,仅存储 SQLite 游标元数据,并在禁用自主自学习时最多保留三个结果作为待处理提案。(#106182) - **OpenAI GPT-5.6 默认值:** 对新 API 密钥设置使用 `openai/gpt-5.6`(Sol 别名),对新 Codex/OAuth 设置使用精确的 `openai/gpt-5.6-sol`,在两个运行时中默认将 Sol 设置为中等推理,并保留现有的主模型、回退模型、别名以及显式的 GPT-5.5 选择。(#103234) - **iOS 离线聊天:** 从受保护、有界限的每网关缓存中预绘制最近的会话和规范转录文本,在离线时保持发送禁用,并在配对重置时清除缓存的对话文本。(#100194) - **Slack 进度指示器:** 默认使用 Slack 原生的助手线程状态和旋转加载消息,同时保持确认反应静态;生命周期反应更新现在需要 `messages.statusReactions.enabled: true`。 - **Control UI 语音控件:** 将语音、模型、灵敏度和其他实时默认值保留在设置 → 通信 → 语音中,并使用编辑器麦克风插入符选择任何浏览器音频输入。(#101046) - **Control UI 会话工作空间快捷键:** 使用 ⇧⌘B 展开或折叠活动聊天面板的会话工作空间轨道,而不更改主应用侧边栏或单独的详情和画布预览面板。感谢 @shakkernerd。 - **Control UI 设置快捷键:** 使用 ⇧⌘, 打开设置,同时保持浏览器的 ⌘, 快捷键不变。感谢 @shakkernerd。 - **Control UI 聊天布局:** 将转录文本在编辑器轴上居中显示,在相同可读框架内将助手和工具输出置于左侧,用户气泡置于右侧,并保留自定义消息宽度覆盖。(#104474)感谢 @shakkernerd、@vincentkoc 和 @zw-xysk。 - **Control UI 编辑器页脚:** 将聊天设置芯片和模型控件居中放置于分隔线和卡片边缘之间,而不是固定到分隔线。(#105866) - **Control UI 助手操作:** 将助手名称和时间放在首位,将悬停操作置于其左侧而非远边缘。感谢 @shakkernerd。 - **Control UI 消息上下文:** 通过悬停或激活时间戳显示每条消息的令牌、上下文和模型详情,而不是显示单独的“上下文”按钮。 - **Control UI 会话标题:** 以减少运动感的悬停动画显示截断的最近会话名称。 - **Control UI 侧边栏使用量:** 从展开的侧边栏中移除提供商使用配额行,同时在聊天编辑器和“使用量”页面中保留使用详情。感谢 @shakkernerd 和 @vincentkoc。 - **工作板调度上限:** 添加请求作用域的 `--max-starts` 覆盖,同时保留默认上限、顺序启动和每张卡片每所有者保护。(#100174)感谢 @souvikDevloper、@Souvikalp 和 @jwest75674。 - **插件安装来源警告:** 在 CLI 和聊天安装中,对任意可执行插件源要求显式的 `--force` 确认,保持受信任的 ClawHub、捆绑、官方目录和跟踪更新流程顺畅,并将 Crestodian 安装限制为受信任来源。(#102197)感谢 @jesse-merhi。 - **云端工作节点:** 为远程会话执行添加会话放置、调度和工作节点轮次路由。(#106332) - **配对节点编码代理:** 发现 OpenCode 和 Pi 会话,并通过流式 CLI 代理运行继续 Codex 和 Claude 目录会话。(#106941、#106927、#105833) - **目录会话:** 直接从 Control UI 侧边栏创建符合条件的目录会话。(#105810)感谢 @fuller-stack-dev。 - **管理工作树:** 从设置中按数量和总大小配置清理限制。(#106224) - **Cron 历史:** 从任务账本提供计划运行历史。(#106392) - **编码代理记忆:** 将 Codex 和 Claude Code 记忆导入 Control UI。(#106406) - **MCP 隔离:** 将 MCP 服务器连接限定在其请求会话中。(#106359)感谢 @obviyus。 - **Discord 语音:** 当语音频道参与者发生变化时通知代理。(#107004) - **Codex 使用量:** 在应用服务器使用窗口旁边显示已登录账户电子邮件。(#106500) - **技能工坊:** 扫描先前会话历史以获取保守、可审查的技能创意。(#106766) - **任务预览:** 从运行任务状态行显示最新任务。(#107297) - **会话变更:** 在 Control UI 会话中显示活动分支和本地更改文件状态。(#106835) - **频道进度:** 为长时间运行的工作保留进度草稿,并使用模型自身的前言作为状态标题。(#106026) - **Codex CLI:** 将捆绑插件升级到 Codex CLI 0.144.4。 ### 修复 - **外部监督器重启健康:** 仅当替换网关锁和监听器 PID 一致时接受设备身份策略关闭,防止 OCM 管理的重启在成功交接后超时。感谢 @shakkernerd。 - **ACPX 清理进程检查:** 限制主机进程表读取,使停滞的 `ps` 调用不会挂起网关启动或会话清理,同时保留故障关闭的所有权检查。感谢 @Alix-007。 - **Cron 生命周期冲突重试:** 在计划、手动和启动恢复的运行中保留执行阶段的重试决策,使执行后的声明冲突无法重播已完成的消息或工具。修复 #108428。感谢 @yetval。 - **Discord 网关元数据截止时间:** 将现有的查找截止时间通过 DNS 和代理预检、请求标头和响应体传递,使停滞的网关启动干净中止。(#104580)感谢 @hugenshen。 - **Control UI 云端会话思考:** 在“新建会话”模型选择器中公开推理级别,并在云端调度前持久化所选级别。 - **iOS 全新安装设置:** 在钥匙串清理之前原子化地红移除已使用的设置凭据,使延迟的条目删除不再断开已成功配对的设备。修复 #107591 感谢 @dagmarjeeves-lab 和 @vincentkoc。 - **Tlon SSE 连接清理:** 在 HTTP 响应失败和流打开被拒绝后解除打开截止时间,使重连尝试不会遗留过期的定时器。(#104585)感谢 @hugenshen。 - **LINE 回复令牌媒体类型:** 在入站回复中尊重视频和音频元数据,与主动发送共享规范媒体构建器,并在记录空的纯媒体投递时显式失败。(#106515)感谢 @edenfunf。 - **Mattermost WebSocket 连接截止时间:** 限制打开握手的时间,使停滞的 TCP 对等端无法无限期挂起频道启动,并在超时后恢复重连控制。(#105553)感谢 @hugenshen。 - **排队 TTS 重试:** 在入队前将本地出站媒体复制到队列所有的存储中,使语音回复能在生产者临时清理和重启恢复后幸存,在重试退避期间保留引用的工件,并在一天后修剪未引用的假脱机文件。修复 #108501。(#108502)感谢 @masatohoshino。 - **飞书应用注册截止时间:** 通过受保护的获取边界将 OAuth 设备注册请求限制为 10 秒,使设置不会因停滞的响应标头而无限期挂起。(#105549)感谢 @hugenshen。 - **LINE 控制命令提及:** 在提及剥离之前检测已授权的斜杠命令,使内联群组和直接消息控制保留原始的入口元数据。(#107230)感谢 @edenfunf。 - **飞书文档图像读取:** 使用所选账户超时限制远程文档图像标头和停滞的正文,通过插件的 MDAST 管道解析文档 Markdown,保留图像/块对齐,并在创建空图像块之前拒绝失败的上传输入。感谢 @Alix-007。 - **ClawHub 注册表读取:** 与其他瞬时网关故障一起重试有界限的 HTTP 500 响应,使多包发布扫描能够在独立的注册表错误中幸存。 - **Slack Socket 模式健康:** 当 `auth.test` 失败或配置的机器人令牌解析为没有 `bot_id` 的用户时,将已连接的 Socket Mode 传输报告为降级,同时保留健康的企业组织安装。感谢 @zw-xysk。 - **Synology Chat 响应限制:** 限制用户列表响应读取,立即停止过大的流,并在 NAS 超过支持的信封时保留过时的缓存身份。感谢 @zw-xysk。 - **使用日期范围:** 从有限的会话范围中排除没有时间戳的遗留转录行,同时保留它们在总历史总量中,并在提供新语义之前重建较旧的使用缓存。修复 #89709。感谢 @TurboTheTurtle。 - **LINE 群组历史竞争:** 在活跃提及轮次期间接收的群组消息保留用于下一轮次,同时仅消费一次轮次前快照。(#107367)感谢 @edenfunf。 - **Mattermost 进度命令详情:** 在频道配置验证和捆绑元数据中接受有文档的 `streaming.preview.commandText` 和 `streaming.progress.commandText` 模式。感谢 @shakkernerd。 - **1Password 授权交接:** 在共享插件状态中持久化绑定 nonce 的待处理审批,使跨代理实例的挂钩和工具执行保持一次性使用并在失败时关闭。 - **Control UI 聊天转录:** 在会话和面板返回时保留加载的历史记录,限制自动向后滚动加载,虚拟化长转录,保留隐藏的原生运行边界,并防止前置、流式传输和响应式布局出现闪烁或跳跃。感谢 @shakkernerd。 - **Codex 动态工具结果:** 使用共享的工具结果失败契约处理任意生命周期元数据,防止成功的技能工坊结果被显示并持久化为失败的调用。修复 #107684。感谢 @shakkernerd。 - **Codex `/status` 上下文新鲜度:** 从发出 `rawResponse/completed` 的 Codex 应用服务器中消费精确的每响应使用量;当精确使用量不可用或省略时,保持上下文未知而不是重用累计生命周期总量。(#107813)感谢 @wuqxuan。 - **嵌套资源忽略:** 在技能和资源发现期间,尊重嵌套忽略文件中无斜杠的模式和转义的字面感叹号。感谢 @moguangyu5-design。 - **代理绕过优先级:** 一致地尊重空白小写 `no_proxy` 值覆盖大写 `NO_PROXY`,与 Undici 一致,并重用规范匹配器用于 Telegram 回退选择。 - **Tokenjuice 执行压缩:** 避免在压缩的中间件元数据中保留原始命令输出,防止大型成功压缩导致中间件详情大小检查失败。 - **代理 Git 包身份:** 在托管仓库解析之前剥离引用并拒绝遍历段,使 GitLab 分支引用解析到规范的托管安装路径。感谢 @vincentkoc。 - **Tlon 自定义 S3 上传:** 通过 AWS SDK 的原生解析器传递存储端点,使自定义 S3 兼容上传在预签名之前不再失败。 - **Signal 活跃运行控件:** 在活跃轮次期间保持授权的停止、状态、审批和队列读取控件响应,同时在规范会话准入中保留普通和有状态轮次,并在停止时取消每个待处理的群组发送方通道。(#107422)感谢 @arduano。 - **代理认证存储锁:** 在 `proper-lockfile` 报告锁被破坏时,展示正常的释放失败,同时避免多余的释放尝试。 - **配对节点会话目录:** 授权捆绑的 Anthropic 和 Codex 目录请求从 Control UI 读取流中调用其只读节点命令,恢复远程 Claude/Codex 行和终端恢复可用性。修复 #107406 感谢 @vincentkoc。 - **沙箱重建确认:** 将 Clack 取消视为拒绝,使 Ctrl-C 无法继续进行容器移除。 - **Microsoft Teams HTML 文本:** 在引用的和 Graph 获取的消息中一致地解码 HTML5 实体,同时保留字面转义实体文本。 - **ClawHub 插件 API 范围:** 将每个支持的比较器委托给 `semver`,使波浪号、部分通配符和预发布插入符边界正确,同时保留 OpenClaw 版本规范和现有的受限范围语法。(#106877) - **Web 可读性相对链接:** 使用请求 URL 作为解析文档的种子,使文章链接正确解析,同时移除插件的重复惰性加载器外观。(#106860) - **浏览器自动路由:** 当隐式选择的浏览器节点报告其控制主机不可达时,回退到网关主机,同时保留显式节点固定和歧义操作失败。 - **Discord 语音参与者上下文:** 维护实时的网关语音状态名册,并在授权的语音代理轮次中包含当前频道参与者,使代理能够回答谁在场。感谢 @vincentkoc。 - **OC Path JSONC 插入:** 通过 `jsonc-parser` 修补对象和数组插入,使注释、尾随逗号和 CRLF 格式得以保留。(#106847) - **Windows winget 安装:** 当 winget 安装 Node.js 后机器 PATH 更新尚未可见时,在当前 PowerShell 会话中继续,避免错误的“Node.js 未找到”失败。(#106862) - **Control UI 实时语音反馈:** 为每个麦克风传输请求浏览器回声消除、噪声抑制和自动增益控制,并通过零增益汇点保持 PCM 捕获处理器连接,使麦克风输入不会在本地播放。 - **代理源回复恢复:** 保留通过代码模式执行的消息发送的当前聊天投递证据,防止成功回复触发重复重试和误导性的投递失败诊断。感谢 @vincentkoc。 - **网关进程内重启:** 在重建运行时准入之前清除过期的 SIGUSR1 重启状态并恢复已准备好的主机挂起,防止重启冷却或暂停的调度泄漏到下一个生命周期中。感谢 @vincentkoc。 - **ClickClack 持久化媒体投递:** 通过必需投递路由媒体回复,在重试中重用所有者作用域的上传和消息 nonce,修复持久化的附件状态而不重新读取源媒体,当较旧的 ClickClack 服务器无法证明未知发送时失败关闭,并使用所选提供商和模型的运行时输出预算而非频道级令牌上限。感谢 @jjjhenriksen 和 @shakkernerd。 - **Deepgram 实时自定义端点:** 使用秘密安全的错误验证语音通话流式基础 URL,保留显式的 `ws://` 和 `wss://` 端点,并为专用和自托管部署将 HTTP 方案映射到匹配的 WebSocket 传输。(#105334)感谢 @dwc1997、@vincentkoc 和 @zw-xysk。 - **Control UI 新建会话重连:** 重新发现代理、节点、存储库分支和文件夹浏览器状态,刷新派生工作空间,门控未验证的设备,并在网关客户端替换后阻止歧义重试,同时保留类型化任务和显式选择。修复 #106372 感谢 @vincentkoc。 - **macOS 远程节点就绪:** 从节点 hello 快照中获取主会话密钥,而不是在节点准入期间打开操作连接,防止远程隧道恢复使计算机使用和节点执行卡在生命周期转换中。 - **Claude CLI 上下文预算:** 通过将有效限制传递给 Claude Code 的原生自动压缩器并在 OpenClaw 会话状态中持久化相同的准备预算,来尊重 Anthropic 模型和每代理 `contextTokens` 限制。修复 #80933。(#93198)感谢 @mushuiyu886 和 @gorkem2020。 - **转录读取失败:** 从流式 JSONL 会话读取中传播权限和 I/O 失败,而不是将不可读的转录视为空。(#106412)感谢 @zenglingbiao。 - **重启哨兵诊断:** 报告 SQLite 读/写和遗留文件清理失败,同时保留尽力而为的重启恢复行为。(#106385)感谢 @zenglingbiao 和 @wendy-chsy。 - **原生应用连接和中继可靠性:** 在 Activity 重建期间保持 Android 断开连接停止,在不打开权限提示的情况下使远程摄像头命令失败,在能力变更后刷新移动节点注册,暴露 iOS 引导连接失败,在会话切换时取消过时的语音所有者,拒绝无效的 Watch 确认,保留启动期间接收的 Watch 事件,并防止较旧的代理概览请求替换较新的网关状态。感谢 @vincentkoc。 - **网关源监视:** 在启动 tmux 监视器之前将配置的端口从已安装服务中交出去,保留失败的面板用于附加/捕获,并与受管理的网关并排保持显式的备用端口监视。感谢 @vincentkoc。 - **Claude CLI 最大轮次诊断:** 使用 OpenClaw 和 Claude 会话上下文保留终端最大轮次结果,在工具操作可能已运行时发出警告,并停止对可能产生副作用的轮次进行不安全的认证配置文件或模型重播。(#94130)感谢 @zhangguiping-xydt 和 @tdrose01。 - **提供商网络重试:** 对瞬态连接错误对齐提供商的读取/轮询/下载和代理等待恢复,重试有界限的提供商 `ENOTFOUND` 失败,同时让网关 `ENOTFOUND` 和非幂等创建操作快速失败。(#101496)感谢 @xialonglee。 - **会话重试分类:** 停止其标识符或负载细节仅包含 429/5xx 数字序列的永久提供商错误重新发送完整上下文,并在重试路径之间共享有界限的速率限制窗口解析。(#105258)感谢 @destire-mio 和 @yetval。 - **LINE 指令模板:** 抑制带有空白必填字段或无标签操作的确认和按钮,同时保留有效的无标题按钮和周围的回复文本。(#105520)感谢 @edenfunf。 - **SQLite 维护模式验证:** 在压缩之前拒绝当前版本的全局和代理数据库中缺少或漂移的规范表、约束、索引、触发器或表选项,同时接受支持的增量迁移布局。 - **Matrix 引导诊断:** 在有界限的标准输出和标准错误尾部保留完整的 UTF-8 码点,使加密依赖失败不会在保留边界处显示替换字符。(#105475)感谢 @qingminlong。 - **iOS Watch 中继命令:** 允许配对的 iPhone 节点通过默认网关策略通告和调用 `watch.status` 和 `watch.notify`,同时保留直接 watchOS 节点的固定最小命令表面。感谢 @vincentkoc。 - **Swabble 状态配置:** 在读取服务状态时尊重全局 `--config` 路径,而不是静默使用默认配置。 - **ClawHub 重试计时:** 拒绝分数延迟秒数和日历归一化无效的 Retry-After 日期,使运行时和发布读取保持在其有界限的回退计划上。(#105479)感谢 @qingminlong。 - **Discord 线程归档默认值:** 继承每个父频道配置的自动归档持续时间用于绑定创建的线程,而不是强制 60 分钟,同时保留显式覆盖。(#103413)感谢 @wings1029。 - **已安装插件加载:** 使原生模块回退使用 jiti 的转换路径而不是重试相同的同步 ESM 加载,防止官方插件导入 SDK 契约模块时出现 Node 24 启动竞争。感谢 @vincentkoc。 - **QA 配置文件频道执行:** 将混合的 Crabline 频道场景分区为一个聚合的主机套件,使基于分类法的配置文件命令和证据工作流不再在执行前中止。 - **插件 SDK API 基线:** 覆盖每个公共入口点,保留完整的声明形状而不产生源代码行变动,并从更改文件验证中运行基线和导出表面检查。感谢 @vincentkoc 和 @zw-xysk。 - **SQLite 终端会话恢复:** 在代理数据库中跟踪物理转录突变时间,使被杀死或超时的主会话在转录写入超出注册表更新时轮换,同时在 doctor 导入期间保留遗留转录 mtime。感谢 @vincentkoc。 - **网关聊天类型检查:** 从其拥有的协议模式中导入聊天事件类型,在退役的聚合类型模块被移除后恢复完整的项目类型检查。感谢 @vincentkoc。 - **打包的 Crabbox 命令:** 包含已发布包装器导入的租约新鲜度助手,使 `crabbox:*` 命令在 npm 安装中不会因 `ERR_MODULE_NOT_FOUND` 失败。感谢 @vincentkoc。 - **插件会话目录:** 拒绝未知目录过滤器,将目录报告为插件能力,并在 SDK 注册捕获中保留它们,而不是静默返回空结果或将仅目录插件分类为无能力。感谢 @vincentkoc。 - **网关服务审计:** 将 POSIX shell `-c` 包装器视为网关子命令检查的不透明对象,避免对 shell 包装的 macOS LaunchAgents 产生错误的缺少命令警告,而不解析内部命令或端口。修复 #81751。(#81778)感谢 @liaoandi。 - **出站频道引导:** 抑制同一频道、配置和注册表代次重复失败的插件激活,同时在配置或注册表重新加载后重试。(#100377)感谢 @xialonglee。 - **OpenAI Realtime 客户端密钥截止时间:** 通过受保护的获取边界将语音和转录密钥获取限制为 30 秒,同时保留身份验证和有界限的响应解析。(#102860)感谢 @Alix-007 和 @Leon-SK668。 - **网关客户端看门狗:** 对无界限和混合的待处理请求保持传输停滞检测激活,使死套接字拒绝待处理请求、重新连接并且永不重播被拒绝的请求。(#103407)感谢 @NianJiuZst。 - **iOS 分享扩展草稿:** 保留以脚手架类似前缀开头的合法共享文本,仅移除确切的旧式脚手架行,避免将类似方案散文视为 URL,并去重主机镜像的内容。(#103453)感谢 @lin-hongkuan 和 @harjothkhara。 - **Telegram 推理预览:** 通过延迟删除重新定位分割的推理预览,使先前的预览消息不会过时,同时保留客户端滚动位置。(#97828)感谢 @ly-wang19 和 @kyle20026。 - **飞书原生卡片线程:** 一次性规范化空白回复目标,并为卡片和媒体部分重用共享回复模式,使原生卡片主题回复保持在其线程中。(#102804)感谢 @sunlit-deng。 - **QQBot 令牌请求:** 使用共享的 30 秒受保护获取截止时间限制令牌获取,使停滞的单飞行调用者一起失败、清理并可以重试。(#102897)感谢 @maweibin。 - **Canvas A2UI 验证:** 在 CLI、代理工具和最终节点调用边界处拒绝格式错误或不受支持的 JSONL,同时保留原生 v0.8 调度。(#103713)感谢 @qingminglong。 - **Twilio RCS 入站路由:** 仅在签名 webhook 验证后规范化 RCS 消费者地址,使发送者匹配和会话正常工作,同时不改变出站 RCS 语义。(#102373)感谢 @clawSean。 - **ClickClack 输出清理:** 在发送者边界处剥离内部工具和 XML 脚手架,抑制仅脚手架发送,并保留可选的现代投递 ID。(#103142)感谢 @masatohoshino、@vincentkoc 和 @zw-xysk。 - **代理核心截断:** 当头部截断接收到负行或字节上限时避免空输出崩溃。(#103425)感谢 @qingminglong。 - **Windows Node 解析:** 在有敌意的 `PATH` 值下解析不区分大小写的裸 `node.exe` 条目时保留当前可执行文件。(#103907)感谢 @soldforaloss 和 @vincentkoc。 - **Codex 运行时切换:** 同时接受捆绑的 Codex 运行时用于 `codex/*` 和 `openai/*` 模型路由,同时保持不受支持的提供商/运行时组合被拒绝。(#103762) - **代理中止清理:** 串行化提示锁重新获取与终端清理,使取消的嵌入运行不会在会话锁上自竞争长达 60 秒。 - **Chutes OAuth 截止时间:** 限制令牌交换、配置文件查找和刷新请求,并在可选的用户信息丰富停滞时保留已发出的令牌。(#102026)感谢 @Alix-007。 - **Control UI 工作空间头像:** 在引导和身份响应中内联经过验证的代理头像文件,使个人卡片图像无需未经身份验证的头像路由请求即可渲染,同时保留配置的表情符号优先级。(#102892、#97602)感谢 @LZY3538 和 @mtuwei。 - **Exec 安全标志:** 自动批准精选的只读布尔标志用于默认的仅标准输入过滤器,同时保持未知标志、尾部跟随/重试模式、文件操作数和自定义配置文件失败关闭。(#88953)感谢 @yetval。 - **iOS 会话变更:** 将重命名、归档、固定、删除和分叉请求限定到所选代理,保留分叉会话的父代理,使多代理聊天操作不会在错误代理下变更或创建会话。(#103366、#103415)感谢 @lin-hongkuan 和 @harjothkhara。 - **Swift 协议初始化器:** 为每个模式可选的生成初始化器参数默认为 `nil`,使新增的协议字段不再破坏 SDK 构造调用点。 - **OpenCode Go MiMo 目录:** 停止暴露拒绝代理请求的已弃用 `mimo-v2-omni` 和 `mimo-v2-pro` 别名,并在活跃的 MiMo V2.5 路由上保留发布验证。(#103311、#103329)感谢 @krissding。 - **审计时间过滤器:** 拒绝 `openclaw audit --after` 和 `--before` 中不可能的日历日期,而不是将它们滚入意外区间,同时保留无时区的时间戳语义。(#103433)感谢 @qingminglong。 - **OpenAI 兼容的流式工具调用:** 执行以 SSE `data: [DONE]` 结束但省略 `finish_reason` 的流中的完整原生工具调用,同时保持传输 EOF 和可见文本情况失败关闭。(#98124、#97994)感谢 @SunnyShu0925 和 @wszhhx。 - **xAI 提供商别名:** 保留 Grok 4.3 和 Grok 4.5 思维配置文件、快速模型路由和加密推理重播,当模型使用已交付的 `x-ai` 提供商别名而不是将有效的思维请求限制为 `minimal`。(#103315) - **Doctor 状态隔离:** 当 `OPENCLAW_STATE_DIR` 指向其他位置时,阻止自动更新和网关监视修复从默认主目录导入和归档 exec 或插件绑定审批,保持隐式 CLI 预检仅通知,并保留跨状态导入仅供直接操作员 doctor 运行使用。(#103247、#103317)感谢 @vincentkoc。 - **Doctor 干净状态引导:** 在干净运行且无配置更改后,停止建议 `openclaw doctor --fix`,同时保留有针对性的修复提示。(#103233)感谢 @kewang-pika 和 @nonplace。 - **Google 音乐生成:** 重试一个未阻塞的 Lyria 响应,该响应省略了其合同要求的音频,同时保持提示块和终端生成停止不可重试。(#103318) - **OpenCode Zen 模型目录:** 刷新提供商拥有的静态种子,包含 Claude Sonnet 5、Grok 4.5、Hy3 Free、Kimi K2.7 Code 和 MiniMax M3,附带已验证的路由、定价、限制和输入能力,移除退役的免费层行,并通过未经身份验证的模型列表暴露相同的目录。(#103184) - **受管理的浏览器启动:** 将异步 Chrome 引导和运行时生成失败作为浏览器错误暴露,同时保持网关存活,并在后续生命周期失败中保留进程错误处理。感谢 @vincentkoc。 - **浏览器节点代理下载:** 将每个操作产生的下载传输到网关媒体存储,对齐 10 MiB 每文件和 16 MiB 聚合传输预算,并将多个下载路径重写为网关本地文件,而不遍历页面控制的结果数据。 - **网关启动迁移:** 当所选配置在启动期间发生变化时,在退出前释放共享迁移租约,允许立即重试而不是阻塞就绪状态直至五分钟租约到期。(#103145) - **Apple 超时恢复:** 即使平台工作忽略取消,也能从共享操作截止时间和调用者取消中迅速返回,同时隔离延迟的网关握手并清理位置和权限等待者。(#103066)感谢 @NianJiuZst。 - **Claude CLI 热会话:** 当 Claude 未写入原生转录时保留受管理的 stdio 连续性,仅当准确的活动子进程消失或更改时回退到有界限的 OpenClaw 历史,并防止无状态运行持久化 CLI 绑定。(#96841)感谢 @bradreaves。 - **CLI 插件列表:** 当没有遗留输入时跳过状态迁移运行时加载,减少打包的冷启动内存,同时保留对遗留插件索引和已配置会话存储的迁移。 - **Unicode 安全的有界限文本:** 在缩短预览、提示、诊断、标签、会话键、链接元数据和身份值时,跨 Control UI、CLI、网关、插件、QA、内存和 Android 表面保留完整的 UTF-16 代理对。(#102625、#102626、#102627、#102816、#102823、#102833、#102877、#102949、#102963、#102969、#102988、#103010、#103034、#103210、#103341、#103487、#103543、#103580、#103646)感谢 @zhangguiping-xydt、@wings1029、@wangyan2026、@Pandah97、@MoerAI、@SunnyShu0925、@zhangqueping、@zw-xysk、@cxbAsDev、@lzyyzznl、@coder-master-0915、@LeonidasLux、@mushuiyu886、@ly85206559、@Simon-XYDT、@lsr911、@vincentkoc、@chengzhichao-xydt 和 @wangmiao0668000666。 - **Cron 列表表格:** 通过终端显示宽度清理和调整有界限的单元格大小,使中日韩文字、表情符号、组合标记和终端控制输入无法破坏对齐或输出。(#103616)感谢 @mushuiyu886。 - **CLI 模型表格:** 通过渲染的终端宽度清理、截断和填充模型列表单元格,使表情符号、中日韩文字和其他宽字形保持列对齐。(#102819)感谢 @Kevin23-design 和 @vincentkoc。 - **技能提示压缩:** 在保留的提示预算内保留每个包含的技能身份,然后使用剩余预算进行缩短的、UTF-16 安全的描述,保留触发器指导而不超过硬限制。(#88426)感谢 @abel-zer0、@vincentkoc、@chengzhichao-xydt、@wangmiao0668000666 和 @Pandah97。 - **频道 Markdown 代码表格:** 通过渲染的显示宽度调整列大小,使中日韩文字、表情符号和混合宽度单元格在共享的 Telegram 和 Discord 输出中保持对齐。(#55596、#55512)感谢 @sparkyrider 和 @zjy282。 - **QQ 机器人审批预览:** 在字素边界处包裹长清理命令和元数据,使用可见的继续标记和安全围栏,使桌面 QQ 审查保持可读性,而不改变命令内容。(#102119、#101979)感谢 @Bartok9 和 @xuzhi5858。 - **Codex 计算机控制:** 将固定长度的坐标对发布为同构数组模式,使 Codex 应用服务器能够使用 `computer` 工具启动线程,而不是拒绝元组值的 `items`。 - **Google Chat 请求截止时间:** 将控制调用限制为 30 秒,同时为媒体传输提供大小感知的总预算和单独的 30 秒停滞正文防护,防止挂起的 Chat API 请求而不破坏大型附件上传。(#102227)感谢 @hugenshen。 - **Google Gemini 前缀模型 ID:** 在选择多模态函数响应行为时识别 `google/gemini-*` 和 `models/gemini-*`,保留 Gemini 2 图像回退而不回归 Gemini 3 内联图像响应。(#102382)感谢 @LiLan0125 和 @yetval。 - **生成的提供商模型目录:** 当 MiniMax 和 NVIDIA 目录行宣传音频或视频元数据时保留它们,同时将运行时模型输入投影到文本/图像,防止配置的多模态主模型被丢弃并回退。(#97858、#97048)感谢 @ly-wang19 和 @zackchiutw。 - **DeepSeek 目录元数据:** 使 V4 Flash 和 Pro 定价与 DeepSeek 当前的缓存命中、缓存未命中和输出费率对齐;刷新由较旧引导流程写入的确切目录元数据;并记录已弃用的 `deepseek-chat` 和 `deepseek-reasoner` 兼容名称于 7 月 24 日退役。(#103192) - **CLI 音频转录文件:** 将推断的 Whisper 和 Parakeet 文本文件视为权威,使空或缺失的输出无法将进度/状态标准输出暴露为用户语音。(#87393、#87384)感谢 @kesslerio。 - **Node 24 上的浏览器操作:** 将浏览器请求取消绑定到客户端和响应生命周期,而不是 Node 24.16+ 过早中止的正文流信号,防止有效的 POST 操作在 JSON 解析后失败。感谢 @obviyus 和 @vincentkoc。 - **Android 硬件键盘聊天:** 在物理键盘上使用未修改的 Enter 键发送,同时保留 Shift+Enter 和其他修改的 Enter 组合用于多行输入。(#101239)感谢 @3ninyt3nin-creator。 - **Codex 生成的本地子代理:** 保持父应用服务器订阅和共享客户端存活,直到生成的本地子代理完成投递解决,防止丢失唤醒和泄漏的一次性清理。 - **Control UI 会话创建:** 在选择另一个会话后,保持新创建的会话位于稳定的侧边栏顺序的前端。感谢 @shakkernerd。 - **仅 FTS 内存启动:** 当 `memorySearch.provider` 显式为 `none` 时跳过插件能力发现,避免不必要的冷启动扫描。 - **iOS 嵌入式终端:** 在原生网关身份验证连接时直接打开仅终端的 Control 表面,而不是暴露 Web UI 登录屏幕。 - **源码构建可移植性:** 保持 tsdown 配置自包含,使构建不依赖于从 unrun 的临时模块目录解析 tsdown 包。感谢 @vincentkoc。 - **浏览器标签页收养:** 当新的 MCP、Playwright 或 CDP 目标未能通过最终安全验证、创建后中止或无法重新发现时,保留先前的隐式标签页和稳定别名;在创建标签页之前验证标签,并将受管理的清理限制为已收养的目标。(#105301)感谢 @hugenshen。 - **Mattermost 块流式传输:** 在草稿预览模式下保留完整、不重复的文本和工具块,并在预览流式传输禁用时尊重正常的块流式传输。(#87449)感谢 @yetval 和 @Senseonics-AI。 - **iOS 开发应用标识:** 将开发应用标记为 OpenClaw,同时使用其独特的调试图标以区别于发布版本。 - **Android 聊天恢复:** 在重连和序列间隙历史快照追赶时保持乐观的用户消息和本地拥有的运行,防止已发送的消息消失或过时的运行取得所有权。(#100197) - **iOS 语音唤醒清理:** 在禁用非活跃的语音唤醒时避免初始化麦克风音频管道,防止模拟器启动中止和不必要的音频设置。 - **代理停止恢复:** 防止延迟中止的提示在拆卸后重新获取孤立的会话锁,使 `/stop` 将对话留给下一轮次。 - **本地网关 CLI 认证:** 将环回 CLI 令牌/密码调用保持在持久设备作用域之外,使读取探测不会在过时的配对基线后阻塞后续的写入/管理命令。(#95997)感谢 @vincentkoc。 - **MCP 模式诊断:** 将 draft-2020-12 编译器失败归因于外部 MCP 模式,使错误模式产生可操作的设置错误。感谢 @vincentkoc。 - **Amazon Bedrock 控制平面截止时间:** 限制模型发现和应用推理配置文件查找,保留调用者取消,并在每个请求路径后关闭短命的 SDK 客户端。感谢 @Alix-007 和 @vincentkoc。 - **回复预投递恢复:** 使用所有者可覆盖的截止时间限制每个预投递回调,在挂起的插件工作后释放串行化的回复通道,并仅当传输从未开始时保留持久化最终投递重试状态。(#104256)感谢 @NianJiuZst 和 @BenjaminBrossi。 - **Signal 原生引用回复:** 在代理、显式、持久化和分块发送中保留活跃的入站消息作为原生引用,同时将回复模式策略保留在 Signal 插件内部。(#105347)感谢 @jesse-merhi 和 @vincentkoc。 - **媒体存储远程下载:** 限制响应标头等待和停滞的正文,关闭放弃的重定向和错误响应,并移除部分临时文件,使挂起的来源无法固定调用者。(#104624)感谢 @hugenshen。 - **Cron llama.cpp 工具模式:** 保持面向模型的 cron 声明模式与 llama.cpp 兼容,同时保留网关和运行时非空验证。修复 #107449。(#108360)感谢 @lee-xydt 和 @Patt92。 - **终端会话:** 保留早期按键,启用配对节点终端操作,授权配对节点目录读取,在过时的 Control UI 连接后恢复,并在大量输出下保持慢速客户端连接。(#107214、#107361、#107410、#107419、#107348)感谢 @vincentkoc 和 @zw-xysk。 - **Control UI 配置:** 自动保存经过验证的编辑,恢复自动保存门控,显示未应用的重启状态,并保持正常的内容滚动和选择行为。(#107458、#107477、#107577、#107349) - **Signal 恢复:** 在停滞的容器握手后重新连接,防止重启期间守护进程重叠,并在电话号码规范化期间保留用户名目标。(#107386、#107409、#107365)感谢 @hugenshen、@ZHOUKAILIAN、@UberKitten 和 @ly-wang19。 - **授权边界:** 要求配对节点目录浏览的操作员管理员权限,并阻止迁移配置合并中的原型污染。(#106004、#106116)感谢 @yangxiansheng、@joshavant、@yetval 和 @ruel225。 - **对话身份:** 跨群组轮次保留说话者归属,并减少格式错误的 Discord 公会回复工具调用。(#107025、#107474)感谢 @lonexreb。 - **提供商设置:** 显示 OpenRouter OAuth 拒绝错误,找到存储在身份验证别名下的凭据,并保持未解决的 API 密钥提供商可见以便修复。(#105448、#106736、#106754)感谢 @VectorPeak 和 @altaywtf。 - **Claude 和 Codex 会话:** 保持 Claude 轮次开放以供原生后台工作,避免实时更新后出现 Codex 关闭警告,完成 Codex 引导登录交接,并退役完成的挂钩中继。(#106347、#106418、#107174、#106899)感谢 @obviyus、@fuller-stack-dev 和 @bek91。 - **Apple 应用:** 将 iPhone 和 Watch 客户端连接到协议 v3 网关,拒绝不完整的附件分享,并在 iOS 发布归档中尊重固定的 Swift 工具链。(#106294、#106513、#107188)感谢 @jincheng-xydt、@harjothkhara 和 @joshavant。 - **内存可靠性:** 跨分割的 QMD 输出保留 UTF-8,在遗留迁移期间保留规范缓存行,并接受前导零的 JSON 内容长度。(#107263、#107243、#105916)感谢 @wahaha1223、@felirami、@Tony-ooo、@qingminlong、@vincentkoc 和 @zw-xysk。 - **技能与工坊:** 保持全局安装的 ClawHub 技能被跟踪,清理孤立的用量行,暴露验证错误,并将工坊审批默认设置为自动处理。(#106479、#107144、#107143、#107690)感谢 @ml12580、@mnowrot、@SunnyShu0925 和 @shakkernerd。 - **有界限的网络调用:** 对 Google Chat 认证、Slack 目录和读取模式调用以及 Twitch 用户查找设置超时,而不是挂起。(#106178、#106643、#107103、#105883、#107360)感谢 @QiuYuang、@Monkey-wusky、@maweibin、@zw-xysk 和 @Alix-007。 - **频道投递:** 当标量流式传输回退时发出警告,并使用所选模型的运行时预算使 ClickClack 媒体投递持久化。(#106796、#105775)感谢 @jjjhenriksen。 - **插件管理:** 尊重标准的 ClawHub API 比较器,并让 Control UI 管理员启用已安装的插件。(#106889、#106318) - **运行时配置:** 保留解析的缓存保留值,应用显式的环境变量移除,并防止调度的工作板卡片卡在运行状态。(#106069、#107258、#107271)感谢 @krissding、@jalfaro2876 和 @pgondhi987。 - **输入和输出安全:** 红移除敏感的迁移终端输出,规范受管理的 Git 包身份,并避免在压缩的 Tokenjuice 元数据中保留原始命令输出。(#106806、#107637、#107705)感谢 @yetval。 - **网络和资源匹配:** 共享规范的 NO_PROXY 行为,并尊重嵌套忽略模式以及转义的字面感叹号。(#107711、#106258)感谢 @moguangyu5-design。 - **Markdown 前言:** 当 YAML 节点无法直接表示时,保留强制转换的回退值。 ### 完整贡献记录 完整贡献记录可在标签固定的 [CHANGELOG.md](https://github.com/openclaw/openclaw/blob/v2026.7.2-beta.2/CHANGELOG.md#complete-contribution-record) 中查看。 ### 发布验证 - npm 包:https://www.npmjs.com/package/openclaw/v/2026.7.2-beta.2 - 注册表 tarball:https://registry.npmjs.org/openclaw/-/openclaw-2026.7.2-beta.2.tgz - 完整性:`sha512-Pjp6VcPQtGF2Q2d6faFOJ75IGpTt3Xucuxclz//n4eP89Wds5wMhZzGf0Oiqd1uSncm5LgCcZzm31Igp6lOR0w==` - 发布 SHA:`54d98a47251d3216443f9446830dec1a0aaddc43` - 完整发布 CI 报告:https://github.com/openclaw/releases/blob/main/evidence/2026.7.2-beta.2/release-evidence.md - 发布发布:https://github.com/openclaw/openclaw/actions/runs/29566151276 - npm 预检:https://github.com/openclaw/openclaw/actions/runs/29548071521 - 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/29546250316 - 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/29566735890 - 插件 ClawHub 发布:单独调度,此证明不等待:https://github.com/openclaw/openclaw/actions/runs/29566738448 - 插件 ClawHub 引导:单独调度,此证明不等待:https://github.com/openclaw/openclaw/actions/runs/29566741033 - npm Telegram beta E2E:https://github.com/openclaw/openclaw/actions/runs/29553869058