Hermes 定时任务实战

前言

大部分 AI 助手有个共同的局限:你问一句,它答一句。
你不说话,它就安安静静待着。

但日常工作和生活里,很多事情是周期性的。
每天早上想看一眼科技新闻摘要,每周想检查一次关注的仓库有没有新动态,某个网页更新了想第一时间知道。

这些事情反复做,每次手动问 AI 太累了。
Hermes Agent 的 Cron 定时任务功能就是来解决这个问题的。

你可以让 AI 在指定时间自动干活,结果直接推送到飞书、微信等消息平台。
相当于给 AI 管家装了一个闹钟,到点就上班。

Cron 是什么

Hermes 的 Cron 是内置在 Gateway 网关里的定时调度器。

Gateway 每 60 秒检查一次任务列表,发现到期任务就启动一个全新的 Agent 会话来执行。
执行完成后,结果自动推送到你指定的消息渠道。

跟传统 crontab 相比,最大的区别是 Hermes 的 Cron 任务由 AI 来执行,不是跑固定的 shell 命令。
你给它一段自然语言指令,它自己理解、拆解、调用工具、输出结果。

创建任务的三种方式

最方便的是直接在对话里说自然语言。
比如直接对 Hermes 说,每天早上 9 点搜一下今天的 AI 新闻,整理成简报发到飞书。
Hermes 会自动创建任务,你不需要记任何命令。

需要精确控制参数时,可以用斜杠命令。

1
/cron add "0 9 * * *" "搜索今天的 AI 领域新闻,整理成 5 条摘要,每条配链接" --name "每日AI简报" --deliver feishu

终端操作的话,CLI 命令也可以。

1
hermes cron create "0 9 * * *" "搜索今天的 AI 领域新闻,整理成 5 条摘要" --name "每日AI简报" --deliver feishu

三种方式效果一样,选你顺手的就行。

调度格式速查

格式 示例 含义
相对延迟 30m 30 分钟后执行一次
间隔循环 every 2h 每 2 小时执行一次
Cron 表达式 0 9 * * 1-5 工作日每天 9 点
ISO 时间戳 2026-06-21T09:00:00 指定时刻执行一次

常用的就是 Cron 表达式和间隔循环。
0 9 * * * 是每天早上 9 点。
0 9 * * 1-5 是工作日早上 9 点。
0 */6 * * * 是每 6 小时一次。

每日新闻简报自动推送

这是最经典的应用。

创建一个每天早上 9 点运行的任务,自动搜索 AI 领域新闻,整理成简报推送到飞书。

1
/cron add "0 9 * * *" "搜索过去 24 小时的 AI 领域重要新闻,选出最有价值的 5 条。每条包含标题、一句话摘要和原文链接。格式简洁,适合手机上快速浏览。" --name "每日AI简报" --deliver feishu

每天到点,飞书就会收到一条整理好的新闻摘要。
早上喝咖啡的时间就把行业动态刷完了。

网站变更监控

想盯一个网页看它什么时候更新,手动刷新太蠢了。
这个场景有个关键技巧:[SILENT] 标记。

配一个脚本先检查网页内容有没有变化。
如果没变化,让 Agent 回复 [SILENT],Cron 就不会推送任何消息。
如果有变化,Agent 正常输出摘要,你才会收到通知。

1
/cron add "every 1h" "如果脚本输出显示 CHANGE DETECTED,分析网页发生了什么变化并简要说明。如果输出是 NO_CHANGE,只回复 [SILENT]。" --script ~/.hermes/scripts/watch-site.py --name "网页监控" --deliver feishu

只有网页真的变了,你才会被通知。
这就是 [SILENT] 的价值:让监控类任务在没事的时候保持安静。

GitHub 仓库动态

关注一个开源项目,想第一时间知道有没有新 issue 或 PR。
这个场景不需要写脚本,Hermes 内置的终端工具可以直接跑 gh 命令。

1
/cron add "every 6h" "检查 NousResearch/hermes-agent 仓库过去 6 小时的新动态。用 gh issue list 和 gh pr list 命令查询,筛选出最近 6 小时内的更新。如果没有新动态,回复 [SILENT]。否则简要列出新增的 issue 和 PR。" --name "仓库监控" --deliver feishu

每 6 小时自动检查一次,有动静才通知你。

任务全生命周期

创建之后,任务不是一成不变的。
Hermes 提供了完整的管理命令。

1
2
3
4
5
6
/cron list                    # 查看所有任务
/cron run <任务名> # 立即触发一次(测试用)
/cron pause <任务名> # 暂停,不删除
/cron resume <任务名> # 恢复执行
/cron edit <任务名> --schedule "every 4h" # 改调度频率
/cron remove <任务名> # 彻底删除

任务名不区分大小写,用名称代替 ID 就行。
改调度频率或提示词不需要删了重建,直接 edit。

两个关键注意点

提示词必须自包含。

Cron 任务运行在全新的会话里,没有你之前聊天的上下文。
如果你只写 检查一下那个服务器,Agent 根本不知道是哪台服务器。
IP 地址、用户名、具体命令都要写在 prompt 里。

Gateway 必须在运行。

Cron 调度器是 Gateway 网关的一部分。
Gateway 没跑,定时任务就不会触发。
用 macOS 的话,推荐用 launchd 托管 Gateway,设置 RunAtLoad=trueKeepAlive.SuccessfulExit=false,开机自动启动,意外退出自动重启。