凌晨三点,手机震动。监控告警:核心服务延迟飙升,数据库连接池耗尽。你迷迷糊糊爬起来,打开笔记本,准备登录服务器排查。这是运维工程师再熟悉不过的场景。

但如果你有一个 AI 助手,它能在你睡觉的时候自动检测异常、分析日志、执行预定义的修复脚本,甚至把处理结果和诊断报告推送到你的聊天工具里,你是不是就不用从床上爬起来了?

这不是科幻。Hermes Agent 的 Cron 系统就是为这个场景设计的。

什么是 Hermes Agent Cron 系统#

Hermes Agent 是 Nous Research 开发的开源 AI 智能体框架。它的 Cron 系统允许你为 AI 助手配置定时任务,在指定的时间点自动执行一系列操作。与传统的 Linux cron 不同,Hermes Cron 调度的是一个完整的 AI 工作流:你的助手可以调用工具、搜索信息、生成内容、操作文件、推送消息,全程不需要人工干预。

任何一个 Hermes Agent 的 profile 目录下,都可以有一个 cron/ 文件夹。里面存放的每一对 prompt.mdconfig.toml 文件,就是一个独立的定时任务。

五分钟上手:你的第一个 Cron 任务#

假设你想每天早上 8 点让 AI 助手抓取 Hacker News 头条,生成摘要,然后推送到你的飞书群。

第一步:创建配置文件#

~/.hermes/profiles/default/cron/daily-digest/config.toml 中:

schedule = "0 8 * * *"
timezone = "Asia/Shanghai"
enabled = true
deliver = "origin"
retry = { max_attempts = 3, backoff_seconds = 60 }

schedule 使用标准的 cron 表达式。deliver = "origin" 表示任务的输出(AI 助手的最终回复)会自动投递回触发任务的来源,比如飞书机器人或命令行。

第二步:编写任务提示词#

config.toml 同目录下创建 prompt.md

你的任务是抓取 Hacker News 首页的前 10 条热门文章,用中文列出标题和链接。
最后用飞书支持的 Markdown 格式输出。文章标题加粗,每条附上一句话摘要。

第三步:启用并验证#

hermes cron enable daily-digest
hermes cron list            # 查看所有任务状态
hermes cron run daily-digest  # 手动触发一次,验证效果

就这么简单。每天早上 8 点,你的 AI 助手会自动运行这个任务。

Headless 模式:当没人盯着屏幕时#

Cron 任务天然运行在 Headless(无头)模式下。这意味着:

  • 没有交互式终端:AI 助手不能停下来问"你想选方案 A 还是方案 B",它必须自主决策
  • 没有浏览器 OAuth:不能用"打开浏览器登录"的方式完成认证,所有凭证必须预先配置好
  • 超时是硬约束:每个任务有默认的超时时间(通常 600 秒),超时意味着任务失败

这听起来像是一种限制。但实际上,Headless 模式迫使你思考一个问题:如果完全没有人介入,这个流程应该怎么跑?

这种思维转变很有价值。你会发现很多"看起来简单"的流程其实暗含了大量人工判断点。把那些判断显式化、规则化,本身就是一种工程提升。

Headless 模式的关键设计考量#

在编写 Cron 提示词时,有几个原则特别重要:

1. 消除歧义

不要写"选一个好的方案"。写"选择 star 数最高的仓库"或"选择发布时间最近的文章"。AI 在 Headless 模式下没有机会追问你"哪种算好"。

2. 明确失败路径

如果 Hacker News 网站无法访问,使用 Reddit r/programming 作为备用源。
如果两个源都失败,输出一条"今日数据源不可用"的消息。

3. 输出格式精确指定

输出格式:Markdown,第一行 `## 📊 Hacker News 日报 {日期}`然后一个三列表格:序号 | 标题(带链接)| 分数。

实战案例:自动化博客发布#

Codexer 博客(你现在读的这个)的每一篇文章,都是通过 Hermes Cron 自动生成的。工作流程是这样的:

每天上午 9:00 → Cron 触发
    ↓
搜索近期 Codex 相关英文技术文章
    ↓
AI 提炼核心内容,原创中文重写
    ↓
Pillow 生成封面图 → 上传七牛云 CDN
    ↓
保存为 Hugo Markdown 文件
    ↓
git commit → git push
    ↓
CI/CD 自动构建部署到 codexer.com
    ↓
