跳转至

v2026.8.1: 其他错误修复

OpenClaw 现在会在所涵盖的交接过程中保留已完成的 Codex 委派结果,避免已接受的用户轮次被重复存储,阻止已取消命令启动,并在重新加载后保留 Canvas 小部件标识和置顶状态。本节其余部分涵盖浏览器 Talk、Copilot 和 xAI 重放、Doctor 恢复、插件升级、会议音频以及终端应用 中的定向修复。

代理工作与交接

在修复后的 Codex 委派 和 sessions_yield 路径中,已完成的子代理结果现在能在清理和交接后保留下来,让出的任务只会启动一次,父代理会在扇出完成后恢复。

来源与完整变更列表

Bug 修复

  • 在父级清理后保留 Codex 原生子代理结果 #102060
  • 保持连接到 Gateway 的节点健康且一致 #103093
  • 在代理运行处于活动状态时保护受管理工作树 #103263
  • 防止自动会话维护删除活动运行 #104137
  • 将命令延续保存在同一会话中 #104866
  • 在 Gateway 重启后恢复可安全重放的工作 #104997
  • 防止已退役的子代理 JSON 复活已完成的运行 #105793
  • 保留 Claude CLI 后台子代理和工作流结果 #106347
  • 强化 cloud-worker 准入和远程轮次 #107043
  • 当会话状态不可读时保留受管理工作树 #108041
  • 防止心跳停滞中止健康运行 #108455
  • 在创建并行子聊天时保留父会话 #110541
  • 在仅工具调用的轮次完成后恢复最终回复 #110565
  • 在让出的子代理交接后恢复父代理 #110922
  • 在对账前保留已完成的 cloud-worker 结果 #110952
  • 从工作区冲突中恢复 cloud-worker 会话 #111244
  • 使 cloud-worker 工作区对账在多个轮次中保持正常 #111481
  • 让 Swarm 收集器扇出使用其配置的组上限 #111505
  • 使 cloud-worker 回收在工作区冲突后可重试 #111714
  • 使 cloud-worker 回收能从保留冲突中恢复 #112186
  • 在 Gateway 重启后恢复中断的轮次 #112562
  • 让大型 Swarm 在竞态和重启中保持可靠 #112989
  • 防止 sessions_yield 完成死锁 #113190
  • 使用中止代码实现准确的重启恢复 #114219
  • 防止跨代理会话生命周期死锁 #114524
  • 在轮次超时前停止受阻的工具循环 #114673
  • 在工具工作成功后,将空的 finalizer 视为完成 #115104
  • 恢复全栈交付、恢复和 QA 可靠性 #115290
  • 恢复端到端代理交付和 QA 完整性 #115404
  • 在代理数据库迁移期间停止受管 Gateway 崩溃循环 #115631
  • 大型代理扇出避免注册表持久化停滞 #116286
  • 保留子代理的轮次和导航所有权 #116897
  • 防止 sessions.steer 重试中断活动工作 #116969
  • 保留子代理最终回复和准确的会话状态 #117119
  • 保留配对节点命令失败的重试安全性 #117139
  • 在重启后和大规模场景下保持子代理结果一致 #117141
  • 在代理会话恢复时保留已批准的命令输出 #117177
  • 保留权威的 Codex 轮次结果和最终答案 #117185
  • 规范化子代理时序和结果状态 #117267
  • 隔离并发 Codex 轮次和完成交付 #117298
  • 使子代理恢复在 Gateway 重启后具有确定性 #117412
  • 保留代理运行所有权和完成交付 #117731
  • 恢复可靠的取消、运行状态、委派和 Codex 压缩 #117902
  • 使请求的代理线程可见且持久 #118073
  • 恢复来自被引导或让出的子代理的缺失回复 #118117
  • 强化取消、压缩和工具循环安全性 #118146
  • 保持排队中的代理运行存活,直到执行开始 #118181
  • 在并发启动期间强制执行子代理限制 #118201
  • 保持子代理完成输出的私有性和准确性 #118296
  • 在工具失败后恢复最终回复 #118344
  • 在交付失败后保留并恢复子代理结果 #118360
  • 让嵌入式代理在关键工具循环中恢复一次 #118647
  • 跨代理框架可靠地传递活动运行引导 #119594
  • 在子代理延迟完成后恢复父代理 #119696
  • 在最终答案恢复后保持已完成操作可见 #119726
  • 限制父提示中的子代理完成结果 #119731
  • 即使存在时间戳竞争也完成成功的会话 #119752
  • 恢复陷入重复模型重试的会话 #119851
  • 使活动运行引导精确且原子化 #120285
  • 跨队列模式保留消息到达顺序 #120420
  • 防止代理轮次在流式传输后静默停滞 #120426
  • 呈现必需的后台完成并限制会话补丁输出 #120453
  • 在未启动的工具调用之前应用引导 #120470
  • 在子代理完成后恢复让出的请求方 #120538
  • 为 Cloud Worker 使用公布的 SSH 备用端口 #120546
  • 在 SSH 备用切换期间保留 Cloud Worker 清理 #120715
  • 在 SSH 丢失后保留 Cloud Worker 工作区结果 #120717
  • 恢复可靠的 Cloud 会话创建和工作器隧道 #120926
  • 在接收回复前等待恢复所有者释放 #120935
  • 将引导消息保持在下一个安全工具边界 #120964
  • 使 Crabbox cloud-worker 供应具有幂等性 #121019
  • 从 macOS Gateway 恢复 Cloud Worker 工作区同步 #121027
  • 使 Cloud Worker 启动响应迅速且可恢复 #121200
  • 支持 Cloud Worker 中的大型 Git 工作区 #121262
  • 在 Gateway 重启后恢复主会话轮次 #121969
  • 让 Discord 更正引导活动轮次 #122452
  • 将会话停止级联到子代理 #122909
  • 在运行器离线时保留配对设备会话 #123477
  • 使设备引导和会话分派结果可靠 #123501
  • 加快本地节点启动并限制临时状态 #123503
  • 在负载下保持配对节点结果一致 #123869
  • 在重启间保留设备运行器工作区 #123889
  • 在 bundle 切换后恢复 cloud-worker 工作区同步 #124339
  • 在隧道重连间保留云工作区结果 #124406
  • 保持活动的 Crabbox cloud worker 处于租赁状态 #124615
  • 无需等待基线扫描即可打开新的 Git 工作区会话 #124796
  • 保持已确认的代理轮次可恢复 #124857
  • 在配置的工作区之外保留代理身份和技能 #125675
  • 将代理工作区规则传递给原生 Codex 子代理 #125783
  • 使引导原子化且由 Gateway 拥有 #125808
  • 当 sessions_yield 没有子代理时保持轮次活动 #125850
  • 在原生和 Codex 运行时之间共享委派指导 #125892
  • 恢复在 Gateway 重启排空期间结束的轮次 #125955
  • 保持大型 AGENTS.md 指令链对 Codex 可见 #125966
  • 将子代理完成通知的投递绑定到其 Gateway #126062
  • 展示配对设备的运行时和初始配置要求 #126067
  • 让重启恢复流程掌管可见的回合结果 #126087
  • 为节点支持的 Crabbox 工作器恢复 Cloud Worker Desktop #126393
  • 将已恢复子代理的恢复延迟至 Gateway 就绪 #126523
  • 在不阻塞 Gateway 启动的情况下恢复云工作器 #126641
  • 保持 ACP 提示词、会话和对话绑定与其活跃所有者关联 #126657
  • 在重启恢复稳定后解除会话阻塞 #126671
  • 完成 Cloud Desktop 的自主启动 #126705
  • 防止子代理完成消息丢失或重复 #126812
  • 修复(recovery):在会话看门狗修复期间保持排队回复存活 #127510
  • 修复(gateway):防止连接关闭时静默丢失投递 #128144
  • 修复:解释反向代理后面的云工作器注册失败原因 #128632
  • 修复(gateway):使重启恢复状态具有权威性 #129316
  • 修复(workers):远程会话保留目标和访问策略 #130148
  • 修复(workers):在排空和取消期间保留远程回合 #130235
  • 修复(workers):重新启用准入截止时间启动,将失效工作器的回合标记为终态,延迟碎片清理 #130446
  • 在长时间工具调用期间保持子代理存活 #95536
  • 限制 Gateway 重启期间的重复会话恢复 #96230
  • 在并行子代理完成后恢复顶级会话 #99396
  • 在错配的活跃操作完成后排空排队的回复 18b4cc9
  • 在 Crabbox 设置期间跳过冗余的 Gateway 检出同步 2ec0299
  • 防止已取消的代理运行与其自身的清理产生竞争 a14bbd1
  • 保持可见的云工作器回合持续流式传输 fc3ba07
  • 当让出的代理回合无法继续时发出警告 #100146
  • 保持截断的 ACP 输出为有效 Unicode #102378
  • 安全清理已取消的排队聊天回合 #103194
  • 在进度回调失败时保持代理运行存活 #103351
  • 在活动运行期间保持原生命令响应 #104144
  • 在整个代理运行时中使索引访问显式化 #104670
  • 保持代理取消和超时结果一致 #104936
  • 在 sessions_yield 之后保留 Codex 子代理完成结果 #105724
  • 在重启延迟竞争期间保留代理延续 #106174
  • 保留跨代理 ACP 生成的标签 #106241
  • 在引导活动运行时保留图片附件 #107657
  • 在云工作器拆除后立即删除会话 #107848
  • 阻止同步自发送并归因缺少成本的用量 #108354
  • 在 Gateway 重启后恢复云会话 #108426
  • 在重启后保留无投递的子代理状态 #108710
  • 在 Gateway 断开后显示持久的 ACP 中断 #108827
  • 恢复路由的内部聊天回合 #109201
  • 在静默完成后保留捕获的子代理输出 #109541
  • 保持最终回复限定在当前代理运行范围内 #109676
  • 将操作员停止的代理回合报告为已取消 #110220
  • 在 Gateway 传输丢失后隔离嵌入式回退 #110226
  • 防止派生缓存卡死云工作区 #110380
  • 在会话尾部显示云工作器进度 #110460
  • 允许实时的 Swarm 扇出启动已注册的收集器代理 #111379
  • 在重启后重新协调被放弃的运行中会话 #111699
  • 在重启恢复完成后接纳健康会话 #111869
  • 在强制清除卡住的代理运行后恢复会话 #112166
  • 允许在非 Git Gateway 文件夹中进行直接会话 #112433
  • 防止 Gateway 重启后子代理完成结果重放 #112534
  • 恢复卡在持续工具参数变动中的代理 #112620
  • 防止强制云工作器拆除被恢复流程阻塞 #112781
  • 在 Gateway 重启后重新接管健康的云工作器 #112928
  • 让良性会话更新不再阻塞 cron 和子代理的启动 #113088
  • 限制会话目录提供者的刷新压力 #113171
  • 退役已完成的会话队列通道 #114051
  • 恢复卡在过期重启状态后面的终态会话 #114071
  • 恢复状态缺失且带有过期重启栅栏的会话 #114078
  • 无论中止措辞如何,都恢复被中断的回合 #114121
  • 在重启后回收过期的代理工作树锁 #114130
  • 在良性压缩跳过时保留子代理公告 #114449
  • 强化会话生命周期和子代理控制 #114477
  • 保持已取消和超时的代理运行处于终态 #114542
  • 当会话创建发现初始化正在进行时快速失败 #114597
  • 从失效的迁移所有者中恢复 Gateway 启动 #114718
  • 恢复观察者更新和伴生角色边界 #114898
  • 强化节点重连和推理取消 #115033
  • 即使文件读取不完整,也能检测被接管的 Claude 和 Pi 回合 #115106
  • 避免重复渲染子代理结果提示词 #115263
  • 防止已取消的 CLI 代理运行启动 #115324
  • 为 CLI 父代理恢复子代理完成通知的投递 #115422
  • 防止过期的节点会话显示为健康状态 #115971
  • 防止终结重试丢弃聊天回复 #116006
  • 在工具稳定后恢复 Codex 最终确认 #116044
  • 为被中断的代理回合运行回合后钩子 #116087
  • 当代理运行超时时保留流式回复 #116253
  • 修复(worker):为默认重连退避添加抖动以防止惊群效应 #116279
  • 在保留历史记录的情况下保持子代理状态响应 #116449
  • 用超时和中止来约束 Codex 引导请求 #116565
  • 在 Gateway 重启后恢复进行中的 Code Mode 工作 #116605
  • 在 Gateway 重启后恢复被中断的 Codex 对话 #116725
  • 停止可修复的状态数据库架构的重启循环 #116733
  • 保留真实且有界的子代理结果 #116932
  • 在不同状态视图中一致地显示已终止的子代理 #116991
  • 确保嵌入式代理取消只处理一次 #116994
  • 在节点套接字开始关闭后拒绝 Gateway 发送 #117066
  • 在已验证的子代理完成唤醒时保留父工具 #117148
  • 在 Gateway 重启后串行化子代理恢复 #117283
  • 保留 Codex 应用服务器断开连接的诊断信息 #117296
  • 隔离 WorkerConnection 观察者故障 #117507
  • 遵守子代理完成捕获的截止时间 #117750
  • 修复(gateway):停止过期或停滞的远程节点流式传输 #117918
  • 让排队的代理运行获得完整的执行超时时间 #117995
  • 在 Gateway 重启交接期间保留回复恢复 #118026
  • 阻止等效终态命令重复失败 #118071
  • 保持延迟的 sessions_send 后续操作持续运行 #118105

  • 一致地对代理取消和超时进行分类 #118254

    • 恢复网关会话上的 /btw 附带问题 #118396
    • 拒绝仅限隐藏的子代理完成回复 #118461
    • 保留 sessions_yield 交接和请求方最终回复 #118584
    • 防止让出扇出后出现重复的 Codex 子代理 #118644
    • 在轨迹中记录权威的完成原因 #118685
    • 防止重复启动让出的子代理以及丢失综合结果 #118703
    • 在继续执行期间抑制虚假的无回复消息 #119154
    • 在断开连接期间保留已受理的节点结果 #119246
    • 将子代理恢复限定在活动 Gateway 生命周期内 #119776
    • 将让出的子代理的后续结果投递给等待中的父代理 #120187
    • 在恢复请求方之前等待子代理完成 #120601
    • 防止云工作线程拆除与缓慢的设置过程产生竞态 #120661
    • 在会话中止后停止排队中的代理工作 #120856
    • 仅在记录持久化后确认繁忙会话转向 #120914
    • 防止卡住的代理拆除阻塞会话 #120921
    • 安全恢复失败的云工作线程部署 #120976
    • 跨 Gateway 重启保留云工作线程失败详情 #121122
    • 在投递开始时清除确切的那条排队消息 #121158
    • 在工作完成后开始子代理保留 #121178
    • fix(gateway):保留配对重启会话引用 #121478
    • fix(workers):修复云会话生命周期和恢复 #121564
    • 在争用情况下保持排队的跨会话发送相互隔离 #121662
    • 让替代会话保持附加到活动工作树 #121666
    • 让子代理结果与正确的后续代次保持关联 #121771
    • 停止孤立完成轮询和过期的请求方唤醒延迟 #121782
    • 在瞬时故障后重试子代理清理 #121802
    • 保留真实的子代理结果投递状态 #121837
    • fix(gateway):解绑 execNode 时清除孤立 execHost #121966
    • 防止已丢弃的子代理结果在重启后重新出现 #121972
    • 让云工作线程预览无需 Gateway 往返限速即可流式传输 #122258
    • 释放阻塞后续消息的过期回复所有权 #122265
    • 保持并发的隔离完成相互独立 #122468
    • 在父级让出后保持直接 Codex 子工具可用 #122503
    • fix(subagents):保留公告丢弃与无投递原因的区别 #122855
    • 在子代理扇出后恢复 Codex 父代理 #123124
    • 在 describe 响应中保留 Gateway 本地节点所有权 #123165
    • 在等待容量期间保持排队中的子代理存活 #123169
    • 在终端处理丢失后清除幻影活动会话 #123192
    • 防止子代理完成后重复唤醒请求方 #123285
    • 在调度后恢复云工作线程轮次 #123337
    • 防止嵌入式代理运行产生重复的最终回复 #123391
    • 保留 Swarm 收集器失败详情 #123468
    • 在工具权限检查后保留活动轮次转向 #123549
    • 防止节点托管轮次成功后出现误报失败 #123564
    • 在 14 天后使配对节点工作线程环境过期 #123673
    • 限制持久节点运行器工作区的增长 #123700
    • 防止工作区同步文件被短写截断 #123739
    • 暴露节点工作线程的 Gateway 连接故障 #123773
    • 在会话消失后退役工作线程部署 #123785
    • 防止节点托管轮次后出现误报的 TLS 故障 #123790
    • 允许通过慢速上行链路进行云工作线程引导 #123919
    • 分离并发的云工作线程运行时模式 #123946
    • fix(gateway):当主机 ps 停滞时,冻结的工作线程进程永远不会恢复 #123976
    • 使被丢弃的定向 Gateway 事件可被检测 #123999
    • 在桥接关闭期间取消挂起的 ACP 提示 #124068
    • 在协调失败后释放过期的云工作线程声明 #124368
    • 保持大规模工作线程部署扫描的响应性 #124372
    • 协调包含超过 25,000 个文件的云工作区 #124373
    • 报告启动前返回的工作线程错误 #124387
    • fix(subagents):限制 settle-wake 延迟以防止无限期停放 #124408
    • 在配对节点上清理过时的工作线程包 #124590
    • 在重启后恢复暂存的远程执行结果 #124619
    • 阻止 ACPX 会话重置静默跳过运行时钩子 #124628
    • 防止并发的工作线程启动取消有效连接 #124638
    • 防止不良广播导致每个客户端重新连接 #124726
    • 在容量故障期间保留设备运行器会话 #124744
    • 在重复的 Gateway 重启期间恢复频道轮次 #124746
    • 通过 Gateway 取消正在运行的子代理 #124752
    • 保留可操作的过时工作线程构建失败 #124774
    • 接受本地和已回收的会话清理结果 #124791
    • 报告并终结过期的云工作线程构建失败 #124920
    • 确保迟到的转向在运行结束前收到响应 #125038
    • 在重启恢复期间拒绝过时的工作线程 #125083
    • 当 sessions_yield 暂停轮次时显示等待回复 #125106
    • 阻止重启恢复误认为被中断的命令已成功 #125209
    • fix(subagents):在待处理错误超时公告中保留失败原因 #125357
    • 从已注册项目启动云工作线程 #125680
    • 防止过期的转向清理中止新运行 #125763
    • 避免在流式响应期间读取会话存储 #125872
    • 让 Gateway 为转向发送选择当前运行 #125921
    • fix(diagnostics):在预检期间延迟看门狗中止 #125929
    • 通过各自的 Gateway 实例路由分离的子代理公告 #125946
    • 恢复分离的子代理完成投递 #126040
    • 要求子代理提供权威的最终回复证据 #126075
    • 保持跨客户端的会话运行身份准确 #126106
    • 保持频道子代理完成绑定到其 Gateway #126113
    • 在父级轮次结束后投递子代理完成结果 #126122
    • 限制 Gateway 审计和 Codex 输出积压 #126154
    • 保留插件子代理等待生命周期详情 #126167
    • 记录通过消息传递发送的空子代理完成的投递情况 #126179
    • 在成功重试后清除过期的子代理失败警告 #126218
    • 使会话中断针对正确的活动轮次 #126291
    • 为迁移的 SSH 远程主机应用云工作线程配置文件 #126343
    • 解释为什么已删除的会话仍保留托管工作树 #126347
    • 让已注册节点在 Gateway 启动期间重新连接 #126601
    • 在临时空间清理失败时保留工作线程结果 #126849
    • 要求委派回复完成前存在真正的最终答案 #126925
    • fix(agents):投递已让出控制权的请求方的 settle 最终结果 #127292
    • fix(crabbox):将租约心跳预算与续约节奏解耦 #127559
  • fix(gateway): 允许云端会话重试失败的 worker 清理 #127660

  • fix(gateway): 防止会话使用未配置的 agent #127661
  • fix(agents): 保留权威的子任务完成结果 #127739
  • fix(agents): 恢复频道轮次中的系统 agent 委派 #128084
  • 在可见会话生成后恢复被让出的请求方 #128096
  • fix(gateway): 避免失败的 worker 清理阻塞启动 #128103
  • fix(subagents): 中断的任务在重启后丢失真实用户指令 #128104
  • fix(crabbox): 保留 Machine0 的预配预算 #128185
  • fix(agents): 仅状态回复会静默抑制回退与任务完成 #128269
  • fix(gateway): 在重连清理期间保持替换请求存活 #128393
  • fix(nodes): 在符合条件的设备上重试自动放置 #128566
  • fix(subagents): 从日志和完成公告中隐藏私有评论 #128584
  • fix(gateway): 在维护期间保留活跃的云端会话 #128588
  • fix(gateway): 在会话恢复前回收云端 worker #128597
  • fix(worker): 支持 Windows 共享主机静默 #128628
  • fix(nodes): 要求启动身份与轮次身份匹配 #128722
  • fix(gateway): 存在待处理的拆除时跳过 worker 引导 #128745
  • fix(gateway): 将云管理节点排除在设备放置之外 #128780
  • fix(node-host): 在瞬时初始化失败后恢复 worker 托管 #128798
  • fix(agents): 瞬时最终调用失败会丢弃已完成的工具轮次 #128840
  • fix(gateway): 等待重启恢复开始执行 #128843
  • fix(gateway): 发布云端放置变更 #128914
  • fix(crabbox): 释放心跳代际 #128957
  • fix(workers): 在 Windows 上保留 v1 bundle 身份 #128989
  • fix(agents): 子任务丢失调查结果和可操作的失败原因 #129074
  • fix(nodes): 防止启动中的容器进入退出状态 #129102
  • fix(codex): 保留原生子 agent 的网关投递 #129109
  • fix(workers): 重试被中断的工作区租约释放 #129221
  • fix: 普通工作区结果暂存后云端 worker 传输失败 #129223
  • fix(workers): 在 Windows 节点上保留可执行的工作区文件 #129226
  • fix(agent-core): 在启动边界处关闭工具批次 #129293
  • fix(gateway): WebSocket 投递失败后重连客户端 #129458
  • fix(worker): 遵循配对节点会话上的完全访问权限 #129537
  • fix(agents): 避免取代终态运行的所有者 #129629
  • refactor(workers): 统一云端引导生命周期 #129719
  • fix(subagents): 在删除清理与恢复期间保留待处理的完成结果 #129754
  • fix(workers): 将远程执行保留在所选节点上 #129929
  • fix(subagents): 已完成的子 agent 在收到消息前不会唤醒空闲的父 agent #129993
  • fix(agents): 剥离外部内容 nonce,使循环检测能够阻止重复的封装失败 #130261
  • 修复原生 Codex 子 agent 完成后回复缺失的问题 #130311
  • 在子任务恢复期间保留原生完成回执 #130347
  • fix(workers): 等待后重新检查空闲状态与节点就绪情况 #130390
  • improve(worker): 诊断准入截止失败并扩大守护进程重新验证预算 #130435
  • fix(workers): 将已满节点报告为容量已满而非离线 #130445
  • fix(workers): 保护进行中的工作区清单免受并发保留影响 #130449
  • fix(gateway): 在重启后恢复已准入的轮次 #130491
  • fix(subagents): 协调传输歧义的调度,而非误报已接受的运行 #130586
  • fix(gateway): 在让出前完成节点断开清理 #130631
  • fix(agents): 在工具处理完毕后保留静默回复 #130675
  • fix: 准入后会话创建指向错误的 Gateway #130686
  • fix: 嵌套 worker 委派不再超时 #130691
  • fix(agents): 传输断开后继续已完成的工具批次 #130721
  • fix(gateway): 在准入时固定运行时代际 #131120
  • fix(gateway): 保留无状态 Responses 历史回放 #131197
  • fix(agents): 允许未分类的隐藏与 ACP 生成 #131736
  • fix: 保留转录恢复与预发布更新路由 #132598
  • 在多 agent 配置中保留显式的主 agent 绑定 #89419
  • Gateway 重启后淘汰过期的子 agent 运行 #90817
  • 调度被拒绝后保留聊天中止结果 #91000
  • 压缩后防止重复的 agent 间发送 #93293
  • 当仍有延续工作时保持被让出的父任务运行 #95996
  • 阻止 A2A 交接重新发送消息工具回复 #97259
  • 恢复会话调度的 gateway 路由 4f86a29
  • 在 emoji 边界处保持长引导元数据有效 #101736
  • 防止会话重置或删除后出现过期的最终回复 #102128
  • 保持 ACP 引导确认的 emoji 安全性 #102583
  • 在会话状态中保留子运行停止的原因 #104676
  • 在 emoji 周围保持掩码子 agent 运行 ID 有效 #104874
  • 在活跃的 agent 会话中保留取消与超时原因 #113693
  • 拒绝来自没有提交的仓库的 worktree 会话 #117447
  • 整合生产环境中的规范化辅助函数 #120350
  • 保持同时进行的引导消息与其各自的投递配对 #120770
  • 在回收期间保留 Cloud Worker 拆除失败 #121520
  • 允许超时的云端调度重试重新加入正在运行的操作 #121616
  • 在瞬时失败后重试持久化的子 agent 恢复 #121766
  • fix(gateway): 使过期的 worker 磁盘空间预测失效 #123442
  • 防止启动抖动被误判为 Gateway 停滞 #123461
  • 防止节点 worker 截止后出现重复的取消尝试 #123462
  • 在 gateway 维护期间清除过期的幻影活跃会话 #123532
  • 在收紧回归门槛时保留 SSH 失败诊断 #123606
  • 为生成的子 agent 提供精确的暂存附件路径 #123676
  • 明确报告不支持的节点事件 #123719
  • 跨重启清理节点工作区传输暂存 #123859
  • 限制 Gateway worker bundle 缓存增长 #123901
  • 将活跃的原生 Codex 子任务识别为让出延续 #124004
  • 清理过期的节点 worker bundle 暂存 #124057
  • 在验证完成前保持已恢复的节点 worker 连接 #124109
  • fix(agents): 限制第三个子结果调用点的转义输出 #124171
  • 区分忙碌的设备 worker 与断开的 worker #124340
  • 保留设备 worker 容量失败消息 #124574
  • 当无法解析 worker 放置会话证据时发出警告 #124635
  • 防止重启后副作用重放 #124737
  • 暴露失败的节点事件投递 #124798
  • 让 worker 协调在 SQLite 锁期间持续运行 #125058
  • 拒绝在不可用的托管 worktree 上运行 agent #125341
  • 强制每个云端 worker 提供程序仅使用一种传输模式 #125384

  • fix(agents):停止已取消的子代理报告超时 #125407

    • 允许在非 Git 项目中建立直接会话 #125657
    • 防止已取消的引导消息被加入队列 #126314
    • 为基于 CLI 的子代理保留静默完成状态 #126379
    • 强化节点承载的 Cloud Worker Desktop 会话 #126425
    • 在不确定的清理之后恢复云工作进程 #126465
    • fix(gateway):防止中断失败阻塞会话生命周期 #126546
    • fix(gateway):防止重连回调后请求停滞 #128268
    • fix(gateway):暴露云工作区恢复失败 #128864
    • fix(workers):保留工作区协调失败信息 #129240
    • fix(node-host):在关闭失败前排空所有工作进程 #129699
