一、为什么定时任务是 Hermes 的"杀手锏"
ChatGPT 是被动的——你不问它就不说话。
Hermes 不一样。它内置了一个调度器(Cron Scheduler),可以:
- 每天早 7 点自动给你做一份个性化早报
- 每周五 17:00 自动起草周报
- 每 5 秒自动盯一次抢票网站
- 每月 1 号自动整理桌面、备份记忆
- 凌晨 3 点自动跑数据报表,早上你打开邮箱就能看到
这意味着 Hermes 不再只是"工具",而是一个24 小时为你工作的数字员工——你在睡觉的时候它在干活,你在开会的时候它在干活,你完全不知道它的存在的时候它在干活。
二、Hermes Cron 简介
如果你用过 Linux 的 crontab,会觉得 Hermes Cron 像是它的"自然语言版本"。
如果你没用过,没关系——Hermes 让你**用普通话告诉它"什么时候做什么"**就行。
2.1 用自然语言创建任务
最简单的方式:
hermes schedule "每天早 8 点把昨天收到的邮件汇总一下,结果推到我的 Telegram"
Hermes 会自动理解时间、动作、推送目标,并创建一个 Cron 任务。完成后会告诉你:
✓ 已创建定时任务
ID: cron-7e3b
时间: 每天 08:00
动作: 邮件汇总(用 mail-daily-digest skill)
推送: Telegram (chat_id: 123456789)
下次运行: 2026-04-20 08:00
2.2 标准 Cron 表达式
如果你已经懂 Cron 表达式,也可以直接写:
hermes schedule --cron "0 8 * * *" --task "汇总昨日邮件"
hermes schedule --cron "*/5 * * * *" --task "盯一下 ACME 客户官网,有变动通知我"
hermes schedule --cron "0 0 1 * *" --task "月度账单分析"
不熟悉 Cron 表达式?这里有几个常用的:
| 表达式 | 含义 |
|---|---|
0 8 * * * |
每天 8:00 |
30 9 * * 1-5 |
周一到周五 9:30 |
0 */2 * * * |
每 2 小时 |
*/5 * * * * |
每 5 分钟 |
0 0 1 * * |
每月 1 号 0:00 |
0 22 * * 0 |
每周日 22:00 |
0 7 1 1 * |
每年 1 月 1 日 7:00 |
2.3 任务管理命令
# 列出所有定时任务
hermes schedule list
# 查看某个任务详情
hermes schedule show cron-7e3b
# 暂停某个任务
hermes schedule pause cron-7e3b
# 恢复
hermes schedule resume cron-7e3b
# 删除
hermes schedule remove cron-7e3b
# 查看历史执行记录
hermes schedule history cron-7e3b
# 立即手动跑一次(不影响下次定时)
hermes schedule run cron-7e3b
三、11 个开箱即用模板
下面 11 个模板是普通人最常用的,全部可以直接复制用。
模板 1:每日早报
hermes schedule "每天早 7:00,做一份'今日早报':
1. 今日天气和我所在城市的空气质量
2. 我日历里今天的所有日程
3. 微信里值得我看的 3 条消息(如果接通了 wechat gateway)
4. 邮箱里需要今天回复的邮件
5. 昨天我布置给团队的待办,哪些今天到期
6. 一句话新闻摘要(科技 + 财经,各 3 条)
7:30 前推送到我的 Telegram。"
模板 2:每周五周报草稿
hermes schedule "每周五 17:00,跑 weekly-report skill。完成后通过 Slack DM 发草稿给我"
模板 3:月度账单分析
hermes schedule "每月 5 号上午 9:00,跑 monthly-bill-checkup skill(账单 CSV 在 ~/Desktop/账单/<本月>/)。结果推送到 Notion"
模板 4:竞品监控
hermes schedule "每天早 8:00,检查我配置的 5 个竞品页面有没有变。变更日报发到 #竞品 Slack 频道"
模板 5:抢票/限量监控
hermes schedule "白天每 60 秒、夜里每 5 分钟,监控 ~/.hermes/configs/ticket-watch.yaml 里的所有目标。出票立即推送 + 截图保存"
模板 6:数据备份
hermes schedule "每周日 23:00,把 ~/.hermes 全部打包,加密上传到 ~/Dropbox/hermes-backup/<日期>.tar.gz.enc"
模板 7:桌面 / 下载夹整理
hermes schedule "每月 1 号 22:00,跑 desktop-monthly-cleanup(先列计划不执行),结果发邮件给我审批"
模板 8:服务器健康巡检
hermes schedule "每天早 6:00,SSH 到我配的所有服务器跑 ./scripts/healthcheck.sh,
异常立即告警到 Telegram,正常时静默"
模板 9:个人代码仓库摘要
hermes schedule "每周一上午 10:00,整理我 GitHub 上所有 active 仓库的本周活动:
- commit 数 / PR 数 / issue 数
- 哪些 PR 等我 review
- 哪些 issue 提到了我但我还没回
推到我邮箱"
模板 10:父母关爱提醒
hermes schedule "每周三晚 21:00,提醒我'这周给爸妈打电话了吗?'。
如果我说还没,问我'我帮你预约一个 30 分钟的视频通话提醒?'"
模板 11:个人复盘
hermes schedule "每周日晚 22:00,做一份本周个人复盘:
- 这周 Hermes 帮我做了哪些事(按类别统计)
- 我最满意的 3 件事(基于我的笔记)
- 我没做完的 3 件事(基于 Things 3)
- 下周建议的优先级
推送到我的 Notion【周记】页面"
四、组合工作流:让一件事触发另一件事
定时任务只是触发方式之一。Hermes 还支持事件触发的工作流——一件事完成后自动触发下一件事。
4.1 简单链式触发
# ~/.hermes/workflows/morning-routine.yaml
name: 早晨例行
trigger:
type: cron
cron: "0 7 * * *"
steps:
- id: weather
skill: get-weather-and-air
- id: calendar
skill: today-calendar
- id: emails
skill: mail-digest
parallel: true # 与 calendar 并行跑
- id: digest
skill: compose-morning-brief
inputs:
weather: "{{ steps.weather.output }}"
calendar: "{{ steps.calendar.output }}"
emails: "{{ steps.emails.output }}"
- id: send
skill: telegram-send
inputs:
chat_id: 123456789
content: "{{ steps.digest.output }}"
启用:
hermes workflow enable morning-routine
4.2 条件触发(只有 X 时才做 Y)
name: 客户反馈快速响应
trigger:
type: webhook
endpoint: /feedback-incoming
steps:
- id: classify
skill: classify-feedback
- id: urgent_alert
when: "{{ steps.classify.output.priority == 'urgent' }}"
skill: telegram-alert
inputs:
chat_id: 123456789
content: "🚨 紧急反馈:{{ trigger.data.content }}"
- id: route
skill: assign-to-team
inputs:
category: "{{ steps.classify.output.category }}"
4.3 错误处理
工作流里任何一步出错都可以指定回退:
steps:
- id: send_via_email
skill: mail-send
on_error:
- id: send_via_telegram
skill: telegram-send # 邮件挂了就发 Telegram
- id: log_failure
skill: log-to-file
五、跨平台联动:让结果出现在你需要的地方
光在终端跑没意义——你看不到。真正的价值是让 Hermes 把结果送到你能立刻看到的地方:
| 场景 | 推送到哪里 | 怎么配 |
|---|---|---|
| 我在公司不想看终端 | Slack DM | gateway.slack.dm_user_id |
| 我下班路上 | Telegram | gateway.telegram.chat_id |
| 我在床上 | iMessage | gateway.imessage |
| 我开车 | 语音播报 + Apple Watch 通知 | voice + apple_watch |
| 我开会不能看手机 | 老婆的微信(紧急时) | gateway.wechat.partner |
| 完全不在线 | 留言机:明天早上推 | delay_until |
5.1 推送配置示例
在 ~/.hermes/notify.yaml:
channels:
- name: telegram
type: telegram
chat_id: 123456789
token_env: TELEGRAM_BOT_TOKEN
- name: slack-dm
type: slack
workspace: my-company
user_id: U12345
token_env: SLACK_BOT_TOKEN
- name: imessage
type: imessage
contact: "+8613800138000"
- name: voice
type: voice
device: macbook-speaker
- name: email
type: email
to: me@example.com
# 路由规则:什么场景推哪里
rules:
- match: "priority == 'urgent'"
channels: ["telegram", "imessage"]
- match: "type == 'morning_brief'"
channels: ["telegram", "voice"]
- match: "type == 'report'"
channels: ["email"]
- default:
channels: ["telegram"]
六、调试:任务跑了没?跑得对不对?
6.1 查看历史
hermes schedule history cron-7e3b --last 10
会输出最近 10 次执行记录:
2026-04-19 08:00:01 ✓ 12.4s 使用 deepseek-chat,2,341 tokens,¥0.04
2026-04-18 08:00:01 ✓ 11.8s
2026-04-17 08:00:01 ⚠ 35.2s 邮件接口超时,重试 3 次成功
2026-04-16 08:00:01 ✗ 1.2s API key 过期,已通知你
...
6.2 实时日志
hermes logs tail --follow # 看全局日志
hermes logs tail --schedule cron-7e3b # 只看某个任务的
6.3 测试任务(不修改任何东西)
hermes schedule run cron-7e3b --dry-run
会模拟执行所有步骤但不真的写文件、发消息,只输出"如果真跑,会做哪些事"。
6.4 设置告警
# 任务失败时给自己发警报
alerts:
on_failure:
channel: imessage
message: "🚨 定时任务 {{ schedule.name }} 失败:{{ error }}"
on_slow: # 跑得比正常慢 3 倍以上
threshold: 3x
channel: telegram
七、避免"任务自动化变事故"的 5 条铁律
定时任务一旦跑歪,可能在你睡觉时不停烧 API、刷你网银、或把重要文件覆盖掉。请遵守下面 5 条:
铁律 1:所有"花钱""动文件""动账户"的任务,必须 dry_run
新建任务后第一周,先用 --dry-run 跑几次,看看它到底想做什么。确认无误再切到真跑。
铁律 2:硬性预算上限(再说一遍)
第三章讲过,但太重要再强调:
budget:
per_schedule_daily_usd: 0.50 # 单个任务每天最多 0.5 美元
total_daily_usd: 5.00 # 全部任务每天总上限
铁律 3:失败有兜底告警
如果任务连续 3 次失败,必须有方式让你知道。
铁律 4:定期 review 任务清单
每月看一次 hermes schedule list。停掉那些"我已经不需要了"的任务——它们在你不知道的地方烧 API。
铁律 5:对外操作必须先经你确认
如果任务最终会"对外发邮件""下单付款""改数据库"——加一道人工审批。
steps:
- id: send_invoice
skill: send-email
require_approval: true # Hermes 会先发个"是否批准"
approval_channel: telegram
approval_timeout: 30m # 30 分钟没批就放弃
八、一个完整的"个人 OS"工作流
把上面所有东西串起来,你可以打造一个属于自己的"个人 OS"。
下面是一个真实用户的配置(脱敏):
┌──────────── 我的一天,全自动 ─────────────┐
│ │
│ 06:50 Hermes 提前 10 分钟做早报准备 │
│ 07:00 推早报到 Telegram + 智能音箱 │
│ 07:30 邮件简报到桌面 │
│ 08:30 我到公司开始工作 │
│ 09:30 Hermes 检查竞品 │
│ 10:00 自动同步 GitHub PR 到我的 Things │
│ 12:00 Hermes 提醒"该吃饭了" │
│ 12:30 自动汇总半天的客户反馈 │
│ 17:00 写周报草稿 + 推送 │
│ 18:00 Hermes 提醒"该下班了" │
│ 21:00 问我"今天读书了吗?" │
│ 23:00 备份当日数据 + 写周日复盘草稿 │
│ │
│ 全部加起来:每月 ¥80 API 费用 │
│ 每天为我节省 3~5 小时 │
└──────────────────────────────────────────┘
本章一图回顾
┌──────────── Hermes 自动化金字塔 ─────────────┐
│ │
│ ┌──────────────────┐ │
│ │ 组合工作流 │ │
│ │ workflow.yaml │ │
│ └────────┬─────────┘ │
│ │ │
│ ┌─────────────┴─────────────┐ │
│ │ 定时任务 (Cron) │ │
│ │ schedule │ │
│ └─────────────┬─────────────┘ │
│ │ │
│ ┌─────────────┴─────────────┐ │
│ │ Skills(自学习的步骤) │ │
│ └─────────────┬─────────────┘ │
│ │ │
│ ┌─────────────┴─────────────┐ │
│ │ 工具 + MCP(手脚) │ │
│ └───────────────────────────┘ │
│ │
└──────────────────────────────────────────────┘
下章预告
定时任务让 Hermes "在你电脑里 24 小时干活"。但如果你只用 CLI 看,体验会大打折扣。 第九章 多平台网关 会教你怎么把 Hermes 接到 Telegram、Discord、Slack、企业微信、邮件——让你在哪个 App 都能找到同一个 Hermes。