大多数时候,是你找 AI 干活。 Cron 定时任务让 AI 反过来——到点自动找你,告诉你该知道的事。


一、Hermes Cron 是什么?

Hermes 内置了一个调度器,让你可以设置定时任务,让 AI 在指定时间自动干活

和 Linux 的 cron 不同的是——它不需要写脚本,不需要配邮件发送器。直接用自然语言说"每天早上 9 点发项目日报",剩下的 Hermes 自己搞定。

支持两种执行模式:

模式 说明 适合场景
Agent 模式(默认) LLM 驱动,AI 收到调度后走完整的思考-工具调用流程 需要 AI 理解上下文、做判断的任务
Script 模式--no-agent 不调 LLM,直接跑一个脚本,输出结果投递到目标 轻量级系统监控、健康检查

二、快速上手:第一个 Cron 任务

前提条件

Cron 调度器依赖于 Hermes Gateway。你需要先确认 Gateway 在运行:

hermes gateway status

如果没跑,启动它:

hermes gateway run        # 前台测试
hermes gateway install    # 后台服务
hermes gateway start

创建第一个任务

hermes cron create "30m" "帮我检查服务器磁盘使用情况,如果超过 80% 就报警"

这条命令创建了一个每 30 分钟执行的定时任务。Hermes 收到调度后会检查你的磁盘,超过阈值就汇报。

查看任务:

hermes cron list

输出:

┌────────┬────────────┬────────────────────────┬────────┬──────────┐
│ ID     │ Schedule   │ Prompt                 │ Next   │ Status   │
├────────┼────────────┼────────────────────────┼────────┼──────────┤
│ abc123 │ every 30m  │ 检查服务器磁盘使用情况   │ 12:30  │ active   │
└────────┴────────────┴────────────────────────┴────────┴──────────┘

查看调度器状态:

hermes cron status

三、调度格式——自然语言还是 Cron 表达式?

Hermes 支持两种调度格式:

3.1 自然语言(推荐)

写法 含义
30m 每 30 分钟
2h 每 2 小时
every 30m 每 30 分钟
every 2h 每 2 小时
every day 每天
every week 每周

3.2 标准 Crontab 表达式

如果你熟悉 Linux cron 的 5 段式写法:

表达式 含义
0 9 * * * 每天早上 9 点
*/30 * * * * 每 30 分钟
0 9 * * 1-5 工作日早上 9 点
0 0 1 * * 每月 1 号零点
0 */2 * * * 每 2 小时整点

3.3 指定重复次数

默认情况下,定时任务会无限重复。你也可以限制执行次数:

hermes cron create "0 9 * * *" "发日报" --repeat 5

这个任务在每天早上 9 点执行,跑 5 次后自动停用。


四、投递目标——任务结果去哪了?

这是 Hermes Cron 和传统 cron 最大的区别——结果直接推送到你的消息平台

hermes cron create "0 9 * * *" "生成昨日代码commit总结" --deliver telegram

支持的目标:

选项 投递到哪
origin(默认) 创建任务的来源(终端或消息平台)
local 本地日志,不推送
telegram Telegram Bot 会话
discord Discord 频道
signal Signal 联系人或群组
platform:chat_id 精确指定平台+聊天 ID

最佳实践: 在 Telegram 等消息平台上,先对 Hermes Bot 说 /sethome,然后指定 --deliver origin。这样无论什么时候定的任务,结果都会推到你的手机。


五、实战场景

场景 1:每日项目日报

hermes cron create "0 9 * * 1-5" "
查看过去 24 小时的 git 提交记录,汇总成一个日报:
- 改了哪些文件
- 关键修改描述
- 有没有风险点
" --name "daily-report" --deliver telegram --workdir /path/to/your/project

每天早上 9 点(工作日),Hermes 跑去你的项目目录看 git log,分析改动,用中文写一份日报推送到你手机上的 Telegram。

场景 2:服务器健康监控

hermes cron create "*/15 * * * *" "
检查一下系统状态,有问题才汇报:
- CPU 负载超过 80% 报警
- 内存使用超过 85% 报警
- 磁盘 / 超过 80% 报警
- 没问题就沉默
" --name "health-check" --deliver telegram

每 15 分钟检查一次,正常时不打扰你,有问题才推送。

场景 3:脚本模式——轻量级系统监控

有些监控任务不需要 AI 理解上下文,直接跑个脚本拿到结果就行。这时候用 --no-agent 模式省 token。

先写一个脚本 ~/.hermes/scripts/disk-check.sh

#!/bin/bash
THRESHOLD=80
USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
    echo "⚠️ 磁盘使用率: ${USAGE}% (超过阈值 ${THRESHOLD}%)"
else
    echo ""  # 空输出 = 静默,不推送任何东西
fi
hermes cron create "*/10 * * * *" \
  --script disk-check.sh \
  --no-agent \
  --deliver telegram \
  --name "disk-monitor"

Script 模式的关键行为:

  • 脚本 stdout 非空 → 投递到目标
  • 脚本 stdout 为空 → 静默,不推送
  • 不调 LLM,零 token 消耗
  • 适合:磁盘监控、内存告警、服务健康检查、ping 结果等

脚本语言不限——.sh 和 .bash 走 bash,其他后缀走 Python。

场景 4:配合 Skills

如果你有专门的技能,可以挂到 cron 任务上:

hermes cron create "0 9 * * 1" "
review the past week's changes and generate a summary
" --name "weekly-review" --deliver telegram --skill systematic-debugging

