Hermes的Cron系统支持自然语言调度、20+平台自动投递、Python脚本前置处理、多任务链式串联——一切都是纯自然语言配置,零YAML、零Crontab。
想象一下:每天早上9点,你的AI Agent自动搜索AI行业最新动态,写完一篇分析,推送到你的公众号草稿箱——而你还在睡觉。这不是科幻,Hermes Agent的Cron系统已经做到了。
今天带你彻底搞懂这套系统,并附上可复制粘贴的配置模板。
一、Cron能做什么?
Hermes的Cron不是传统的Linux crontab包装器,而是一个AI Agent原生的定时调度引擎。每个定时任务启动的是一个完整的Agent会话——能搜索网页、读写文件、执行代码、调用API、甚至生成图片。
核心能力一览:
- 🔍 网页搜索与监控:定时搜索关键词、监控URL变化
- 📊 数据采集与报告:每小时拉取API数据,存到本地分析趋势
- 📝 内容自动生成:搜索→分析→写作→发布全自动化
- 🔗 多任务链式串联:A任务输出作为B任务的输入上下文
- 📬 20+平台自动投递:Telegram/Discord/Slack/微信/飞书/钉钉/邮件/SMS
最关键的:所有操作通过自然语言配置,不需要写YAML、不需要设crontab表达式(当然也支持标准cron表达式)。
二、三种创建方式
方式1:聊天中自然语言(最简单)
直接跟Hermes说:
"每天早上9点,搜索AI Agent最新动态,总结top 3新闻,发到我的Telegram。"
Hermes会自动调用cronjob工具创建任务。这是最低门槛的方式,适合非技术用户。
方式2:/cron 命令(推荐)
/cron add "every 1h" "搜索Hermes Agent最新GitHub提交,总结变更内容" --name "Hermes监控" --deliver telegram
支持的时间格式:
- 相对延迟:30m、2h
- 间隔表达式:every 1h、every 6h、every 1d
- 标准Cron:0 9 * * *(每天9点)、0 9 * * 1(每周一9点)
- ISO时间戳:2026-07-20T09:00:00
⚠️ 注意:
daily at 9am这种纯自然语言不支持,用0 9 * * *代替。
方式3:CLI命令行
hermes cron create "every 2h" "检查服务器状态" --name "Server监控"
hermes cron create "0 9 * * 1" "生成每周AI行业周报" --deliver telegram
生命周期管理
/cron list # 查看所有任务
/cron run <id> # 立即执行一次(测试用)
/cron pause <id> # 暂停但不删除
/cron resume <id> # 恢复暂停的任务
/cron edit <id> --schedule "every 4h" # 修改调度频率
/cron edit <id> --prompt "新任务描述" # 修改任务内容
/cron remove <id> # 永久删除
三、五大实战模式(可直接复制)
模式1:网站变化监控
监控竞品官网定价页,价格一变立刻通知你。
监控脚本 ~/.hermes/scripts/watch-site.py:
import hashlib, json, os, urllib.request
URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-site-state.json")
req = urllib.request.Request(URL, headers={"User-Agent": "Hermes-Monitor/1.0"})
content = urllib.request.urlopen(req, timeout=30).read().decode()
current_hash = hashlib.sha256(content.encode()).hexdigest()
prev_hash = None
if os.path.exists(STATE_FILE):
with open(STATE_FILE) as f:
prev_hash = json.load(f).get("hash")
with open(STATE_FILE, "w") as f:
json.dump({"hash": current_hash, "url": URL}, f)
if prev_hash and prev_hash != current_hash:
print(f"CHANGE DETECTED on {URL}")
print(f"Content (first 2000 chars):\n{content[:2000]}")
else:
print("NO_CHANGE")
创建任务:
/cron add "every 1h" "如果脚本输出CHANGE DETECTED,总结变化内容。如果NO_CHANGE,回复[SILENT]。" --script ~/.hermes/scripts/watch-site.py --name "竞品监控" --deliver telegram
模式2:GitHub仓库监控
/cron add "every 6h" "检查 NousResearch/hermes-agent 仓库:
- 最近6小时的新Issue和PR
- 新Release
在终端执行:gh issue list --repo NousResearch/hermes-agent --state open --json number,title,author,createdAt --limit 10
如果没新内容,回复[SILENT]。" --name "Hermes仓库监控" --deliver discord
模式3:数据采集管线(脚本+AI分析组合)
Python脚本负责机械采集,AI Agent负责智能分析——这是性价比最高的组合。脚本输出作为Agent的上下文,Agent只在有意义时才调用模型推理。
# ~/.hermes/scripts/collect-prices.py
import json, os, urllib.request
from datetime import datetime
DATA_DIR = os.path.expanduser("~/.hermes/data/prices")
os.makedirs(DATA_DIR, exist_ok=True)
url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum&vs_currencies=usd"
data = json.loads(urllib.request.urlopen(url, timeout=30).read())
entry = {"timestamp": datetime.now().isoformat(), "prices": data}
with open(os.path.join(DATA_DIR, "history.jsonl"), "a") as f:
f.write(json.dumps(entry) + "\n")
# 输出最近6条给Agent分析
lines = open(os.path.join(DATA_DIR, "history.jsonl")).readlines()
for line in lines[-6:]:
r = json.loads(line)
print(f"{r['timestamp']}: BTC=${r['prices']['bitcoin']['usd']}, ETH=${r['prices']['ethereum']['usd']}")
/cron add "every 1h" "分析脚本输出的价格数据:趋势+异常波动(>5%)。平稳则回复[SILENT]。" --script ~/.hermes/scripts/collect-prices.py --name "价格追踪" --deliver telegram
模式4:日报/周报自动生成
/cron add "0 8 * * *" "1.搜索AI Agent最新5条新闻
2.检查GitHub trending ML仓库
3.搜索HN上讨论最多的AI帖子
整合成500字以内的简报,带链接,分章节。标题:【AI内参·每日速报】" --name "AI日报" --deliver telegram
模式5:多任务链式串联
A任务采集数据 → B任务基于A的输出生成报告:
cronjob(action="create", name="ai-news-fetch",
schedule="every 6h",
prompt="搜索AI Agent赛道最新新闻,保存到 ~/data/ai-news.json",
deliver="local")
cronjob(action="create", name="daily-digest",
schedule="0 7 * * *",
context_from=["ai-news-fetch"],
prompt="基于上面的新闻输出,写成300字早报",
deliver="telegram")
context_from是杀手级特性——让一个任务直接消费另一个任务的输出,无需手动管理中间文件。
四、关键技巧
1. [SILENT] 消音大法
监控类任务最怕噪音。在prompt中加入:
"如果没有新内容/变化,只回复 [SILENT]"
Cron系统识别到[SILENT]后会跳过投递——你只在真正有事时才收到消息。
2. Skill加持
Cron任务可以加载Skill,复用已有的专业工作流:
/cron add "0 8 * * *" "搜索arXiv上最新LLM推理论文" --skill arxiv --skill obsidian --name "论文摘要"
3. workdir指定项目目录
让Cron任务在特定项目目录下运行,自动加载项目配置文件:
hermes cron create "every 1d at 09:00" "审查PR状态,发到#eng频道" --workdir /home/me/projects/acme
4. 模型快照防意外消费
创建任务时,Hermes会快照当前使用的模型/提供商。如果全局默认模型后来变了,任务会拒绝执行并发送提醒——防止无人值守的任务悄悄切换到付费模型烧钱。
5. 禁止递归创建任务
Cron执行的Agent会话不能再创建新的Cron任务——防止失控的调度循环。这个安全设计非常关键。
五、投递目标矩阵
| 目标 | 写法 | 适用场景 |
|---|---|---|
| 创建任务的聊天平台 | origin |
默认 |
| 仅本地保存 | local |
存档用 |
| Telegram | telegram |
个人通知 |
| 特定Telegram群 | telegram:-1001234567890 |
团队通知 |
| Discord | discord:#engineering |
团队频道 |
| 全部已连接平台 | all |
广播通知 |
| 多个平台 | telegram,discord,email |
多渠道同步 |
支持平台:Telegram、Discord、Slack、WhatsApp、Signal、微信、飞书、钉钉、企业微信、QQ Bot、邮件、SMS、Matrix、Mattermost、Google Chat、Home Assistant等20+。
六、动手试试
- 确保Hermes Gateway在运行:
hermes gateway install - 创建你的第一个Cron任务:
/cron add "every 30m" "检查天气并提醒我带伞" - 立即测试:
/cron run <任务ID> - 查看输出:
~/.hermes/cron/output/{job_id}/
一人公司实操建议:建议从3个核心Cron任务起步——
- 每日早报(搜索行业动态+推送到Telegram)
- 每小时GitHub仓库监控(跟踪竞品更新)
- 每周数据复盘(采集数据+生成趋势报告)
这三个任务跑通后,你的一天就从"主动搜索"变成了"被动接收"——AI帮你盯着互联网,你只负责决策。
