实战:定时任务排错指南
Hermes 实战教程第17篇:定时任务排错。常见问题与修复。
实战:定时任务排错指南
定时任务(Cron)是 Hermes 的“自动巡航”功能,但很多新手一上来就翻车——不是没反应,就是消息轰炸。别慌,这篇指南带你避开最常见的坑,顺便学会几个实用套路。
核心认知:Cron 是“失忆”的
Cron 任务每次都在全新的会话里运行,它不记得你之前在聊天里说过什么。 所以你的提示词必须自包含——把 Agent 需要知道的一切都写进去。别指望它“记得上次我们聊过那个监控脚本”。
零 Token 的两种选择
不是所有定时任务都需要 LLM 参与:
- 脚本自己就能产出最终消息(比如内存告警、磁盘告警):用 纯脚本 Cron,调度器一样,但完全不消耗 Token。直接在聊天里让 Hermes 帮你建就行,
cronjob工具会自动判断并帮你写好脚本。 - 脚本已经在运行了(CI 步骤、部署钩子):用
hermes send把 stdout 或文件直接推送到 Telegram / Discord,根本不用建 Cron。
排错第一招:检查脚本输出
很多“没反应”其实是脚本根本没输出预期内容。Cron 的 script 参数是秘密武器——脚本在每次执行前运行,它的 stdout 会成为 Agent 的上下文。脚本负责机械工作(抓取、比对),Agent 负责判断(这变化有意思吗?)。
先手动跑一遍脚本,确认输出正常,再排查 Cron 本身。
排错第二招:善用 [SILENT] 标记
监控类任务最怕消息轰炸。在提示词里告诉 Agent:没变化就只回复 [SILENT]。Cron 投递会把 [SILENT] 当作静默标记,这样你只在真正有事时才收到通知。
/cron add "every 1h" "如果脚本输出 CHANGE DETECTED,总结页面变化及原因;如果输出 NO_CHANGE,只回复 [SILENT]。" --script ~/.hermes/scripts/watch-site.py --name "价格监控" --deliver telegram
排错第三招:提示词要“事无巨细”
看这个反面教材——让 Agent 检查 GitHub 仓库,但没告诉它怎么查:
# ❌ 错误示范
/cron add "every 6h" "看看仓库有没有新 issue"
Agent 根本不知道用什么命令!正确做法是把命令直接写进提示词:
# ✅ 正确示范
/cron add "every 6h" "检查 NousResearch/hermes-agent 仓库:
- 过去 6 小时的新 issue
- 过去 6 小时的新 PR
用终端执行:
gh issue list --repo NousResearch/hermes-agent --state open --json number,title,author,createdAt --limit 10
gh pr list --repo NousResearch/hermes-agent --state all --json number,title,author,createdAt,mergedAt --limit 10
只筛选过去 6 小时的项目。如果没有新内容,回复 [SILENT]。" --name "仓库监控" --deliver discord
记住:Cron Agent 没有历史对话记录,每条命令都要写全。 持久记忆(MEMORY.md)会加载,但别把关键细节寄托在它上面。
排错第四招:验证 Cron 表达式
0 9 * * 1 是标准 Cron 表达式(每周一早上 9 点)。新手常写错,建议先用 crontab.guru 这类工具验证一下再提交。
总结
定时任务排错就四步:① 确认脚本输出正常 → ② 确认提示词自包含 → ③ 确认 [SILENT] 标记用对 → ④ 确认 Cron 表达式正确。把这四点记牢,你的定时任务就能稳稳跑起来。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › guides/automate-with-cron