结果推送到飞书群

整个流程中有六个环节涉及外部服务调用、文件操作、版本控制。任何一个环节失败,AI 助手需要知道如何降级处理,而不是傻等。

输出投递机制:任务跑完了,结果去哪了#

Hermes Cron 支持三种投递模式:

模式说明适用场景
origin投递回触发源(飞书机器人、Slack 等)聊天机器人触发的定时任务
silent静默执行,不投递任何输出纯副作用任务(如数据清理)
file将输出写入指定文件生成报告存档

对于聊天机器人场景,deliver = "origin" 是最佳选择。任务的最终回复会自动作为一条消息推送到群聊中。

注意deliver = "origin" 要求 Cron 任务是通过 Hermes Gateway 的消息机制触发的。如果你只是通过 CLI 手动 hermes cron run,输出仍然会显示在终端。

进阶技巧:多步骤任务编排#

简单的 Cron 任务可能只需要 AI 完成一件事。但复杂场景下,你需要编排多个步骤。

Hermes 的做法不是提供 DAG 编排器,而是利用 AI 本身的理解能力。你只需要在提示词中描述步骤:

按以下步骤执行:

第一步:用 web_search 搜索"OpenAI Codex 最新动态",获取 5 篇近期文章链接。
第二步:逐一访问这 5 篇文章,提取标题、作者、核心观点。
第三步:综合分析 5 篇文章,写一篇 800 字的中文综述。
第四步:将综述保存到 /tmp/codex-news-{date}.md。
第五步:用 MEDIA: 指令在回复中附上今天的数据可视化截图。

AI 助手会自动按步骤执行,遇到错误会尝试替代方案。

陷阱与最佳实践#

经过几个月的生产环境使用,总结几条经验:

1. Token 预算管理#

Cron 任务通常运行时间较长(搜索、处理、生成),容易消耗大量 token。建议在提示词中明确限制范围:

只抓取前 10 条数据,每条的描述不超过 50 字。
如果文章超过 5000 字,只阅读前 2000 字和最后 500 字。

2. 幂等性设计#

定时任务可能因为网络抖动、服务重启等原因重复执行。确保任务是幂等的:

在保存文件前,检查该日期的文章是否已经存在。如果存在,跳过本次任务。

3. 凭证管理#

Headless 模式无法完成 OAuth 流程。所有 API 密钥、Token 需要预先配置在环境变量或配置文件(如 ~/.hermes/ 下以 _token 结尾的文件)中。

4. 监控与告警#

Cron 任务失败时,你不会收到报错邮件(除非你配置了)。建议在任务末尾添加健康检查:

执行完成后,用 curl 检查博客的 HTTP 状态码。
如果返回的不是 200,在回复中以 "⚠️ 部署异常" 开头输出详细错误信息。

这样,当 deliver = "origin" 把结果推到飞书群时,你一眼就能看到警报。

5. 不要滥用#

Cron 系统很强大,但请节制使用。每分钟触发一次的 AI 任务,API 费用会超乎你的想象。大多数场景下,每天一次或每小时一次就足够了。

跟传统 Cron 的对比#

维度传统 CronHermes Cron
执行内容Shell 脚本AI 工作流(自然语言驱动)
灵活性固定逻辑根据上下文动态调整
错误处理依赖脚本自身AI 自动分析错误并尝试修复
输出日志文件、邮件聊天消息、文件、CDN 等
门槛需要编程能力用自然语言描述即可

传统 Cron 像一个忠诚的闹钟,到点就响。Hermes Cron 像一个会思考的助理,到点了不仅知道该做事,还知道怎么做、做错了怎么补救。

写在最后#

Hermes Agent 的 Cron 系统不是要替代 Linux Cron,而是拓展了"定时任务"的边界。在传统 Cron 里,你安排的是命令;在 Hermes Cron 里,你安排的是意图。

当你把意图交给 AI 助手,它会用工具调用、搜索、推理和生成能力来完成。你不需要把每个边界情况都写成代码,只需要告诉它目标是什么、约束有哪些。

凌晨三点,手机没有震动。你翻了个身,继续睡觉。AI 助手已经帮你把服务器修好了,报告也发到了群里。这就是 Cron 系统给开发者最好的礼物。


参考来源:Hermes Agent 官方文档 (https://hermes-agent.nousresearch.com/docs), Nous Research, 2026.