你已经在跑 OpenClaw Gateway,却把「每小时汇总」「定期清理缓存」「巡检模型余额」交给个人 crontab 或外部编排器,结果 Gateway 升级或 systemd 重启后任务静默消失,而 channels status --probe 仍显示正常。本文给运维读者:先用七条隐性假设拆穿 openclaw cron 与消息链路的边界,再用一张对照表收敛「内置 cron vs 系统 crontab vs 外部调度」的取舍,然后给出六步可复现 Runbook(最小验收、cron status/cron list、与 openclaw doctor 与日志的联合顺序),并链到站内 渠道探针与 dmPolicy、生产观测与升级回滚、远程模式与配置漂移 分工阅读。
官方 FAQ 与排错文档把「先 openclaw status、再 gateway status、再 channels status --probe」写得很清楚,但定时任务往往在升级说明里只占一两行,生产里却最容易变成「没人记得谁触发」的暗线。下面七条用于把争论从「是不是 cron 坏了」收敛成「哪条链路断了」。
把 cron 静默当成频道故障:定时回调不进会话与 Telegram/WhatsApp 入站是两条路径;应先对照 渠道探针 的分流表,而不是先改 crontab。
在错误用户下配置 cron:launchd/systemd --user 服务用户与你在 SSH 里手跑命令的用户不一致时,会出现「手动 OK、重启后没了」的经典分叉。
忽略 OPENCLAW_STATE_DIR 漂移:多 profile 或容器挂载会把状态目录指到意外位置;cron 任务写在 A 目录、Gateway 读 B 目录时,列表永远空。
升级后未重跑 gateway install --force:官方 troubleshooting 强调 CLI 与 service 配置分裂;cron 子系统也可能仍指向旧二进制路径。
把高频任务与重活绑在同一队列语义:轻量健康检查与「全量索引」同频率会拖垮 Gateway 事件循环;应拆分条目并设退避。
没有给 cron 失败单独打日志标签:与 生产观测 篇一致:若不能在日志里过滤出 job 名,排障成本会指数上升。
远程模式与本地 cron 混用却不写清入口:gateway.mode=remote 时,真正执行周期任务的仍是远端 Gateway 主机;笔记本上的 crontab 只会让自己误会「已备份」。参见 远程模式排错。
这些假设的共同根因,是把「能跑 agent」与「能按时触发运维动作」混为一谈。OpenClaw 的价值在于把模型、工具与渠道收口到 Gateway;平台工程则要补齐可观测的调度合同:谁注册、谁执行、失败如何告警、升级如何回归。
若你还在评估是否把 Gateway 放到独占远程 Mac 上 24/7 运行,可把本文与「云端 Mac + OpenClaw 24/7 实战」类文章一起读:调度稳定性与机器睡眠策略强相关,而不是仅靠 CLI 技巧。
读完本节仍觉得「内置 cron 不够」时,先写清你要的语义是跨机编排还是与 Gateway 同生命周期的心跳;前者才值得引 Kubernetes / systemd timer 等外部方案,后者应优先把任务收敛进 OpenClaw 自己的调度面。
没有银弹:你要选的是触发器与 Gateway 状态是否同源,以及失败时能否用同一套 CLI 诊断。
| 维度 | openclaw cron(内置) | 系统 crontab / launchd | 外部编排(K8s CronJob 等) |
|---|---|---|---|
| 身份与 PATH | 与 Gateway 服务用户一致时最稳 | 易与登录 shell 分叉,需显式 env 文件 | Pod 身份与宿主机 Gateway 常跨网络,Secrets 同步成本高 |
| 升级影响 | 随 Gateway 版本演进,需读 release note 并重跑验收 | 不随 OpenClaw 升级自动迁移,易出现「新版本已装、旧路径仍被触发」 | 镜像与 Helm 值漂移独立,需第二套变更流程 |
| 可观测性 | cron status / cron list 与 openclaw logs 同一语义 | 需自行把 stdout 重定向到集中日志 | 依赖集群监控,与 Gateway 指标割裂 |
| 典型适用 | 与 agents、channels 强绑定的轻量周期任务 | 宿主机级备份、清理与供应商无关脚本 | 跨服务、跨命名空间批处理 |
「生产级 cron」在 OpenClaw 语境里,意味着能在升级第二天用三条命令证明它还在跑,而不是只在文档里出现过。
若你已经在用 openclaw health --json 做探针,可把 cron 条目版本号写进同一套 JSON 导出,让外部 Prometheus/Grafana 只消费「有没有过期未跑」信号,而不是重复实现调度器。
与 Gateway 生产观测 篇联动:升级回滚检查表应增加一行「cron list 条数是否与变更前一致」,避免 silent drop。
下列顺序强调「先 Gateway 健康,再注册任务,再挂告警」;具体子命令以你安装的 OpenClaw 版本文档为准,本节给出诊断顺序而非绑定某一版 UI 文案。
确认 Gateway 基线:执行 openclaw gateway status,确保 Runtime 与 RPC 探针均 OK,再进入 cron 配置。
用专用维护会话编辑:在与服务相同用户下操作,避免 TTY 环境变量差异。
注册最小任务:例如仅写一行日志或 touch 标记文件,周期设短一些便于验收。
跑 openclaw cron status 与 openclaw cron list:核对条目名称、下次触发时间与启用标志是否与预期一致。
故意触发一次 openclaw gateway restart:重启后重复步骤 4,确认任务仍注册;若丢失,优先怀疑 service 用户与 state 目录。
把验收写进变更单:与 openclaw doctor 输出一并归档,作为下次升级的对比基线。
openclaw gateway status openclaw cron status openclaw cron list openclaw doctor openclaw logs --follow
提示:若同一主机上还跑了 Tailscale Serve 或隧道,请与 Tailscale 私网暴露 篇核对:健康探针连错实例时,cron 日志可能「一切正常」但业务侧完全收不到副作用。
在配置正式任务前,建议先为「失败重试」与「重叠执行」写清策略:周期短于执行耗时会堆叠,最终表现为 Gateway CPU 抖动与渠道延迟,这与 cron 表达式「写错」是不同根因。
若任务需要调用外部 HTTP,请把超时与 TLS 校验写进脚本,而不是依赖默认网络栈;否则排障时会把网络抖动误判为 OpenClaw 回归。
官方 Playbook 推荐的诊断阶梯把 openclaw cron status 与 openclaw cron list 放在靠后位置,是因为半数「定时没跑」其实是 Gateway 未就绪或配置漂移。推荐顺序:先 gateway status,再 cron status/list,再 channels status --probe,最后长时间跟随日志。
当 cron list 显示下次触发时间不断推迟,要区分「调度器背压」与「系统时钟跳变」:前者常伴随队列里大量 agent 任务;后者多见于容器或休眠唤醒后的 NTP 追赶。
若 doctor 报告 meta.lastTouchedVersion 与二进制版本不一致,应按官方 troubleshooting 先修正 PATH 与 gateway install --force,再谈 cron——否则会出现「列表里有任务、执行器拒绝动作」的半残状态。
注意:不要在未确认磁盘水位时让清理类 cron 并发扫全量会话目录;IO 打满后,RPC 探针仍可能短暂 OK,但任务会大面积超时。
告警阈值建议:对关键条目维护「上次成功时间」外推 SLA,超过两倍周期未刷新即页级告警;对非关键巡检可用日志存在性检查,避免短信轰炸。
与 远程模式 组合时,应在笔记本与服务器两侧各跑一次 cron list,确认你看到的是哪一台 Gateway 主机上的调度面,避免「改 A 机、看 B 机」的无效加班。
下列条目用于内部对齐;具体阈值以任务频率与业务容忍度为准。
gateway install --force → gateway restart → 重跑本节「诊断顺序」与 cron list 对比快照。cron status 无错误提示——此类最危险,应提升为 P1 并立刻抓 openclaw logs --follow。纯系统 crontab 缺少与 Gateway 生命周期的原生耦合;完全外部编排器又带来重复监控与告警分裂,升级夜容易出现「两边都以为对方会触发」的真空。把 Gateway 与定时任务放在可 24/7 常驻、磁盘与网络 SLA 清晰的独占远程 Mac 上,由同一团队用同一套 openclaw * CLI 运维,通常比把 Gateway 留在不稳定笔记本或超卖共享环境更省心。对需要长期在线 AI 网关与定时巡检并行的团队,NodeMini 的 Mac Mini 云端租赁在 SSH 可达性、独占算力与供应商侧维护上,更适合作为 OpenClaw 生产底座;规格与价格可先对照 租赁价格说明,需要上架与算力套餐则见 算力订购,接入问题可走 帮助中心。
若你希望继续扩展阅读路径,可在博客列表中筛选 OpenClaw 专栏:OpenClaw 分类,按「安装 → 安全 → 观测 → 渠道 → 远程模式 → 本文 cron」顺序补齐知识栈。
内置调度与 Gateway、状态目录同一运维面,升级后用同一套 CLI 验收;系统 crontab 容易在用户、PATH、OPENCLAW_STATE_DIR 上与 launchd/systemd 服务分叉。更多 OpenClaw 文章见 博客 OpenClaw 筛选。
openclaw gateway status → openclaw cron status / cron list → openclaw doctor;仍异常再跟日志。需要机器侧帮助可查看 帮助中心。
改走消息链路:openclaw channels status --probe 与配对列表;详见 渠道探针与 dmPolicy。若计划把 Gateway 迁到云上独占 Mac,可先浏览 租赁价格说明。