Hermes Agent cron 定时任务使用教程
每天定时汇总数据、检查服务器状态、推送周报——这些重复性工作占据大量时间,却又不得不做。Hermes Agent 内置 cron 定时任务系统,支持自然语言调度、标准 Cron 表达式、任务全生命周期管理,自动执行数据汇总、系统监控、消息推送等重复性工作,让你彻底告别人工值守。本文从快速创建、生命周期管理、高级配置到场景实践,带你全面掌握定时任务用法,实现自动化办公与运维。
一、核心功能概览
Hermes cron 采用统一 cronjob 工具管理,核心能力包括:
-
✅ 多格式调度:支持自然语言、标准 Cron 表达式、相对延迟、ISO 时间戳。
-
✅ 全生命周期:创建、暂停、恢复、立即执行、删除、状态查询。
-
✅ 技能集成:任务执行时自动加载技能,复用成熟工作流。
-
✅ 多渠道投递:结果可发送至 CLI、文件、飞书、钉钉、Telegram 等。
-
✅ 环境隔离:支持指定工作目录、用户配置文件,任务独立会话运行。
-
✅ 低成本模式:支持纯脚本执行,无需 LLM,节省资源。
二、快速创建定时任务
2.1 自然语言创建(最便捷)
直接用日常语言描述任务与调度,Hermes 自动解析:
每天早上9点汇总AI行业新闻,发送到飞书
每隔30分钟检查服务器CPU使用率,超过90%发钉钉告警
每周五下午6点生成本周工作周报,保存到本地
2.2 斜杠命令创建(对话内)
在交互式会话中用 /cron 命令快速创建:
# 间隔任务:每2小时检查接口状态
/cron add "every 2h" "检查https://api.example.com接口可用性"
# 每日任务:工作日9点发送日报
/cron add "0 9 * * 1-5" "汇总昨日数据,生成日报"
# 一次性任务:30分钟后提醒会议
/cron add 30m "提醒10点项目会议"
2.3 CLI 命令创建(终端)
# 基础间隔任务
hermes cron create "every 6h" "备份数据库"
# 带技能任务:加载博客监控技能
hermes cron create "0 8 * * *" "汇总新博客" –skill blogwatcher
# 指定工作目录与配置文件
hermes cron create "every 1d" "审计代码" –workdir ~/project –profile dev
2.4 调度格式大全
1. 相对延迟(一次性)
-
30m:30 分钟后执行
-
2h:2 小时后执行
-
1d:1 天后执行
2. 间隔调度(重复)
-
every 30m:每 30 分钟
-
every 2h:每 2 小时
-
every 1d:每天
3. 标准 Cron 表达式
# 分 时 日 月 周
0 9 * * * # 每天9点
0 9 * * 1-5 # 工作日9点
0 */6 * * * # 每6小时
30 8 1 * * # 每月1日8:30
4. ISO 时间戳(一次性)
2026-12-31T18:00:00 # 2026年12月31日18点执行
三、任务生命周期管理
图1:Cron 任务生命周期流程
#mermaid-svg-vUvJEzGKknIiPzb3{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-vUvJEzGKknIiPzb3 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-vUvJEzGKknIiPzb3 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-vUvJEzGKknIiPzb3 .error-icon{fill:#552222;}#mermaid-svg-vUvJEzGKknIiPzb3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-vUvJEzGKknIiPzb3 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-vUvJEzGKknIiPzb3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-vUvJEzGKknIiPzb3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-vUvJEzGKknIiPzb3 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-vUvJEzGKknIiPzb3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-vUvJEzGKknIiPzb3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-vUvJEzGKknIiPzb3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-vUvJEzGKknIiPzb3 .marker.cross{stroke:#333333;}#mermaid-svg-vUvJEzGKknIiPzb3 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-vUvJEzGKknIiPzb3 p{margin:0;}#mermaid-svg-vUvJEzGKknIiPzb3 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-vUvJEzGKknIiPzb3 .cluster-label text{fill:#333;}#mermaid-svg-vUvJEzGKknIiPzb3 .cluster-label span{color:#333;}#mermaid-svg-vUvJEzGKknIiPzb3 .cluster-label span p{background-color:transparent;}#mermaid-svg-vUvJEzGKknIiPzb3 .label text,#mermaid-svg-vUvJEzGKknIiPzb3 span{fill:#333;color:#333;}#mermaid-svg-vUvJEzGKknIiPzb3 .node rect,#mermaid-svg-vUvJEzGKknIiPzb3 .node circle,#mermaid-svg-vUvJEzGKknIiPzb3 .node ellipse,#mermaid-svg-vUvJEzGKknIiPzb3 .node polygon,#mermaid-svg-vUvJEzGKknIiPzb3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-vUvJEzGKknIiPzb3 .rough-node .label text,#mermaid-svg-vUvJEzGKknIiPzb3 .node .label text,#mermaid-svg-vUvJEzGKknIiPzb3 .image-shape .label,#mermaid-svg-vUvJEzGKknIiPzb3 .icon-shape .label{text-anchor:middle;}#mermaid-svg-vUvJEzGKknIiPzb3 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-vUvJEzGKknIiPzb3 .rough-node .label,#mermaid-svg-vUvJEzGKknIiPzb3 .node .label,#mermaid-svg-vUvJEzGKknIiPzb3 .image-shape .label,#mermaid-svg-vUvJEzGKknIiPzb3 .icon-shape .label{text-align:center;}#mermaid-svg-vUvJEzGKknIiPzb3 .node.clickable{cursor:pointer;}#mermaid-svg-vUvJEzGKknIiPzb3 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-vUvJEzGKknIiPzb3 .arrowheadPath{fill:#333333;}#mermaid-svg-vUvJEzGKknIiPzb3 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-vUvJEzGKknIiPzb3 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-vUvJEzGKknIiPzb3 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-vUvJEzGKknIiPzb3 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-vUvJEzGKknIiPzb3 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-vUvJEzGKknIiPzb3 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-vUvJEzGKknIiPzb3 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-vUvJEzGKknIiPzb3 .cluster text{fill:#333;}#mermaid-svg-vUvJEzGKknIiPzb3 .cluster span{color:#333;}#mermaid-svg-vUvJEzGKknIiPzb3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-vUvJEzGKknIiPzb3 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-vUvJEzGKknIiPzb3 rect.text{fill:none;stroke-width:0;}#mermaid-svg-vUvJEzGKknIiPzb3 .icon-shape,#mermaid-svg-vUvJEzGKknIiPzb3 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-vUvJEzGKknIiPzb3 .icon-shape p,#mermaid-svg-vUvJEzGKknIiPzb3 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-vUvJEzGKknIiPzb3 .icon-shape .label rect,#mermaid-svg-vUvJEzGKknIiPzb3 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-vUvJEzGKknIiPzb3 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-vUvJEzGKknIiPzb3 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-vUvJEzGKknIiPzb3 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
暂停
恢复
立即执行
删除
删除
创建任务
运行中
已暂停
执行一次
已删除
3.1 查看任务列表
# 简要列表
hermes cron list
# 详细状态(含上次/下次执行时间)
hermes cron status
3.2 编辑任务
# 修改调度时间
hermes cron edit <任务ID> –schedule "every 4h"
# 修改任务内容
hermes cron edit <任务ID> –prompt "更新数据备份脚本"
# 追加技能
hermes cron edit <任务ID> –add-skill database
# 移除技能
hermes cron edit <任务ID> –remove-skill blogwatcher
3.3 暂停 / 恢复任务
# 暂停(保留配置,停止调度)
hermes cron pause <任务ID>
# 恢复(重新计算下次执行时间)
hermes cron resume <任务ID>
3.4 立即执行任务
# 跳过调度,立即运行
hermes cron run <任务ID>
3.5 删除任务
# 单个删除
hermes cron remove <任务ID>
# 批量删除已暂停任务
hermes cron remove –paused
四、高级核心配置
4.1 技能集成(复用工作流)
任务可加载 1 个或多个技能,自动复用成熟流程:
# 加载单个技能
hermes cron create "0 9 * * *" "汇总资讯" –skill news-watcher
# 加载多个技能
hermes cron create "every 12h" "生成报告" –skill data-process –skill report-generate
4.2 指定执行环境
1. 工作目录
指定任务运行目录,自动加载目录下 AGENTS.md 规范:
hermes cron create "every 1d" "审计代码" –workdir ~/my-project
2. 用户配置文件
绑定指定 Profile,使用独立配置 / 密钥:
hermes cron create "0 2 * * *" "备份数据" –profile prod
4.3 结果投递配置
支持多渠道发送结果,默认返回创建会话:
# 发送到飞书
hermes cron create "0 9 * * *" "发送日报" –deliver feishu
# 保存到本地文件
hermes cron create "every 6h" "备份日志" –deliver local
# 发送到指定Telegram群组
hermes cron create "every 1h" "监控告警" –deliver telegram:-100123456
4.4 静默模式(仅异常通知)
任务正常时不发送通知,失败 / 异常才告警:
每5分钟检查Nginx状态,正常输出,异常发送告警
4.5 无 Agent 模式(纯脚本)
无需 LLM,直接执行 Shell/Python 脚本,节省资源:
# 每5分钟检查内存,脚本路径~/.hermes/scripts
hermes cron create "every 5m" –no-agent –script memory-check.sh
4.6 任务串联(依赖执行)
后一个任务继承前一个任务输出,实现流水线:
# 任务1:每日7点抓取新闻
hermes cron create "0 7 * * *" "抓取新闻" –name news-fetch
# 任务2:7:30汇总任务1结果
hermes cron create "30 7 * * *" "汇总新闻" –context-from news-fetch
五、工作原理与安全
5.1 调度机制
定时任务由 Gateway 守护进程 统一调度,每 60 秒扫描到期任务:
从 ~/.hermes/cron/jobs.json 加载任务
对比当前时间,筛选到期任务
独立会话运行任务,隔离上下文
执行完成后投递结果,更新下次执行时间
5.2 安全防护
-
提示注入扫描:拦截含恶意指令、凭证泄露的任务。
-
脚本沙箱:无 Agent 模式脚本仅允许 ~/.hermes/scripts 目录。
-
任务隔离:每个任务独立会话,互不干扰。
六、场景实践示例
6.1 日常数据汇总
# 工作日9点汇总昨日业务数据,发送飞书
hermes cron create "0 9 * * 1-5" \\
"查询数据库,汇总订单、用户数据,生成Markdown报表" \\
–deliver feishu
6.2 系统监控告警
# 每10分钟检查服务器CPU/内存,超阈值发钉钉告警
hermes cron create "every 10m" \\
"检查CPU(>90%)、内存(>85%),异常发送告警" \\
–deliver dingtalk
6.3 自动化备份
# 每日2点备份数据库,保存到本地+同步到云
hermes cron create "0 2 * * *" \\
"执行PostgreSQL备份,保存到~/backup并同步到阿里云OSS" \\
–workdir ~/scripts
6.4 内容自动生成
# 每周五18点生成本周技术周报,保存到本地
hermes cron create "0 18 * * 5" \\
"汇总本周代码提交、接口变更,生成Markdown周报" \\
–deliver local
七、常见问题排查
任务不执行:检查 Gateway 是否运行(hermes gateway status)。
技能加载失败:确认技能已安装(hermes skills list)。
投递失败:检查渠道配置(如飞书 AppID / 密钥)。
无 Agent 模式报错:确认脚本存在、有执行权限。
八、总结
Hermes cron 以自然语言调度、全生命周期管理、高可用集成为核心,无需复杂配置即可实现各类自动化任务。无论是日常办公、系统运维还是数据处理,都能通过简单指令实现无人值守,大幅提升工作效率。结合技能集成、环境隔离、任务串联等高级能力,可构建完整自动化流水线,适配复杂业务场景。




