定时任务
Hermes Agent 内置了定时任务系统,允许您使用自然语言描述调度计划,让智能体在指定时间自动执行任务。
自然语言调度
与传统 cron 表达式不同,Hermes 允许您用日常语言描述任务计划,无需记忆复杂的 cron 语法:
每天早上 9 点检查我的邮件并总结重要内容每周一发送本周工作计划到 Telegram每隔 30 分钟检查一次服务器状态,如果有异常则发送告警Hermes 会自动将这些描述转换为内部调度格式并持久化保存。
hermes cron 子命令
list — 列出所有定时任务
bash
hermes cron list输出示例:
ID NAME SCHEDULE STATUS LAST RUN NEXT RUN
--- ------------------- --------------- ------- ------------------- -------------------
1 daily-email-summary 0 9 * * * active 2025-04-07 09:00:05 2025-04-08 09:00:00
2 weekly-report 0 9 * * 1 active 2025-04-07 09:00:12 2025-04-14 09:00:00
3 server-monitor */30 * * * * paused 2025-04-07 08:30:00 —
4 db-backup 0 2 * * * active 2025-04-07 02:00:03 2025-04-08 02:00:00create — 创建定时任务
bash
# 使用自然语言
hermes cron create "每天凌晨 2 点备份数据库"
# 使用 cron 表达式
hermes cron create --schedule "0 2 * * *" --name "db-backup" "执行数据库备份并上传到 S3"
# 指定执行配置
hermes cron create \
--schedule "0 9 * * 1-5" \
--name "daily-standup" \
--profile work \
"总结昨天的 git commits 并生成今日工作计划"edit — 编辑任务
bash
# 修改任务描述或调度时间
hermes cron edit 1
# 直接更新调度时间
hermes cron edit 1 --schedule "0 10 * * *"pause — 暂停任务
bash
# 按 ID 暂停
hermes cron pause 3
# 按名称暂停
hermes cron pause server-monitor暂停后的任务不会自动执行,但保留配置,可随时恢复。
resume — 恢复任务
bash
hermes cron resume 3
hermes cron resume server-monitorrun — 立即执行
不等待下次调度时间,立即触发一次任务执行:
bash
hermes cron run 1
hermes cron run daily-email-summary适合测试任务配置是否正确。
remove — 删除任务
bash
hermes cron remove 3
hermes cron remove server-monitor
# 删除所有已暂停的任务
hermes cron remove --pausedstatus — 查看任务状态
bash
hermes cron status 1输出:
Task: daily-email-summary (ID: 1)
Schedule: 0 9 * * * (每天 09:00)
Status: active
Created: 2025-04-01 10:23:45
Last Run: 2025-04-07 09:00:05 (success, 23s)
Next Run: 2025-04-08 09:00:00
Run Count: 7
Success Rate: 100%tick — 手动触发调度检查
bash
# 强制检查所有任务是否需要执行(调试用)
hermes cron tick调度示例
日常自动化
bash
# 每天早上汇总昨日新闻
hermes cron create "每天早上 7:30 搜索科技新闻并发送摘要到 Telegram"
# 工作日下班前提醒
hermes cron create --schedule "0 18 * * 1-5" "提醒我整理今天的工作笔记"
# 每月第一天生成月度报告
hermes cron create --schedule "0 9 1 * *" "生成上月工作统计报告"系统监控
bash
# 每 5 分钟检查服务健康
hermes cron create --schedule "*/5 * * * *" \
--name "health-check" \
"检查 API 服务是否正常响应,异常时发送告警"
# 每天检查磁盘空间
hermes cron create --schedule "0 8 * * *" \
"检查服务器磁盘使用率,超过 80% 时发送告警"数据处理
bash
# 每小时同步数据
hermes cron create --schedule "0 * * * *" \
--name "data-sync" \
"从上游 API 拉取最新数据并更新本地数据库"
# 每天凌晨清理临时文件
hermes cron create --schedule "0 3 * * *" \
"清理 /tmp 目录下超过 24 小时的文件"内容创作
bash
# 每周生成周报
hermes cron create --schedule "0 17 * * 5" \
--name "weekly-report" \
"汇总本周工作成果,生成 Markdown 格式周报并保存到 ~/reports/"
# 每天为社交媒体准备内容
hermes cron create "每天上午 10 点根据最新科技新闻生成 3 条推文草稿"任务执行环境
会话隔离
每个定时任务在独立会话中执行,拥有:
- 独立的对话历史
- 继承创建时的配置(toolsets、profile 等)
- 独立的任务 ID
工具集配置
定时任务使用创建时所在会话的工具集,也可以显式指定:
bash
hermes cron create \
--toolsets "web,terminal,file" \
--schedule "0 6 * * *" \
"下载昨日股票数据并生成分析报告"结果通知
任务完成后,结果可以通过配置的渠道发送:
yaml
# ~/.hermes/config.yaml
cron:
notification:
on_success: false # 成功时不通知(减少噪音)
on_failure: true # 失败时发送告警
channel: telegram # 通知渠道cron 表达式参考
虽然推荐使用自然语言,但也支持标准 cron 表达式:
分 时 日 月 周
* * * * *
常用示例:
0 9 * * * # 每天 09:00
*/30 * * * * # 每 30 分钟
0 9 * * 1-5 # 工作日 09:00
0 0 1 * * # 每月 1 日 00:00
0 2 * * 0 # 每周日 02:00持久化存储
定时任务配置持久化存储在 ~/.hermes/state.db 中,重启后自动恢复。
bash
# 导出所有定时任务配置
hermes cron list --export > my-crons.json
# 从备份恢复
hermes cron import my-crons.json