Agent工坊

【Agent工坊】Hermes Agent 定时任务完全指南:用自然语言打造24小时无人值守AI流水线

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

支持的时间格式:
- 相对延迟:30m2h
- 间隔表达式:every 1hevery 6hevery 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+。

六、动手试试

  1. 确保Hermes Gateway在运行:hermes gateway install
  2. 创建你的第一个Cron任务:/cron add "every 30m" "检查天气并提醒我带伞"
  3. 立即测试:/cron run <任务ID>
  4. 查看输出:~/.hermes/cron/output/{job_id}/

一人公司实操建议:建议从3个核心Cron任务起步——
- 每日早报(搜索行业动态+推送到Telegram)
- 每小时GitHub仓库监控(跟踪竞品更新)
- 每周数据复盘(采集数据+生成趋势报告)

这三个任务跑通后,你的一天就从"主动搜索"变成了"被动接收"——AI帮你盯着互联网,你只负责决策。


AI创业 #HermesAgent #自动化 #CronJob #一人公司 #Agent工坊