Hermes 定时任务(Cron)配置指南
本文基于 Hermes Agent 实际环境,介绍定时任务的创建、管理与常见场景。示例均来自本机真实运行的任务。
定时任务能做什么
让 agent 在指定时间自动执行任务:生成日报、整理笔记、推送学习内容、抓取行业情报……任务结果可投递到微信等消息平台,或仅保存到本地文件。
本机当前运行的 6 个任务:
常用命令
hermes cron list # 查看所有任务
hermes cron create "0 9 * * *" # 交互式创建
hermes cron pause <id> # 暂停
hermes cron resume <id> # 恢复
hermes cron remove <id> # 删除
hermes cron run <id> # 立即手动触发一次
调度表达式:四种写法
间隔时长:
"30m"(每 30 分钟)、"2h"(每 2 小时)自然语言:
"every monday 9am"(每周一 9 点)标准 cron 五段式:
"0 7 * * *"(每天 07:00)分 时 日 月 周
0 21 * * 1-5= 周一至周五 21:000 6 * * 0,6= 周六周日 06:00一次性时间戳:
"2026-09-01T09:00:00"(到期只跑一次)
投递目标(deliver)
两种任务模式
1. LLM 任务(默认)
每个 tick 启动一个 agent 会话,按 prompt 执行。适合需要理解、筛选、总结的任务:
hermes cron create "0 7 * * *"
# prompt 示例:搜索最近 24 小时 AI 热点,输出 3-5 条中文摘要日报
2. 纯脚本任务(no_agent)
不启动 agent,直接跑脚本,stdout 原样投递。适合确定性的监控/检查:
非空输出 → 原样发送
空输出 → 静默(watchdog 模式,没事不打扰)
实战案例:每日热点报告
调度: 0 7 * * * (每天 07:00)
投递: weixin:... (微信)
模式: LLM 任务
任务流程:
1. 07:00 触发,agent 用 web 搜索最近 24-48 小时热点
2. 筛选高热度事件,生成中文摘要(含原文链接)
3. 输出日报,系统自动投递到微信
微信投递的注意事项
重要:iLink(微信 bot API)对主动推送存在服务端硬限制——定时任务生成的日报在 07:00 自动推送会被拒绝(prepare failed),但用户发消息后的对话回复永远能送达。
已落地的解决方案(队列模式):
1. 定时任务只负责生成内容并保存到本地(deliver=local)
2. 内容入队(pending_deliveries.py 脚本管理)
3. 用户下次发消息时,agent 先查队列,把积压内容随回复一起投递
这样既保证内容每天准时生成,又绕过了推送限制。
排查技巧
hermes cron status # 调度器状态
hermes cron list # 查看任务与下次运行时间
grep -iE "error|failed" ~/.hermes/logs/gateway.log | tail -20 # 投递错误
ls ~/.hermes/cron/output/<job_id>/ # 查看任务输出文件
常见问题:
任务没跑:检查调度器是否在运行(
hermes cron status)生成了但没收到:看投递错误日志,微信场景多半是主动推送限制,改用队列模式
想立即测试:
hermes cron run <id>手动触发
小结
定时任务的本质是「固定时间 + 自动化 agent + 指定投递」。设计时先想清楚三件事:什么时候跑、跑什么、结果去哪。配合队列模式可以绕开微信推送限制,实现完全自动化的信息流水线。