Hermes Cron 定时任务:让你的 AI 到点上班
大多数时候,是你找 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 不是等你叫才干活——它该干什么、什么时候干,你提前说好就行。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)