定时任务排障
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 太保守
如果你的龙虾跑在 messaging 或 minimal 模式下,它不能联网、不能跑命令——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 备份一份,删错也不慌。
