v2026.8.1: 自动化与调度
现在,Automations 将计划性工作统一归入同一个名称之下,横跨智能体、Control UI、命令行、文档以及受支持的原生应用;现有的 Cron 命令、设置、作业和调度语法仍继续有效。
历史记录会分别记录自动化任务是否运行、其结果是否已投递、以及整个请求是否完成。在重启或时钟变更期间确实遗漏的工作可以恢复执行,而不会复活已完成或已退役的作业;已连接的工具仅保留在创建或重新授权自动化任务时捕获的权限,并在每次运行时根据当前策略和可用性进行检查。
创建和管理 Automations
Automations 现在是智能体工具、Control UI、命令行和文档中面向用户的名称,而 openclaw automations 提供与 openclaw cron 相同的命令系列。旧的 /cron 命令、/cron 路由、cron.* 设置和 RPC 名称、调度表达式、标识符以及存储的作业仍继续有效。
Control UI 是搜索、筛选、创建、克隆、检查、编辑、运行、暂停和移除 Automations 功能最全面的位置,同时支持高级投递和失败路由。新的 Quick Create 和入门自动化任务默认保持内部状态,除非你明确选择 Announce 摘要及其目标位置。iOS 和 Android 会显示各客户端支持的字段和操作;Android 上的更改需要管理员作用域,而只读作用域的连接仍只能进行查看;脚本自动化任务在无法替换其有效负载的客户端上保持可见,但为只读。
来源和完整变更列表
改进
- Android 上的安全 Cron 作业管理 #102997
- 将计划任务重新设计为 Automations 工作区 #104251
- 添加 Cron 入门建议和立即首次运行 #104761
- 将 Automations 页面重新设计为全宽仪表板 #105174
- 重新设计 Control UI 自动化编辑器 #105254
- 精简 Automations 页面以便日常使用 #106044
- 添加原生移动端 Automations 管理 #106355
- 为 CLI 添加
openclaw automations别名 #114854 - 在 Activity 中分组自动化并显示实时状态 #125981
- 让 Automations 列表在桌面端和移动端更易于浏览 #127198
- feat: 提供将重复作业转换为计划自动化任务的选项 #130120
- 更清晰的 Cron Jobs 和 Tasks 导航与状态摘要 #103122
- 将调度器智能体工具重命名为 automations #114841
- 将智能体和用户的调度器措辞统一为 Automations #114852
- 在 Control UI 中统一使用 Automations #114853
- 从浏览器推导 Cron 时区建议 #115973
- 整合 Automations 的添加和更新 schema #121645
- 从 CLI 编辑和清除自动化任务显示名称 #122702
- 在 Cron 时区建议中添加 Asia/Shanghai #65936
- 在 Control UI 中高亮显示只读自动化脚本 #113632
- 在 Cron 仪表板中显示已保存的自动化描述 #118593
- 使 cron JSON 帮助与实际命令输出一致 #124903
- 仅在自动化清单为空时显示入门自动化任务 #125631
- 公开所有自动化调度筛选器 #126962
- perf(cron): 批量列表输出 #128191
- 说明如何查找已禁用的 Cron 作业 #78139
Bug 修复
- 在用户客户端中显示脚本自动化任务 #112195
- 克隆自动化任务时保留高级投递路由 #117909
- 保持 Cron 列表列与 Unicode 对齐 #103889
- 防止 Cron 编辑内容在保存时消失 #105421
- 修复 Control UI Cron 投递中 Account ID 为空的问题 #105762
- 解释自动化运行不启动的原因 #105858
- 编辑时保留基于秒的自动化间隔 #110034
- 在精确 Gateway 查找之前修剪 Cron 作业 ID #110849
- 从一致的 Gateway 快照中列出每个 Cron 作业 #113805
- fix(tasks): 在按 owner-key 查找 TaskFlow 时优先选择最新的实时流程 (#119129) #119130
- 将分页的已调度作业保留在同一快照上 #121084
- 在 Automations 中显示实际选中的值 #121811
- 查看所有智能体时保留自动化所有权 #123381
- 跨自动化接受本地端口选项 #125474
- 保留自动化编辑、运行反馈和本地状态 #125698
- 在活动筛选器下保持自动化冲突恢复的关联 #125782
- fix(workboard): 允许仅凭 proofId 解析已处于终态的 proof [AI-assisted] #127074
- 提升 Automations 任务行的可访问性 #127252
- fix: 自动化运行出现在创建者活动中 #128951
- fix(cli): 渲染 cron 编辑 JSON 失败 #129022
- fix(cli): 在隐式 JSON 输出时隐藏横幅 #129204
- fix: 智能体创建的自动化任务显示在会话创建者名下 #129371
- fix(ui): 自动化操作失败且调度意外更改 #129469
- fix(agents): 停止建议不可用的自动化工具 #129953
- fix(lobster): 保持被拒绝的审批处于已取消状态并执行输出限制 #130259
- refactor(macos): 将自动化摘要重构为托管卡片,包含可点击的作业行 #130502
- fix(ui): 默认保持新自动化任务为内部状态 #131504
- 从命令 Cron 作业中移除缺失智能体警告 #112043
- 在计划作业之后保持已暂停的自动化 #113745
- 修正存储在 SQLite 中的自动化作业的 Doctor 警告 #116769
- 使 Cron 列表排序和显示名称搜索一致 #116834
- 修复 Cron 调度时长的舍入问题 #118280
- 要求 cron 暂存修订版本为十进制 #119518
- 编辑期间拒绝空白的 Cron 路由值 #119879
- 拒绝将空白的 Cron 模型或思考标志与清除标志组合使用 #119894
- fix(automations): 停止提供被拒绝的智能体重定向选项 #121100
- 清除 Control UI 中已保存的自动化目标 #123171
- 为缺失的自动化任务提供明确的恢复指导 #124663
- fix(cli): 在使用父级连接选项时保持自动化 JSON 干净 #128343
- fix(ui): Cron 在初始加载期间显示错误的空状态 #130430
文档
- 将调度器文档重命名为 Automations [#114855](https://github.com/openclaw/openclaw/pull/114855)
</details>
调度与运行
所有者可以将当前对话转换为 /loop 或符合条件的提醒,该提醒在运行时检查少量近期上下文,并将一个最终答案返回到同一聊天中。它作为一次全新的运行开始,而不是延续原始对话记录;在没有对话的情况下创建的工作保持隔离。
循环计划、一次性任务、手动启动、排队的工作、重启补跑、退出时的工作、命令和有界脚本现在共享一个已配置的容量限制。等待中的工作在空间可用时开始运行,而成功的脚本可以保留少量状态、通知某个目的地、唤醒主对话,或请求稍后再次检查。脚本仍然有时间、工具调用、速率和状态限制,并且可以完全禁用。
强制运行和编辑不再使循环工作偏离其自然计划。支持时区的计划会跳过永远不会出现的本地时间,在本地时间重复时选择第一次实际出现的时间,并在重启后继续尊重显式偏移。
来源与完整变更列表
改进
- 让 cron 作业在操作员限制范围内选择下一次检查 #110978
- 为 cron 作业添加无头脚本负载 #111112
- 添加对话绑定调度和
/loop#114328 - Cron 作业跨计时器节拍使用空闲容量 #119195
- perf(cron): 一次遍历汇总计时器计划 #127495
- improve(cron): 复用已解析的计划时区 [AI] #127311
- perf(cron): 跳过未来作业的历史检查 #128048
Bug 修复
- 在所有触发器中强制执行同一个 cron 并发限制 #103323
- 在强制运行和编辑之间保持循环 cron 节奏稳定 #111331
- 在保存前拒绝格式错误的 Code Mode cron 脚本 #118100
- 修正跨时区转换时的 cron 调度 #118712
- 在作业被移除或禁用时停止正在进行的 cron 运行 #123437
- 按代理隔离承诺提取 #104426
- 在 RPC 返回后保持手动 cron 运行存活 #104595
- 重试一次性 cron 的会话声明竞争 #107236
- 精确验证循环计划间隔 #107480
- 防止已完成的 cron 工作在声明冲突后被重放 #108682
- 尊重 cron 脚本限制和永久性失败 #112415
- 强化 cron 速率控制、退出时作业和关闭流程 #112766
- 在永久性计费失败后停止重试计划作业 #114113
- 将 DM 创建的 cron 作业绑定到真实对话 #114421
- 为绑定当前对话的 cron 运行提供近期对话上下文 #114455
- 防止执行通道繁忙时 cron 误报失败 #114512
- 防止 cron 与 Workboard 生命周期竞态 #114674
- 在所有执行阶段停止停滞的计划任务回退 #114815
- 允许 Control UI 中的无超时 cron 作业 #115090
- 在模型设置期间保护计划运行的会话 #115804
- 在一次性 cron 计划中尊重时区和当日结束值 #117969
- 在一次性 cron 计划中尊重时区和首次夏令时发生时间 #118297
- 防止冷启动的计划轮次阻塞 Gateway #123368
- 在没有默认代理的情况下保持指定代理的 cron 作业运行 #123516
- 在添加代理后保持无代理计划继续运行 #123914
- 停止重试永久性的 cron 命令失败 #126763
- 将当前会话的 cron 结果返回到发起聊天 #126860
- fix(cron): 防止重置后出现过期的当前会话结果 #127854
- refactor(cron): 集中自动化修改选项 #128373
- fix(cron): 防止系统时钟变化时脚本超时 #130238
- 在时钟变化时保持脚本工作器超时不变 #130408
- fix(tasks): 在独立维护中保留 CLI 运行 #132602
- 使隔离 cron 子模型优先级与原生生成一致 #58823
- 让隔离 cron 设置使用已配置的超时时间 #93914
- 稳定隔离 cron 运行之间的提示缓存 #96686
- 拒绝格式错误的 cron 命令环境映射,而不是将其丢弃 #106100
- 在 cron 预检期间关闭停滞的本地提供者套接字 #114540
- QQBot 提醒尊重 Gateway 时区 #116294
- 在模型流中断后重试 Cron 作业 #118130
- 拒绝不受支持的通用 cron 超时编辑 #119899
- 在暂时性的监督者失败后重试退出时 Cron 监视器 #120023
- 在本地拒绝空白的 cron 命令工作目录 #121535
- fix(agents): 防止压缩后出现误报的提醒警告 #128581
- fix(cron): 间隔编辑后循环自动化运行过早 #128893
- fix(cron): 拒绝脚本负载的通用超时 #129407
- fix(cron): 防止时钟变化后运行等待失败 #129805
- fix(cron): 避免插件准备期间出现冷启动脚本超时 #131321
文档
- 为常规 cron 任务推荐更轻量的模型 [#125000](https://github.com/openclaw/openclaw/pull/125000)
</details>
触发器与已连接工具
自动化现在可以等待条件或受监控的事件流,并在某些内容发生变化时运行。条件可以在 Control UI 中创建、筛选、编辑和检查,在保存前会被验证,并记录检查和匹配情况,而不会为每次不匹配都创建一次运行。流计划通过命令行或代理创建,并在 Control UI 中保持只读,具有有界缓冲、批处理和重启退避。触发器仍然可以完全禁用,条件间隔必须至少为 30 秒。
新建或重新授权的 Codex 任务可以在重启后保留其创建时拥有的应用权限和符合条件的已连接工具访问权限。该捕获的权限是一个上限,每次运行都会根据当前账户、配置、策略、批准和可用性进行检查。需要有人在场批准的工具仍会被排除在外,现有限制不会自动扩大,一些较旧的任务需要一次性编辑或重新授权才能保留此访问权限。
来源与完整变更列表
改进
- 允许 Claw 包拥有计划任务 #102383
- 向 cron 计划添加受监督的流来源 #112387
- 为计划自动化保留 Codex 应用访问权限 #121859
- 默认启用自动化触发器 #125025
- 在 Control UI 中管理自动化条件触发器 #126534
- 为插件添加 cron 协调生命周期钩子 #104191
- 改进无人值守 cron 结果和监视器指南 #110949
- 在新计划任务上持久化显式工具权限 #112483
Bug 修复
- 为无发送者的计划运行保留已授权工具 #112661
- 在计划的 Codex 轮次中恢复已配置的 MCP 工具 #120366
- 在计划代理运行中恢复 Gateway 工具 #126640
- fix(cron): 在规范工具身份下捕获 Codex shell 别名,并使用仅限限制的 exec 固定 #130579
- 在 cron 唤醒时间更改时通知插件 #103647
- 在响应后保持已接受的钩子代理运行存活 #104686
- 限制代理钩子运行器的准入 #104712
- 使代理编写的 cron 条件监视器可靠 #104787
- 在注册表变动中保留重复的插件计划任务 #107752
- 在隔离的 cron 预检中识别自动检测的 Brave 搜索 #108636
- 保留同会话代理钩子的突发 #110575
- 在扁平化的 cron 请求中保留条件触发器 #110912
- fix(cron): 忽略继承的规范化字段 #111728
- 为分离的钩子运行初始化会话 #115765
- 防止 cron 饱和导致钩子调度饥饿 #116666
- 使 cron 交付指南与可用工具保持一致 #116908
- 使 Automations 选项与 cron 触发器设置匹配 #122052
- 防止钩子流量导致较旧计划任务饥饿 #122764
- 在提交前验证自动化条件触发器 #126718
- 保持自动化触发器控件与活动调度器对齐 #126945
- 在保存前拒绝无效的自动化条件 #127004
- fix(hooks): 避免运行时重载期间出现虚假的准入超时 #128975
- perf(cron): 将已发布的插件代次带入钩子/cron 隔离运行 #130581
- fix(cron): 呈现命令提示能力失败 #131123
- fix(hooks): 报告实际的唤醒入队结果 #131952
- fix: 允许从系统事件生成子代理 #132890
- refactor: 将内部唤醒排除在消息通道之外 #132986
- 在隔离的公告 cron 任务中保留工具调用 #106596
- 无需重启即可重新加载编辑后的 webhook 转换模块 #107875
- 在摄入时拒绝过大的 cron 触发器脚本 #108130
- 尽管存在调度器默认值,仍移除未更改的 Claw cron 任务 #113045
- 允许 Automations 在没有工具的情况下显式运行 #113403
- 使已配置的自动化触发器状态与 Advanced 标题保持一致 #126784
- fix: 停止 cron exec 批准刷屏 #128031
- fix: 创建自动化时拒绝空白触发器脚本 #129533
- fix(cron): 停止在计划运行中建议不可用的工具 #130228
文档
- 文档化安全的外部 cron 投射 [#104227](https://github.com/openclaw/openclaw/pull/104227)
- 文档化 Lobster 工作流环境变量和步骤输出 [#108622](https://github.com/openclaw/openclaw/pull/108622)
</details>
心跳与邮件监视器
心跳调度 现在作为 Automations 进行管理,失败的工作和警报保持可见且可重试,排队中的唤醒在繁忙时段、处理器替换和时钟变更后依然保留。禁用 Cron 会停止计划心跳,但手动和事件驱动的唤醒仍然可用。使用 HEARTBEAT.md 的现有安装必须运行 openclaw doctor --fix 来迁移有效工作,因为 OpenClaw 在运行时不再读取该文件。
Gmail 可以在其映射选择加入时,将已接受的批次拆分为每条消息一个隔离运行,过滤已发送和草稿邮件,并在监视器重启期间保持转发,不会出现重叠续订或重复重启循环。普通自定义映射保持其现有行为,过期的 OAuth 续订健康状态不变。
内置的 IMAP 监视器允许来自现有邮箱的已认证新邮件启动受限的读取器代理,而无需暴露 HTTP 钩子。它默认禁用且仅支持入站,需要发件人白名单和认证,并且不能发送或修改邮件。在三次临时准入失败后,该邮件将被记录为已跳过。
来源和完整变更列表
改进
- 将心跳检查清单移入基于数据库的 cron 暂存区 #112967
- 将心跳任务转换为独立的 cron 作业 #113165
- feat(plugins): 入站 IMAP 电子邮件触发器 #130230
- 将心跳节奏移入系统管理的 cron 监视器 #112585
- 要求为旧版 HEARTBEAT.md 文件执行 Doctor 迁移 #113131
- 使 cron 监视器行成为心跳节奏的权威依据 #113135
- refactor(cron): 在 cron 所有权下统一心跳自动化 #129862
- 将静默心跳结果带入下一轮用户交互 #95838
- 在投递被禁用时解释心跳跳过 #119689
- refactor(agents): 移除冗余的心跳系统提示 #129642
Bug 修复
- 在工具操作失败后保留心跳失败 #107735
- 保持计划心跳任务对模型处于活动状态 #110193
- 防止重复的 cron 唤醒和过时的心跳竞争 #114801
- 防止计划停滞、重复的 cron 运行和心跳丢失 #115979
- 保留冷自动化唤醒并限制通知清理 #117018
- 在所属主会话中投递主目标 cron 提醒 #125198
- 防止心跳所有权导致网关启动崩溃 #126232
- fix(anthropic): 在订阅使用中保持自动心跳 #129513
- fix(gateway): 扇出批量 Gmail 钩子推送并限制 Gmail 钩子体 #130002
- 将全局范围的心跳保持在所选代理中 #102307
- 在没有显式节奏时验证心跳小时数 #102319
- 在大队列情况下保持承诺心跳的响应性 #105780
- 在心跳活跃时段之外运行主会话 cron 作业 #105830
- 在绑定失败后停止 Gmail 监视器重启循环 #106314
- 防止重叠的 Gmail 监视续订 #108974
- 阻止 cron 作业阻塞自身的即时唤醒 #109440
- 在通知投递失败后重试身份验证警报 #110760
- 让 Gmail 设置跳过不受支持的 Python 版本 #112983
- 从代理文件表面移除已退役的 HEARTBEAT.md #113621
- 抑制仅推理的心跳确认 #114454
- 从未来上下文中移除静默心跳推理轮次 #115522
- 在计划任务先运行时投递心跳后续 #115581
- 将映射的唤醒钩子路由到配置的会话 #116109
- 序列化心跳唤醒并在关闭时取消活动工作 #116351
- 在警报后保持失败的心跳工作为待处理状态 #118488
- 投递结构化心跳回复并清除所拥有的恢复 #119655
- 在会话归档后恢复隔离的心跳 #120314
- 防止心跳路由元数据显示为用户输入 #122075
- fix(heartbeat): 保留已取消的代理轮次 #122345
- 在显式多代理舰队中投递已完成的心跳 #123303
- 在热重载时应用心跳节奏变更 #124410
- 遵循显式指定的 HTTP 钩子代理和会话目标 #125351
- 心跳监视器唤醒遵循配置的会话 #127153
- fix(heartbeat): 在时钟跳变和处理器替换期间保留 cron 唤醒 #129214
- fix(cron): 在心跳被禁用时投递自动禁用警告 #129560
- fix(cron): 当心跳节奏被禁用时即时脚本提醒消失 #129936
- fix(heartbeat): 保留唤醒结果并发出忙碌跳过 #130806
- fix(gmail): 在监视器重启期间保持转发活跃 #130853
- fix: 在目标会话上下文中呈现已投递的心跳警报 #130871
- fix(hooks): 在 HTTP 钩子禁用时运行插件触发器 #131059
- fix(imap): 拒绝缺少 DMARC 对齐的邮件 #131060
- fix(imap): 在 IDLE 和重连期间重试读取器准入 #131072
- refactor(imap): 使用核心的标识符认证量表 #131178
- 抑制异步命令完成产生的静默确认 #73785
- 限制 HEARTBEAT.md 读取并在文件过大时发出警告 #101775
- 防止 ntfy 认证通知挂起监视器 #108650
- 在关闭时清理 Gmail 监视器辅助进程 #112452
- 尊重心跳运行的无限制超时设置 #119297
- 预留已迁移的心跳任务命名空间 #123729
- 在状态中显示静默时段心跳跳过 #124542
- 在轮次后处理之前将心跳响应报告为已接受 #125207
- 报告实际生效的心跳节奏 #126869
- fix(heartbeat): 当循环节奏被禁用时投递手动唤醒 #129836
- fix(imap): 在邮件认证之前停止报告强度 #131304
- fix(gmail): 保持设置命令失败信息可读 #131502
- 从 Gmail 钩子中过滤已发送邮件和草稿 #56720
- 将亚分钟心跳保持在活跃时段内 #96684
文档
- 从文档中移除已退役的心跳选项 [#113455](https://github.com/openclaw/openclaw/pull/113455)
- 移除过时的心跳跳过路径及相关指引 [#124385](https://github.com/openclaw/openclaw/pull/124385)
</details>
历史记录、警报与投递
自动化历史记录 现在将执行工作、投递其结果以及完成整个请求视为相互独立的事实。任务可以成功执行,但请求仍会因所请求的投递未能完成而失败;除非明确选择了 best-effort,否则投递是必需的。在纯 Web Gateway 上,当前会话工作在没有外部路由时将持久化对话结果视为完成;而不可用的命名路由仍属于投递错误,但不会重新运行已完成的工作。成功的投递重试会清除之前的瞬时错误;有意的抑制会在命令行和 Control UI 中显示其记录的原因,而不会看起来像一次失败的投递。主 Webhook 会在收尾之前记录已接受或失败的结果,而次要的完成 Webhook 仍保持独立的扇出模式。
历史记录可以显示持续时间、Token 总数、缓存计数器、条件检查与触发、投递追踪、取消或失败原因,以及来自符合条件的可见通知的直接 Inspect 链接。Inspect 链接需要 gateway.publicOrigin;历史行可能不包含每一项可选计数器,条件活动属于任务自身的历史记录,而非全局信息流。
失败警报使用可配置的路由、阈值和冷却时间;基于路由的警报默认在连续两次失败后触发,并带有一小时的冷却时间。重复执行的 cron 或 every 任务在连续十次执行失败后会自动禁用,并说明如何重新启用;仅投递失败不会增加该连续失败次数,成功运行或手动重新启用会将其重置。
来源与完整变更列表
改进
- 自动禁用反复失败的重复自动化任务 #118113
- feat(cron): 将聊天通知链接到 Control UI 运行检查 #130049
- 在运行历史中显示条件自动化活动 #127200
- 在延迟的 cron 失败警报中显示原始运行时间 #80246
Bug 修复
- 防止 cron 与 Workboard 执行竞态 #114808
- 当父任务不产生文本时,投递已计划的子任务结果 #117308
- 投递 cron Webhook 并记录其结果 #117783
- 将必需的 cron 投递失败报告为完成失败 #126164
- 遵循 cron 失败警报的阈值和冷却时间 #126483
- fix(cron): 记录真实的投递结果并停止虚假成功完成 #131228
- 当计划代理运行以空结果结束时显示失败 #100229
- 保存前拒绝无效的 cron 失败警报渠道 #103866
- 允许恢复的 cron 运行使用其最终报告 #104908
- 将 cron 执行状态与投递失败分离 #105215
- 避免直接 cron 投递的重复重试 #105941
- 允许清除 Cron 失败警报的覆盖设置 #108578
- 当 Webhook 密钥不可用时保持 cron 运行 #109739
- 在出现未读响应后释放 cron Webhook 套接字 #111236
- 投递失败时保持已成功的 cron 命令按计划运行 #111345
- 将全局 cron 失败警报投递到正确的目的地 #113737
- 保持自动化运行历史与当前请求匹配 #113765
- 在心跳确认后投递计划结果 #113924
- 收尾已完成的 cron 任务,无需等待较慢的兄弟任务 #114441
- 修复 cron 投递账户选择与计划一致性问题 #114918
- 限制 cron 警报,并在失败后继续心跳清理 #114920
- 为 best-effort 任务投递明确的 cron 失败警报 #115762
- 保留 cron 超时和取消原因 #116566
- 将 cron 失败警报保留在其配置的线程中 #116830
- 为自动移除的 cron 任务保留最终结果 #116881
- 调度自动化任务时拒绝已禁用的渠道账户 #116899
- 修复 cron 失败警报的路由和账户所有权问题 #117765
- 改进自动化过滤器的可访问性和焦点 #118133
- 仅在结果持久化后发送 cron 失败警报 #118200
- 仅在持久化后发布 cron 自动禁用状态 #118384
- 在仅有心跳的父回复后投递 cron 子任务结果 #118743
- fix(cron): 在静默回复后保留工具失败 #120056
- 为过期的自动化警报添加一键 Codex 重新登录 #121067
- 在 cron 历史中显示可操作的 Code Mode MCP 失败 #121796
- 在发送警报前记录耗尽的流失败 #122187
- 当 cron 输出投递失败时发出警报 #123237
- 将多代理自动化投递保留给其所属代理 #123283
- 区分自动禁用的自动化与已暂停的任务 #123769
- 将跳过的自动化运行显示为失败任务 #123787
- 显示更简洁、准确的自动化失败原因 #124511
- 在失败投递期间遵循 cron 任务所有权 #124631
- 七天后清理已结束的 cron 任务历史 #126095
- 为已完成的 cron 和 CLI 任务返回最终结果 #127045
- fix(cron): 停止将已抑制的计划消息报告为已投递 #128519
- fix(cron): 失败警报静默切换到错误的会话 #129645
- fix(cron): 防止失败警报丢失和重复 #129908
- fix(cron): 当代理运行稍后失败时保留已验证的消息投递 #129974
- fix(cron): 持久化投递抑制原因并记录严格失败 #130811
- fix(hooks): 在成功运行后报告投递失败 #130926
- fix(cron): 区分有意抑制的投递 #131774
- fix: 在自动化历史中显示已记录的投递抑制 #131830
- fix(cron): 在仅支持 Webchat 的 Gateway 上,当前会话自动化因“Channel is required”而失败 #131975
- 允许有意静默的计划运行成功 #95725
- 恢复基于渠道的 cron 失败警报 #102445
- 在 cron 诊断中保留完整的 Unicode 字符 #102624
- 在 cron 执行失败尾部保留有效的 Unicode #104385
- 以清晰的错误信息拒绝不支持的 cron 投递标志 #105910
- 在调度前拒绝格式错误的 cron 投递目标 #106952
- 在 cron 运行历史中显示可读的 Token 计数和持续时间 #108014
- 停止将成功的静默 cron 轮次报告为错误 #114528
- 保留 cron 失败警报的账户和线程路由 #116933
- 将运行中的 cron 任务链接到其实际的执行记录 #117679
- 在 macOS 编辑器中保留额外的 cron 投递字段 #118047
- fix(cron): 报告已验证的代理发送,而不是“not-requested” #118260
- 在变更时拒绝不明确的多渠道 cron 投递 #118272
- 仅在持久化后发布 cron 自动禁用通知 #118778
- fix(cron): 拒绝主会话聊天投递,而不是静默丢弃 #119923
- 在 Gateway 调用前拒绝无效的 cron Webhook URL #121533
- 在任务删除后保留按代理过滤的 Cron 历史 #122791
- 停止重试永久性的 cron 投递拒绝 #122821
- 停止将运行中的自动化标记为逾期 #123745
- 收尾执行期间被移除的直接 cron 运行 #124457
- fix(cron): 运行历史遗漏缓存 Token 计数器,导致 Token 总数无法解释 #124657
- 将 cron 投递追踪添加到公共运行历史类型 #124856
- 报告缺失的自动化,而不是显示空 cron 历史 #125343
- 当 cron 通知引用已移除的代理时发出警告 #126361
- 在聊天警报中显示安全的自动化失败详情 #126384
-
修复(macos): 使 Cron 运行历史与所选作业匹配 #127266
- 修复(ui): 使运行历史下拉框文本在不同设备上保持一致 #127443
- 修复(cron): 跨渠道别名保留失败告警路由 #128280
- 修复(cron): 计划投递失败被显示为成功 #129160
- 修复(cron): 为失败的自动化运行发送完成 webhook #129247
- 修复(cron): 取消原因在延迟投递最终化后仍保留 #129331
- 修复(cron): 显示活动已暂停作业的运行状态 #129339
- 修复(cron): 保留过期的投递抑制诊断信息 #129408
- 修复(cron): 拒绝空白的显式 Telegram 线程 ID #129841
- 修复(cron): 成功的最佳努力重试仍报告投递失败 #131419
- 修复(ui): 在调度器禁用时抑制逾期作业 #131498
- 让 Cron 公告聚焦于收件人 #90836
- 使当前会话和命名会话的计划结果投递保持一致 #99115
文档
重启后的自动化
重启恢复 现在可以区分真正遗漏的工作与已经完成或不再属于当前自动化的工作。排队和延后的运行、重新安排的一次性提醒、重启或时钟更改期间错过的计划时间,以及没有最终结果的中断的一次性作业,都能在正常的追赶节奏下恢复。具有持久最终结果的尝试不会重放,已完成的槽位、已删除或已退役的作业、旧计划以及来自被替换调度器的工作将保持退役状态。
启动期间会保留当前的编辑、自我移除和重新安排;并发的调度器工作不再覆盖同级作业,损坏的旧行仍可供 Doctor 使用。失败或跳过的一次性恢复仍保持禁用以供检查,而配置了 deleteAfterRun 的成功作业会被正常移除。如果遗留的运行标记无法确认是否发生了外部副作用,它们仍会保持中断状态,因此外部系统中的恰好一次执行仍不在调度器的恢复边界之内。
来源和完整变更列表
改进
Bug 修复
- 在 Gateway 重启期间保留排队的 cron 作业 #110159
- 在启动追赶期间保留 cron 作业更改 #110977
- 保留 cron 脚本状态并抑制过期的重启影响 #111292
- 在 Gateway 重启后保留重新安排的提醒 #114677
- 防止 cron 与 Workboard 的生命周期竞争 #114744
- 保留调度器状态和真实的投递结果 #116923
- 在 SQLite 中保持 cron 作业和畸形作业恢复的原子性 #117071
- 防止无效的 cron 时间戳使作业陷入停滞 #121394
- 修复(cron): 填补重启恢复身份空白并停止静默的心跳告警丢失 #131219
- 防止已完成的 cron 槽位在重启后重放 #101998
- 防止重新启用后重复运行 cron #102255
- 仅在持久删除后发布 cron 移除通知 #104130
- 在挂起准备期间保持 cron 继续恢复活动 #104397
- 保留 cron 快速模式会话状态 #105094
- 在存储故障后对 cron 会话清理进行退避 #105386
- 清理过期的 cron 运行后代会话 #105633
- 防止已完成的 cron 工作在声明冲突后重试 #108778
- 在重启期间保留延后的 cron 追赶运行 #110351
- 为持久化 cron 会话保留浏览器标签页 #113984
- 防止重复和丢失的计划投递 #114479
- 在手动运行期间保留未来的一次性 cron 作业 #114491
- 保留在活动运行期间编辑的一次性计划 #114569
- 保护重新创建的提醒免受过期活动运行的影响 #114756
- 防止已完成的 cron 作业在重启后重新运行 #114820
- 修复(cron): 在 Gateway 重新加载期间保留活动的受监控命令 #115761
- 阻止已编辑的 cron 计划重放旧槽位 #115779
- 修复: 清除 gateway 重启后过期的维护任务 #116344
- 重放 Gateway 亚秒重启期间错过的 cron 作业 #117797
- 将 Cron 关闭跟踪的范围限定到每次运行 #118393
- 删除 cron 作业时移除幽灵会话 #119520
- 当会话保留期为零时保留 cron 运行历史 #120213
- 替换触发器脚本时保留一次性 cron 行为 #120226
- 通知失败时保持 cron 运行 #120266
- 修复(cron): 避免无操作写入和无界页面复制 #120910
- 持久删除作业后移除 cron 暂存数据 #121024
- 队列运行被禁用后保持自动化可运行 #123725
- 停止针对已删除代理的 cron 收割者警告循环 #124566
- 使用遗留 cron 作业完成升级 #124809
- 可执行文件更改时清除已退役的 cron 触发器状态 #126940
- 在 Gateway 重启前等待 cron 退出监视器 #126963
- 修复(cron): 防止同一毫秒重启后出现过期结果 #127003
- 修复(cron): 系统时钟更改时 Gateway 关闭挂起 #128374
- 修复(cron): 当 once 更改时重置触发器状态 #128495
- 修复(cron): 隔离过期的执行代 #128573
- 修复(cron): 防止已退役的计划作业在 Gateway 重启后运行 #128678
- 修复(cron): 恢复春季时钟向前跳变期间错过的提醒 #129478
- 修复: 保留尽力而为的 cron 上下文以用于后续回复 #130551
- 删除成功的退出时一次性 cron 作业 #104550
- 清理转换为一次性计划的周期作业 #110431
- 向后时钟更改后恢复 cron 作业 #111743
- 在活动运行期间保留 cron 计划编辑 #114919
- 在失败的关闭后移除已停止的调度器自动化 #115316
- 在清理失败后释放 cron 会话准入 #126413
- 修复(doctor): 公开禁用的进行中自动化 #128664
文档
- 记录 Doctor 的正在运行的 cron 任务警告 [#99086](https://github.com/openclaw/openclaw/pull/99086)
</details>
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw