OpenClaw 24h 更新快报(2026-10-24):子代理恢复、模型家族、控制台启动体积

内容管家 其他评论0字数 2173阅读7分14秒阅读模式
OpenClaw 24h 更新快报(2026-10-24):子代理恢复、模型家族、控制台启动体积

OpenClaw 24h 更新快报(2026-10-24):子代理恢复、模型家族、控制台启动体积

过去 24 小时 openclaw/openclaw 合并了超过 500 个 PR,主线集中在三处:一是 Gateway 重启后子代理与父会话的恢复链路被系统性补全,"派出去就没人管"的任务不再长期悬挂;二是模型目录开始向插件暴露规范化的"模型家族"事实,模型路由与能力判断不必再靠模型名猜测;三是 Control UI 的启动包体继续被压缩,首屏 JavaScript 已压到 295 KB 以内。安全侧同步完成了运行时分位数与依赖公告在稳定分支上的回补。

下面按主题梳理其中对使用者有实际影响的改动。

Agent 会话:重启后的恢复链路被逐段补齐

这一组改动集中解决同一个问题:父进程通过 sessions_spawn 派出的子任务,在 Gateway 崩溃或重启后经常停在 running 状态,既不完成也不失败,请求方只能等清理扫描器兜底。

  • PR #181871(P1)覆盖了"子任务已被接受但尚未真正启动"的窗口期。此前子会话在记录首个生命周期 run 之前崩溃,因为缺少 lifecycleRunId 与 lastRunId,恢复逻辑直接返回 ignored,任务只能等扫描器以"丢失执行上下文"判死,而这条路径的退避是 15 秒翻倍到 5 分钟。修复后这类子任务会立即落为 interrupted 并通过正常完成投递通知请求方,实测线上压力跑从"8 个子任务失败、父进程停滞约 14 分钟"变为 0 次丢失。
  • PR #181901 处理了 Dashboard 直接派生的子任务:排空流程会把子会话的中断状态先落盘,注册表监听器随后才记录,导致启动时把仍在运行的行按错误结算。现在改为走既有的中断保留与 sessions.recover 恢复通道,父进程在子任务完成前保持安静,且只收到一次结果通知。
  • PR #181933 修掉的是父进程通过 sessions_send 内联等待自己子回复时的挂起:子 run 已结束的情况下,确认回执会直接标记"已投递"并解除请求方义务,却没有重新进入清理流程,run 的 cleanupCompletedAt 永远为空,后续轮次与后代结算因此全部卡住。
  • PR #181117 补上了原生子 run 过期后的父会话跟进失败;另有独立提交 784d9ce 让重启后恢复的 Goals 保持运行,c1a97b6 解决了工作区产物过大导致会话无法恢复的问题。

模型目录:引入规范化的"模型家族"事实

对插件作者来说,此前判断"当前模型是不是 Claude 系"只能靠模型 id 前缀去猜。这次合并把这件事做成了协议事实。

  • PR #181685 为 models.list 的模型行与插件请求方目录增加了可选字段 family,取值只来自 provider 或目录元数据,从不从模型名反推。同一个模型不论走哪条路由都报同一个家族:anthropic/claude-opus-5-5、github-copilot/claude-opus-5.5 以及 ClawRouter 中转的同款,都归为 anthropic。宿主通过运行时能力 requester-model-family-v1 声明支持;不支持的宿主则整条不带该字段,缺失即表示未知,而不是"不同"。
  • PR #181923 让 2026-10-23 发布的 Kimi K3.1 Pro 拿到 K3 的完整契约:常开 max 思考档、原生视频输入与推理内容回放。K3.1 明确不支持关闭思考,因此对应的 think off 会给出明确报错而不是供应商 400。PR #181854 同时把 K3.1 Pro 的推荐位置排到了 K3 之前。
  • PR #181895 解决了 Codex 场景下的容量尖峰:单个物理推理通道允许 64 个活跃推理根,此前超过上限就直接抛错,导致子任务批量失败、请求方被迫消耗替换预算。现在注册改为异步 FIFO 排队,容量释放后按到达顺序启动,取消与通道关闭会清空等待者,上限本身保持 64 不变。
  • PR #181475 修正了 Codex 父线程在会话生命周期代际之间被复用时 Stop 失败的问题,取消动作现在只作用于当前 run 拥有的后代,旧代际的后代仍然受保护。

Cron 与自动化:权限判定和模型回退

  • PR #181916 修复了从属主 Discord 私信创建的定时任务在每次执行时都被判为非属主的问题,因此永远拿不到属主私有记忆与属主权柄。根因是准入检查直接复用了带版本号的存档请求方标识,没拿发送者身份去做属主比对;现在改为只传发送者身份,行为与实时消息一致。注意这是"收紧后修复",此前是每次都拒绝,并没有泄露。
  • PR #181669 让系统事件类型的自动化在会话锁定模型失败时直接报告失败,而不是悄悄改用配置的 fallback 回答——这类任务本身不携带任务级模型策略,借用会话回退链等于绕过用户在会话里显式钉住的模型选择。清除钉选即可恢复原有回退行为。
  • PR #181802 修复了 PostgreSQL 下保留型一次性任务无法正确收尾的问题;PR #181219 则去掉了纯 MCP 任务触发的应用重新授权警告。

安全与运行时

  • PR #181620(P1)修掉了一个影响很大的副作用:在使用可信代理认证的 Gateway 上,第一次使用浏览器会向配置写入随机生成的 gateway.auth.password,触发配置变更重启,把所有在途任务打断(实测一次约五分钟的延迟后强制重启)。原因在于浏览器控制是懒启动的,进程内没有 HTTP 监听,却仍然执行了凭据引导。现在生成的密码只存在于 Gateway 进程内,不再落盘,也不会把一个操作者从未配置过的本地直连密码变成可用登录态。
  • PR #181073、PR #181074 与 PR #181341 把运行时安全下限回补到 2026.9.33、2026.10.10 两个维护分支:要求已修补的 Node 24.22.1 与 26.12.1、pnpm 12.15.0,并修复了会让安全流水线失败的生产依赖公告。
  • PR #181123 处理了 macOS 上因非法指令导致的 Gateway 崩溃循环;PR #181089 让崩溃循环隔离后保存的输入可以恢复,不再随隔离一起丢弃。

PostgreSQL 与存储路径

本窗口的数据库改动几乎全部围绕减少语句数与往返次数展开,且都保留原有事务与提交权威边界。

  • PR #181957 把全量记忆重建的索引发布改为批处理:2 万 chunk、2000 来源的一次发布,SQL 语句从 6000 条降到 471 条,少了 5529 次语句与桥接往返,检索与存储结果完全一致。
  • PR #181819 把会话窗口更新并入转写投影写入,一次普通的无工具回合因此少了 3 条 PostgreSQL 语句与 3 次往返;SQLite 保持原有写入路径。
  • PR #181860 加速了 PostgreSQL 索引发布,PR #181837 修复了 schema 发布后启动读取失败的问题,PR #181882 让端口迁移在保留表与自定义 schema 前缀下正常工作。

控制台与构建链路

  • PR #181556 把 Control UI 的启动 JavaScript 从 310,773 字节压到 294,961 字节 gzip(−5.09%),达到 295 KB 目标,只用 7 个 JS 与 1 个 CSS 请求,聊天包装器的安装次数从 88 降到 15。PR #181047 进一步把整条路由的 gzip 体积压低约 3.3%,代价只是构建期多约 2.3 秒 CPU。
  • PR #181190 为大模型选择器加了虚拟滚动,PR #181497 让侧栏 Pages 与 Roster 按需加载,PR #181634 让大配置下的设置页输入保持响应。
  • PR #181806 修好了 main 分支上无法构建的问题:agent-core 包的声明构建按 ES2023 的 lib 编译,而此前引入的 Promise.withResolvers 属于 ES2024,导致 pnpm build 直接失败、无法产出任何 Gateway 制品。
  • PR #181715 让更新器在准备 Git 候选之前就先核对目标所需的 Node 版本,不兼容的候选会被直接跳过,而不是先做快照暂存再失败。

这一天的改动重心明显不在新功能,而在把"任务发出之后没人负责"这类隐性失败逐个变成可观测、可恢复的显式状态,同时把运行时与界面两侧的资源开销继续往下压。

常用链接

 
内容管家

发表评论