第七章 定时任务与自动化
让墨鱼学会自己定时干活——每天早上推送新闻简报、每周五整理工作周报、每小时检查服务状态。你睡觉的时候,墨鱼也不闲着。
什么是 Cron?
Hermes Agent 内置了完整的定时任务系统(Cron),支持:
- 自然语言创建:说人话就能创建定时任务
- 多平台投递:结果发送到飞书、Telegram、Discord 等
- 技能绑定:定时任务可以自动加载 Skill
- 自动重试:API 限流时自动切换到备用 Provider
核心机制
Cron 由 Gateway 守护进程驱动,每 60 秒检查一次是否有到期任务。到期的任务在隔离的 Agent 会话中执行。
创建定时任务
方式一:对话中创建(最自然)
直接告诉 Agent 你想要什么:
你:每天早上8点给我推送今天的天气和新闻摘要
Hermes:好的,已创建定时任务,每天 08:00 执行。
结果将发送到你的飞书 Home Chat。Agent 会自动调用 cronjob 工具,设置 schedule、prompt、投递目标等。
方式二:使用 /cron 命令
/cron create交互式向导引导你填写所有字段。
方式三:独立 CLI
bash
hermes cron create \
--schedule "0 8 * * *" \
--prompt "推送今天的天气和新闻摘要" \
--deliver telegram调度表达式
支持多种格式:
| 格式 | 示例 | 说明 |
|---|---|---|
| 自然语言 | every 2h | 每2小时 |
| 自然语言 | 30m | 每30分钟 |
| Cron 表达式 | 0 9 * * * | 每天9点 |
| ISO 时间戳 | 2026-04-15T09:00:00 | 一次性任务 |
常用 Cron 表达式速查:
每分钟 * * * * *
每小时 0 * * * *
每天8点 0 8 * * *
工作日9点 0 9 * * 1-5
每周一10点 0 10 * * 1
每月1号 0 8 1 * *技能绑定(Skill-backed Cron)
定时任务可以绑定 Skill,在执行前自动加载:
你:每天早上8点用 daily-briefing 技能给我推送简报
Hermes:已创建,每天 08:00 加载 daily-briefing 技能后执行。也可以绑定多个 Skill(按顺序加载):
bash
hermes cron create \
--schedule "0 8 * * *" \
--skills "web-content-fetch,arxiv" \
--prompt "推送 AI 领域最新论文摘要"TIP
绑定 Skill 比把完整指令塞进 prompt 更省 Token,也更易维护。
投递目标
执行结果可以发送到任意已配置的平台:
| 投递目标 | 说明 |
|---|---|
origin | 发送到创建任务的聊天 |
telegram | Telegram |
discord | Discord |
feishu | 飞书 |
email | 邮件 |
local | 仅本地保存 |
还可以指定具体的聊天 ID:
deliver: telegram:-1001234567890
deliver: discord:#engineering
deliver: feishu:oc_xxxxxxxx静默模式
如果 Agent 的最终回复以 [SILENT] 开头,消息不会投递,但仍会保存到本地用于审计:
# 在 cron prompt 中
"检查服务状态,如果一切正常就回复 [SILENT],异常则报告详情"注意
失败的任务始终会投递,不受 [SILENT] 影响。只有成功执行的任务可以被静默。
管理定时任务
查看所有任务
你:查看我的定时任务
# 或
/cron list暂停 / 恢复
/cron pause <job_id>
/cron resume <job_id>更新
/cron update <job_id> --schedule "0 10 * * *"不需要删除重建,可以直接更新任何字段。
删除
/cron remove <job_id>手动触发
/cron run <job_id>用于测试,不等待调度直接执行一次。
实战案例
案例 1:每日早报
你:创建一个每天早上7:30的定时任务,推送今天的天气预报、
重要新闻摘要和我的待办事项。发到飞书。Agent 自动创建:
- Schedule:
30 7 * * * - Prompt: 包含天气、新闻、待办
- Deliver: feishu
- Home Chat 已标记
案例 2:服务监控
你:每小时检查一次我的网站 https://myapp.com 是否可访问,
正常就静默,异常就发 Telegram 通知我。案例 3:每周代码审查
你:每周五下午5点,自动检查本周的 GitHub PR,
生成代码审查报告发到 Discord #engineering 频道。
使用 github-code-review 技能。存储位置
| 文件 | 位置 |
|---|---|
| 任务定义 | ~/.hermes/cron/jobs.json |
| 执行日志 | ~/.hermes/cron/output/{job_id}/{timestamp}.md |
| 调度锁 | ~/.hermes/cron/.tick.lock |
安全限制
Cron 任务不能递归创建新的 Cron 任务。Hermes 在 Cron 执行期间禁用 Cron 管理工具,防止无限调度循环。
深入阅读
- 官方文档:Scheduled Tasks (Cron)
- Cron 内部实现:Cron Internals