定时任务排障

Cron 任务典型故障就 5 类。这篇是对照表 + 排查提示词——跑不通的时候按图索骥,让龙虾帮你查。

使用方法

先看 五类典型故障对照表 定位是哪一类,再跳到对应章节复制排查提示词发给龙虾。

一、五类典型故障对照表

症状可能原因跳到
任务没触发,执行记录里什么都没有调度时间讲错了 / 任务被禁用 / 龙虾没跑二、任务没触发
任务触发了,但龙虾没干活prompt 模糊 / 上下文丢失 / 触发了但执行失败三、触发了但没结果
龙虾干活了,但没推到渠道渠道 token 失效 / prompt 没写明渠道 / 推送失败被吞四、结果没推送
推送了,但内容错乱 / 格式不对prompt 没指定格式 / 渠道限制 / 多渠道冲突五、内容错乱
任务跑着跑着越来越慢 / 越来越贵没有上下文清理 / 重复执行 / 日志堆积六、性能退化

二、任务没触发

症状:到了该触发的时间,什么都没发生。问龙虾"上次执行记录",返回空。

让龙虾帮你排查

我有一个定时任务没按预期触发。请帮我排查:

1. 列出我当前所有的定时任务(包括启用和禁用状态)
2. 找出"每日早报"这个任务(如果找不到,可能名字不同,请模糊匹配)
3. 告诉我:
   - 它现在是什么状态(启用 / 禁用 / 已删除)
   - 它的调度时间和下次触发时间
   - 它最近一次触发是什么时候
4. 如果任务被禁用了,告诉我什么时候被禁用的、可能原因是什么
5. 如果状态正常但没触发,怀疑是时区问题——确认你的系统时区是不是 Asia/Shanghai

常见原因

时间讲错了

中文里"每天 7 点"含义模糊——是早 7 还是晚 7?是北京时间还是 UTC?

修法:建任务时把时间讲完整:

重建议个任务,时间明确为"每天北京时间(Asia/Shanghai)早上 7:00"。

时区跑偏(Docker 常见)

Docker 容器默认 UTC,比北京时间晚 8 小时。你以为早 7 点触发,实际是下午 3 点。

修法

请确认你运行的容器/进程当前时区。如果是 UTC 或其他非 Asia/Shanghai 时区:
- 如果你能改:把 TZ 环境变量设成 Asia/Shanghai,重启后再确认
- 如果你不能改:所有 cron 时间我都会显式说明"北京时间",你按 Asia/Shanghai 计算

龙虾进程挂了

cron 任务由龙虾的 gateway 进程调度。gateway 挂了,所有 cron 都不会触发。

修法

请告诉我:
1. 你的 gateway 进程当前是不是在跑
2. 最近 24 小时内有没有重启过、重启原因是什么
3. 如果没在跑,请重启它,重启后告诉我哪些 cron 任务会自动恢复、哪些需要手动重新启用

三、触发了但没结果

症状:执行记录里有触发记录,但龙虾没有产生输出。

让龙虾帮你排查

我有一个 cron 任务触发了但没产出结果。任务名:"每日早报"。

请帮我:
1. 找出这个任务最近一次触发的完整记录
2. 把触发时收到的 prompt 完整展示给我(确认跟你以为的一致)
3. 把龙虾当时的回复(如果有)展示给我
4. 如果龙虾没回复,告诉我可能的原因:
   - prompt 太模糊?哪里模糊?
   - tools.profile 是否限制了动作?
   - 是否调用了某个 skill 但失败了?
5. 给我一个修改后的 prompt 建议

常见原因

Prompt 里有未替换的占位符

你建任务时 prompt 里写了 〈URL〉,但忘了换成实际 URL。龙虾收到"抓取 〈URL〉"——它不知道 〈URL〉 是什么,就静默失败。

tools.profile 太保守

如果你的龙虾跑在 messagingminimal 模式下,它不能联网、不能跑命令——cron 任务形同虚设。

修法

请告诉我你当前的 tools.profile 是什么。如果是 messaging / minimal / coding 而不是 full,请帮我改成 full,改完告诉我。

参考 让龙虾飞

四、结果没推送

症状:龙虾把活干完了(执行记录里有结果),但你没在 QQ/飞书/微信收到消息。

让龙虾帮你排查

我的 cron 任务"每日早报"执行记录显示龙虾完成了任务,但我没收到推送。请帮我:

1. 找出这个任务最近一次执行的推送记录
2. 告诉我:
   - prompt 里有没有明确写推送渠道和对象?
   - 龙虾当时尝试推送到哪个渠道?
   - 推送成功还是失败?
   - 失败的话,错误是什么?
