Bug type
Regression (worked before, now fails)
Beta release blocker
Yes
Summary
Cron 调度器 bug 定位:
TypeError: Cannot read properties of undefined (reading 'runningAtMs')
错误发生在 cron.start() → runMissedJobs() → planStartupCatchup() 执行期间,job 对象在内存中被替换成了缺少 state 的版本。这是 OpenClaw 2026.4.9 的 cron 子系统 bug。
CLI 无法调用的原因:
openclaw cron add/list 通过 WebSocket 连接 gateway RPC 调用 cron 方法,gateway 每次重启后 cron 都会崩溃重启,WebSocket 握手就卡住了,导致 CLI 无响应。
回复 紫月:
Cron 调度器 bug 定位:
TypeError:无法读取未定义属性(读取“runningAtMs”)
错误发生在 cron.start() → runMissedJobs() → planStartupCatchup() 执行期间,job 对象在内存中被替换成了缺少 state 的版本。这是 OpenClaw 2026.4.9 的 cron 子系统 bug。
升级到docker 4.11
CLI 无法调用的原因:
openclaw cron add/list 通过 WebSocket 连接 gateway RPC 调用 cron 方法,gateway 每次重启后 cron 都会崩溃重启,WebSocket 握手就卡住了,导致 CLI 无响应。 重新检测doker opencalw 4.11版本还有没有这个问题
已确认 OpenClaw 4.11 版本仍然存在这个 bug。
问题定位
文件: /app/dist/server.impl-CsRRyd9F.js,第 6582 行,start() 函数内:
for (const job of jobs) if (typeof job.state.runningAtMs === "number") {
^^^^^^^^^^^^^^^ 没有 guard
**问题:**直接访问 job.state.runningAtMs,没有先检查 job.state 是否存在。
对比其他函数
同一文件中的 isRunnableJob 和 isJobDue 都有防御性检查:
// isRunnableJob 第 6211-6212 行
if (!job.state) job.state = {};
if (typeof job.state.runningAtMs === "number") return false;
// isJobDue 第 3809-3810 行
if (!job.state) job.state = {};
Steps to reproduce
今日日志 (/tmp/openclaw/openclaw-2026-04-13.log)
15:03:45 | WARN | Config overwrite
15:05:41 | WARN | Gateway 绑定到非 loopback 地址
15:05:41 | WARN | dangerouslyDisableDeviceAuth=true 安全警告
15:05:42 | INFO | cron: started (jobs: 0, nextWakeAtMs: null)
15:06:06 | WARN | pricing bootstrap failed: TimeoutError
Bug 仍存在于 4.11
/app/dist/server.impl-CsRRyd9F.js 第 6582 行:
for (const job of jobs) if (typeof job.state.runningAtMs === "number") {
// ^^^^^^^^^^^^^^^ 没有 guard
对比有防护的地方(第 6211-6212 行):
if (!job.state) job.state = {}; // ← 有这个 guard
if (typeof job.state.runningAtMs === "number") return false;
Expected behavior
今日日志 (/tmp/openclaw/openclaw-2026-04-13.log)
时间 | 级别 | 内容
-- | -- | --
15:03:45 | WARN | Config overwrite
15:05:41 | WARN | Gateway 绑定到非 loopback 地址
15:05:41 | WARN | dangerouslyDisableDeviceAuth=true 安全警告
15:05:42 | INFO | cron: started (jobs: 0, nextWakeAtMs: null)
15:06:06 | WARN | pricing bootstrap failed: TimeoutError
cron 当前状态:0 个 jobs,所以 start() 里的 bug 没有触发。
Bug 仍存在于 4.11
/app/dist/server.impl-CsRRyd9F.js 第 6582 行:
for (const job of jobs) if (typeof job.state.runningAtMs === "number") {
// ^^^^^^^^^^^^^^^ 没有 guard
对比有防护的地方(第 6211-6212 行):
if (!job.state) job.state = {}; // ← 有这个 guard
if (typeof job.state.runningAtMs === "number") return false;
触发条件: store 里存有 job,但某个 job 缺少 state 字段(老版本创建/数据损坏)。
Actual behavior
回复 紫月:
检测我的cron任务
检测结果:
当前系统状态:
Cron 任务:0 个(存储文件 /home/node/.openclaw/cron/jobs.json 不存在,尚未初始化)
CLI 状态:卡住 — 正如你所说,gateway 重启后 WebSocket RPC 挂起,CLI 命令无响应
问题确认:
openclaw cron list — CLI 卡住,无法通过 WebSocket 连接
Cron store 文件夹 /home/node/.openclaw/cron/ 不存在
日志显示最后 cron 启动时 jobs 数量为 0
项目 | 状态
-- | --
Cron 存储路径 | /home/node/.openclaw/cron/jobs.json
当前任务数 | 0
CLI 连接 | 失败 — pairing required (WebSocket RPC 需要配对)
Bug 状态 | start() 第 6582 行仍缺少 if (!job.state) job.state = {} guard
15:05:42 [INFO] cron: started, jobs: 0, nextWakeAtMs: null
15:14:40 [ERROR] gateway connect failed: pairing required (CLI cron list)
15:16:33 [ERROR] gateway connect failed: pairing required (CLI cron list)
CLI 卡住原因: Gateway 绑定 LAN 地址 + dangerouslyDisableDeviceAuth=true + pairing 模式冲突。
Cron 任务:0 个 — 存储文件为空或不存在
Bug 仍存在于 4.11 — 未修复
CLI 无法使用 — WebSocket pairing 问题
守护进程脚本位于:
/home/node/.openclaw/workspace/scripts/juya_ai_daily_scheduler.py
推送脚本:
/home/node/.openclaw/workspace/scripts/juya_ai_daily.py
OpenClaw version
2026.4.11
Operating system
Debian13
Install method
Docker
Model
MinMax2.7
Provider / routing chain
Opneclaw->Openclaw-gateway->mainmax2.7->feishu
Additional provider/model setup details
No response
Logs, screenshots, and evidence
15:05:42 [INFO] cron: started, jobs: 0, nextWakeAtMs: null
15:14:40 [ERROR] gateway connect failed: pairing required (CLI cron list)
15:16:33 [ERROR] gateway connect failed: pairing required (CLI cron list)
CLI 卡住原因: Gateway 绑定 LAN 地址 + dangerouslyDisableDeviceAuth=true + pairing 模式冲突。
Impact and severity
No response
Additional information
之前版本能用 为openclaw 2026.3.28 升级到openclaw4.9就出现问题 回退没问题 升级版本就出现的
Bug type
Regression (worked before, now fails)
Beta release blocker
Yes
Summary
Cron 调度器 bug 定位:
TypeError: Cannot read properties of undefined (reading 'runningAtMs')
错误发生在 cron.start() → runMissedJobs() → planStartupCatchup() 执行期间,job 对象在内存中被替换成了缺少 state 的版本。这是 OpenClaw 2026.4.9 的 cron 子系统 bug。
CLI 无法调用的原因:
openclaw cron add/list 通过 WebSocket 连接 gateway RPC 调用 cron 方法,gateway 每次重启后 cron 都会崩溃重启,WebSocket 握手就卡住了,导致 CLI 无响应。
回复 紫月:
Cron 调度器 bug 定位:
TypeError:无法读取未定义属性(读取“runningAtMs”)
错误发生在 cron.start() → runMissedJobs() → planStartupCatchup() 执行期间,job 对象在内存中被替换成了缺少 state 的版本。这是 OpenClaw 2026.4.9 的 cron 子系统 bug。
升级到docker 4.11
CLI 无法调用的原因:
openclaw cron add/list 通过 WebSocket 连接 gateway RPC 调用 cron 方法,gateway 每次重启后 cron 都会崩溃重启,WebSocket 握手就卡住了,导致 CLI 无响应。 重新检测doker opencalw 4.11版本还有没有这个问题
已确认 OpenClaw 4.11 版本仍然存在这个 bug。
问题定位
文件: /app/dist/server.impl-CsRRyd9F.js,第 6582 行,start() 函数内:
for (const job of jobs) if (typeof job.state.runningAtMs === "number") {
^^^^^^^^^^^^^^^ 没有 guard
**问题:**直接访问 job.state.runningAtMs,没有先检查 job.state 是否存在。
对比其他函数
同一文件中的 isRunnableJob 和 isJobDue 都有防御性检查:
// isRunnableJob 第 6211-6212 行
if (!job.state) job.state = {};
if (typeof job.state.runningAtMs === "number") return false;
// isJobDue 第 3809-3810 行
if (!job.state) job.state = {};
Steps to reproduce
今日日志 (/tmp/openclaw/openclaw-2026-04-13.log)
15:03:45 | WARN | Config overwrite
15:05:41 | WARN | Gateway 绑定到非 loopback 地址
15:05:41 | WARN | dangerouslyDisableDeviceAuth=true 安全警告
15:05:42 | INFO | cron: started (jobs: 0, nextWakeAtMs: null)
15:06:06 | WARN | pricing bootstrap failed: TimeoutError
Bug 仍存在于 4.11
/app/dist/server.impl-CsRRyd9F.js 第 6582 行:
for (const job of jobs) if (typeof job.state.runningAtMs === "number") {
// ^^^^^^^^^^^^^^^ 没有 guard
对比有防护的地方(第 6211-6212 行):
if (!job.state) job.state = {}; // ← 有这个 guard
if (typeof job.state.runningAtMs === "number") return false;
Expected behavior
今日日志 (/tmp/openclaw/openclaw-2026-04-13.log)
for (const job of jobs) if (typeof job.state.runningAtMs === "number") {
// ^^^^^^^^^^^^^^^ 没有 guard
对比有防护的地方(第 6211-6212 行):
if (!job.state) job.state = {}; // ← 有这个 guard
if (typeof job.state.runningAtMs === "number") return false;
触发条件: store 里存有 job,但某个 job 缺少 state 字段(老版本创建/数据损坏)。
Actual behavior
回复 紫月:
检测我的cron任务
检测结果:
当前系统状态:
Cron 任务:0 个(存储文件 /home/node/.openclaw/cron/jobs.json 不存在,尚未初始化)
CLI 状态:卡住 — 正如你所说,gateway 重启后 WebSocket RPC 挂起,CLI 命令无响应
问题确认:
openclaw cron list — CLI 卡住,无法通过 WebSocket 连接
Cron store 文件夹 /home/node/.openclaw/cron/ 不存在
日志显示最后 cron 启动时 jobs 数量为 0
15:05:42 [INFO] cron: started, jobs: 0, nextWakeAtMs: null
15:14:40 [ERROR] gateway connect failed: pairing required (CLI cron list)
15:16:33 [ERROR] gateway connect failed: pairing required (CLI cron list)
CLI 卡住原因: Gateway 绑定 LAN 地址 + dangerouslyDisableDeviceAuth=true + pairing 模式冲突。
Cron 任务:0 个 — 存储文件为空或不存在
Bug 仍存在于 4.11 — 未修复
CLI 无法使用 — WebSocket pairing 问题
守护进程脚本位于:
/home/node/.openclaw/workspace/scripts/juya_ai_daily_scheduler.py
推送脚本:
/home/node/.openclaw/workspace/scripts/juya_ai_daily.py
OpenClaw version
2026.4.11
Operating system
Debian13
Install method
Docker
Model
MinMax2.7
Provider / routing chain
Opneclaw->Openclaw-gateway->mainmax2.7->feishu
Additional provider/model setup details
No response
Logs, screenshots, and evidence
Impact and severity
No response
Additional information
之前版本能用 为openclaw 2026.3.28 升级到openclaw4.9就出现问题 回退没问题 升级版本就出现的