Skip to content

第七章 定时任务与自动化

让墨鱼学会自己定时干活——每天早上推送新闻简报、每周五整理工作周报、每小时检查服务状态。你睡觉的时候,墨鱼也不闲着。

什么是 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发送到创建任务的聊天
telegramTelegram
discordDiscord
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 管理工具,防止无限调度循环。

深入阅读


基于 CC BY-NC-SA 4.0 发布 | GitHub