对话、历史记录与存储数据

现在,在修复后的重试与重启路径中,一个已被接受的用户轮次只会保持为一个轮次,而不会被写入两次。/new 和 /reset 在清除可见对话的同时,也会保留底层的转录位置;因此,重置你所看到的内容不会丢失 OpenClaw 在已保存历史记录中的位置。

来源与完整变更列表

Bug 修复

  • 让旧版状态迁移在归档冲突后收敛 #102780
  • 将 Web Push 状态迁移到共享 SQLite #103294
  • 在不完整的代理重试过程中保留用户轮次 #103634
  • 拒绝并修复为零的会话保留时长 #104516
  • 使用可恢复的旧版迁移状态解除升级阻塞 #104529
  • 强化中断的 SQLite 会话迁移恢复 #105358
  • 保留完整的 SQLite 恢复文件集 #105370
  • 恢复使用 ChatGPT OAuth 的 Codex 会话的压缩功能 #105997
  • 将 SQLite 维护与 Gateway 所有权串行化 #106210
  • 防止旧版迁移残留阻塞 Gateway 启动 #107002
  • 在启动压缩前迁移休眠的旧版会话数据库 #107803
  • 在会话逐出持久化之前保留转录记录 #108378
  • 强化 SQLite 升级与并发存储访问 #108663
  • 防止开发频道状态备份卡死 #109090
  • 当提供方配置省略模型列表时保留转录记录 #109252
  • 强化长会话压缩与代理循环轮次处理 #109709
  • 在写入期间遵循配置的会话条目数限制 #110241
  • 阻止不兼容的数据库降级,并将完整检查移出热路径 #110271
  • 当主数据库损坏时保留数据库隔离 #110453
  • 在手动压缩前归档完整转录记录 #111122
  • 使会话谱系可持久化且可审计 #111861
  • 在修改硬链接的 sidecar 文件前停止 SQLite 维护 #112224
  • 在会话重置时保留转录游标 #112988
  • 在维护竞争期间保留 SQLite 状态 #113216
  • 以原子且持久的方式发布备份归档 #113302
  • 支持深层 Windows SQLite 状态路径 #113336
  • 使 SQLite 快照发布在崩溃后可恢复 #113367
  • 修复物理损坏的规范 SQLite 索引 #113382
  • 在活跃写入期间限制 SQLite 快照 WAL 增长 #113385
  • 使文件系统发布在崩溃后持久可靠 #113453
  • 防止过期的 SQLite 验证将替换文件隔离 #113459
  • 保持无效 SQLite 模式修复的原子性 #113592
  • 在提交中断后恢复完整的 SQLite 备份 #113607
  • 在活跃写入期间保持 SQLite 快照持续推进 #113708
  • 加速大型 SQLite 存储上的会话列表 #113959
  • 让自动压缩启用设置有效并真正生效 #114118
  • 无需重启 Gateway 即可恢复已修复的共享状态数据库 #114278
  • 保持会话读取与转录历史一致 #114369
  • 修正 CJK 文本的压缩估算 #114386
  • 当压缩摘要失败时保留已修剪的会话历史 #114696
  • 将 CJK 工具结果保持在上下文预算内 #114755
  • 在代理轮次后保持生成的图像可见 #115255
  • 防止膨胀的使用量汇总导致 Gateway 内存溢出(OOM) #115347
  • 防止重复持久化用户轮次,并加速重复代理会话 #115474
  • 将并发会话写入保持在单一可达的转录分支上 #115658
  • 保留随会话重置命令发送的消息 #116195
  • 附加媒体时在转录中保留回复文本 #116225
  • 当替换设置失败时保持对话重置的持久性 #116247
  • 在轮次中途中止后保持工具调用配对 #116642
  • 在压缩过程中保留工具结果与有界诊断信息 #116895
  • 在更新期间修复增量式代理数据库模式 #116980
  • 在新追加内容后压缩 SQLite 会话 #117076
  • 在新状态上恢复首次运行的 Gateway 就绪能力 #117257
  • 在 Gateway 重启期间保留已接受的提示词 #117260
  • 在启动迁移期间保留活动会话行 #117272
  • 在转录写入失败后恢复已投递的回复 #117845
  • 保护聊天历史附件免受通用 TTL 清理的影响 #119127
  • 重试不可用的自动压缩摘要 #119137
  • 防止零磁盘预算删除会话历史 #119422
  • 在第一条消息之前持久化新的 SQLite 会话 #119473
  • 在任务维护删除之前归档 cron 运行的转录 #119511
  • 允许在 Gateway 运行时进行备份 #119782
  • 防止零高水位目标清除会话历史 #119909
  • 在必需的预检压缩期间恢复 Codex 会话 #120197
  • 保留用户创建的配置备份 #120298
  • 阻止已完成的会话保持活动标记 #120424
  • 旧版代理数据库升级时不丢失会话可见性 #120437
  • 将转录写入限定在已准入的会话运行中 #121003
  • 在转录投影修复后让回复继续 #121025
  • 在会话重置时保留真实工具结果 #121028
  • 跨版本保护外部监管的共享状态 #121069
  • 在兼容数据库列上保留 Gateway 回滚能力 #121075
  • 将会话归档与恢复绑定到所列对话 #121169
  • 保留持久的转录所有权 #122729
  • 在多代理迁移期间保留固定存储的所有权 #123235
  • 在重复上下文溢出时保持长会话可恢复 #123484
  • 安全保留可读转录记录及归档清理删除操作 #123495
  • 压缩后刷新 Codex 会话计量 #123640
  • 安全保留孤立的 SQLite 恢复 sidecar #123680
  • 从最后完成的回复派生活动会话 #123718
  • 在上下文溢出时保留生成的压缩摘要 #123827
  • 将会话目录保持绑定到正确的代理和 Codex 主目录 #123899
  • 让 /new 从 context fuse 中清除已丢弃的转录字节 #124126
  • 让旧版状态数据库完成 STRICT 迁移 #124282
  • 在配置大量代理时保持会话列表响应灵敏 #124453
  • 当配置的同级存储缺失时,保留可读的会话存储 #124617
  • 保持复制的状态目录自包含 #124728
  • 压缩后保留排队回合的工作区指令 #124850
  • 让会话压缩失败可见且可恢复 #125302
  • 在 Gateway 启动前修复稳定状态 #125483
  • 在原生 Codex 压缩失败后恢复最终回复 #125895
  • 在持久化恢复过程中保留生成的媒体预览 #126261
  • 默认将嵌入式压缩设为低推理 #126421
  • 停止在会话中持久化仅限运行时的技能目录 #126931
  • fix(sessions): 在生命周期和维护过程中保留所有权 #127344
  • fix: 显式会话重置清除先前的上下文 #127530
  • fix(agents): 在压缩期间保留真实用户回合 #127563
  • fix(sqlite): 隔离只读快照准备以防止 WAL 锁丢失 #127855
  • fix(codex): 在会话删除后回收绑定容量 #128366
  • fix(sessions): 限制活动会话记录的水合 #129343
  • fix(compaction): 汇总已准备的窗口并始终恢复经审计的标识符 #129423
  • fix(agents): 直接命令跳过主动压缩 #130863
  • 在保留会话历史的同时停止重复的压缩回退 #86900
  • 将历史送达回执排除在模型提示之外 #99504
  • 在上下文压力下保留最新的工具输出 #99756
  • 恢复 SQLite 终端会话的新鲜度检查 2f94650
  • fix(sessions): 跨客户端搜索可见类别 (#118912) 43ffe41
  • 在 SQLite 失败时保持对话路由一致 #101023
  • 在分页会话历史中保持压缩边界可达 #104250
  • 防止大型旧版会话迁移停滞 #104737
  • 恢复压缩的会话记录存档的历史记录和用量读取 #104795
  • 拒绝从损坏的 SQLite 索引进行备份和压缩 #104938
  • 恢复 SQLite 会话的基于字节的自动压缩 #104940
  • 在 OpenClaw 修改共享 SQLite 状态之前进行验证 #104952
  • 在启动更改之前拒绝损坏的代理状态 #105179
  • 在变更或备份之前拒绝孤立 SQLite 状态 #105222
  • 随已删除会话移除会话记录搜索数据 #105249
  • 安全修复漂移的 SQLite 唯一索引定义 #105260
  • 规范化 macOS 会话迁移目标别名 #105390
  • 随着会话记录历史增长,保持会话搜索快速 #105585
  • 在维护期间拒绝不安全的 SQLite 架构漂移 #105767
  • 显示会话记录文件系统错误而不是空历史 #106412
  • 防止会话错误处理程序留下被拒绝的任务 #106951
  • 将会话磁盘限制排除迁移存档 #107238
  • 当上游会话消失时通知会话观察者 #107356
  • 允许使用内存路径搜索进行 SQLite 压缩 #107809
  • 在会话记录收缩竞争期间保留 CLI 会话历史 #108072
  • 延续会话在短文件读取中保持轻量级引导 #108253
  • 在网络文件系统上完成会话尾部读取 #108655
  • 在短文件读取期间保持会话预览完整 #108941
  • 在数据库启动期间限制 SQLite 挂载检查 #109432
  • 在会话记录中持久化失败的绑定 ACP 回合 #109683
  • 使用 HTTP 400 拒绝无效的会话历史限制 #109743
  • 阻止压缩重复先前的摘要 #109828
  • 限制工作区引导和压缩读取 #109945
  • 及时停止已取消的压缩重试 #110114
  • 阻止 Windows 会话存档重试停顿 #110191
  • 在 ACP 取消后保留已送达的部分回复 #110300
  • 在会话压缩期间保留活动回合 #110389
  • 使托管镜像状态迁移可移植到 SQLite #111167
  • 让会话迁移跳过无效的旧版 cron 存根 #111168
  • 为大型代理集群限制每个代理的 SQLite 句柄 #111411
  • 在正常嵌入式回合之间保留会话记录游标 #111949
  • 在会话记录归档期间保持 Gateway 响应 #112424
  • 在会话迁移期间保留大型 inode 标识 #112478
  • 保护活动的主会话免受维护驱逐 #112640
  • 在 SQLite 3.51 上恢复 v13 代理数据库升级 #113151
  • 支持 Windows 上的长 SQLite 快照路径 #113228
  • 恢复所有规范化 SQLite 唯一性约束 #113261
  • 拒绝无效的规范化 SQLite 备份 #113287
  • 在 Windows 长路径下验证 SQLite 备份和快照 #113313
  • 在使用前修复规范化 SQLite 索引 #113390
  • 强制执行单一 SQLite 连接边界 #113418
  • 升级期间发生 SQLite 架构丢失时安全失败 #113473
  • 在回滚写入器被杀后恢复 SQLite 快照 #113580
  • 当自动压缩缺少主机认证时保持 Codex 会话运行 #114001
  • 在完整性检查期间保护活动 SQLite WAL 文件 #114016
  • 在采用 Pi 和 OpenCode 会话时显示原生历史 #114040
  • 限制轨迹运行时事件存储 #114250
  • 保留刷新后的会话用量并恢复 cron 清理 #114539
  • 通过规范化 SQLite 生命周期处理保留活动心跳会话 #114936
  • 在一个有序计划中运行启动和 Doctor 状态迁移 #114938
  • 保持溢出恢复会话记录历史仅追加 #115310
  • 让 Doctor 安全拒绝更新的 cron 数据库架构 #115447
  • 当压缩摘要生成失败时保留会话记录 #115500
  • 为 Codex 会话强制执行主机会话记录字节限制 #115514
  • 当代理数据库不可用时保持 Doctor 运行 #115570
  • 限制实时会话历史流使用的内存 #115599
  • 阻止 Codex OAuth 压缩回退到 API 密钥认证 #115666
  • 释放已关闭的 SQLite 会话缓存 #115794
  • 重启后保持迁移的会话可用 #116077
  • 在超大轨迹事件中保留提示 #116220
  • 在 Windows 上保留调用者替换的 SQLite 目标 #116284
  • 遵守会话历史的 HTTP Accept 协商 #116535
  • 让网关从冲突的旧版运行时状态中恢复 #116558
  • 正确解析显式主会话别名 #116636
  • 在会话更改后忽略过时的上游活动 #116864
  • 在会话重启后保留已持久化的用户回合 #116924
  • 在超大压缩期间保留完整的工具调用组 #116992
  • 为 SQLite 代理会话恢复延续跳过行为 #117082
  • 在 Gateway 重启期间保留重新连接的草稿 #117310
  • 使归档会话记录回退保持一致 #117343
  • 在会话协调期间保留持久化 SQLite 用户回合 #117393
  • 在一个会话事务中应用混合聊天设置 #117542

  • 呈现对话记录归档保留失败 #117761

  • 省略大图时保留对话文本 #117792
  • 在 /compact 期间保留排队消息 #117840
  • 限制长 Token 上的压缩标识符扫描 #118422
  • 恢复 SQLite 会话的使用详情 #118918
  • 保留动态模型的重置指引 #119179
  • 当会话在追加中途轮转时,拒绝写入对话记录 #119221
  • 重试期间保留已接受的用户轮次 #119307
  • 在对话记录归档期间保持会话写入持续进行 #119460
  • 为恢复的 Claude CLI 历史添加时间戳 #119528
  • 外部身份变更后刷新会话列表 #120203
  • 压缩失败后保留 Token 用量 #120264
  • 跨重试保留上下文来源 #120509
  • 修复(infra): 检测 virtiofs 和 9p 文件系统以防止 WAL 损坏 #120597
  • 将会话写入租约替换为持久写入声明 #121113
  • 保留重置会话工具结果及已保留的调用 #121146
  • 防止并发会话更改覆盖对话记录 #121284
  • 避免在对话记录写入后进行全量会话扫描 #121342
  • 避免为单会话更新执行全库工作 #121349
  • 对齐自动化筛选并避免误报 SQLite 损坏 #121429
  • 防止并发首次启动期间误报 SQLite 损坏 #121526
  • 提高快速工作流中的会话可靠性 #121680
  • 保留聊天历史中混合附件的顺序 #121980
  • 压缩验证失败时保留对话记录 #122824
  • 将内部恢复提示排除在对话记录之外 #122908
  • 修复从随附 commitments 模式进行升级的问题 #122945
  • 在会话维护期间保留置顶对话 #122990
  • 将受保护会话保留在驱逐配额之外 #123014
  • 将受保护会话计入总保留上限 #123081
  • 在压缩期间保留原生 CLI 会话 #123466
  • 在对话压缩期间保留文件上下文 #123467
  • 手动压缩后清除过时的 CLI 历史 #123486
  • 在辅助关闭期间保留共享 SQLite WAL #123777
  • 让压缩接受以斜杠分隔的文本 #123832
  • 在按代理存储中尊重显式的旧版会话所有者 #123887
  • 从压缩后的对话记录继续超时恢复 #124000
  • 使较早的会话历史在隐藏尾部之后仍可访问 #124120
  • 避免在所配置的 Control UI 列表中重复扫描会话根 #124384
  • 修复(settings): 在首次写入读取前获取设置文件锁 #124471
  • 限制压缩摘要中的文件列表 #124577
  • 当 cron 数据不可读时保留运行中任务的对话记录 #124718
  • 在升级期间恢复已退役的多代理会话存储 #124846
  • 修复(matrix): 旧凭据不同时网关无法启动 #124893
  • 在会话迁移期间保留默认代理所有权 #124928
  • 在 SQLite 升级期间保留 Unicode 会话 #124951
  • 恢复旧版持久数据验证兼容性 #125031
  • 阻止空旧版代理数据库阻塞启动 #125172
  • 防止手动压缩备份泄漏 #125183
  • 修复(compaction): 当最后一条是压缩记录但上下文仍超出窗口时重新压缩 #125210
  • 使会话删除和清理结果准确 #125217
  • 将旧版状态迁移到所配置的系统代理 #125266
  • 及时完成大型会话迁移 #125300
  • 防止 Doctor 在大型 SQLite 迁移上超时 #125361
  • 在对话记录中保留所选会话文件夹 #125484
  • 防止 Doctor 在大型会话迁移中停滞 #125510
  • 安全清理孤立媒体附件 #125560
  • 当会话搜索结果仍在索引时警告代理 #125582
  • 在 Codex 对话记录中保留结构化工具结果 #125610
  • 允许强制停止的会话归档 #125614
  • 修复(compaction): 忽略十进制标识符片段 #126089
  • 使压缩和分支摘要遵循空闲超时 #126159
  • 修复(gateway): 在终端持久化期间保持历史记录活跃 #126235
  • 恢复来自 2026.7.2-beta.4 代理状态的升级 #126354
  • 避免在子查找期间保留完整会话存储 #126770
  • 并发更改后拒绝过期的会话替换 #127027
  • 修复(sessions): 清理大型积压而不触发 OOM #127105
  • 修复(sessions): 禁用按时间清理时保留会话 #127277
  • 修复(sessions): 在 Doctor 和启动修复期间保留已分配的所有者 #127706
  • 修复(sessions): 阻止 /reset 隐藏同时被接受的消息 #127842
  • 修复(sessions): 在规范化修复期间保留产物 #128317
  • 修复(sessions): 将管理事件排除在模型上下文之外 [AI 辅助] #128346
  • 修复(sessions): 随会话产物一起删除进度卡片 #128451
  • 性能优化(sessions): 避免在读取期间执行数据库维护 #128631
  • 修复(sqlite): 在私有用户缓存中暂存只读快照 #128635
  • 修复(compaction): 当摘要超出上限时保留已审核的事实 #128968
  • 修复: 在 settled-tool 上下文溢出后恢复 #128970
  • 性能优化(sessions): 将对话记录索引重建推迟到协调工作器 #129182
  • 修复(sqlite): 为代理会话查询建立索引 #129569
  • 修复(compaction): 保护手动命令免受过期恢复的影响 #129581
  • 修复(sessions): 在进入终态前释放协调租约 (#130161) #130185
  • 修复(sessions): 在有界读取中按类型选择对话记录头部 #130342
  • 修复(compaction): 将对话记录字节熔断器限定在最新压缩窗口内 #130487
  • 修复(agents): 遵守预检压缩预算 #130562
  • 修复(compaction): 向摘要器展示经审核的最新请求 #130620
  • 修复(sqlite): 安全丢弃已退役的 commitments 状态 #130629
  • 修复(gateway): 关闭历史流启动事件间隙 #130633
  • 修复(sessions): 在同步区段入口重新获取代理数据库句柄 #130797
  • 修复: 近期性过期后生成的子历史被拒绝 #131203
  • 跨非流式回复分块保留格式 #56145
  • 使排队轮次不会让回复偏离最新提示 #90759
  • 使手动压缩可停止 #90821
  • 在压缩后的上下文中保留完整字符 #102515
  • 正确限制过大的 Gateway 历史上限 #104263
  • 在持久化工具详情中保留 Unicode #104540
  • 拒绝无效的 Claude 会话分页游标 #104967
  • 在维护前拒绝不完整的 SQLite 模式 #105583
  • 拒绝不安全的 SQLite bigint 转换 #106081
  • 拒绝格式错误的会话分页游标 #107895
  • 允许在配置中禁用会话磁盘预算 #108046
  • 跨短读保留会话尾部事件 #108127

  • 在短读取中保留旧版会话开始时间 #109205

  • 在短读取后清理轨迹运行时文件 #109206
  • 修复 Doctor 升级期间的部分重启交接 #110231
  • 导入格式错误的 Claude 历史记录时保留时间戳 #110536
  • 加固 Doctor 对旧版会话存储的读取 #110772
  • 在重复压缩中保留对话锚点 #112755
  • 限制检查点恢复后保留的 SQLite WAL 文件数量 #112951
  • 当插件阻止工具结果时修复记录 #113697
  • 让 Agent 在一轮结束后自行归档其会话 #114522
  • 使记录字节限制成为单次压缩的可选项 #115206
  • 停止对零超时 SQLite 提交误报慢锁警告 #115990
  • 在等待会话文件锁时响应取消请求 #117446
  • 当实时记录广播失败时发出警告 #117539
  • 在回合中预检后避免不必要的压缩 #117963
  • 在启动检查点期间等待 SQLite 锁 #118022
  • 拒绝无效的会话历史游标 #119443
  • 从稀疏的助手历史记录中恢复压缩 #122159
  • 修复时间戳错误的 v17 Agent 数据库 #122171
  • 为批量会话标题解析每个 Agent 的记录 #122338
  • 将恢复的媒体保留在所属 Agent 的记录中 #124111
  • 保持投影的会话历史行跨页面可访问 #124145
  • 在结束当前回合前报告自行归档成功 #124896
  • 在删除期间报告并发会话更改 #125188
  • fix(gateway): 遵循请求的会话预览长度 #125201
  • 在压缩期间报告记录读取失败 #125741
  • 在无会话 Agent 运行后清理孤立媒体 #125938
  • fix(gateway): 在投影的聊天消息上结构化记录显示容量截断 #126342
  • fix(sessions): 历史分页跳过投影消息或停止推进 #129099
  • 在 Gateway 路由处拒绝空白的会话历史键 #85261
  • 报告会话投递重试状态写入失败 #97024
Agent 工具和代码执行

Code Mode 可以在符合条件的任务于采取行动之前或发现工具和技能的过程中失败时,继续推动该任务;嵌套的工具调用现在也能干净地完成或取消,而不会挂起。一旦可能发生了写入,恢复就仅限于检查发生了什么变化,而不是重放不确定的操作;取消、策略拒绝和其他最终结果仍会停止该任务。

来源和完整变更列表

改进

  • 要求 session find 工具使用整数限制 #105931

Bug 修复

  • 让由 CLI 支持的 Agent 能够在已连接的节点上运行命令 #103936
  • 让节点托管的技能在其发布节点上可读且可运行 #104832
  • 让视觉模型直接检查发现的图像 #107311
  • 在自动清理期间保留被忽略的托管工作树状态 #108401
  • 当 Agent 运行被取消时停止图像和 PDF 工作 #112644
  • 在工具发现过程中保留 Prompt 缓存 #114572
  • Code Mode 接受安全模板和正则表达式 #114651
  • 在工具搜索下保持必需的 Agent 工具可见 #114664
  • 保留必需的 Code Mode 工具并保护挂起的运行 #114778
  • 保持 Code Mode 工具并发执行 #114884
  • 防止 apply_patch 覆盖现有文件 #114911
  • 限制并加快 Code Mode worker 生命周期 #114945
  • 防止编辑非 UTF-8 文件时发生静默损坏 #115088
  • 防止节点挂起和失控的本地模型发现 #115248
  • 防止 Code Mode 恢复丢失和无界 TypeScript 准备 #115314
  • 让 Code Mode 在重启和不同提供商之间保持可靠 #115379
  • 在 Agent 编辑期间保留原始行尾 #116011
  • 在模糊 apply_patch 更新期间保留未更改的文件字节 #116128
  • 在模糊编辑期间保留未更改的文件字节 #116509
  • 在付费生成开始前终止已取消的媒体请求 #117418
  • 保护已注册的工作树免受孤立清理的影响 #119709
  • 在无法读取入站文档时给出说明 #122025
  • 当批次的一部分失败时保留可读图像 #122361
  • 防止已完成工具在空闲超时后重放 #122516
  • 当工具结果过大时保持 Code Mode 运行 #122924
  • 防止重叠的文件末尾补丁删除内容 #124379
  • 拒绝有歧义的 apply-patch 编辑 #124470
  • 无需 shell 工具即可读取超大的单行文件 #126587
  • 阻止系统提示建议不可用的工具 #126792
  • fix: 允许在预检拒绝后修复 code mode #128054
  • fix: Agent 在 Code Mode 工具和 JavaScript 错误后继续运行 #128088
  • 恢复自动浏览器路由和 Discord 语音参与者上下文 2e0f6d5
  • 流式传输大型 Codex 沙盒文件副本 #101511
  • 让截断的工具结果不包含损坏的 emoji #102087
  • 区分 Code Mode 取消与超时 #102494
  • 恢复 Mac 节点上的白名单命令执行 #102536
  • 在保留的文本边界上保持 Unicode 完整 #102599
  • 接受匹配的重复 Content-Length 头 #102939
  • 在限时获取中保留调用方的取消请求 #102951
  • 为停滞的媒体响应头设置默认超时 #103209
  • 在请求发出前拒绝无效的 xAI X Search 句柄过滤器 #103393
  • 在恢复运行后抑制误报的 shell 失败警告 #103593
  • 为从原生 CLI 框架生成的子 Agent 保留编码工具 #103751
  • 在第一个根页面之外查找 Feishu Drive 文件 #104190
  • 让 Codex Agent 为单个命令选择配对节点 #104198
  • 当父级运行停止时取消 SearXNG 搜索 #104216
  • 及时返回超时的 Android 节点命令 #104225
  • 恢复 Agent 作用域会话的频道标签 #104274
  • 限制停滞的远程媒体下载并清理部分文件 #104624
  • 在 base64 解码之前限制工具图像负载 #105086
  • 拒绝无效的 Parallel 网络搜索结果计数 #105108
  • 随 Agent 运行取消 Kimi 网络搜索请求 #105125
  • 为远程节点提供类型化可执行文件查找 #105182
  • 拒绝格式错误的相机媒体尺寸 #105954
  • 在 Agent 工作流中解码完整的 HTML5 实体集 #105957
  • fix(agents): 省略图像元数据时报告膨胀的字节大小 #106066
  • 恢复带有文件 URI 路径的 Codex 沙盒命令 #107644
  • 在预检中止后清除工具搜索目录 #108114
  • 当 Agent 运行退订时清理过时的工具跟踪 #108403
  • 防止过时的工具结果证明当前操作已完成 #109259
  • 在 Windows 上保留 Agent 创建的文件名大小写 #109823
  • 在截断的 Code Mode 索引中保留工具输出约定 #110317
  • 在超大工具周围保留 Code Mode 的快速索引 #110517
  • 防止已中止的运行卡在停滞的工具调用上 #110704
  • 响应清理失败时保留稳定的网络结果 #111245
  • 恢复用于 diff 渲染的 Windows 浏览器发现功能 #111257
  • fix(network): 受保护的 fetch 调用方可能让响应保持流式传输 #111277
  • 阻止 Code Mode 的 shell 命令重试风暴 #113070
  • 保留并验证紧凑的 Tool Search 参数 #114461
  • 让代理可发现隐藏的工具能力 #114516
  • 在使用工具搜索时保持核心编码工具直接可用 #114560
  • 保留有效的 Code Mode 方法并拒绝加载器规避 #114742
  • 告知代理它们可以读取哪些受监视的组会话 #114835
  • 保持搜索工具摘要可读 #114933
  • 改进节点取消与本地模型恢复 #114935
  • 以匹配的文件格式保存节点屏幕截图 #115094
  • 在多次等待中每个 Code Mode 输出块仅交付一次 #115213
  • 取消已放弃的 HTTP 工具调用 #115550
  • 允许在模糊近似重复项之外进行精确编辑 #115738
  • 稳定浏览器下载暂存的原子性 #115892
  • 应用补丁时保留 CRLF 文件 #115943
  • 沙箱回复可以附加已获取的文件 #116400
  • 保留真实的代理工具结果与取消状态 #116916
  • fix(nodes): 在发布捕获内容之前验证照片有效载荷 #116927
  • 使配对节点的照片结果可见且具有原子性 #116988
  • 跨节点和 Gateway 传输遵守 Canvas 操作截止时间 #117317
  • 为新会话和沙箱会话解析有效工具 #117723
  • 在报告成功之前验证委派的文件写入 #117938
  • 写入失败时保留现有的节点屏幕输出 #117973
  • 保留来自延迟 MCP 工具的失败 #118363
  • fix(agents): 直接原地写入不受限制的主机文件,而不是先截断 #118470
  • 保留完整的 xAI 工具响应和引用 #118477
  • 公开无文本 PDF 的图像提取失败 #118629
  • fix(agents): 节点插件工具调用报告通用客户端超时 #118720
  • 跨提供商停止已取消的网络搜索 #118895
  • 支持符号链接的远程沙箱工作区以及可靠的 macOS 验证 #119110
  • 修复来自带点号参数提供商的 Tool Search 调用 #119464
  • 使代理文件读取非阻塞且明确 #121508
  • 为沙箱代理暂存大写 Windows 文件 URL #121521
  • 为 Codex-harness 会话启用建议任务卡片 #121568
  • 在 Windows 媒体工作流中接受规范文件 URL #121676
  • 让 code-mode Codex 模型发现延迟工具 #121703
  • 恢复 Code Mode 中 OpenAI 托管的搜索 #121812
  • 在 Electron 下回退到结构化 Tool Search #122037
  • 在通配符工具策略下保留 Code Mode 技能 #122057
  • 在代理文件工具中展开 Windows 反斜杠主目录路径 #122071
  • 未处理的媒体附件获得清晰的模型可见结果 #122098
  • 防止生成的工作树名称复活已停用的检出 #122393
  • 让沙箱代理读取暂存的文档附件 #122490
  • 为非默认 CLI 代理工作区恢复入站图像 #122684
  • 在 sessions_list 中保留会话类型 #122697
  • 将已取消的网络搜索结果排除在提供商缓存之外 #123951
  • 恢复双重包装的 Tool Search 调用 #124138
  • 在打包运行中恢复原生 OpenAI 网络搜索 #124215
  • 当代理运行停止时取消捆绑的 MCP 工作 #124425
  • 停止提示模型使用不可用的工具 #124716
  • 遵守 Codex 节点执行主机选择 #124777
  • 修复被裁剪的会话选择和 Code Mode 计时器 #124879
  • 为命名嵌入式代理恢复媒体附件 #124957
  • 确认失败的工具栏操作在重试时成功 #125078
  • fix(sandbox): 将对同一文件的读取排队在正在进行的写入之后 #125091
  • 报告无回复和不可用工具的结果 #125607
  • 保留 Copilot 清单配置文件的工具授权 #125875
  • 恢复 OpenClaw 对 Copilot 代理轮次的指导 #125997
  • 代理在最终动态工具之后干净地停止 #126208
  • 在成功回复后停止过时的工具失败警告 #126542
  • 当未使用的 exec 别名空白时运行 Code Mode #126599
  • 停止将未完成的 Kimi 网络搜索缓存为成功结果 #126765
  • 拒绝空的 Perplexity 答案并重用等效搜索 #126780
  • 为工作区文件更改保留字面 Unicode 空格路径 #126797
  • 为等效搜索重用 Gemini 和 Kimi 缓存 #126798
  • fix(read): 为非视觉模型丢弃图像有效载荷 #127112
  • 停止推荐不可用的会话工具 #127648
  • fix: Code Mode shell 调用在 yield 截止时间附近停滞 #127759
  • fix(agents): 在工作区文件缓存标识中包含 ctimeMs #127769
  • fix(code-mode): 待处理调用溢出不再提交部分批次 #128030
  • fix: 以只读恢复继续 code mode #128071
  • fix: Code Mode exec 批准停止轮询 #128355
  • fix(agents): 解决嵌套的 code mode 桥接调用 #128440
  • fix(agents): 在 code-mode 工作仍待处理时压缩回合途中的溢出 #129792
  • refactor(web): 使用规范的提供商契约 #130334
  • fix(nodes): 在发布文件之前验证捕获批次 #130371
  • fix(code-mode): 避免对无效的嵌套调用使用修复模式 #130478
  • fix(media): 记录被丢弃的原生视觉附件的处置状态 #130846
  • fix(codex): 让收集器等待完成其完整超时 #130939
  • fix(agents): 为运行时管理的 ACP 代理跳过隐式工作区脚手架 #130987
  • fix(code-mode): 在仅发现错误后继续任务 #131079
  • fix(openai): 为首选模型恢复自动 Code Mode #131139
  • fix(agents): 在 ls 列表中保持悬空符号链接可见 #131783
  • fix(brave): 将预检绑定到请求取消 #132097
  • fix: 减少首次 Grok 网络搜索的启动延迟 #132685
  • 保留成功的 Code Mode 回复交付 5775e2a
  • 停止将恰好达到限制的网络响应标记为截断 #102389
  • 在 emoji 周围保持截断的工具结果上下文有效 #102466
  • 在原生钩子显示文本中保留 emoji 边界 #102467
  • 拒绝无效的会话读取偏移量 #102481
  • 在截断的 MCP 元数据中保留完整字符 #102500
  • 保持 Codex 超时诊断对 UTF-16 安全 #102509
  • 将中断的网络响应标记为不完整 #102550
  • 保持 Codex 诊断截断对 Unicode 安全 #102576
  • 保持 Parallel MCP 错误详情对 Unicode 安全 #102592
  • 为截断的 web_fetch 输出保留源长度 #102978
  • 在跟踪摘要中统计每次失败的工具调用 #102981
  • 防止空代理输出导致截断崩溃 #103425
  • 在 Firecrawl API 错误中保留有效的 Unicode #103487

  • 拒绝格式错误的会话历史偏移量 #103594

    • 将禁用的 Exa 内容选项排除在默认缓存条目之外 #103653
    • 取消时立即停止会话 grep 搜索 #103709
    • 按 UTF-8 字节强制实施中间件详细度限制 #104156
    • 为 Code Mode API 文件报告准确的 UTF-8 大小 #104244
    • 拒绝格式错误的目标令牌预算 #104534
    • 初始化确认失败后停止并行 MCP 搜索 #104554
    • 写入后报告正确的 UTF-8 字节数 #104560
    • 在 UTF-16 边界处保持 tool_search_code stderr 错误有效 #104767
    • 在请求超时时保留取消原因 #105071
    • 使沙箱文件检查跨区域设置可靠 #105263
    • 在分析前拒绝不安全的 PDF 页码 #105315
    • 要求 Tool Search 限制为正整数 #105567
    • 保持读取工具警告预览的 Unicode 安全 #106399
    • 在 Web Readability 输出中解析相对链接 #106874
    • 在图像重新编码后避免调整大小提示 #107027
    • 修复 Perplexity Search API 日期过滤器 #107046
    • 拒绝 Workspaces 绑定中格式错误的数组索引 #107317
    • 在会话工具错误尾部保留 UTF-8 #108012
    • fix(agents): 报告被阻止的命令结果 #108060
    • 保持读取工具警告预览为有效 Unicode #108276
    • 防止卡住的 find 和 grep 检查挂起 #109215
    • 限制沙箱引导种子文件读取 #110017
    • 解释传递给读取工具的目录路径 #114601
    • 防止在小模型上出现空的和 shell 风格的 Code Mode 调用 #115275
    • 按运行隔离 Code Mode 工具目录 #115458
    • 在创建时拒绝不支持的飞书文档内容 #115697
    • 在提供程序回退期间关闭被放弃的 web-fetch 响应 #115759
    • 在代理文件读取中隐藏前导 UTF-8 BOM #115781
    • 在 CLI 支持的运行结果中包含工具使用摘要 #115797
    • 准确报告 Codex 托管搜索超时 #115837
    • 从内联获取的文本中剥离前导 BOM #115906
    • 在 JSON 结果中报告 Copilot code-mode 参与情况 #115913
    • 使 Tool Search 遥测计数器重置可识别 #116070
    • 保持会话状态文本简洁且经过清理 #116742
    • 在被中止包装的代理工具上保留终端摘要 #118495
    • 拒绝超出文档范围的 PDF 页面选择 #118639
    • fix(link-understanding): 在获取失败后释放连接 #118683
    • fix(code-mode): 保持 MCP 节点标签截断的 UTF-16 安全 #119392
    • fix(media): 将调用者中止信号转发到重试退避睡眠 #119398
    • 修复带符号链接状态目录的托管工作树清理 #120362
    • 在 Windows 上识别大写附件文件 URL #121362
    • 清除已恢复的多文件补丁警告 #121503
    • 在 Windows 上安全解码本地媒体文件 URL #122192
    • 在 Windows 媒体读取时阻止误报的文件更改失败 #122427
    • 在过滤后填充会话列表 #122725
    • 保留部分 web 获取状态 #122866
    • 允许零字节工件下载 #122928
    • 一致地报告无头 Code Mode 超时 #122997
    • 为格式错误的 Diffs 工具调用返回清晰错误 #123087
    • 修正图像调整大小日志中的百分比符号 #123411
    • 拒绝来自 Firecrawl 的失败目标页面 #123741
    • 已取消的 X 搜索不再影响重试 #123996
    • 在 Code Mode 中隐藏不可用的节点指南 #124698
    • fix(agents): 提醒执行模型引用 shell 元字符 #125485
    • 让托管工作树清理在遇到过期元数据时继续运行 #125721
    • 为目录获取报告准确的文件计数 #126439
    • 从 XHTML 页面提取可读内容 #126835
    • 在冲突的 HTTP 字符集之前遵循 Unicode BOM #126854
    • 防止已取消的 Firecrawl 请求返回过期结果 #126857
    • 向代理公开目录分页令牌 #127051
    • fix(file-transfer): 内联来自配对节点的小型 YAML 和源文件 #128656
    • fix: 在只读 Code Mode 节点查找后恢复 #129427
    • fix(ollama): 跳过托管 web 搜索的本地检查 #129833
    • fix(code-mode): 序列化嵌套在最终值中的目录句柄 #130276
    • fix(ci): 在工作流获取策略之间共享 Git 所有权 #132428
    • 在描述配对节点之前引导节点发现 #51926
    • 缓存远程节点二进制探测并退避 #79438
    • 在执行前拒绝无效的进程操作 #81157
    • 要求 web 提供程序环境引用在计为凭据之前解析成功 #96400
进程与后台命令

取消已排队的命令现在可阻止其启动;取消启动过程中的命令时,一旦进程存在便会作用到该进程;显式替换会终结被替换的命令,但不会杀死恰好同时运行的普通工作。已经在后台运行的命令保持其原有生命周期。

进程输出 仍保持 OpenClaw 观察到的顺序,完成状态仍绑定到实际结束的进程,轮询会说明早期输出被省略的情况。完整历史记录仍可通过分页进程日志查看,而不是一个可无界增长的无限制响应。

来源与完整变更列表

Bug 修复

  • 防止 Docker 沙箱中僵尸进程堆积 #103441
  • 将后台 CLI 命令作为任务保持可见 #110468
  • 在已取消的回合生成后台代理循环之前将其停止 #115011
  • 防止并发沙箱容器名称冲突 #115645
  • 在池压力下回收空闲代理终端 #116101
  • 及时打开远程节点终端并保留操作员重命名 #116355
  • 如实报告后台进程结果并在静默失败时唤醒 #120754
  • 无论键大小写如何,均尊重 Windows 子环境覆盖 #120802
  • 在 Gateway 超时后停止派生的命令 #124081
  • 会话归档时停止终端进程树 #125784
  • fix(worker): 在回复后保持后台服务器存活 #130733
  • 在代理输出和恢复消息中保留 emoji #102085
  • 阻止已取消的并行工具启动 #102276
  • 将 heredoc 正文文本排除在 shell 命令状态拆分之外 #102889
  • 在子进程关闭前保持 Codex 沙箱租约 #103617
  • 跨 bash 输出块保留 ANSI 清理状态 #103706
  • 从已清理文本中移除隐藏的终端转义片段 #103707
  • 限制 Windows 前台 exec 清理范围 #104234
  • 在后台命令完成后保持目标可见 #104265
  • 在生命周期准入范围内保持沙箱 exec 收尾 #104419
  • 阻止卡住的 Windows 编码检查阻塞命令 #109319
  • 在语音通话清理期间回收 ngrok 隧道 #110122
  • 在事件循环停滞期间保留子代进程输出 #111040
  • 在受支持平台上查找由 mise 安装的命令 #111258
  • 当 TERM 为空白时使用有效的终端标识 #111261
  • 跨本地 exec 块保留 ANSI 清理器状态 #111364
  • 在重试超时命令之前警告代理 #111390
  • 在后台进程移除后保留正在运行的任务 #113860
  • 防止被取代的作用域进程在替换后继续存活 #114845
  • 停止在启动期间被取消的进程 #114917
  • 防止已取消的排队进程启动 #114951
  • 在 Node 计时器限制之外保留较长的进程截止时间 #115230
  • 保持进程取消原因一致 #115317
  • 防止 Windows 子进程树成为孤儿进程 #115535
  • 阻止已完成的 shell 检查产生误报失败 #115737
  • 限制已完成后台命令的内存占用并清理退役会话 #115760
  • 从长时间运行的节点主机命令返回结果 #116591
  • 正确解码旧版 Windows 会话 exec 输出 #119509
  • 使 exec 超时单位明确化 #119874
  • 保持 exec 完成状态与确切进程绑定 #120575
  • 当进程轮询省略较早输出时发出警告 #120583
  • 阻止被轮询的后台命令发送过期的完成提醒 #120585
  • 当进程输出被永久丢弃时发出警告 #120705
  • 完成后关闭任务所属终端 #121055
  • 任务结束时关闭任务所属终端 #121070
  • 在沙箱准备失败后退役 exec 会话 #121148
  • 当运行 ID 冲突时关闭正确的 Gateway 终端 #121192
  • 后台工作结束时关闭任务所属终端 #121267
  • 保持复合 shell 命令在工具显示中可读 #122581
  • 安全地停止并回收过时的 macOS Talk MLX 辅助程序 #124604
  • fix(process): 命令在事件循环停滞期间丢失输出 #125381
  • 准确报告节点超时和进程终止情况 #125466
  • 保持终端和 exec 恢复路径可用 #125731
  • Codex 沙箱终止会等待完整进程清理完成 #125908
  • 在操作错误后保持子进程信号转发有效 #126493
  • 保持大批量命令的响应性 #127145
  • 在信号错误后保持后台命令可控制 #127154
  • fix(agents): 保留已批准的 exec 输出流标签 #127595
  • fix(agents): 交互式进程提示在定时轮询期间停滞 #130081
  • fix(exec): 在进程准入前停止已取消的命令 #130941
  • fix(agents): 避免在一次性入口运行时出现持久技能监视器 #132512
  • 防止 Unix 子进程清理终止网关 #94697
  • fix(process): 在取消落定前等待进程树清理完成 #98539
  • fix(process): 解码 UTF-16 Windows 输出流 (#109163) 95b69ef
  • 在 emoji 前后保持后台进程标签有效 #102332
  • 将显式为零的 bash 作业 TTL 限制为一分钟最小值 #102855
  • 保持 bash 输出受字节限制且 UTF-8 安全 #103272
  • 去除残留的终端控制字符 #103274
  • 在 emoji 文件名前后保持 SCP 失败消息有效 #104148
  • 在文件传输错误尾部保留 Unicode #104151
  • 在截断的进程输出中保留 emoji #104531
  • 准确报告进程输入的字节数 #104966
  • 准确报告进程 send-keys 的 UTF-8 字节数 #104968
  • 应用未定义子进程环境变量的移除 #107258
  • 限制 Logbook 快照子进程 #109042
  • 报告命令通道超时的真实原因和持续时间 #109287
  • 安全处理 ACP 代理进程启动失败 #109529
  • 将权限受限的 PID 视为存活 #110235
  • 隔离 bash stdout 和 stderr 的解码 #112325
  • 保留被包装的 CLI 命令的信号特定退出码 #113685
  • 在已修复的 Bun 金丝雀版本上恢复字节精确的进程输出 #114606
  • 在 Windows PATH 中优先选择原生 PowerShell 7 可执行文件 #114999
  • 接受已记录的全局 exec 提示延迟 #115101
  • 使已取消的前台命令干净地拒绝执行 #115694
  • 当慢速查看器离开时恢复共享终端输出 #117847
  • 解释包装器所选择的 Linux SIGKILL 失败 #117911
  • 尊重显式的 Windows 可执行文件路径 #121094
  • 保持后台进程轮询输出按顺序 #123449
  • 在节点 exec 结果中保留 stderr 和错误信息 #123602
  • 在生命周期竞争条件下保留 exec 结果 #125532
  • 将空 exec 工作目录视为未提供 #126509
  • 保持最新的后台进程会话可见 #126706
  • 将 Codex 执行会话与 WebSocket 传输分离 #126859
  • fix(agents): 在进程日志中保留超时和终止详细信息 #129273
  • 解释远程节点 exec 中不可用的工作目录 #97105
自动化与任务看板

Workboard 现在会将已接受的工作者保持在其卡片上,回滚失败操作时不会覆盖他人的编辑,并重新连接因重启而中断的启动。如果 OpenClaw 没有正在运行的工作者的完整视图,它会等待,而不是猜测某个工作者是否仍属于该卡片,并且过期的启动尝试仍会被阻止。

来源和完整变更列表

Bug 修复

  • 当任务注册表恢复失败时失败关闭 #105031
  • 当任务流状态无法恢复时失败关闭 #105088
  • 通过所属会话恢复中断的生成媒体完成项 #108024
  • 加固 cron 编辑和 Workboard 分发 #114564
  • 在维护期间保留处于活动阻塞状态的 TaskFlows #117606
  • 主动投递已排队的后台任务结果 #123076
  • 防止 Workboard 摘要阻塞 Gateway #123922
  • 在仪表盘关闭时保持 Workboard 卡片同步 #125023
  • 防止孤立的 Workboard 运行和被覆盖的卡片 #125951
  • fix(worktrees): 在清理期间保留嵌套仓库 #129454
  • fix(workboard): 保留未分配工作者的所有权 (#115119) a9303f2
  • 使用原始上下文恢复 cron 媒体任务 #101078
  • 防止后台任务状态破坏表情符号 #101976
  • 在升级期间修复旧版任务投递状态 #103946
  • 保持持久化任务开始时间准确 #104278
  • 保持恢复的任务状态一致且索引安全 #104990
  • 在 cron 会话清理期间避免重复的全局扫描 #105903
  • 让 Workboard 工作者完成已分发的卡片 #107271
  • 跨独立存储保留相同 ID 的 cron 历史 #108730
  • 记录 Workboard 执行使用的实际运行时 #108887
  • 按 id 关联 Workboard 完成证明 #111324
  • 加固 cron 通知和 Workboard 分发 #114499
  • 让新的 Workboard 卡片与所选代理保持一致 #114650
  • 加固 Cron 等待和 Workboard 卡片生命周期行为 #114865
  • 保持新创建的 Workboard 卡片可分发 #116412
  • 在持久化前拒绝无效的任务通知策略 #117554
  • 在注册表压力下保留已接受的任务建议 #117623
  • 加快大型 Workboard 卡片列表的速度 #118848
  • 在故障和容量压力后保持任务建议可恢复 #120940
  • fix(workboard): 截断超大的通知消息,而不是导致分发崩溃 #120999
  • 使用当前回复契约投递生成的媒体 #121937
  • 在失败操作回滚时保留并发 Workboard 编辑 #126161
  • 在失败后重试安全的 Workboard worktree 清理 #126162
  • 恢复中断的 Workboard 工作者启动 #126170
  • fix(worktrees): 停止重复的启动清理错误 #128761
  • fix(tasks): 被阻塞的工作错误地显示为成功 #129101
  • fix(acp): 在摘要截断前对完整任务输出进行分类 #129255
  • fix(workboard): 为卡片子记录建立索引 #129568
  • fix(gateway): 在已配置仓库钩子时使 PR 落地可用 #129576
  • fix(gateway): 解除 hooksPath 检出时 GitHub 发布的阻塞,并自动重试延迟请求 #129772
  • fix(tasks): 阻止已完成的 TaskFlows 累积 #129873
  • fix(cron): 在文本公告中保留已创作的语音 #130520
  • 将快速上下文维护排除在任务流之外 #102147
  • 在捕获的 Workboard 卡片中保持表情符号完整 #102544
  • 在依赖错误之前报告活动的 Workboard 认领 #104065
  • 按看板限定默认 Workboard 卡片位置 #104410
  • 拒绝不可能的承诺截止日期 #106236
  • 保持任务进程监听器为单例 #117766
  • 停止多代理情况下的 Workboard 同步错误 #125429
  • 在 Gateway 就绪后启动 Workboard 协调 #125470
  • 将受管 worktree 清理重新绑定到活动仓库 #126305
  • fix(tasks): 被阻塞的完成结果无法过滤 #129196
  • fix(workers): 在云工作者上保留已配置的 Git 作者 #129826
  • fix(gateway): 按列表大小而非命令上限限制发布属性扫描 #129907
Web 和仪表板界面

Canvas 现在会在生成的组件名称冲突时保持它们相互区分,重新加载后记住哪个组件被固定,并在固定失败时显示有界错误,而不是让操作消失。当存储的组件身份无效或已占用的名称存在歧义时,Canvas 仍不会猜测你指的是哪个组件。

来源和完整变更列表

Bug 修复

  • 启动后稳定会话仪表板 #111907
  • 保持并发后台任务进度和完成状态稳定 #114085
  • 使每个代理的 Control UI 设置持久化并显示保存错误 #117107
  • 当生成名称冲突时保留 Canvas 组件 #117132
  • 防止 Control UI 中的云会话恢复陷入死胡同 #120970
  • 消除新 Control UI 聊天中的启动卡顿 #122471
  • 在启动和插件切换期间保留 Workboard 侧边栏固定项 #123475
  • 在发送前拒绝超大和空聊天附件 #123977
  • fix(portals): 保持 worker 预览可访问且属于活动环境 #130434
  • 在重启原因和聊天预览中保持 emoji 完整 #101754
  • 阻止分栏标题打开隐藏的会话选择器 #103107
  • 渲染带有编码扩展名的媒体 URL #103466
  • 保存时锁定 Workboard 卡片草稿 #105600
  • 重连后恢复活动计划清单 #109966
  • 清理失败的云会话并标记不兼容的运行时 #110371
  • 在切片 Markdown 内容时保持 emoji 完整 #110643
  • 在短窗口中保持 Workboard 下拉菜单在屏幕上 #110788
  • 从聊天历史中隐藏仅媒体模型占位符 #111204
  • 在推理使会话失效后恢复 Custodian 对话 #111562
  • 使仪表板面板可滚动 #111911
  • 未选择面板时显示所有 Workboard 卡片 #112484
  • 重连后保持会话进度与所选代理关联 #114548
  • 在卡片编辑期间保留 Workboard 会话 #114804
  • 保持多个 Workboard 组件同步 #114972
  • 在重新渲染之间保留 Workboard 草稿编辑 #115141
  • 在预览根加载时显示本地助手媒体 #115672
  • 在 HTML 支持的披露块之后保持聊天内容可见 #115877
  • 恢复已删除面板的 Workboard 路由 #116342
  • 恢复设置搜索、签名媒体预览和原生聊天文本 #116654
  • 正确重新验证缓存的 Gateway 媒体 #116880
  • 可靠关闭 Gateway 媒体文件句柄 #117000
  • 对经过身份验证的 Gateway 媒体遵循 If-Modified-Since #117133
  • 为 HEAD 请求保留面板组件元数据 #120177
  • 完成用于预览和媒体检测的有界文件读取 #120208
  • 使 Control UI 任务建议可操作且显示安全 #120967
  • 为远程会话显示粘贴的标题和最终回复 #121467
  • 当所有 Web Push 测试投递都失败时报告错误 #122080
  • 通过活动运行的身份验证生成会话标题 #122163
  • 为被阻止的远程聊天图像显示占位符 #122312
  • 在 Control UI 中显示每个活动任务 #122565
  • fix(gateway): 在聊天启动投影中恢复嵌入式通道运行 #123189
  • 保持最近完成的任务可见且顺序正确 #123219
  • 当 CSP 仅阻止探测时显示门户预览 #123344
  • 在 Control UI 基础路径下渲染受管图像 #123592
  • 在编码前拒绝超出限制的 Control UI 文件附件 #123654
  • 防止重新加载后出现重复的 Canvas 仪表板固定项 #123721
  • 在选定的聊天发送和目录退出时回收附件 #123983
  • 减少聊天分支轮询并恢复下拉菜单状态 #124094
  • 在刷新之间保持任务重试和忽略结果 #124371
  • 释放已丢弃的 Control UI 附件负载 #124391
  • 在强制移除 worktree 后显示快照失败 #124605
  • 在分发时生成可读的 worktree 和会话标题 #124787
  • 统一会话预览并停止泄露或过度剥离回复标记 #124997
  • 在并发更改后刷新设备列表 #125627
  • 防止并发更新期间仪表板会话冲突 #125777
  • 在并发会话更新后重试仪表板发送 #125849
  • 在普通 Codex 运行中保持进度卡片可用 #126189
  • 停止重放未更改的会话 PR 订阅 #126726
  • fix(gateway): 实时会话在跨代理身份时停滞或重新排序 #128265
  • fix(gateway): 保留混合媒体失败回执 #128423
  • fix(gateway): 投影规范会话事件 #129313
  • fix(ui): 对齐折叠的左上角控件 #129920
  • fix: 云机器选择器在更大目录中丢失 CPU 和 RAM #130684
  • fix: 隐藏不支持的云机器类覆盖 #130766
  • fix: 停止建议不支持的云 worker 类 #130787
  • fix(crabbox): 在目录失败后恢复机器选择 #130828
  • 保持截断的会话标题和预览对 emoji 安全 #102090
  • 在 emoji 边界处保持 Control UI 截断安全 #102225
  • 保持截断的聊天文本对 Unicode 安全 #102470
  • 修剪时保持长实时聊天回复对 emoji 安全 #102484
  • 在 Overview 事件预览中保持 emoji 完整 #102625
  • 防止 Workboard 选择菜单在定位前闪烁 #102867
  • 在 emoji 边界处保持身份文本有效 #103034
  • 恢复 Worktrees 表格布局 #103899
  • 在待处理配置摘要中保留 emoji #103908
  • 防止导出的工具预览中出现损坏的 emoji #104054
  • 对不完整的 Admin HTTP RPC 请求体设置超时 #104564
  • 阻止 Telegram Mini App 仪表板加载无限期挂起 #104629
  • 在长 Control UI 分支标签中保持 emoji 完整 #104901
  • 在 Control UI 历史中保持显式当前聊天回复可见 #106073
  • 防止重叠和过期的 Logbook 刷新 #106397
  • 保持导出的会话预览截断对 UTF-16 安全 #106400
  • 拒绝格式错误的 Control UI 压缩权重 #107617
  • 防止工作区显示和配置打开挂起 #110277
  • 强制使用有效的用量表宽度 #110410
  • 在截断的仪表板事件通知中保留 emoji #111702
  • 优先选择最近看到的离线 Canvas 节点 #112084
  • 防止 IME 确认发送未完成的 Copilot 消息 #113752
  • 当个人资料主头像无法加载时回退 #115600
  • 防止重复和过期的个人资料刷新 #116764
  • 在 HEAD 请求上报告静态 Control UI 资源大小 #117049
  • 在恢复 Gateway 媒体时遵循 HTTP-date 验证器 #117058
  • 在经过身份验证的 HEAD 请求上报告头像大小 #117124
  • 停止宣传不支持的 Canvas 快照延迟 #117326
  • 在 HEAD 响应中报告准确的 A2UI 资源大小 #117961
  • 在 HEAD 请求上报告 Canvas 文档大小 #117964
  • 在聊天附件卡片上显示原始文件名 #118628

    • 拒绝显式为空的 Gateway 附件 #118742
    • 为 HEAD 请求保留字节精确的 Control UI 元数据 #119822
    • fix(gateway): 为大写文件 URL 提供 Control UI 助手媒体 #121827
    • 无需重新连接即可显示新配对的设备 #122774
    • 在加载较早消息时保持原生历史记录锚定 #123103
    • 在 Control UI 中正确显示超时的运行 #123511
    • 将延迟的最终回复保持在较新的聊天轮次之上 #123560
    • 当仪表盘固定失败时显示可见错误 #124044
    • 在每次发送前退出时清理被遗弃的聊天附件 #124100
    • 在断开连接前拒绝超大的 Control UI 请求 #124139
    • 当 hooks 阻止聊天轮次时丢弃未引用的附件 #124353
    • 阻止已关闭的 Gateway 客户端恢复订阅 #124771
    • 停止重复的仪表盘会话查询 #124968
    • 阻止 Canvas 快照返回已删除的文件路径 #125216
    • 统一并加固 Control UI 资源路由 #126386
    • 在混合角色设备上显示离线节点状态 #126428
    • 断开连接时刷新混合角色节点状态 #126677
    • 当浏览器剪贴板访问失败时使任务结果复制可靠 #127181
    • 从剪贴板故障中恢复 Lobsterdex 链接复制 #127194
    • fix(ui): 让移动端工作台随工具栏滚动 #129497
    • fix(ui): 云工作者配置文件编辑损坏其他提供商 #129846
    • fix(ui): 保持更新徽章远离聊天标题 #129992
    • fix(codex): 将进度卡片排除在聊天历史之外 #130022
    • 报告 Canvas 实时重载 WebSocket 故障 #82505
终端应用

终端应用 现在在快速切换时保持在你最近选择的对话上,并在返回时保留当前答案和已选工具的可见性。它会重试一次临时实时更新失败,而第二次失败仍会可见,完整详细级别会继续显示已存储的工具输出。

来源和完整变更列表

改进

  • 为已配对的 Mac 会话启用终端控制 #107361

错误修复

  • 使恢复的原生终端能够可靠连接并显示输出 #107688
  • 防止 /reset 破坏活动 TUI 对话 #113841
  • 使 Apple Watch 审批和 iPhone 生命周期恢复更可靠 #114366
  • 保持终端对话隔离且流式回复完整 #114504
  • 在 TUI 中保留回复、草稿和会话状态 #114816
  • 防止 Apple 设备认证阻止 node-host 重启 #115533
  • 在发布构建中保留 Wear 手机发现资源 #116068
  • 在切换和重连之间保留 TUI 会话状态 #116399
  • 在生命周期变化中保留 Android 和 Wear 工作 #116593
  • 在会话重置之间保留 TUI 输入 #116873
  • 将 Control UI 聊天终端与其代理共享 #125758
  • 保持显式断开的 Android 节点离线 b9d53d3
  • 将 Android 断开连接清理安排在飞行中的 gateway 工作之后 #103068
  • 防止重复的 Mac 启动打开 SSH 隧道 #103892
  • 在进程死亡后恢复 Android 节点连接 #104226
  • 让已配对 Mac 的 Codex 会话目录完成加载 #104299
  • 允许来自已配对 Mac 的较慢 Codex 会话目录 #104332
  • 在快速 TUI 会话切换时保持最新选择 #104824
  • 在 Gateway 断开后恢复 macOS 节点重连 #105091
  • 允许较慢的 Mac 节点工作者完成启动 #106281
  • 允许 macOS 节点冷启动五分钟 #106380
  • 在元数据写入期间保持远程 Mac 节点连接 #106419
  • 让远程 Mac 节点在隧道恢复后完成连接 #106481
  • 在 Gateway 重启之间保留 TUI 草稿和提交就绪状态 #107115
  • 恢复配对节点的 Claude 和 Codex 会话目录 #107410
  • 在 SQLite 中保留 TUI 会话恢复状态 #108058
  • 修复 Claude CLI 选择并按主机分组原生会话 #108062
  • 在 watcher 错误后重新加载 usage-bar 模板 #109462
  • 在本地聊天会话中遵循队列模式 #109689
  • 在连接回调期间保持 Swift 节点路由有效 #110127
  • 将 Android 缓存与持久客户端状态分离 #111710
  • 从损坏的 Gateway 身份中恢复 Linux Quick Chat #114359
  • 保持终端对话在客户端之间同步 #114443
  • 防止过期的移动端取消干扰较新的会话 #114549
  • 在 Gateway 事件间隙后恢复 TUI 聊天 #114932
  • 阻止 Mac 节点工作者无限重生 #114974
  • 在临时订阅故障后恢复 TUI 会话更新 #115010
  • 防止丢失的 WebSocket pongs 卡住 Mac 保活 #115362
  • 在导入中断后恢复原生设备身份 #115494
  • 在 macOS 重连后等待当前快照 #116550
  • fix(tui): 规范地拥有 picker 名册请求生命周期 #117285
  • 在轮次完成期间保持本地 TUI 状态准确 #117402
  • 在 TUI 中显示仅附件的助手回复 #117460
  • 切换会话时清除过期的 TUI 模式 #117658
  • 防止切换会话后出现过期的 TUI 运行 #117853
  • 在聊天导航后保留推理和工具跟踪 #118332
  • 拒绝向已断开的 Apple Watch 轮询套接字投递 #118606
  • 当遗留身份文件重新出现时恢复 macOS 节点启动 #120610
  • 修复通过 npm 安装的会话 CLI 的 Windows 启动 #122334
  • 每个实时 TUI 助手回复只渲染一次 #123395
  • 防止 macOS 节点工作者在停止后重启 #123651
  • 在过期退出后保持替换 Mac 节点工作者活动 #123969
  • 当 PID 跟踪失败时保持嵌入式 CUA 不可用 #124572
  • 重连后显示中断和失败的 TUI 运行 #125898
  • 防止 TUI 启动消息发送到错误的会话 #126046
  • fix(tui): 根据权威的 Gateway 运行所有权确定活动 #126497
  • fix(macos): 无需原生监管即可返回配对节点的 Codex 目录 #126811
  • 将终端 UI 消息与替换代理保持在一起 #126820
  • perf(tui): 停止在每次路径自动补全按键时阻塞编辑器 #127834
  • fix(tui): 保留活动会话运行和隐藏的工具输出 #129496
  • fix(tui): 导航后保持待处理的后续操作隐藏 #130458
  • fix(tui): 避免非认证错误消息导致停滞 #131273
  • 允许已配对的 iPhone 中继 Watch 命令 58d55ca
  • 在历史记录重新加载后保持 TUI 错误说明可见 #104864
  • 在 macOS 节点重连清理期间快速失败 #105282
  • 保持 Linux 节点故障文本有效 #107717
  • 在较长的 Pi 和 OpenCode 会话搜索中保留表情符号 #107719
  • 将节点主机连接到 IPv6 Gateway 字面量 #109179
  • 在 Pi 目录工具参数中保留 Unicode #109589
  • 在截断 OpenCode 目录工具输入时保留 Unicode #109591
  • 保持 macOS PortGuardian 与当前状态数据库兼容 #111032

    • 将现有直接 Gateway 导入 macOS 已保存的配置文件 #112629
    • 通过 PowerShell 剪贴板回退机制复制文本 #113835
    • 限制 macOS 远程 SSH 隧道拆除 #115861
    • fix(codex): 使用大写文件 URL 打开本地图像 #121611
    • 保留 Unicode Windows 局域网路由别名 #122263
    • 仅报告一次 TUI 会话内存写入失败 #124886
    • 在恢复已记住的会话时清除过期的 TUI 覆盖层 #125086
    • 保持代理打开的终端处于后台 #125101
    • 在首次发送前恢复已记住的全局 TUI 会话 #126135
    • 桌面设置后保持 Crabbox worker 壁纸可见 #126560
    • 保持 macOS 提权计算机控制处于活动状态 #126674
    • 切换后清除过期的 TUI 会话名称 #127029
语音和通话

浏览器 实时通话 现在会限制停滞的麦克风上传、排队播放、替换工作和被放弃的语音会话,而不是让它们无限增长。格式错误的音频帧可以被丢弃,而不会结束正常的播放;当 Google Live 无法安全地仅取消溢出的响应时,它会结束当前语音会话。

来源和完整变更列表

Bug 修复

  • 在会话清理期间保持 GPT-Live 浏览器通话可用 #116603
  • 限制并安全替换浏览器实时通话会话 #117216
  • 防止重连后出现过期的实时语音任务 #117599
  • 在通话关闭期间保留最终语音 #118693
  • 在响应失败或不完整后保持实时语音会话可用 #121177
  • fix(talk): 隔离取消所有权契约 #127186
  • 限制 Google 实时浏览器 Token 请求 #106034
  • 当会话关闭时停止 xAI 语音重连等待 #108252
  • 停止停滞的 Google Live 实时通话启动 #109020
  • 在 WebRTC 断开后释放实时通话媒体 #109914
  • 在恢复摄像头前等待可用的通话呼叫 #110874
  • 在停止或重启后关闭过期的通话分配 #112384
  • 将实时通话媒体和更新保留在正确的聊天中 #116067
  • 限制已被取代的 GPT-Live 代理咨询 #116211
  • 限制 OpenAI 实时播放确认状态 #116288
  • 限制实时语音回传积压 #116420
  • 限制过大的 GPT-Live 委派响应 #116482
  • Google Live 重连时丢弃过期会话 #116493
  • 在已关闭的 xAI 语音会话中清除过期输入并限制内存 #116659
  • 在断开后释放实时通话中继 #116684
  • 在停滞的 Gateway 上行期间限制浏览器通话音频上传 #116696
  • 防止实时通话保留失控音频 #116734
  • 限制持久化通话转录的持久化 #117214
  • 限制通话中继转录的持久化 #117215
  • 在恢复失效后启动新的 Google Live 会话 #117371
  • 防止 xAI 重试重新激活已关闭的语音会话 #117399
  • 防止首次 Google 实时语音输入被丢弃 #117450
  • 遵守 Google Live 的 60 秒浏览器激活期限 #117490
  • 在启动期间保留 Google 实时提示 #117529
  • 在会话清理后停止通话麦克风轮询 #117573
  • 保留 xAI 实时语音终端结果 #117600
  • 限制并排序 Google 实时启动音频 #117640
  • 在实时通话会话关闭后停止迟到的音频 #117682
  • 限制浏览器通话工具调用并防止重复执行 #117732
  • 限制 Google Live 工具所有权和取消 #117896
  • 仅从已完成的响应执行 OpenAI 实时工具 #117923
  • 限制已分离的浏览器通话语音会话所有者 #117974
  • 在背压下保留终端语音事件 #118433
  • 在播放标记无限增长前停止停滞的 xAI 语音会话 #119045
  • 在身份验证后启动实时语音超时 #119131
  • fix(ui): 防止过大的 WebRTC SDP 应答挂起通话设置 #119295
  • 在格式错误的终端输出后保持 xAI 语音轮次继续运行 #120002
  • 将实时语音策略移入通话所有权 #122668
  • 正常结束失败的 xAI 和 Google 语音连接 #123064
  • 防止 OpenAI 实时打断截断错误 #125502
  • 将 xAI 语音中断保持在已生成音频范围内 #125612
  • fix(talk): 防止未使用的语音密钥阻止启动 #127687
  • fix(voice): 约束实时桥接生命周期 #129249
  • fix(talk): 在中继分离时保留已接受的工作 (#121894) 87665fa
  • 在语音唤醒触发限制中保留 Unicode #103210
  • 防止 WebRTC 语音设置无限期挂起 #104662
  • 拒绝格式错误的通话中继音频帧 #106502
  • 限制浏览器实时通话对话中保留的文本 #117581
  • 在实时通话取消后避免媒体提示 #117958
  • 限制实时通话中继工具调用状态 #117972
  • fix(ui): 忽略格式错误的实时通话音频帧而不是抛出异常 #119215
  • 当浏览器通话麦克风上传落后时发出警告 #123783
  • fix(talk): 使中继播放完成具有幂等性 #129818
模型与提供商

特定的 GitHub Copilot 和 xAI 重放失败现在可以在不重置对话的情况下恢复。Copilot 会在活动工具调用中保留同一次运行中的有效推理,并且受影响的压缩后或加密推理失败会在匹配的传输、模型系列或 xAI 解密签名下获得一次有界的净化重试。

来源与完整变更列表

错误修复

  • 修复 OpenAI Realtime 身份验证和转录密钥 #102518
  • 防止中断的 Anthropic thinking 破坏会话重放 #104043
  • 将 Codex 线程绑定保持在插件状态限制内 #104504
  • 在创建子会话后保持父级 Codex 会话存活 #108042
  • 保留输入图像检测到的 MIME 类型 #111276
  • 在会话轮换期间保留与 Codex 绑定的对话 #112016
  • 使 Codex 会话缓存和基准一致性精确 #115663
  • 恢复 Codex SQLite 会话连续性 #116944
  • 在后台任务后保留 Claude 后续回复 #119073
  • 防止图片较多的 Claude 轮次触及输出上限 #119488
  • 在聊天之间保留 Codex 会话和审批 #120405
  • 在服务器压缩后保留较长的 OpenAI 会话 #120457
  • 在对话和子代理生命周期中保留 Codex 线程所有权 #120740
  • 恢复 Claude Opus 5 和 Sonnet 5 的 prompt caching #121283
  • 在转录清理后保持已压缩的 OpenAI 会话可用 #123485
  • 当出现后续内容时保留真实的 Codex 回答 #123993
  • 改进 Claude CLI 的 prompt-cache 复用 #124300
  • 使会话上下文窗口与活动运行时保持一致 #124303
  • 在上下文引擎不可用时限制 Codex 连续性投影 #125324
  • 在没有原生转录的情况下保留 Claude CLI 对话连续性 #96841
  • 为 Bedrock AWS SDK 身份验证恢复压缩 #103638
  • 在上下文修剪期间保留表情符号边界 #104404
  • 在引导上下文中保留 UTF-16 边界 #104423
  • 在 beta5 升级后保留 Codex 线程连续性 #104848
  • 在附加的云工作程序上恢复 OpenAI OAuth 模型 #107791
  • 限制缺失提供商警告缓存 #108806
  • 为活动的同级轮次保持共享 Codex 客户端存活 #110227
  • 将绑定的 ACP 后续轮次交付给外部框架 #110261
  • 限制 Codex 会话恢复工作并从临时过载中恢复 #110396
  • fix(github-copilot): 在工具调用期间保留推理 #112659
  • 保持已采用的 Claude Code 聊天在轮次之间正常工作 #113078
  • 在停滞的会话恢复期间保留 Claude 缓存 #113866
  • 在原地会话重置后恢复 Codex 聊天 #114056
  • 加快长 Codex 线程恢复 #114882
  • 在恢复期间保留替换 CLI 会话 #114926
  • 停止提供不受支持的 Codex OAuth 实时会话 #115211
  • 在后续重放轮次中保持切换前推理被移除 #115287
  • 使用稳定密钥恢复顺序嵌入式 Codex 运行 #115601
  • 防止自定义提供商模型导致会话列表崩溃 #115713
  • 在 OpenAI 兼容重放中保留助手文本边界 #115743
  • 在最终回复中保留 Claude CLI 工具调用前的文本 #115890
  • 在长时间运行的代理会话中刷新本地日期上下文 #116090
  • fix(codex): 为会话目录保留用户主目录默认值 #116131
  • 保持远程 Codex WebSocket 会话连接 #116135
  • 在并发重连期间保留 Codex 对话连续性 #116216
  • 为 thinking-signature 重放失败显示 /new 指导 #116987
  • 将网关响应附件限制在活动轮次 #120742
  • 在转录重写后清除过期的 OpenAI 重放检查点 #120786
  • 稳定 Claude CLI 实时会话生命周期 #121566
  • fix(acp): 避免重新发送已描述的图片 #122041
  • 从仅压缩检查点恢复 OpenAI Responses 会话 #122519
  • 在存在格式错误的推理历史时保持 Responses 会话可用 #123228
  • 在压缩被拒绝后恢复 OpenAI 轮次 #123398
  • 在恢复的 Codex 会话中保留上下文使用情况 #124969
  • 在 OpenAI Responses 压缩后保留已保留的用户轮次 #124974
  • fix(copilot): Claude 模型在自动压缩后停止回复 #125015
  • 在活动上下文预算内启动 OpenAI Responses 压缩 #125342
  • 将 Claude CLI 子代理活动排除在父轮次之外 #125621
  • 在 Copilot BYOK 工具轮次后保留最终回复 #126097
  • fix(claude): 在中止的实时轮次中保留部分输出 #126883
  • 保留仅压缩重放检查点 #127106
  • fix(agents): 保留有效的 CLI 会话绑定 #128732
  • fix(anthropic): 在第一轮之后保持 Agent SDK 会话热状态 #128985
  • fix(providers): 在加密推理流被拒绝后恢复对话 #129886
  • fix(agents): 将 CLI 引导截断通知路由到 system prompt #130325
  • fix(agents): 保留已接受的 CLI 会话上下文 #130475
  • fix(codex): 防止过期恢复干扰共享会话 #130701
  • fix(codex): 在线程恢复失败后清理订阅 #130862
  • fix(anthropic): 在会话指纹识别之前稳定 SDK 环境 #132535
  • 在 Claude CLI 恢复占位符之后保留真实回复 #90799
  • 防止过期的 GitHub Copilot 推理数据破坏后续轮次 #95493
  • 将压缩保持在为实时会话选择的模型上 #95713
  • 从过期的加密推理重放中恢复 xAI/Grok 轮次 #97926
  • 在 Realtime Talk 中明确被拒绝的 API 密钥 #102461
  • 在核心包中扩展索引访问安全性 #104626
  • 当 GPT-Live 语音模型不受支持时提供明确指导 #104695
  • 将提供商默认值应用于显式视频条目 #108396
  • 释放失败的 Chutes userinfo 连接 #109677
  • 拒绝代理网关错误响应中的格式错误 UTF-8 #111852
  • 当重放 ID 包含空白时保留工具结果 #111864
  • 在 Amazon Bedrock 中明确格式错误的图像错误 #111872
  • 在代理分发之前拒绝格式错误的活动图像输入 #116883
  • 将图像压缩固定到已接受的插件版本 #125182
语音和媒体提供商

在受影响的共享和 OpenAI 转录 路径中,重复的短生命周期连接现在会退避,并在达到配置的重试上限时停止;OpenAI 轮次保持有序,更多符合条件的最终词在麦克风关闭后得以保留,并且大量积压会保留最新音频,使会话保持响应。

本地 CLI 文本转语音现在会限制输出内存,安全地处理损坏的音频流,并在仅未使用的 stdout 失败时保留有效的输出文件。来自本地 CLI 和 ElevenLabs 的输出元数据还会报告实际生成的音频格式。

来源和完整变更列表

改进

  • feat(comfy): 支持自定义请求头和按请求种子随机化 #130098

错误修复

  • 将官方 OpenRouter 图像生成迁移到 Images API #101367
  • 等待实时提供商接受 Talk 工具结果 #103268
  • 接受来自 Google 媒体提供商的 URL 安全 Base64 #116204
  • 当基础 URL 为空时恢复 Google 媒体功能 #116852
  • 保留实时转录和最终工具参数 #116891
  • 恢复对本地存储的传入媒体的转录 #117268
  • 加固 Qwen 和 Alibaba Wan 视频生成 #117303
  • 在活动聊天运行完成前保持生成的媒体存活 #119764
  • 防止 TTS 状态检查阻塞 Gateway 扇出 #119788
  • 在提供商折叠后恢复隐式 Codex 图像路由 ea0fe35
  • 限制 OpenRouter 音乐流内存使用 #101488
  • 停止实时转录中的无限重连循环 #102348
  • 安全地将不支持的图像格式发送到 Anthropic #102537
  • 限制跨语音提供商停滞的语音列表请求 #102865
  • 将停滞的语音提供商 JSON 请求限制为 30 秒 #102884
  • 防止停滞的 fal 图像下载无限挂起 #103071
  • 对齐 xAI 图像和视频能力契约 #103384
  • 从百分号编码的 URL 文件名检测媒体类型 #103410
  • 使 xAI 批量转录无需模型 #103419
  • 在优先使用本地语音转文本加速之前先验证它 #104210
  • 安全地拒绝格式错误的 ElevenLabs 端点覆盖 #105163
  • 验证 Deepgram 实时自定义端点 #105334
  • 防止 OpenAI 图像请求在模型目录加载前崩溃 #105518
  • 保持 Vydra 媒体请求遵循已配置的传输策略 #105884
  • 为原生视觉保留主机暂存的图像 #106416
  • 从上传内容检测媒体类型 #107863
  • OpenAI 实时语音在重连期间及时关闭 #108209
  • 将空白的 OpenAI 语音密钥视为缺失 #108212
  • 在本地拒绝空白的 Xiaomi 语音 API 密钥 #108558
  • 在提供商配置无效时保持 TTS 选择可用 #108569
  • 在原生 harness 会话中转录语音笔记 #108714
  • 在原生 harness 会话中转录仅文件名的音频 #108765
  • 在语音请求前拒绝空白的 Gradium API 密钥 #108800
  • 一致地拒绝空白的语音提供商凭据 #109051
  • 停止缓慢的 Vydra 媒体下载永久挂起 #109210
  • 限制停滞的 DashScope 视频下载 #109394
  • 停止超大的 ElevenLabs 流式音频 #109621
  • 防止重复交付生成的图像 #110366
  • 当错误主体损坏时保留 Vydra HTTP 详情 #110478
  • 清理口语回复并避免朗读代码密集型的响应 #110948
  • 将模糊的 M4A 语音文件识别为音频 #111177
  • 拒绝格式错误的 Codex 图像 Base64 #111235
  • 使用结构化媒体事实进行传入音频检测 #111315
  • 拒绝无效的 xAI 实时工具参数 #111730
  • 保持每个附件的媒体持久化和 CLI 模板对齐 #112545
  • 保留 OpenAI 实时转录顺序 #113723
  • 拒绝来自媒体提供商的格式错误音频 #114041
  • 拒绝格式错误的提供商媒体和嵌入负载 #114514
  • 及时显示 OpenAI 实时配置错误 #115582
  • 将生成的语音保留在媒体存储中 #115647
  • 限制 OpenAI 实时语音启动数据 #116224
  • 限制排队的实时音频并在关闭时清除它 #116230
  • 丢弃已取消的连接前 OpenAI 语音音频 #116735
  • 在音频工作流中识别 AIFF 变体 #116907
  • 修复 Together 视频结果和图像输入 #116913
  • 保留 OpenAI 视频终端结果和有效编辑字段 #116917
  • 保留媒体方向、格式和文件名 #116928
  • 在积压期间保持实时转录响应 #116935
  • 修复 OpenAI Sora 多部分视频提交 #116995
  • 使 Codex 图像流可靠地失败和完成 #116999
  • 保留排队的 OpenAI 实时音频帧 #117028
  • 在 OpenAI 对等启动期间保留 Gateway 麦克风音频 #117057
  • 限制未完成的 Google Live 转录 #117179
  • 限制 Mistral 实时转录增长 #117190
  • 拒绝格式错误或完整的 MiniMax 音频响应 #117195
  • 在交付前验证 OpenAI 视频下载 #117227
  • 拒绝格式错误的生成媒体下载 #117281
  • 遵循已配置的 OpenRouter 图像请求传输 #117336
  • 拒绝格式错误的文本转语音响应 #117345
  • 隔离重连的转录会话 #117592
  • 在 GPT-Live 启动时保留开场语音 #117604
  • 防止 Deepgram 语音轮次在句子中途结束 #117663
  • 修复 Krea 和 Nano Banana 2 的 Fal 宽高比 #117784
  • 当媒体提供商返回空资源时回退 #117875
  • 防止不完整的主机视频下载替换有效输出 #117893
  • 当写入失败时保留生成的媒体文件 #117934
  • 当复制失败时保留现有 TTS 输出 #117962
  • 限制停滞的实时转录缓冲区 #118109
  • 在会话之间干净地重置 OpenAI 实时语音桥接 #118136
  • 限制 OpenAI 实时转录会话状态 #118204
  • 通过 LiteLLM 代理恢复图像编辑 #118562
  • 在提供商输出为空后使用已配置的媒体回退 #118660
  • 在 OpenAI 实时转录中保留最终词 #118782
  • 对每个 OpenAI 实时最终转录强制实施限制 #118928
  • 停止格式错误的视频下载在调试捕获下挂起 #119257
  • 回滚部分图像、音乐和视频批次 #119292
  • 返回 Comfy SaveVideo 输出而不包含静态图像 #119543
  • 显示 ElevenLabs 实时转录失败 #120772
  • 在交付失败后保持实时语音工具结果可重试 #120776
  • 在 ElevenLabs 转录中保留重复的语音轮次 #120792
  • 限制 GPT-Live 音频工作并保留工作区锁所有权 #120911
  • 防止截断的流式媒体文件 #123590
  • 发现已安装的 whisper.cpp 模型 #124699
  • 显示附件和媒体处理失败 #125562
  • 保持本地和 ElevenLabs TTS 音频格式真实 #125628
  • 启用 Runway 和 Alibaba 视频提供商身份验证 #126722
    • fix(media): 为图像提供商转换多帧 HEIC 和 HEIF 照片 #128501
    • fix(media): 强制应用生成模型和引用限制 #129591
    • fix(media): 在仅音频处理中保持失败标记可见 #130869
    • fix(media): 限制本地读取并使已清理的附件路径失效 #130885
    • fix(agents): 保留生成视频的输出顺序 #131110
    • 信任已知的 CLI 转录文件 #87393
    • 当 stdout 出错时保留本地 TTS 文件输出 45d15aa
    • 保持媒体文件存储键在不同操作系统间一致 cf432ec
    • 限制本地 CLI TTS 输出内存 #101510
    • 将 OpenRouter 请求策略应用于视频目录 #102062
    • 安全处理本地 CLI TTS 流失败 #102347
    • 保持 Inworld TTS 错误预览为有效 Unicode #102608
    • 保持 OpenAI 图像身份验证日志为有效 Unicode #102611
    • 保持大型附件文件文本的 UTF-16 安全 #102634
    • 限制停滞的 OpenAI Realtime 设置请求 #102860
    • 为 Inworld 语音发现添加有界超时 #102965
    • 限制 Azure Speech 语音发现请求 #102984
    • 重试 Google Lyria 的临时无音频响应 #103326
    • 接受用于受管传出图像的本地文件 URL #103540
    • 当已取消的运行仍在启动时停止转录捕获 #104123
    • 将 OpenRouter 请求策略应用于音乐生成 #104835
    • 保留远程附件文件名前缀 #105547
    • 修复跨平台本地媒体扩展名解析 #105614
    • 防止 Logbook 存储格式错误的快照图像 #106473
    • 安全跳过无效的 Gradium 配置 #108551
    • 忽略空白的 Vydra 语音 API 密钥 #108757
    • 忽略空白的 MiniMax 语音 API 密钥 #108777
    • 将空白的 Inworld API 密钥视为未配置 #108783
    • 拒绝空白的 ElevenLabs 实时转录密钥 #108916
    • 忽略空白的 xAI 音频 API 密钥 #108953
    • 集中处理 Discord 和语音通话的 TTS 请求准备 #109640
    • 当目录行格式错误时保留有效的 Microsoft 语音 #110784
    • 当清理失败时保留已完成的 OpenRouter 音乐 #111056
    • 在媒体存储中规范化混合大小写的 MIME 头 #111184
    • 拒绝格式错误的 Inworld TTS 音频 #111197
    • 拒绝格式错误的 xAI 流式音频 #111201
    • 当目录行格式错误时,OpenRouter 保留有效的视频模型 #111637
    • 在 Copilot 会话中保留已卸载的图像,并恢复 Telegram 发布 QA #112972
    • 拒绝格式错误的 Xiaomi TTS 音频 #113106
    • 拒绝格式错误的 Volcengine TTS 音频负载 #113109
    • 在格式错误的目录中保留有效的 Azure 语音 #115067
    • 一致地拒绝格式错误的 Google 视频操作 JSON #115465
    • 防止重复的 Mistral 实时转录 #116774
    • 接受 OpenRouter 进行中的视频任务 #116986
    • 在设置失败后清理媒体 CLI 临时数据 #117716
    • 在拆除期间保留 GPT-Live 中继错误结果 #117978
    • 支持当前 OpenAI 语音模型快照 #118475
    • 将配置的语言应用于 CLI 音频转录 #118501
    • 默认强制保留播放缓存 #119417
    • 在提供商媒体响应格式错误后释放套接字 #120351
    • 在重连后重置 Mistral 转录状态 #120813
    • 遵守 Comfy 音乐生成的请求超时 #123444
    • 正确分类真实的 TTS 提供商超时 #125530
    • fix(media): 在主机时钟回滚后恢复附件播放 #128363
    • fix(audio): 使用混合大小写的 Path 发现已安装的 Windows 转录工具 #129235
    • fix(xai): 在重新打开时保留转录音频 #130297
    • 正确报告 OpenRouter 图像能力错误 #99079
命令行与诊断

Doctor 现在会在修复前停止过期构建,安全迁移所覆盖的遗留代理数据库而不牵连无关状态,并在共享数据库损坏时为操作员提供具体的恢复路径。损坏的共享状态会被诊断出来并保持不变,以便手动恢复或修复。

来源和完整更改列表

Bug 修复

  • 当 Gateway 代理运行未完成时返回非零退出码 #111126
  • 使只读 SQLite 诊断具备日志感知能力 #113404
  • 保持 Doctor SQLite 迁移与恢复一致 #114694
  • 保留配对节点连接和本地推理边界 #114857
  • 使用 doctor 修复无标题会话记录 #115080
  • Doctor 在复用的沙箱工作区中安全修复遗留状态 #115784
  • 使用 doctor 修复重复的会话身份 #116703
  • 防止 Doctor 恢复用空归档替换有效会话索引 #117221
  • 统一环境、路径和取消语义 #120359
  • 防止针对性配置写入迁移无关状态 #120451
  • 让节点和设备 CLI RPC 不访问可写共享状态 #123674
  • 让状态命令不进行共享状态写入 #124142
  • 防止 Gateway 诊断修改共享状态 #125178
  • 使用 Doctor 恢复重建的遗留工作区状态 #126059
  • 为显式多代理名册恢复 CLI 默认值 #126418
  • fix(doctor): 扫描所有已配置的代理会话存储 #130895
  • fix(doctor): 限制已恢复会话迁移的范围 (#126265) d06c0b8
  • 在 /context map 中显示会话使用情况 #102633
  • 在 OpenClaw 各界面中保持截断的 Unicode 文本有效 #102823
  • 阻止停滞的节点摄像头下载永久挂起 #103266
  • 在 zsh 中加载 ClawDock 时保留 PATH #103805
  • 在控制台输出中显示任务注册表恢复错误 #103976
  • 防止健康的本地音频检查导致 Doctor 失败 #104237
  • 在 OpenClaw Doctor 中注册本地音频检查 #104242
  • 在 OpenClaw Doctor 中恢复本地音频信息 #104281
  • 统一 CLI 工具超时和取消诊断 #104319
  • 在错误消息中保留一致详情 #105927
  • 让 doctor 迁移遗留操作员审批 #108203
  • 限制停滞的容器检查探测 #109199
  • 在短文件系统读取中修复已迁移的记录路径 #109400
  • 让纯读取 CLI 命令不进入可写数据库生命周期 #110732
  • 防止身份更新创建未知代理 #111268
  • 拒绝文档搜索结果中的格式错误 UTF-8 #111288
  • 在 CLI 输出中报告真实 SQLite 路径和当前构建 SHA #111659
  • 在运行时覆盖中保留已配置代理 #113146
  • 将普通 agent exec 输出恢复到 stdout #114043
  • 在调试代理响应中遵循背压 #114076
  • 保持远程 Gateway 调用为只读 #115664
  • 为不完整的 MCP 探测返回失败状态 #116664
  • 正确报告 Web 能力提供程序失败 #116674
  • 保持 Doctor 修复后的会话行可读 #117207
  • 在任务 CLI 命令中遵循父级选项 #117528
  • 使承诺取消原子化且真实 #117591
  • 在提供不安全修复指导前停止过期的 Doctor 构建 #117913
  • 在卡住会话诊断中恢复当前助手上下文 #117945
  • 当 Linux 节点服务将在注销后停止时发出警告 #118430
  • 遵循仅限 Doctor 的显式迁移修复 #118700
  • 在 Doctor 修复后刷新实时会话缓存 #118766
  • 在 Doctor 迁移后无需重启即可恢复 exec #118769
  • 为 Unicode 控制器名称对齐 TaskFlow 列 #118801
  • 在调试捕获下释放停滞的响应清理 #119706
  • 为过滤后的节点列表报告准确总数 #119744
  • 使用 doctor 安全恢复遗留代理数据库 #120906
  • 在 Microsoft Foundry 设置期间写入有效图像默认值 #121370
  • 在下载失败时保留摄像头输出 #122550
  • 修复遗留多代理名册升级 #123027
  • 在遗留多代理升级期间保留 cron 所有权 #123372
  • 使 Fal 图像生成在入门后立即生效 #123447
  • 让已迁移代理保留在其现有工作区 #123808
  • 恢复所有者安全的多代理状态命令 #123826
  • 在诊断中保持显式代理集群无所有者 #123831
  • 在只读 CLI 命令中保留显式代理目标 #123868
  • 为 Policy CLI 命令添加显式代理所有权 #123880
  • 在诊断中报告物理 SQLite 会话存储路径 #124102
  • 解除 macOS computer-use 测试台阻塞并恢复节点详情 #124536
  • 在记录迁移期间警告格式错误的最终记录 #124977
  • 在分发前警告不可用的 Crabbox 云工作配置文件 #124995
  • 防止离线 Gateway 命令更改共享状态 #125102
  • 在多代理更新期间保留配对迁移所有权 #125417
  • 在设置状态迁移后保留自定义工作区 #125435
  • 为失败的代理轮次返回失败退出码 #125557
  • 修复过期的 Crabbox 云工作配置文件 #125991
  • 保留多个项目共享的受管检出 #126004
  • 将原生项目指令使用情况报告为未验证 #126010
  • 为大型存储限制 Doctor 会话条目修复 #126353
  • 在干净的多代理集群上停止错误的遗留会话警告 #126551
  • Doctor 修复无标记的遗留多代理名册 #126595
  • 保留实时节点清单失败 #126609
  • 为仅媒体提供程序启用 CLI 身份验证 #126711
  • 为 Doctor 提供可操作的状态数据库错误 #126985
  • fix(sessions): 在 CLI 中显示协作详情 #128035
  • fix: 澄清云分发和心跳超时诊断 #128434
  • fix(cli): 在输入路径旁打印推理结果 #128523
  • fix(doctor): 限制媒体迁移会话扫描 #128816
  • fix(crabbox): 保留终端提供程序错误 #129020
  • fix(cli): 在联系 Gateway 前验证节点选项 #130352
  • fix(crabbox): 保留设置失败原因并指明其阶段 #130425
  • fix(device-pair): 在归档迁移源前验证保留的订阅者 #131008
  • 通过能力 CLI 传播 Web 提供程序失败 5df1957
  • 保持上下文溢出诊断为有效 Unicode #102618
  • 保持会话密钥表 Unicode 安全 #103010
  • 拒绝不安全的字节大小值,而不是静默舍入 #103100
  • 保持截断的 cron 列表 Unicode 字符完整 #103616
  • 在 ClawDock 设置期间保留调用方 shell 变量 #103837
  • 拒绝格式错误的节点摄像头和屏幕媒体负载 #104414
  • 在 Crabbox 错误详情中保留表情符号边界 #104612
  • 在 CLI 边界拒绝十六进制 Fleet CPU 限制 #105158
  • 拒绝非规范的轨迹导出请求编码 #105557

    • 从所选代理工作区解析身份文件 #106087
    • 保持 CLI 和 Skill Workshop 截断对 emoji 安全 #106370
    • 拒绝非十进制 Workspaces 网格坐标 #107478
    • 保留带有错误长度的小型代理捕获正文 #108292
    • 限制 doctor 中的旧版 crontab 检查 #109107
    • 拒绝已弃用的音频转录设置并保留迁移 #109226
    • 对停滞的 debug-proxy CONNECT 打开操作设置超时 #109269
    • 在缩短的 Bash 会话标识符中保留 emoji #109468
    • 在 Doctor 修复期间保留旧版 ACP 重放状态 #109685
    • 限制 Doctor 对大型心跳会话转录的扫描 #110721
    • 在 CLI JSON 输出中报告回退会话变更 #111645
    • 尊重本地代理运行的显式超时 #114621
    • 使 Doctor 持久化修复后的默认代理名册 #117115
    • 统一 emoji 和 CJK 标签的会话清理摘要 #117459
    • 防止已完成的 TaskFlow 取消操作增大待处理压力 #117714
    • 当 APNs 拒绝 nodes 推送测试时返回失败 #117737
    • 阻止 Doctor 要求 SQLite 会话使用过时的转录 #119940
    • 恢复已归档会话 JSONL 中的终端 NUL 尾部 #120041
    • 提前验证 Gmail webhook 的 Tailscale 模式 #120272
    • 对未标记的快照使用节点的默认相机 #120430
    • 原子化发布 Browser 快照文件 #122327
    • 允许在本地 Gateway 运行时添加代理 #123490
    • 防止短文件系统写入后相机文件被截断 #123736
    • CLI 错误会指明支持的代理选择器 #124018
    • 使节点状态过滤器准确且权限安全 #124348
    • 拒绝无效的显式会话存储目标 #124515
    • 为无配置 exec 恢复主代理名册 #124805
    • fix(cli): 允许嵌套代理 exec --timeout 覆盖父级标志 #125256
    • 为无法访问的 Gateway 命令显示恢复指导 #125556
    • 解释空的 MCP 探测 #125611
    • 对重复的在途代理运行返回失败 #125757
    • 在旧版状态迁移期间尊重 --agent #125948
    • 当 New Chat 保留受管理的 worktree 时发出警告 #126771
    • 在 CLI 列表中保留已记录的会话身份 #126921
    • 对无效的 Nodes CLI 输入返回机器可读错误 #127223
    • fix(cli): 对会话验证失败返回 JSON #128224
    • fix(cli): 检查音频提供商时尊重所选代理 #128292
    • fix(cli): 对会话列表失败返回 JSON #128316
    • fix(cli): 对轨迹导出失败输出 JSON #128351
    • fix(cli): 报告容器启动失败而不是 exit 1 #128406
    • fix(cli): 拒绝不存在的转录摘要路径 #128589
    • fix: SQLite 锁加固后状态检查超出 CPU 限制 #128884
    • fix(flows): 失败和等待中的工作流显示为健康 #129156
    • fix(doctor): 在显式所有权下 cron 迁移忽略 agents.defaults.systemAgent [AI 辅助] #130190
    • fix(cli): 拒绝缺失的可重复推理输入 #130608

    文档

    • 在 CLI 帮助中澄清平台特定的相机默认值 #107942
安全与权限

Doctor 的旧版身份验证迁移现在会在所覆盖的旧版到 SQLite 迁移中保留完整凭据、已存储在 SQLite 中的凭据以及所选的 ChatGPT 账户。所有权不明确、文件不可读以及无法验证的凭据仍会阻止迁移。

来源和完整更改列表 **Bug 修复** - 创建具有仅所有者权限的备份归档 [#102403](https://github.com/openclaw/openclaw/pull/102403) - 将经典语音流限制为已认证的 Twilio 通话 [#102887](https://github.com/openclaw/openclaw/pull/102887) - 修复旧版审批架构,避免启动卡住 [#109876](https://github.com/openclaw/openclaw/pull/109876) - 完成仅限 SQLite 的认证配置迁移 [#114033](https://github.com/openclaw/openclaw/pull/114033) - 使用当前 OpenShell 命名限制恢复沙箱创建 [#115058](https://github.com/openclaw/openclaw/pull/115058) - 修正嵌入式 TUI 结果、排队取消和错误隐私 [#117044](https://github.com/openclaw/openclaw/pull/117044) - 从语音通话提供商错误中隐藏凭据 [#117304](https://github.com/openclaw/openclaw/pull/117304) - 防止生成的媒体文本劫持投递 [#118780](https://github.com/openclaw/openclaw/pull/118780) - 将 Gateway 锁保留在所选状态目录内 [#120110](https://github.com/openclaw/openclaw/pull/120110) - 将外部编码会话目录与操作员 HOME 隔离 [#122983](https://github.com/openclaw/openclaw/pull/122983) - 在多用户 Gateway 上隐藏无所有者的主机会话目录 [#123421](https://github.com/openclaw/openclaw/pull/123421) - 阻止代理 SQLite 命令打开实时 OpenClaw 状态 [#123816](https://github.com/openclaw/openclaw/pull/123816) - 在 Voice Call 中保持来电者语音为用户优先级 [#123846](https://github.com/openclaw/openclaw/pull/123846) - 防止过期的 Codex 审批中止当前回合 [#125671](https://github.com/openclaw/openclaw/pull/125671) - 当 Code Mode 别名失效时安全失败 [#126660](https://github.com/openclaw/openclaw/pull/126660) - fix(sandbox): 恢复可靠的 OpenShell 执行和工作区完整性 [#130031](https://github.com/openclaw/openclaw/pull/130031) - fix(openshell): 在并发镜像命令期间保留文件写入 [#130447](https://github.com/openclaw/openclaw/pull/130447) - 在 doctor 认证迁移期间保留凭据 [#97881](https://github.com/openclaw/openclaw/pull/97881) - 在旧版认证修复期间保留 SQLite 凭据 [#98245](https://github.com/openclaw/openclaw/pull/98245) - 隔离 gateway 工作区补丁应用 [e5240b9](https://github.com/openclaw/openclaw/commit/e5240b9) - 在媒体生成中遵循 MiniMax 请求策略 [#102072](https://github.com/openclaw/openclaw/pull/102072) - 使用 UTF-8 字节强制工具调用负载限制 [#102450](https://github.com/openclaw/openclaw/pull/102450) - 保持沙箱会话标签 Unicode 安全 [#102969](https://github.com/openclaw/openclaw/pull/102969) - 要求对 Codex app-server 命令进行人工审批 [#103457](https://github.com/openclaw/openclaw/pull/103457) - 阻止语音通话日志记录对话内容 [#103555](https://github.com/openclaw/openclaw/pull/103555) - 将精确工具允许列表保留在正确的工厂上 [#104213](https://github.com/openclaw/openclaw/pull/104213) - 限制 Gradium TTS 凭据出站 [#105169](https://github.com/openclaw/openclaw/pull/105169) - 将通道配对状态迁移到 SQLite [#105802](https://github.com/openclaw/openclaw/pull/105802) - 将带前导连字符的 worktree 基础引用视为引用,而不是 Git 标志 [#106048](https://github.com/openclaw/openclaw/pull/106048) - 使用共享 SSRF 策略保护 MiniMax 图像请求 [#106163](https://github.com/openclaw/openclaw/pull/106163) - 安全迁移旧版 Reef 对等信任 [#108417](https://github.com/openclaw/openclaw/pull/108417) - 在提供商错误后释放 Reef 保护流 [#109196](https://github.com/openclaw/openclaw/pull/109196) - 中和 Google Meet 出席 CSV 导出中的公式 [#109725](https://github.com/openclaw/openclaw/pull/109725) - 在恢复的回合中保留 Codex 会话权限 [#111136](https://github.com/openclaw/openclaw/pull/111136) - 在替换后拒绝过期的共享会话变更 [#113023](https://github.com/openclaw/openclaw/pull/113023) - 将 WhatsApp 语音转录标记为不可信音频文本 [#113111](https://github.com/openclaw/openclaw/pull/113111) - 保留已迁移的凭据和共享代理会话 [#113559](https://github.com/openclaw/openclaw/pull/113559) - 防止并发 Codex 运行期间出现错误的 exec-deny 失败 [#113929](https://github.com/openclaw/openclaw/pull/113929) - 在实时语音咨询中保留所有者授权 [#114163](https://github.com/openclaw/openclaw/pull/114163) - 当 main 拥有 OAuth 配置时完成认证迁移 [#114226](https://github.com/openclaw/openclaw/pull/114226) - 防止只读和过期的 Workboard 仪表板操作 [#114686](https://github.com/openclaw/openclaw/pull/114686) - 为 IPv6 主机重建有效的 Voice Call webhook URL [#115135](https://github.com/openclaw/openclaw/pull/115135) - 每次 Code Mode 运行复用一个 MCP 命名空间模型 [#115459](https://github.com/openclaw/openclaw/pull/115459) - 启动时自动迁移已退役的 node-host 状态 [#115495](https://github.com/openclaw/openclaw/pull/115495) - 通过提升的 Codex 审批保留请求者 [#116152](https://github.com/openclaw/openclaw/pull/116152) - 统一 Doctor 的旧版认证迁移 [#117361](https://github.com/openclaw/openclaw/pull/117361) - 迁移期间保留所选 ChatGPT 账户 [#118205](https://github.com/openclaw/openclaw/pull/118205) - 使语音通话回调重试持久且令牌安全 [#118754](https://github.com/openclaw/openclaw/pull/118754) - 从 Parallel 搜索错误中隐藏凭据 [#120205](https://github.com/openclaw/openclaw/pull/120205) - 为嵌入式会话所有权保留隐身范围 [#120215](https://github.com/openclaw/openclaw/pull/120215) - 防止跨运行时设备身份竞争 [#120643](https://github.com/openclaw/openclaw/pull/120643) - 拒绝过期的 Cloud Worker 捆绑隧道 [#121081](https://github.com/openclaw/openclaw/pull/121081) - 将作用域内的全局会话事件投递给正确的观察者 [#121166](https://github.com/openclaw/openclaw/pull/121166) - 通过可信代理浏览器认证使 Cloud Worker 可用 [#121671](https://github.com/openclaw/openclaw/pull/121671) - 恢复代理门户列表中的可用 URL [#123149](https://github.com/openclaw/openclaw/pull/123149) - 从自定义代理目录恢复旧版 OAuth 密钥 [#123187](https://github.com/openclaw/openclaw/pull/123187) - 阻止 Beam 镜像上传跟随重定向 [#123848](https://github.com/openclaw/openclaw/pull/123848) - 对安全会话 URL 应用边缘认证 [#125982](https://github.com/openclaw/openclaw/pull/125982) - 仅显示可执行的 Codex 审批范围 [#125995](https://github.com/openclaw/openclaw/pull/125995) - 防止强制 worktree 清理删除活动运行 [#126174](https://github.com/openclaw/openclaw/pull/126174) - 将远程节点执行与 Gateway 进程控制分离 [#126253](https://github.com/openclaw/openclaw/pull/126253) - 防止已退役的认证文件阻塞已迁移的凭据 [#126562](https://github.com/openclaw/openclaw/pull/126562) - fix(state): 防止分歧的已退役设备身份阻塞 gateway 就绪 [#126748](https://github.com/openclaw/openclaw/pull/126748) - 新安装以规范的共享凭据所有权开始 [#126783](https://github.com/openclaw/openclaw/pull/126783) - fix(auth): 当认证存储需要迁移时停止建议重试 [#127306](https://github.com/openclaw/openclaw/pull/127306) - fix(auth): 保留非锁存储写入错误 [#128049](https://github.com/openclaw/openclaw/pull/128049) - fix(agents): 停止推荐不可用的 gateway 工具 [#128190](https://github.com/openclaw/openclaw/pull/128190) - fix(voice-call): 将 ngrok 认证排除在 argv 之外 [#129330](https://github.com/openclaw/openclaw/pull/129330) - fix(openshell): 当 gateway 在首次 exec 前重启时,远程工作区从未初始化 [#129809](https://github.com/openclaw/openclaw/pull/129809) - fix(gateway): 将会话事件保留在其所属代理内 [#130039](https://github.com/openclaw/openclaw/pull/130039) - fix(auth): 在临时状态 exec 和代理删除中遵循共享存储所有权 [#130437](https://github.com/openclaw/openclaw/pull/130437) - fix(nodes): 在请求浏览器中显示配对设备启动审批 [#130573](https://github.com/openclaw/openclaw/pull/130573) - fix: 在清理和附加期间保留原生会话所有权 [#130864](https://github.com/openclaw/openclaw/pull/130864) - fix(openshell): 在镜像同步期间保留嵌套主机符号链接 [#131122](https://github.com/openclaw/openclaw/pull/131122) - Doctor 将模型目录凭据复制到 SQLite [#87166](https://github.com/openclaw/openclaw/pull/87166) - 安全拒绝格式错误的工具可用性表达式 [#92411](https://github.com/openclaw/openclaw/pull/92411) - 保护提供商托管的视频下载免受私有网络访问 [#101854](https://github.com/openclaw/openclaw/pull/101854) - 隐藏敏感的 Twilio webhook 诊断信息 [#102089](https://github.com/openclaw/openclaw/pull/102089) - 防止安全文本限制处出现损坏的 Unicode [#102266](https://github.com/openclaw/openclaw/pull/102266) - 保持截断的工具策略审计标签为有效 UTF-16 [#102464](https://github.com/openclaw/openclaw/pull/102464) - 阻止 iOS 重连请求不必要的审批 [#102661](https://github.com/openclaw/openclaw/pull/102661) - 在日志中保持 Unicode 令牌提示格式良好 [#103341](https://github.com/openclaw/openclaw/pull/103341) - 在语音通话事件日志中隐藏来电者电话号码 [#103547](https://github.com/openclaw/openclaw/pull/103547) - 保持已隐藏的令牌提示为有效 Unicode [#103843](https://github.com/openclaw/openclaw/pull/103843) - 在表情符号周围保持掩码凭据有效 [#104800](https://github.com/openclaw/openclaw/pull/104800) - 在表情符号周围保持 API 密钥预览有效 [#104810](https://github.com/openclaw/openclaw/pull/104810) - 按 UTF-8 字节大小验证沙箱环境限制 [#105017](https://github.com/openclaw/openclaw/pull/105017) - 修正主目录同级目录的沙箱逃逸路径 [#106603](https://github.com/openclaw/openclaw/pull/106603) - 显示认证存储锁清理失败 [#107427](https://github.com/openclaw/openclaw/pull/107427) - 拒绝格式错误的 Telnyx webhook 时间戳 [#107565](https://github.com/openclaw/openclaw/pull/107565) - 保持系统代理审批文本 Unicode 安全 [#108298](https://github.com/openclaw/openclaw/pull/108298) - 将 Plivo 回调固定到配置的 webhook 路径 [#112559](https://github.com/openclaw/openclaw/pull/112559) - 针对公共路径验证 Twilio webhook [#112800](https://github.com/openclaw/openclaw/pull/112800) - fix(sandbox): 在容器逃逸提示中显示 POSIX 路径 [#114209](https://github.com/openclaw/openclaw/pull/114209) - 保持排队审批命令标签 Unicode 安全 [#118566](https://github.com/openclaw/openclaw/pull/118566) - 在强制 exec 模式中保留 POSIX shell 内建命令 [#119351](https://github.com/openclaw/openclaw/pull/119351) - 清理失败的 SSH 沙箱设置 [#121457](https://github.com/openclaw/openclaw/pull/121457) - 允许只读操作员复制保留的任务结果 [#122841](https://github.com/openclaw/openclaw/pull/122841) - 保留安全的 Windows SQLite 目录诊断 [#123023](https://github.com/openclaw/openclaw/pull/123023) - 对未配置的多用户调用方隐藏主机会话目录 [#123438](https://github.com/openclaw/openclaw/pull/123438) - 解释可见会话工作目录拒绝 [#123829](https://github.com/openclaw/openclaw/pull/123829) - 保持只读设备身份检查无锁 [#124745](https://github.com/openclaw/openclaw/pull/124745) - 加固 Crabbox Cloud Worker Desktop 预配 [#126417](https://github.com/openclaw/openclaw/pull/126417) - fix(gateway): 保护并发云会话放置 [#129224](https://github.com/openclaw/openclaw/pull/129224) - 在代理工具中解析 Tavily 凭据 [#97827](https://github.com/openclaw/openclaw/pull/97827)
插件和安装

插件升级 现在会在冲突的旧数据可证明为过期时保留规范的 SQLite 安装和状态记录,归档旧文件以便恢复,并允许启动继续。较新的或含义不明的旧状态以及归档失败仍会阻塞,以便 Doctor 可以重试而不丢弃任何一份副本。

来源和完整变更列表

Bug 修复

  • 收敛冲突的旧插件安装元数据 #107961
  • 当规范行较新时归档冗余的插件状态旁路文件 #110083
  • 为捆绑的云工作器安装生产依赖 1644bef
  • 在云工作器捆绑包中包含所需的工作区包 20b7a9f
  • 防止启动时重复 Codex 绑定迁移 #103281
  • 通过 doctor 修复 Voice Call SQLite 架构升级 #104752
  • 防止插件元数据读取修改共享状态 #106103
  • 为原生会话发现添加控制和更清晰的错误 #107162
  • 在输出管道错误时干净地失败 OpenCode 会话读取 #108218
  • 对 Voice Call 状态遵循 OPENCLAW_STATE_DIR #109284
  • 将插件状态读取保持在可写 SQLite 生命周期之外 #113204
  • 恢复 MXC 预配和 Windows 工作区工具执行 #115399
  • 在慢响应后保持 Beam 镜像重试继续 #116174
  • 使用内置包启动源码构建的云工作器 #122400
  • fix: 防止跨扩展的波浪号展开中 $-pattern 注入 #123004
  • 保持运行时依赖单一归属并保留空的子代理完成 #126119
  • 限制过期的插件状态清理 #126827
  • fix: 允许插件状态值最大 1 MiB #130387
  • fix(cloud-workers): 构建完整的源运行时工件 #130735
  • 修复云工作器捆绑包完整性验证 553c245
  • 保持较长的 oc-path 错误预览 Unicode 安全 #102527
  • 保持截断的安装错误 Unicode 安全 #102833
  • 在 1Password 审计输出中保留 Unicode #106424
  • 在 Logbook 分析中拒绝无效的 12 小时时间 #107191
  • 当 Linux Canvas 套接字监控回退到轮询时发出警告 #109502
  • 在注册表切换期间保持插件托管媒体可用 #112515
  • 将会话变更事件交付给仅插件监听器 #116948
  • 保持裁剪的 Beam 镜像文本为有效 Unicode #117671
  • 修复 Beam 上传链接和最小 Gateway 启动 #120927
  • 为复制的系统事件快照保留精确身份 #120984
  • fix(beam): 服务关闭后停止镜像 #126589
  • fix(diffs): 在统一构建中解析查看器资源 #129391
消息和通话

受影响的 Google Meet 和 Teams 会话 现在会在拆除完成前等待本地音频桥停止。Google Meet 还会在分发前拒绝格式错误的节点控制请求,并保持本地音频诊断有界且可读。

来源和完整变更列表

Bug 修复

  • 重试瞬时的回复会话初始化冲突 #105754
  • 使 Teams 会议加入和转录可靠 #110615
  • 在仅消息工具路由上交付 Codex 生成的图像 #110893
  • 为每个会话提供一个权威交付路由 #113225
  • 从远程 Codex 工作区交付文件和生成的图像 #115668
  • 防止持续入站消息饿死回复 #115682
  • 识别消息工具对当前会话的回复 #116560
  • 限制实时会议音频播放 #116589
  • 在已证明的未发送失败后保留最终回复恢复 #117597
  • 限制会议回传音频和进程保留 #117733
  • 直至发送完成更新持久出站生产者租约 #118663
  • 启动后恢复持久出站重试 #118694
  • 防止并发恢复期间重复出站交付 #119966
  • 防止代理交付重复和丢失 #120108
  • 当防抖分发失败时重试入站消息 #122384
  • 交付请求的媒体,同时保持图像检查私有 #124910
  • fix(agents): 识别显式当前来源回复 (#113554) 3a4b3df
  • 在 30 秒后停止停滞的 Google Meet 请求 #102149
  • 在 30 秒后停止停滞的 Google Meet 日历查找 #102157
  • 让 Google Meet 会话与其加入的代理保持关联 #102331
  • 处理媒体指令中的大写文件 URL #103490
  • 使 Google Meet 离开时移除 Chrome 参与者 #103522
  • 使 Google Meet 标签页复用对非英语账户安全 #103719
  • 在本地启动前拒绝无效的 Google Meet URL #104687
  • 验证 Calendar 派生的 Google Meet 链接 #104863
  • 防止慢速发送期间重复设备配对提醒 #106395
  • 拒绝格式错误的会议音频负载 #106474
  • 拒绝格式错误的 voice-call 音频帧 #106859
  • 在碎片化输出中保留可操作的 ngrok 错误 #107122
  • Codex 轮次在进度回复后继续 #108487
  • 将频道重放结算绑定到正确的入站声明 #109117
  • 统一 Google Meet 实时音频处理 #109413
  • 取消时立即停止 Twilio TTS 节奏 #109618
  • 将空白的 Twilio 设置凭据视为缺失 #109674
  • 加固恢复的会议浏览器会话 #110089
  • 加固 Google Meet 回传桥恢复 #110092
  • 记录环境群组召回并等待 Signal 清理 #110413
  • 等待会议音频桥进程停止 #110548
  • 使 Nextcloud Talk 和 Nostr 入站持久化 #110653
  • 当 Codex 会话变更时通知频道用户 #110856
  • 停止过期的 Codex 重试并显示重发通知 #110980
  • 将语音和会议咨询路由到配置的默认代理 #111749
  • 在麦克风捕获路径上验证会议回传 #112939
  • 拒绝来自格式错误提供商 JSON 的损坏 voice-call 标识符 #114267
  • 在跨代理公告中保留生成的媒体 #115126
  • 当响应体停滞时保留插件请求超时 #116166
  • 在关闭期间关闭 voice-call 媒体连接 #116536
  • 限制慢速电话语音播放队列 #116549
  • 将原生实时咨询限定到其 voice-call 桥 #116559
  • 限制 Discord 实时语音播放内存 #116574
  • 在缓冲前拒绝过大的本地附件 #116667
  • 在会话拆除后停止过期的 Voice Call 咨询 #116701
  • 为工具创建的 Voice Call 保留受信任上下文 #116856
  • 清理消息工具回复并抑制错误的无回复回退 #116909
  • 防止长回复导致 voice-call 音频节奏变慢 #117162
  • 通话结束后释放 Twilio 和 Plivo 状态 #117201
    • 在能力发现期间保留 Discord 语音转录 #117373
    • 在 DAVE 过渡零时恢复加密的 Discord 语音 #117381
    • 限制 Voice Call 回放元数据增长 #117437
    • 在桥接替换期间保留 Voice Call 转录 #117686
    • 在模型和历史路径中保留附件意图 #117841
    • 在回复说明旁保留相对附件 #118746
    • 当出站适配器不可用时重试排队消息 #119371
    • 限制出错的通道入口结算 #120104
    • 保留通道进度接受结果 #120171
    • 将通道图像仅交付一次给 Claude CLI 回合 #120721
    • 防止 Gateway 重启后出现重复的最终回复 #121908
    • 停止将已抑制的通知报告为已送达 #122421
    • 在多智能体迁移后恢复 CLI 消息发送 #123450
    • 写入失败时保留 Google Meet 输出文件 #123959
    • 在 Telegram 和网页聊天中交付 Codex 输入选项 #124146
    • 通过中间件保留消息送达回执 #125497
    • 停止空闲通道监视器反复锁定 SQLite #126073
    • fix: 网关重启后恢复的主会话回合被投递到会话的最后路由,而不是静默完成 #127342
    • fix: 生成的媒体丢失文件名、时长和尺寸 #128895
    • fix: Telegram 私有话题在网关重启后恢复 #128896
    • fix(googlechat): 在输入状态中使用智能体身份 #129172
    • 管道失败时干净地关闭 Google Meet 音频会话 #102105
    • 保持截断的 Google Meet 日志值 UTF-16 安全 #102617
    • 在分发前验证 Google Meet 节点控制请求 #103752
    • 使 Google Meet DTMF 延迟元数据与运行时行为保持一致 #104119
    • 移除重复的 set-profile 操作列表 #104235
    • 在 voice-call 进程诊断中保留有效 Unicode #104260
    • 保持 Google Meet 字幕纪元在重新加载之间唯一 #105221
    • 拒绝非十进制 Google Meet 转录游标 #106384
    • 防止重叠的过期通话挂断 #106396
    • 在智能体信封中保留 Unix 纪元时间戳 #106407
    • 将 meeting-bot 信号退出和超时视为失败 #107614
    • 保持 Voice Call 自定义日志尾部对齐且 UTF-8 安全 #108322
    • 忽略空白的 Voice Call 提供商环境变量值 #108816
    • 保持 voice-call 继续轮询在其截止时间之内 #109053
    • 在 ngrok 隧道输出中保留 Unicode #109220
    • 保留 Google Meet 出席 CSV 行 #109926
    • fix(meeting-bot): 保持本地音频诊断在块之间可读 #110703
    • 保持停滞的 Teams 会议设置探测在一个截止时间之内 #111455
    • fix(teams-meetings): 监听探测可配合复用的标签页工作 #111466
    • 允许 Teams 监听探测设置超时 #111486
    • 拒绝格式错误的 APNs 中继响应文本 #111769
    • 规范化节点聊天订阅会话键 #111830
    • 保持新会话投递状态规范化 #113373
    • 在提前唤醒后释放 meeting-audio 拉取定时器 #114526
    • 保持无效配置时区一致 #116103
    • 拒绝重复的 voice-call 媒体流启动 #116508
    • 保持已交付媒体计数与渲染消息一致 #117850
    • 报告错过的 message-tool 回复而不暴露私有输出 #121822
    • 原子地发布 Google Meet 导出 #122306
    • fix(google-meet): 将 ZIP 导出保留在带有尾随分隔符的输出目录旁 #122367
    • fix(reply): 停止宣传不可用的媒体消息工具 #129944
文档

文档链接现在可以正确到达其预期的外部目标和跨页面标题,同时贡献者署名会正确跟随重命名的账户。外部链接检查器 会在每周或手动运行时报告后续漂移,而不会阻止拉取请求。

来源和完整变更列表

Bug 修复

  • 在翻译定稿前保留本地化文档 dde6af2

文档

  • 保持本地化文档导航完整且已翻译 #114993
  • 在生成的成熟度分类中公开链接 44a0c09
  • 在本地化文档链接中保留产品名称 8cd9ad0
  • 为外部镜像文档保留已翻译页面 d6e9cbd
  • 修复成熟度分类闭合标签的缩进 de17534
  • 说明 Slack 音频片段和语音输入限制 #102410
  • 修复外部文档链接并添加非阻塞审计 #114643
  • 修复过期的文档链接和贡献者署名 #114746
  • 修复文档锚点和拼写检查漂移 #122960
  • 文档:修复四个损坏的跨页面锚点链接 #128278
  • 文档:澄清 Daytona cloud-worker 类不兼容问题 #130814
  • 文档:移除不受支持的 Daytona cloud-worker 配置指南 #130824

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw