🤖HermesBlog
Hermes 实战教程 · 第17篇2026/8/9· Easy Understand Hermes Agent

实战:定时任务排错指南

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