
OpenClaw 24h 更新快报(2026-11-06):Cron 投递默认路由、exec 按模型设限、通道队列可靠性
过去 24 小时,OpenClaw 主仓库合并了 455 个 PR。这一轮的主线不是新功能,而是把「谁接收结果」「谁能执行命令」「消息会不会丢」这三件事的边界重新划清楚。最受关注的是 PR #185848,它让定时任务可以配置默认投递目的地;同时 PR #193566 首次支持按具体模型限制 exec 执行模式,而一批通道消息丢失、重放被误判的 P1 级缺陷也集中在这 24 小时内被修掉。
版本号方面,2026.11.1 补丁版的发布说明与版本收尾工作也已经合入,官方在 11 月 5 日完成了该版本的发布准备。
Cron 调度:默认投递路由与重试节奏
过去要做一个「所有自动化结果都汇总到某个 Telegram 论坛话题」的场景,操作者必须在每个任务上手写一遍 channel、to 和 threadId,Agent 自动创建的任务还会把创建它的会话路由固化下来。PR #185848 引入了三层可配置的默认目的地:网关级 cron.delivery、Agent 级 cron.agents.<agentId>.delivery,以及创建者级 cron.creators.<profileId>.delivery,主结果和失败告警各自独立配置。
值得关注的不是字段本身,而是优先级链条:任务自身路由 > 创建者默认 > Agent 默认 > 网关默认 > 旧行为。创建者排在 Agent 之前,理由是 Agent 是可能被多人共享的运行时,而「谁建的任务」是最具体的那一层。默认只在任务没有指定任何路由字段、且投递模式为 announce 时生效,none 与 webhook 永远不会被塞进聊天目的地。此外,Agent 通过工具创建无路由任务时不再把创建会话的路由写死,否则推断出的路由会变成显式配置,反而把默认挡住。
同期还有几条 Cron 行为修正值得留意。PR #193063 处理了准入被推迟的任务每隔约两秒重试一次的问题,现在会显示「等待:原因 since 时间」,重试改为 30 秒起步、指数退避到五分钟封顶,代价是恢复最多可能延后五分钟。PR #188230 修掉了 Windows 网关上 cron add --command 必然报 spawn sh ENOENT 的老问题,现在 CLI 会读取网关主机的平台信息,Windows 上改用 cmd.exe /d /s /c。PR #184359 则处理了触发条件在冷启动准备超过 30 秒评估预算时永久超时的缺陷,改为准备结果可被后续 tick 复用。PR #193224 是个小而干净的优化:定时任务完成后不再重复推送一遍相同的下次执行时间,生产代码只增加了三行。
安全与稳定性:执行权限的细粒度收口
PR #193566 是这一轮权限模型上最实质的变化。此前 exec 审批模式只能全局设置或按 Agent 设置,无法表达「这个模型走审阅式 exec,别的模型保持原样」。现在 tools.byProvider["provider/model"].exec.mode 可以单独给某个模型设置 exec 上限,取全局策略与该上限中更严格的一方。这个上限只收紧不放松,且在每次策略叠加之后才生效,因此即便会话临时切到 full 权限、或者 per-run 覆盖成 full,依然会被模型级上限压住。对那些同时跑本地小模型和前沿模型的团队,这解决了此前只能整体禁止 exec 或者给足权限的二选一。
另一处边界收紧来自 PR #187884:此前 shell 内建命令的自动信任判定只检查解析后的 argv 里是否有精确的 -v 参数,但 shell 展开可能生成不同操作数,最终执行行为超出审核范围。现在这类动态谓词需要走正常审批,只有字面量谓词检查才保留免审批。PR #186057 把共享 Actions 小组件限制在已批准的具名查询上,会话只读用户发送 { ticket, queryName },由网关解析存储的定义,拒绝任何选择器、覆盖参数和灵活调用。
渠道侧的两个修复同样是边界问题。PR #188127 修复了 Discord 上非拉丁文字频道名被归约成空 ASCII slug 的缺陷——不同频道名会解析到 Discord 返回的第一个频道,导致按频道配置的提及与工具策略绑定到错误房间。PR #193438 修复了飞书卡片回调在会话查询失败时按私聊策略执行的问题,未知会话类型现在拒绝命令分发与确认卡片创建,不再绕过群准入、发件人白名单与提及检查。
在更底层,PR #186765 解决了启用密钥出口代理后 Node 24 的 fetch 无法访问本机 HTTP 服务的问题——Node 24 的 Undici 走 CONNECT 隧道而 Node 26 走直连请求,修复后 exec 可以正常访问 Ollama、llama.cpp 等本地服务,代理的流量策略、进程撤销和审计仍然生效。PR #193098 处理了操作者权限在网关重启与定时续跑之间丢失的问题,把授权归属绑定到可持久化的签发 UUID 而非时间戳,并在恢复时重新校验作用域与模型限制。
通道消息队列:四条 P1 级丢消息与重放缺陷
这 24 小时里最密集的一组修复集中在「消息为什么没被回复」上,而且多数是在真实网关日志里发现的。
- PR #193313:被队列容量策略丢弃的消息会重新进入持久化入口并被重复投递,还拖延后续消息。现在策略丢弃会得到一个明确的队列策略终态,存活消息保持 FIFO 顺序,策略丢弃也不计入死信。
- PR #193564:排队消息在准备失败或热重载期间会消失。现在队列输入在被采纳或被有意消费之前保持可恢复;待重放的请求采用指数退避,前 30 分钟不消耗重试次数。
- PR #193423:插件重载会让排队消息卡住、失败写入后重复投递、重载时插件销毁停滞。修复后,已接受的队列行在重载中保留记账权,重载期间的投递请求被正确暂缓。
- PR #193602:通道消息首次尝试失败后就再也不会被回复——重试会被「幂等键冲突」拒绝,入口每三分钟重试一次持续 24 小时,该话题的通道被一直堵住。原因是通道源轮次的待处理输入按稳定来源 ID 归档,而每次重新投递都使用新的 run ID,永远匹配不到自己失败留下的那行记录。现在同一条消息的重试可以重开自己的失败尝试。
此外 PR #193052 让 WhatsApp 私聊在 LID 到手机号映射暂时不可用时保持可投递,而不是被静默丢弃,走现有的共享重试策略(退避封顶三分钟,八次尝试且满 24 小时后进入死信)。
模型与 AI 能力
PR #193341 为 Google AI Studio 的 Gemini 模型接入了快速模式(Fast mode),走 google-interactions 路由时会在快速模式下发送 service_tier: "priority"。更实用的是价格处理的修正:成本现在跟随 Google 实际兑现的档位计算(Priority 1.8 倍、Flex 0.5 倍),被降级为标准档的请求按标准价计费,而此前所有 Interactions 用量一律按标准费率统计。
PR #193467 修了两个看似无关的问题:模型页的「测试访问」把 kimi-k3、minimax-m2.7、minimax-m3 这类推理模型报成「无效响应」,原因是检查请求把输出卡在 8 或 256 token,推理开销吃光了预算;去掉上限后这些模型能在 1.4 到 3.1 秒内返回。此外 Ollama Cloud 默认模型 minimax-m2.7 之前每个请求都会因 max_tokens 超出模型上限而报 400。
与之配套,PR #193507 让保存 API key 时立即做一次连通性校验:以前不管密钥是否被接受,界面一律显示「API key 已保存」,错误要到聊天失败时才暴露。现在密钥被拒绝时表单保持打开并给出具体原因,校验本身无法完成(5xx、超时、限流)则明确区分,不误报为拒绝。PR #193250 修复了 ClawRouter 上游返回「credit balance is too low」时会先耗尽重试预算才去尝试备用模型的问题,现在一次请求失败就立即切到配置的备用模型,且不会连带冷却共享的路由密钥;显式指定模型时仍然照常报错,不会静默换模型。
控制台与开发者体验
插件详情页新增了「起步提示」能力。PR #193694 为 40 个内置插件提供了 89 条简短起步提示,点击后会打开一条可编辑、不自动发送的聊天草稿;涉及插件激活的操作会先要求确认,包括后台服务和独占式记忆提供方的切换。第三方兼容性方面,提示列表限制为最多三条、每条 128 个 Unicode 码点,超限的提示项会被忽略而不是阻塞插件加载。
模板中心的加载体验也在这轮得到改善。PR #193118 让加载占位骨架填满可视区域(桌面、高移动端与窗口缩放均生效),并把逐个货架的请求改为一次概览请求,实测目录加载平均从 1431 毫秒降到 344 毫秒。PR #193124 则把模板详情页的三个串行请求改为并发,真实网关实测平均从 1013 毫秒降到 332 毫秒。侧边栏方面,PR #192974 让嵌套子会话不再藏在折叠的父会话之后,从「Waiting on」链接或直接 URL 打开时会展开完整祖先路径与所属分区。
OpenClaw ID 协议:为演进留下余地
OpenClaw ID 协议包此前所有校验器都硬编码只接受 v === 1,任何未来版本都会被当成「格式错误」,用户只会看到「疑似篡改」而不是「请升级」。PR #193688 改为每个信封版本拥有独立的模式表和签名域,先判版本再判类型与字段:格式良好但本版本未实现的版本返回 unsupported_version,而缺失、非整数、非正数仍然是 malformed。配套文档还明确了未知字段必须换信封版本、描述符 v1 保持向后可读、上一主版本至少保留六个月等规则。
PR #193146 修复了一个撤销重放问题:被捕获的撤销指令再次投递时,会把已经重新批准过的设备或成员浏览器一并删除。现在撤销只覆盖签名者当时看到的范围,需要携带 claw ID 和成员序号,序号冲突时以 seq_conflict 拒绝并保持现状;邀请也改为最多一周有效、每个 claw 最多保留 100 条,过期即删。
资源与运行时
PR #193664 处理了 GitHub 发布读取大改动集时网关主线程内存暴涨的问题。旧实现会把解码后的清单、对账数据、变更条目和对象映射全部留在主线程,读取 25 万条记录时主线程堆增长达 210 MiB;现在改为工作进程直接校验并物化有界分页,读取同一份 25 万条记录时堆增长降到 3 MiB。超过 5 万条变更路径的新结果会明确报错,并给出取消跟踪生成依赖、添加排除或拆分变更的建议。
PR #193677 让每小时维护任务顺带清理 24 小时未更新的临时工作目录与运行时覆盖率目录,长期存活的托管工作树不再无限堆积证明文件与运行时覆盖率产物;被清理的临时产物在列表中会明确显示「文件已过期(临时内容 24 小时后清理)」。
整体看,这一轮 OpenClaw 的更新基调是收紧而非扩张:把权限边界按人、按 Agent、按模型拆细,把队列和重试的失败路径补齐,让长期运行时的临时产物和内存占用可控。功能面新增的只有快速模式、起步提示和 Cron 默认路由等少数几项,且都建立在更明确的边界之上。


评论