3. 检查相关渠道的连接状态:QQ / 飞书 / 微信 / 邮件 当前是否正常
4. 给我一个修复建议(是改 prompt、还是重新接入渠道)

常见原因

Prompt 没写明推送

新手最常犯的错——以为龙虾会"自动"推送。它不会

如果你 prompt 写的是"整理一份早报",龙虾会生成 markdown 但不发出去——它以为你下次回来取。

修法:prompt 必须显式包含"通过「渠道」推送给「对象」"。

渠道 token 失效

飞书 token 过期、QQ 机器人被风控、微信插件 cookie 失效——这些都会让推送静默失败。

修法

请检查我的所有渠道连接状态,每个渠道都发一条测试消息确认是否正常。
对失效的渠道,告诉我什么时候失效的、如何重新接入。

参考 和龙虾对话 重新接入。

五、内容错乱

症状:推送收到了,但内容是乱的——格式崩了、内容截断、字段错位、emoji 变问号。

让龙虾帮你排查

我的 cron 任务推送内容格式错乱。请帮我分析:

任务名:"每日早报"
推送渠道:飞书
问题描述:〈markdown 没渲染 / 内容被截断 / emoji 变成? / 表格错位〉

请:
1. 找出最近一次推送的原始内容(龙虾生成的 markdown 源码)
2. 对比"龙虾生成的"vs"我收到的",找出格式损失的环节
3. 判断问题在哪:
   - 是渠道不支持某些 markdown 语法?
   - 是内容超长被渠道 API 截断?
   - 是编码问题(emoji / 中文乱码)?
4. 给我一个针对 〈渠道〉 适配的 prompt 模板

常见原因

  • 渠道不支持 markdown —— 微信几乎不支持,要用纯文本
  • 内容超长被截断 —— 每个渠道的舒适长度不同,写"如果超过 N 字,拆成多条"
  • 多任务串台 —— 多个 cron 任务并发时,A 任务的回复可能推到 B 渠道。在每个任务的 prompt 开头加一句身份:"你是'每日早报'任务(实例:X)"

六、性能退化

症状:任务刚开始跑得好好的,几周后越来越慢、token 消耗越来越高。

让龙虾帮你排查

我的定时任务最近性能退化。请帮我:

1. 列出所有 cron 任务,每个告诉我:
   - 最近 30 天的 token 消耗趋势(是不是线性增长?)
   - 平均执行时长
   - 失败率
2. 对消耗异常的任务分析:
   - 是不是每次触发都在累积上下文(理论上 cron 应该是无状态全新会话)
   - 是不是有重复任务(同样的事跑了 5 次)
   - 是不是日志堆积拖慢了启动
3. 给我一个清理建议:
   - 哪些任务可以删除或合并
   - 日志目录大小,是否需要轮转或清理
   - 上下文记忆是否需要梳理

常见原因

  • 上下文累积 —— 每次 cron 触发都应该开新会话,但某些版本会复用上下文
  • 重复任务 —— 你可能因为忘记 ID,重复加了同样的任务(每天 7 点跑 5 次)
  • 日志堆积 —— ~/.openclaw/logs/ 涨到 GB 级,拖慢启动

七、紧急停掉跑飞的任务

如果某个任务明显跑飞了(疯狂发消息、疯狂烧 token),先停再排查

紧急:我的"价格监控"任务跑飞了,每分钟在飞书群里刷屏。请立即:
1. 暂停这个任务(disable,保留配置)
2. 告诉我这个任务最近 10 次触发的摘要(让我事后排查)
3. 不要删除,等我确认原因后再决定恢复或删除

如果龙虾整体出问题(所有任务都跑飞):

紧急:龙虾整体出问题,请立即停止 gateway 和所有 cron 任务,保留所有日志和配置等我排查。

八、什么时候该重置而不是修

如果排查超过 30 分钟还没头绪,删了重建往往比继续排查快:

我想重建"每日早报"任务。请:
1. 把旧任务的 prompt 完整保存到 ~/cron-archive.md(备份)
2. 删除旧任务
3. 跟我确认 prompt 需要怎么调整(参考 [Cron Cookbook](./cron-cookbook) 的标准模板)
4. 用调整后的 prompt 建新任务
5. 立刻手动触发一次测试,确认能正常推送

cron 任务应该是幂等、可重建的。如果你的任务配置只有一份、删了找不回来,说明你的工作区缺一个 cron 备忘录——把所有在跑的任务 prompt 备份一份,删错也不慌。

正文导航

打开抖音
有问题点击我