OpenClaw 24h 更新快报(2026-11-13):Cron 调度、OpenClaw ID、Gemini 4 模型目录

内容管家 其他评论7字数 2595阅读8分39秒阅读模式
OpenClaw 24h 更新快报(2026-11-13):Cron 调度、OpenClaw ID、Gemini 4 模型目录

OpenClaw 24h 更新快报(2026-11-13):Cron 调度、OpenClaw ID、Gemini 4 模型目录

过去 24 小时,OpenClaw 主线合并了两百余个 PR,真正影响使用体验的集中在三处:调度器把条件检查从运行槽位里拆了出来,长任务不再把定时检查饿死;OpenClaw ID 打通远程登录与设备身份绑定,异地接入不再被降级成“共享所有者”;Google 侧新增 Gemini 4 Hydrogen 与 Decision 模型,模型目录、价格与调用路径同时补齐。以下按主题说明这些改动到底解决了什么问题,以及对使用者意味着什么。

一、Cron 调度:条件检查不再与长任务抢运行槽位

这一轮改动最密集的是调度器。此前一次条件检查在开始之前就要占用一个运行槽位,而整个调度器只有八个槽位。工作循环、长 Agent 轮次、手动启动的任务一旦占满这八个槽位,所有定时检查都要等到有任务结束才会被评估,一个本该每几分钟看一眼的 watcher 可能因此沉默数小时。

PR #197340 把条件检查彻底移出运行槽位。检查最多三个并行进行,不再消耗模型额度与运行预算;条件命中后才去排队等一个空闲槽位,等待期间不计入任务的时间预算。命中的任务不会二次评估检查结果,而是直接用这一次检查的结论执行载荷,空闲槽位则按到期时间先到先得分配。排队的定时 occurrence 变成持久状态,Gateway 重启后仍留在队列里;配置热重载时,接手的新调度器同样会把槽位交给它。

围绕调度器还有三处独立修复。PR #197606 处理了配置热重载误伤运行中任务的问题:在 Gateway 运行期间执行类似“openclaw config set cron.skipMissedJobs true”的改配置会触发 cron 热重载,旧调度器此前经由 shutdown drain 退出,顺带中止了所有进行中的 cron 任务,并把它们记为“job interrupted by gateway restart”。现在移交只停掉调度与流监听,不再走 shutdown drain,已在执行的任务可以跑完,广播、hook、完成 webhook 与 announce 投递照常发出。

PR #197774 修正了排队依据:此前调度器靠“是否捕获到 operator source”决定某个 session 类型的任务要不要等待目标会话空闲,现在改为一律由目标会话自己决定等待顺序。这会改变队列排列,但不会给系统发起的会话额外授予自动化管理权限。

  • PR #197695:supervisor 型 cron 任务把工作交给子会话(sessions_spawn,默认等待完成消息)后以 NO_REPLY 收尾时,不再被判为“cron: job execution timed out”;子会话几秒内作答,任务就能立刻以成功结束,使用 --announce 时答案也会被投递出去。
  • PR #197667:自动化任务派生子代理后再调用 sessions_yield,此前会被记为“accepted continuation children could not transfer terminal delivery”失败并计入错误退避与失败告警,现在隔离与会话内两种形态都能正常结束。
  • PR #197596:由关联到具体会话的自动化派生出的 helper 进程,此前拿到的是空记忆分区,现在会继承本次运行所处的 owner 私有记忆分区。

二、OpenClaw ID:远程登录与设备身份绑定

OpenClaw ID 此前只能在运行 claw 的那台电脑上打开的 Control UI 里使用,通过 Tailscale 等代理访问时只能提示“请到运行该 claw 的电脑上登录”,配置一台远程设备往往要临时开 SSH 隧道。

PR #197559 打开了这个口子:开启 OpenClaw ID Labs 开关后,凡是带有可验证个人身份的 Control UI 连接都能用 OpenClaw ID 登录,覆盖 Tailscale Serve、Cloudflare Access 等受信代理以及企业主体。授权边界写得很清楚——它只证明浏览器持有哪个 OpenClaw ID 账号,不授予 owner 设备、root ceremony、成员资格或任何 claw 记录写入;“开启远程访问”的链接码仍然只留在本机,共享 token 与密码连接仍然不能这样登录。

PR #197628 解决的是另一个观感问题:从自己的 owner 设备接入时,Gateway 里显示的是“Shared owner”而不是本人。现在可以在 Profile → Identity → Link 里把 OpenClaw ID 账号绑定到个人 profile,绑定后 owner 设备接入即以本人身份出现,且保留完整的 owner 权限。账号最多绑定一个 profile,一个 profile 可以持有多个账号;绑定只影响未来连接,角色变更会触发重新校验但不会吊销已链接 owner 设备的证书。

企业部署还有一条独立通道。PR #196867 允许管理员把经过认证的代理请求头映射为 co-author 姓名与邮箱,并可附带邮箱验证头;HTTP 与 WebSocket 的 profile 导入都会把这一组合写入受保护的 profile 元数据,Profile 页面只读展示,且必须在用户显式同意之后才会把邮箱写进提交历史。代理声明不会关联 GitHub 账号,也不会自动产生 GitHub mention。