Hermes 在处理这个定时任务时会加载 systematic-debugging 技能,使用 AI 分析上周代码中系统性地存在哪些问题。

多个技能可以一起挂:

hermes cron create "0 9 * * *" "项目日报" \
  --deliver telegram \
  --skill plan \
  --skill humanizer

场景 5:不同 Profile 执行不同任务

如果你有多个 Profile(工作模式、写作模式……),可以让不同的 cron 任务跑在不同的 Profile 下:

hermes cron create "0 9 * * *" "生成项目进度报告" \
  --profile work --deliver telegram

hermes cron create "0 8 * * *" "检查行业新闻并写简报" \
  --profile writing --deliver telegram

六、Cron 任务管理

列出所有任务

hermes cron list            # 只显示启用的
hermes cron list --all      # 显示所有(包括禁用的)

暂停/恢复

hermes cron pause job_id
hermes cron resume job_id

修改任务

创建后发现调度频率不对或者 prompt 要改?不用删了重建:

hermes cron edit job_id --schedule "0 10 * * *"
hermes cron edit job_id --prompt "新的任务描述"
hermes cron edit job_id --name "new-name"
hermes cron edit job_id --deliver discord
hermes cron edit job_id --workdir /new/project/path

# 追加技能
hermes cron edit job_id --add-skill plan

# 移除技能
hermes cron edit job_id --remove-skill systematic-debugging

# 清空技能
hermes cron edit job_id --clear-skills

# 切换执行模式
hermes cron edit job_id --no-agent     # 改为 script 模式
hermes cron edit job_id --agent        # 改回 agent 模式

立即触发一次

不等下一个调度时间,马上跑一次:

hermes cron run job_id

适合调试——先创建任务,手动跑一次看结果对不对,再等它自动调度。

删除任务

hermes cron remove job_id

查看调度器状态

hermes cron status

显示调度器是否运行、PID、当前有无活跃任务。


七、技术架构——秒级发生了什么

当调度器触发一个 Cron 任务时,内部流程是这样的:

时间到了 →
1. 调度器创建新的 Hermes 会话(独立会话,不干扰你现在聊天的)
2. 加载任务的 profile、skills、workdir
3. 如果是 agent 模式:
   把 prompt 发给 LLM → LLM 调用工具 → 生成回复
   如果是 script 模式:
   执行脚本 → 捕获 stdout
4. 结果通过 Gateway 投递到目标(telegram / discord / ...)
5. 调度器等待下一次触发

关键设计:

  • 每个任务在独立会话中执行,互不干扰
  • 多个任务可以并行运行(max_parallel_jobs 配置,默认不限制)
  • LLM 调用和脚本执行都有超时保护

在 ~/.hermes/config.yaml 中可以配置:

cron:
  wrap_response: true         # 结果是否包装后再投递
  max_parallel_jobs: null     # 并行上限(null = 不限制)

八、注意事项和坑

⚠️ Gateway 必须运行

Cron 调度器是 Gateway 进程的一部分。如果 Gateway 没跑,cron 不会触发。

hermes gateway status   # 确认在跑
hermes cron status      # 确认调度器活跃

⚠️ 长时间执行的任务

AI 模式的任务如果有大量工具调用(比如大规模代码分析),可能耗时 5-10 分钟。这种任务建议设置较长的调度间隔(比如每小时而不是每 5 分钟),避免任务堆积。

⚠️ Script 模式不调 LLM

--no-agent 模式下只跑脚本、不调 LLM、零 token 消耗。但如果你的脚本需要理解项目上下文、做判断,应该用默认的 agent 模式。

⚠️ 先调试再上线

创建任务后先用 hermes cron run job_id 手动触发一次,确保 prompt 写得对、结果正常推送到手机了,再等它自动调度。


九、从零到完整方案

给你一个完整的"每日开发者日报"方案,从创建到运行:

# 1. 确认 Gateway 运行
hermes gateway status

# 2. 创建 cron 任务
hermes cron create "0 9 * * 1-5" "
作为资深开发者,分析项目过去24小时的git提交:

1. 检查 git log --since='24 hours ago'
2. 按模块分类所有修改
3. 标注每个改动的类型(新功能/修复/重构/文档)
4. 评估风险:有没有大范围改动、核心模块改动、测试缺失的修改
5. 如果有风险项,给出关注建议

报告格式要简短,直接用中文说,不要 markdown 表格。
" \
  --name "daily-dev-digest" \
  --deliver telegram \
  --workdir /path/to/project \
  --profile work

# 3. 手动验证
hermes cron run <job_id>

# 4. 查看结果——去 Telegram 确认报告长什么样

# 5. 确认无误后,检查调度器
hermes cron status

# 6. 以后随时查看这个任务的执行情况
hermes cron list

每天早上 9 点,手机叮一声——Hermes 已经分析完了昨天的代码变动,报告躺在你的 Telegram 里。


十、总结

你想干嘛 命令
每 30 分钟检查一次 hermes cron create "30m" "prompt"
每天 9 点发日报 hermes cron create "0 9 * * *" "prompt"
结果发到手机 --deliver telegram
不调 LLM 跑脚本 --script xxx.sh --no-agent
挂上技能 --skill skill-name
用指定 Profile --profile work
手动测一次 hermes cron run job_id
修改调度频率 hermes cron edit job_id --schedule "新时间"

核心思想就一句话: Cron 把 Hermes 从"你问它答"变成了"它到点主动找你"。从此 AI 不是等你叫才干活——它该干什么、什么时候干,你提前说好就行。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