大多数时候,是你找 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 "" # 空输出 = 静默,不推送任何东西 fihermes 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-debuggingHermes 在处理这个定时任务时会加载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 不是等你叫才干活——它该干什么、什么时候干,你提前说好就行。