概述

openclaw cron list(CLI)是对 Gateway WebSocket RPC cron.list 的封装。两者操作同一份数据,但层次不同:CLI 面向人类,WS RPC 面向程序化集成。


架构层次

用户 / 外部工具
  │
  ├── openclaw cron list/show/...    ← CLI 层(人类友好,含额外计算字段)
  │         │
  │         └── ws cron.list/...  ──→  Gateway WS RPC  ← 协议层(TypeBox schema 驱动)
  │                                          │
  │                                          └── jobs.json + jobs-state.json  ← 持久化层
  │
  └── 插件 / 自定义客户端
            │
            └── ws cron.list/...  ──→  Gateway WS RPC

Gateway 是唯一权威数据源。CLI、macOS app、Web UI、TUI 均通过 WebSocket 连接 Gateway,调用相同的 RPC 方法。


WS 方法与 CLI 命令对照

WS 方法CLI 命令说明
cron.listopenclaw cron list列出所有 cron job
cron.getopenclaw cron get <id>获取单个 job 的原始 JSON
cron.statusopenclaw cron show <id>获取 job 状态(含投递路由预览)
cron.addopenclaw cron add创建 job
cron.updateopenclaw cron edit <id>修改 job
cron.removeopenclaw cron delete <id>删除 job
cron.runopenclaw cron run <id>手动触发 job
cron.runsopenclaw cron runs --id <id>查看 job 运行历史

WS 层 schema 定义在 src/gateway/protocol/schema.ts,运行时用 AJV 验证。 方法注册表在 src/gateway/server-methods-list.ts(listGatewayMethods)。


CLI 在 WS 之上额外做了什么

1. 计算 status 字段(--json 模式)

cron list --json 和 cron show <id> --json 在每个 job 上附加计算出的顶层 status 字段:

值含义
disabledjob 已禁用
running当前正在运行(state.runningAtMs 非空)
ok上次运行成功
error上次运行失败
skipped上次运行被跳过(如本地模型不可达)
idle等待下次调度

由 enabled、state.runningAtMs、state.lastRunStatus 三个字段推导,省去外部工具自己推导的麻烦。

2. --agent 过滤

cron list --agent <id> 按 agent 过滤,没有存储 agent id 的 job 归属默认 agent(main)。

3. 投递路由预览

cron show(对应 cron.status)解析 channel: "last" 的实际投递目标,显示路由是从 main session 还是 current session 解析的,以及是否会 fail-closed。

4. 三种查看命令的区别

命令WS 方法输出
cron listcron.list表格(默认)或带 status 字段的 JSON
cron get <id>cron.get原始 job JSON(无额外计算)
cron show <id>cron.status人类可读视图 + 投递路由预览

持久化数据

两者读取同一份文件:

文件内容建议
~/.openclaw/cron/jobs.jsonJob 定义可纳入 git 管理
~/.openclaw/cron/jobs-state.json运行时状态(nextRunAtMs、lastRunStatus 等)建议 gitignore
~/.openclaw/cron/runs/<jobId>.jsonl每个 job 的运行日志受 runLog.maxBytes 控制

注意:直接编辑 jobs.json 时,Gateway 检测变更并重新加载调度,同时清除因 schedule 字段变化而过期的 nextRunAtMs;纯格式化/key 顺序变更不会清除 pending slot。


使用场景选择

场景推荐方式
日常查看任务列表openclaw cron list(输出友好,--json 有计算好的 status)
调试投递路由openclaw cron show <id>(对应 cron.status,显示路由解析结果)
获取原始 job 定义openclaw cron get <id>(对应 cron.get,无加工)
插件 / 自定义客户端集成直接调用 ws cron.list 等 RPC,避免 CLI 进程开销
监听 job 变更事件订阅 Gateway WS cron 事件(cron run/job change 推送)

相关页面

  • concepts/cli-cron — openclaw cron CLI 完整参考
  • typebox — Gateway WS 协议 Schema(TypeBox 驱动)
  • architecture — Gateway 单进程架构与 WS 协议