Administrator
发布于 2026-08-30 / 7 阅读
0
0

Hermes 定时任务(Cron)配置指南

#AI

Hermes 定时任务(Cron)配置指南

本文基于 Hermes Agent 实际环境,介绍定时任务的创建、管理与常见场景。示例均来自本机真实运行的任务。

定时任务能做什么

让 agent 在指定时间自动执行任务:生成日报、整理笔记、推送学习内容、抓取行业情报……任务结果可投递到微信等消息平台,或仅保存到本地文件。

本机当前运行的 6 个任务:

任务

调度

投递

AI每日热点报告

每天 07:00

微信

AI学习-工作日

周一至五 21:00

本地

AI学习-周末

周六日 06:00

本地

Linux内核学习-每日一课

每天 21:00

本地

每日笔记归档

每天 23:30

本地

Python问答归档

每天 23:30

本地

常用命令

hermes cron list              # 查看所有任务
hermes cron create "0 9 * * *"   # 交互式创建
hermes cron pause <id>        # 暂停
hermes cron resume <id>       # 恢复
hermes cron remove <id>       # 删除
hermes cron run <id>          # 立即手动触发一次

调度表达式:四种写法

  1. 间隔时长"30m"(每 30 分钟)、"2h"(每 2 小时)

  2. 自然语言"every monday 9am"(每周一 9 点)

  3. 标准 cron 五段式"0 7 * * *"(每天 07:00)

  4. 分 时 日 月 周

  5. 0 21 * * 1-5 = 周一至周五 21:00

  6. 0 6 * * 0,6 = 周六周日 06:00

  7. 一次性时间戳"2026-09-01T09:00:00"(到期只跑一次)

投递目标(deliver)

行为

origin

投递回创建任务的对话

local

仅保存到本地 ~/.hermes/cron/output/,不推送

weixin:chat_id

推送到指定微信聊天

all

推送到所有已连接的平台

两种任务模式

1. LLM 任务(默认)

每个 tick 启动一个 agent 会话,按 prompt 执行。适合需要理解、筛选、总结的任务:

hermes cron create "0 7 * * *"
# prompt 示例:搜索最近 24 小时 AI 热点,输出 3-5 条中文摘要日报

2. 纯脚本任务(no_agent)

不启动 agent,直接跑脚本,stdout 原样投递。适合确定性的监控/检查:

  • 非空输出 → 原样发送

  • 空输出 → 静默(watchdog 模式,没事不打扰)

实战案例:每日热点报告

调度: 0 7 * * *        (每天 07:00)
投递: weixin:...       (微信)
模式: LLM 任务

任务流程:
1. 07:00 触发,agent 用 web 搜索最近 24-48 小时热点
2. 筛选高热度事件,生成中文摘要(含原文链接)
3. 输出日报,系统自动投递到微信

微信投递的注意事项

重要:iLink(微信 bot API)对主动推送存在服务端硬限制——定时任务生成的日报在 07:00 自动推送会被拒绝(prepare failed),但用户发消息后的对话回复永远能送达。

已落地的解决方案(队列模式):
1. 定时任务只负责生成内容并保存到本地deliver=local
2. 内容入队(pending_deliveries.py 脚本管理)
3. 用户下次发消息时,agent 先查队列,把积压内容随回复一起投递

这样既保证内容每天准时生成,又绕过了推送限制。

排查技巧

hermes cron status                 # 调度器状态
hermes cron list                   # 查看任务与下次运行时间
grep -iE "error|failed" ~/.hermes/logs/gateway.log | tail -20   # 投递错误
ls ~/.hermes/cron/output/<job_id>/ # 查看任务输出文件

常见问题:

  • 任务没跑:检查调度器是否在运行(hermes cron status

  • 生成了但没收到:看投递错误日志,微信场景多半是主动推送限制,改用队列模式

  • 想立即测试hermes cron run <id> 手动触发

小结

定时任务的本质是「固定时间 + 自动化 agent + 指定投递」。设计时先想清楚三件事:什么时候跑、跑什么、结果去哪。配合队列模式可以绕开微信推送限制,实现完全自动化的信息流水线。


评论