实战:定时任务排错指南
Hermes 实战教程第17篇:定时任务排错。常见问题与修复。
这篇教程帮你解决 Hermes Agent 定时任务“不干活”或“干错活”的问题,按步骤排查即可。
第一步:任务根本没触发?先确认它“活着”
想象定时任务是一个闹钟——第一步是确认闹钟真的设上了、没被关掉。
hermes cron list
查看任务状态是否为 [active]。如果是 [completed],说明重复次数用完了,用 hermes cron edit <任务ID> 重置。另外,CLI 聊天窗口不会自动触发定时任务,必须保持网关(gateway)在后台运行:
hermes gateway start # 后台运行
第二步:时间对不对?检查“闹钟”设置
时间格式写错会静默失效。常见写法:
| 表达式 | 含义 |
|---|---|
0 9 * * * |
每天早上9点 |
every 2h |
从现在起每2小时 |
30m |
30分钟后执行一次(一次性) |
一次性任务执行完会从列表消失,这是正常现象。另外,任务用的是本机时区,用 date 命令确认系统时间无误。
第三步:任务跑了,但结果没送到?
这就像快递员把包裹送错了地址。检查投递目标是否配置正确:
# 投递到 Telegram 需要环境变量
TELEGRAM_BOT_TOKEN=你的token
投递目标区分大小写,比如 telegram 不能写成 Telegram。如果目标平台没配置好,任务照常运行,但结果会悄悄丢掉——用 hermes cron list 查看 last_error 字段。
第四步:任务输出了,但被“静音”了
如果任务结果包含 [SILENT] 标记,Hermes 会认为“无需打扰”,主动抑制投递。这是监控类任务的常用技巧,但注意别在提示词里让 AI 把 [SILENT] 写进长回复中——只要出现这个标记,整条消息都会被吞掉。
第五步:技能(Skill)加载失败?
hermes skills list # 确认技能已安装
技能名称区分大小写,且必须与安装的文件夹名完全一致。另外,定时任务环境下无法使用交互式工具(如手动确认、直接发消息),如果技能依赖这些功能就会失败。
第六步:任务报错?看日志找线索
hermes logs # 查看运行日志
ls ~/.hermes/logs/ # 或直接看 agent.log 和 errors.log
常见问题:脚本路径必须是绝对路径;技能不会自动同步到新机器,换机器后要重新安装;任务默认 600 秒无活动会超时,长时间任务建议用脚本处理数据、只输出结果。
总结
定时任务排错就像修水管——按顺序检查“任务是否存在→时间对不对→网关是否运行→投递是否成功→技能是否加载”,90% 的问题都能解决。记住三个最常用的诊断命令:
hermes cron list # 查看所有任务状态
hermes cron run <ID> # 手动触发一次,观察输出
hermes logs # 查看运行日志
下篇预告:实战:用 Hermes Agent 搭建个人日报系统——把今天的排错技巧用起来,让 AI 每天早上自动汇总新闻、天气和待办事项。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › guides/automate-with-cron