你的 Hermes Agent 不是只能等你来问问题——它可以像 Linux crontab 一样,每到整点自动搜索热点、生成文章、提交草稿箱。今天带你从零上手 Hermes Cron Jobs,实现真正的「睡觉时也在挣钱」。
你肯定遇到过这个场景
你用 Hermes 搭了一套不错的内容流水线:研究员搜热点 → 大纲Agent写大纲 → 写作Agent出稿 → 发布到公众号。
但有一个问题:每次都要你手动触发。
早上8点起床,打开终端,敲一条指令——流水线才开始跑。跑完10分钟,你才能验收。如果你睡过头了?今天的文章就没发。如果你出差在路上?手机根本没法操作。
你想过没有:为什么不能让 Hermes 自己定时跑?
Linux 有 crontab,GitHub 有 Actions,Airflow 有 DAG schedule——AI Agent 为什么不能有自己的定时任务?
答案是:它可以。Hermes Cron Jobs 就是做这件事的。
Hermes Cron Jobs 是什么?
Hermes 内置了一套轻量级的定时任务系统,完全复刻 Linux crontab 的语法,但执行的不是 shell 脚本——是 Hermes 的 Skill。
┌─────────────────────────────────────────┐
│ Hermes Cron Job │
│ │
│ schedule: "0 */1 * * *" │
│ skill: ai-neican-hotspot │
│ prompt: "扫描AI热点,产出简报" │
│ profile: default │
│ │
│ → 每小时整点自动执行 │
│ → 输出保存到 ~/.hermes/cron/output/ │
│ → 可通过邮件/webhook发送结果 │
└─────────────────────────────────────────┘
每条 cron job 由四个核心要素组成:
| 要素 | 说明 | 示例 |
|---|---|---|
schedule |
Cron 表达式,5段制 | 0 */6 * * *(每6小时) |
skill |
要加载的 Skill 名称 | ai-neican-hotspot |
prompt |
给 Agent 的具体指令 | "扫描最近1小时AI热点" |
profile |
使用的 Hermes 配置 | default(可选) |
Cron 表达式速查(5段制)
分钟 小时 日 月 星期
0 */1 * * * ← 每1小时整点
*/15 * * * * ← 每15分钟
0 8 * * * ← 每天早上8点
0 9 * * 1-5 ← 工作日早上9点
0 0 * * 0 ← 每周日凌晨
⚠️ 与 Linux crontab 的区别:Hermes 只支持5段制(分钟/小时/日/月/星期),不支持秒级精度。如果配置了6段表达式,解析会失败。
实战:搭建你的第一条定时任务
Step 1:创建 Cron Job 配置文件
Hermes 的 cron jobs 配置在 profile 目录下的 cron/ 文件夹中,每个 job 一个 .yaml 文件:
# 目录结构
~/.hermes/profiles/default/
├── cron/
│ ├── hotspot-scan.yaml # 热点扫描任务
│ ├── daily-report.yaml # 日报生成
│ └── publish-article.yaml # 自动发布
├── skills/
└── memories/
创建第一条热点监控任务:
# ~/.hermes/profiles/default/cron/hotspot-scan.yaml
name: "AI热点扫描-整点执行"
description: "每小时扫描一次AI工具赛道最新动态"
schedule: "0 */1 * * *"
skill: ai-neican-hotspot
prompt: |
扫描过去1小时内AI Agent工具赛道的最新动态。
重点检查:
1. GitHub Releases: Hermes Agent、OpenClaw 新版本
2. Hacker News: AI 工具相关热帖(points > 50)
3. 中文社区: 知乎/CSDN 上的一人公司案例
发现重大新闻(融资/重大版本更新/平台政策变化)时,
输出格式:【🚨 重大发现】标题 + 核心摘要。
如果无新内容,输出 [SILENT]。
output:
destination: file # 输出保存到文件
path: ~/.hermes/cron/output/ # 输出目录
Step 2:激活 Cron Job
配置文件创建后,Hermes 的调度引擎会自动检测 cron/ 目录的变化:
# 列出当前 profile 的所有定时任务
hermes cron list
# 输出示例:
# ✅ hotspot-scan 0 */1 * * * 下次执行: 2026-07-23 12:00
# ✅ daily-report 0 21 * * * 下次执行: 2026-07-23 21:00
# ⏸️ publish-article 0 8 * * 1-5 已暂停
不需要手动启动调度器——Hermes Agent 运行时自动激活 cron 引擎。只要你保持 Agent 进程在线,cron job 就会按时执行。
Step 3:查看执行结果
每次 cron job 执行后,输出会保存到指定目录:
# 查看最近的执行记录
ls -lt ~/.hermes/cron/output/
# 输出示例:
# hotspot-scan/2026-07-23_11-00-00.md
# hotspot-scan/2026-07-23_10-00-00.md
# hotspot-scan/2026-07-23_09-00-00.md
每个输出文件包含:
- Job ID(唯一标识)
- 执行时间戳
- 完整输出内容(Markdown)
- 执行状态(success/failure/timeout)
- API 调用统计
进阶:多任务流水线编排
单条 cron job 适合简单任务。但内容工厂需要多条任务协作。这里用一个完整案例演示:
场景:AI创业内参的每日发布流水线
┌──────────────────┐
│ 07:00 热点扫描 │ ← 扫描过去12小时的动态
│ (hotspot-scan) │
└────────┬─────────┘
│ 输出: hotspot-report.md
▼
┌──────────────────┐
│ 07:30 内容创作 │ ← 读取热点报告,写作
│ (content-write) │ 产出草稿到 content/
└────────┬─────────┘
│ 输出: draft-*.md
▼
┌──────────────────┐
│ 08:00 自动发布 │ ← 从草稿箱选文,三审后
│ (auto-publish) │ 提交微信公众号草稿箱
└──────────────────┘
配置文件:
# cron/hotspot-scan.yaml
name: "早间热点扫描"
schedule: "0 7 * * *"
skill: ai-neican-hotspot
prompt: |
扫描过去12小时的AI热点。输出3-5个候选选题到
~/.hermes/projects/ai-neican/research/outputs/hotspot-scan-{date}.md
# cron/content-write.yaml
name: "自动内容创作"
schedule: "30 7 * * *"
skill: ai-neican-content-pipeline
prompt: |
读取最新的热点报告文件,执行完整流水线:
researcher → outliner → writer → reviewer → 终稿保存到 content/
重要:执行前先检查 content/ 目录,如果当日已有3篇以上草稿,
则检查热点报告是否还有未被覆盖的高价值选题,有则写,无则 [SILENT]。
# cron/auto-publish.yaml
name: "自动发布到公众号"
schedule: "0 8 * * *"
skill: wechat-public-account-draft
prompt: |
扫描 /home/agent/.hermes/projects/ai-neican/content/ 中最新的草稿,
执行三审流程(rate_article ≥60 + rate_layout ≥80 + rate_images ≥70),
通过后提交到微信公众号草稿箱,验证草稿存在后输出"发布成功"。
关键技巧:让你的 Cron Job 更可靠
1. [SILENT] 机制避免噪音
Cron job 每次执行都会产生输出。如果每小时都收到一封"无新内容"的报告,你很快会忽略真正重要的通知。
Hermes 内置了 [SILENT] 协议:如果 Agent 输出恰好是 [SILENT](不含任何其他内容),调度器会静默丢弃这次输出,不发送通知。
prompt: |
扫描AI热点...
规则:
- 有新发现 → 正常输出报告
- 无新内容 → 只输出 [SILENT](不发送通知)
2. 超时与重试策略
Cron job 不是 fire-and-forget。你需要处理 Agent 执行超时的情况:
# cron/publish-article.yaml
name: "文章发布(带重试)"
schedule: "0 8 * * *"
skill: wechat-public-account-draft
prompt: |
发布文章到公众号草稿箱。
如果获取 stable_token 失败(40001错误),重试最多3次,间隔10秒。
如果图片上传失败,跳过该图继续发布(不要全流程中断)。
timeout: 600 # 10分钟超时
retry: 3 # 失败重试3次
3. 防重复执行
同一条 cron job 理论上不会重叠执行(调度器有互斥锁),但跨 job 的重复是常见的:
prompt: |
创作新文章前,必须执行防重复检查:
1. ls /home/agent/.hermes/projects/ai-neican/content/draft-{today}*
2. 检查今日草稿标题,避免同一事件重复写
3. 如果发现同一话题今日已覆盖 → [SILENT]
4. 输出传递:用文件而非内存
不同 cron job 之间共享状态,最简单可靠的方式是文件:
Job A → 写入 research/outputs/hotspot-report.md
Job B → 读取 research/outputs/hotspot-report.md → 写 content/draft.md
Job C → 读取 content/draft.md → 发布到公众号
不需要消息队列、不需要数据库——Markdown 文件就是最简单、最可靠的 IPC(进程间通信)。
常见问题
Q: Cron job 需要 Hermes 一直运行吗?
A: 是的。Hermes 的 cron 引擎内嵌在 Agent 进程中。如果你关闭了终端,cron 就不会执行。对于生产环境,建议用 tmux 或 systemd 保持 Hermes 常驻后台。
Q: Cron job 执行时能调用工具吗?
A: 可以。Cron job 执行的 Agent 拥有完整的工具权限(文件读写、网络请求、API调用等),与手动交互模式相同。关键是 Skill 里要声明需要的 toolsets。
Q: 我能用 cron job 调用外部 API 吗?
A: 完全没问题。比如定时调用 OpenAI API 做内容生成、调用微信 API 发布文章——实际上,AI创业内参的每日发布就是靠 cron job 驱动 WeChat API 完成的。
Q: 多个 profile 的 cron job 会互相干扰吗?
A: 不会。每个 profile 的 cron job 独立运行,有各自的执行上下文和输出目录。框架保证了 profile 之间的隔离性。
总结
| 能力 | 实现方式 |
|---|---|
| 定时触发 | Cron 表达式(5段制) |
| 任务定义 | YAML 配置文件 |
| 工作流串联 | 文件传递(Markdown IPC) |
| 结果通知 | 文件输出 + [SILENT] 降噪 |
| 错误处理 | 超时 + 重试 + 日志 |
三条核心原则:
1. 文件是通用契约:Agent 之间通过 Markdown 文件传递状态
2. [SILENT] 是降噪开关:没新内容就不要吵我
3. 防重复是基本功:每次执行前先检查历史输出
用好这三条,你就能把 Hermes 从一个「对话工具」变成一个「24小时运转的 AI 员工」。
