Bug type
Regression (worked before, now fails)
Beta release blocker
No
Summary
OpenClaw Cron 调度时间偏移严重,执行时间记录不准确
问题描述
配置为每3分钟执行一次的OpenClaw cron任务,实际执行间隔严重偏离(如:14:40 → 14:58,间隔18分钟)。即使使用 --exact 参数禁用随机延迟,任务仍无法按预期频率执行。
环境信息
- OpenClaw版本: 2026.3.23-2 (7ffe7e4)
- 操作系统: macOS 25.3.0 (Darwin Kernel Version 25.3.0, ARM64)
- Node.js版本: v24.14.0
- Shell: zsh
复现步骤
- 创建一个简单的shell脚本(执行时间约1-2秒)
- 添加cron任务:
openclaw cron add --name "test-task" --cron "*/3 * * * *" --system-event "/path/to/script.sh"
- 监控任务执行日志和OpenClaw状态
预期行为
- 任务每3分钟准时执行一次(每分钟的0、3、6、9、12...秒)
lastDurationMs 准确反映脚本实际执行时间(1-2秒)
实际行为
时间偏移问题
- 配置:
*/3 * * * *(每3分钟)
- 实际执行:14:40 → 14:58 → 下一次未知(间隔18分钟,严重偏离)
- 即使使用
--exact --staggerMs 0,任务仍不能准时执行
执行时间记录错误
- 脚本实际执行时间:1-2秒(日志确认)
- OpenClaw记录的
lastDurationMs:145秒、237秒等(严重夸大)
- 这可能导致调度器误认为任务仍在运行,跳过后续触发
相关配置与日志
任务配置(JSON片段)
{
"name": "shanghai-weather-email-3min",
"schedule": {
"kind": "cron",
"expr": "*/3 * * * *",
"tz": "Asia/Shanghai",
"staggerMs": 0 // 使用 --exact 参数设置
},
"state": {
"lastRunAtMs": 1775027671714, // 2026-04-01 15:14:31
"lastDurationMs": 144936, // 145秒(实际仅需1秒)
"lastRunStatus": "ok"
}
}
### Steps to reproduce
脚本日志(实际执行时间)
[2026-04-01 14:40:09] 🚀 开始执行 → [2026-04-01 14:40:10] 🏁 脚本执行完成 (1秒)
[2026-04-01 14:58:28] 🚀 开始执行 → [2026-04-01 14:58:29] 🏁 脚本执行完成 (1秒)
可能的原因分析
- 默认随机延迟机制:OpenClaw cron默认添加随机延迟(stagger),即使cron表达式精确
- 执行时间计算错误:
lastDurationMs 可能包括队列等待、进程启动等开销,而非仅脚本执行时间
- 调度器逻辑缺陷:如果任务记录的执行时间超过调度间隔,可能被误判为"仍在运行"而跳过
- 时间同步/时区处理:毫秒级时间戳转换或时区处理可能引入误差
影响
- 定时任务不可靠:无法依赖OpenClaw cron进行精确时间调度
- 监控误报:执行时间记录错误导致性能监控数据失真
- 任务堆积/丢失:长时间运行的任务可能阻塞后续执行,短时间任务可能被跳过
建议的解决方案
- 修复时间计算:
lastDurationMs 应准确反映用户脚本执行时间,不包括系统开销
- 改进调度算法:即使任务"记录"的运行时间超过间隔,也应检查进程实际状态
- 提供调试工具:如
openclaw cron debug <id> 查看详细调度时间线
- 文档明确说明:明确cron调度精度限制和stagger机制的影响
临时解决方法
目前用户不得不退回到系统cron(crontab)以获得精确调度:
# 在系统crontab中
*/3 * * * * /path/to/script.sh
附件
- 完整脚本示例
- OpenClaw cron list --json 输出
- 详细执行日志
Expected behavior
应该为配置的时间触发
Actual behavior
时间不固定,会漂移
OpenClaw version
v2026.3.31 (running v2026.3.23-2).
Operating system
macos(26.3.1 (a) (25D771280a))
Install method
No response
Model
deepseek-reasoner
Provider / routing chain
https://api.deepseek.com
Additional provider/model setup details
No response
Logs, screenshots, and evidence
Impact and severity
优先级: High(影响核心调度功能)
分类: Bug / Cron调度器
Additional information
No response
Bug type
Regression (worked before, now fails)
Beta release blocker
No
Summary
OpenClaw Cron 调度时间偏移严重,执行时间记录不准确
问题描述
配置为每3分钟执行一次的OpenClaw cron任务,实际执行间隔严重偏离(如:14:40 → 14:58,间隔18分钟)。即使使用
--exact参数禁用随机延迟,任务仍无法按预期频率执行。环境信息
复现步骤
openclaw cron add --name "test-task" --cron "*/3 * * * *" --system-event "/path/to/script.sh"预期行为
lastDurationMs准确反映脚本实际执行时间(1-2秒)实际行为
时间偏移问题
*/3 * * * *(每3分钟)--exact --staggerMs 0,任务仍不能准时执行执行时间记录错误
lastDurationMs:145秒、237秒等(严重夸大)相关配置与日志
任务配置(JSON片段)
{ "name": "shanghai-weather-email-3min", "schedule": { "kind": "cron", "expr": "*/3 * * * *", "tz": "Asia/Shanghai", "staggerMs": 0 // 使用 --exact 参数设置 }, "state": { "lastRunAtMs": 1775027671714, // 2026-04-01 15:14:31 "lastDurationMs": 144936, // 145秒(实际仅需1秒) "lastRunStatus": "ok" } } ### Steps to reproduce脚本日志(实际执行时间)
可能的原因分析
lastDurationMs可能包括队列等待、进程启动等开销,而非仅脚本执行时间影响
建议的解决方案
lastDurationMs应准确反映用户脚本执行时间,不包括系统开销openclaw cron debug <id>查看详细调度时间线临时解决方法
目前用户不得不退回到系统cron(crontab)以获得精确调度:
附件
Expected behavior
应该为配置的时间触发
Actual behavior
时间不固定,会漂移
OpenClaw version
v2026.3.31 (running v2026.3.23-2).
Operating system
macos(26.3.1 (a) (25D771280a))
Install method
No response
Model
deepseek-reasoner
Provider / routing chain
https://api.deepseek.com
Additional provider/model setup details
No response
Logs, screenshots, and evidence
Impact and severity
优先级: High(影响核心调度功能)
分类: Bug / Cron调度器
Additional information
No response