三、模型与 AI 能力:Gemini 4 Hydrogen、Decision 目录与代理流上限

Google 侧一次补了两块。PR #197863 把当日发布的 Gemini 4 Hydrogen(gemini-4-hydrogen)加入模型目录。此前它只能靠 Gemini 4 的前向兼容规则复制 Argon 的条目,而那一行没有价格,导致用量统计无价;现在它有完整的行与文档:

  • 上下文窗口 1048576,最大输出 65536,输入模态为文本与图像,支持思考级别。
  • 价格为每百万 token 输入 1.5、输出 7.5、缓存读取 0.075,缓存写入 0。
  • 被列入 Code Mode 的 Google 优选清单。

PR #197501 则让 Gemini Decision 真正可用:操作者可以直接设置 agents.defaults.decisionModel 为 google/gemini-decision-1,或者在 Decision 选择器里挑它,decision_evaluate、插件运行时接口与自动 Decision 辅助都能用它处理布尔、选择与评分三类问题,输入可以是文本、JSON 或单张内联图片,定价按 Google 公布的每百万输入 token 0.10 美元计。同一改动还修掉了一个副作用:只声明类型的 Decision 模型在 provider 成功实时发现后,会被错误地当作可选聊天模型出现在 models.list 里。

PR #197560 把 Celeris、Fastino、Nace、ONNX、Perplexity、SubQ 这几个声明了 Decision provider 却缺少托管目录条目的插件补齐,托管目录与本地声明从此一致。运行时侧还有两处值得注意的修复:PR #197500 让 claude-cli 运行时不再运行在 Claude Code 的整套默认系统提示之下——此前 OpenClaw 的人格与工作区提示只是追加在“自己是 Claude Code”以及约 7K 字符编码 CLI 指引之后,agent 会理直气壮地自称 Claude Code;PR #197842 则把代理流的长度限制改为只约束单条未结束的事件行,累计超过 16 MiB 的健康代理响应不再中断。

四、稳定性与安全:把阻塞与越权挪出关键路径

Gateway 主线程的阻塞问题这轮被系统性处理了一轮。PR #197586 把文件日志的准备、准入、轮转与写入整体搬进惰性 worker:原来的异步 append 辅助函数仍使用同步的 lstat/fstat 准入,一次卡住的文件系统查询足以拖住主线程,延迟请求处理与存活检查;同时停用 tslog 默认的同步 source-map 探测,需要时仍可用 TSLOG_SOURCE_MAPS 打开。PR #197900 则从另一头入手:长 transcript 加载时共享 codec 改用直接结构谓词,不再为每条记录构造又丢弃 Zod 校验结果,未知或畸形行也不再生成 Zod 错误,存储格式与配置均无变化。

两处安全相关修复同样值得留意。PR #197688 修复了 backup verify 与 backup restore 在 POSIX 路径包含“目录符号链接 + ..”时会选中另一个同名归档的问题,现在这类路径的父级分量会被保留,缺失父目录会被直接拒绝而不是静默选中同名文件。PR #197751 修复了子代理的 exec 审批缺失 operator.approvals scope 而立刻失败(错误信息为 FORBIDDEN)、审批卡片根本到不了审批人,导致 ask 的 on-miss 策略无法用于委派任务的问题;现在子代理与父级触发同样的审批卡片,审批策略、审批人集合与拒绝即失败的兜底行为都保持不变。

五、原生聊天与升级链路

iOS 与 macOS 原生聊天的两个体验补丁连着发布。PR #197846 把编辑器草稿从内存搬进客户端自有存储 client-state.sqlite,新增 composer_drafts 与 composer_draft_attachments 两张表(迁移版本 v11),应用被杀、崩溃或被 iOS 后台终止后,正在输入的文字与已选附件不再丢失,文本保存以 300 毫秒防抖串行写入。PR #197908 建立在它之上:长按排队中或发送失败的消息即可选择编辑,文本与附件退回编辑器;Gateway 明确拒绝且聊天历史证明确实没送达时,消息会自动回到编辑器并附上拒绝原因。已经被确认送达的消息永远不会被搬回,避免重复发送。

升级链路则修复了一个真实卡点。PR #197526 处理了从 2026.11.3 更新且装有 Workboard 时失败的问题:第二次 Doctor 报出“expected schema 41, found 0”并拒绝回滚,而在使用 2026.11.1 时代 postgres 引擎配置时快照又被“Existing SQLite state data cannot switch engines”拒绝。根因是 2026.11.3 的驱动省略了 includeLocalStoreVersions,候选 worker 改为在这种情况下只返回共享与 agent 自有的行;PR #197844 则把 2026.11.5-beta.2 补进更新兼容清单,避免 beta.2 用户更新到 main 构建时出现 ERR_MODULE_NOT_FOUND。

这一轮的主线很清晰:把等待、阻塞与越权从关键路径上挪走,让长任务不再拖垮调度,让远程接入真正认得“你是谁”,再把模型目录与升级链路上的缺口补齐。

常用链接

 
内容管家

发表评论