Day 6:把稳定流程交给时间

自动化不是把 prompt 丢进 cron

最有产品感的自动化场景,通常是“日报”“网站监控”“价格提醒”“定时备份”。这些东西之所以有价值,不是因为 AI 参与了,而是因为它们本来就重复、低风险、可复查。Hermes 的作用,是把收集、理解、整理和投递串起来。

今天不要做炫技自动化。做一个明天真的能用的流程。

Hermes Agent 第 6 天带重试和日志的定时工作流示意图
Hermes Agent 第 6 天带重试和日志的定时工作流示意图

什么任务适合定时

适合:

    1. 每天早上汇总 GitHub issue、日历和待办。
    2. 每晚备份 Hermes 配置和记忆目录。
    3. 每小时检查网站是否可访问。
    4. 每周整理一次记忆和 Skill 使用情况。
    5. 每天抓取固定信息源并生成摘要。

不适合:

    1. 结果错了会直接伤害用户或客户。
    2. 每次都需要临场判断。
    3. 还没手动跑通过。
    4. 失败后无法知道发生了什么。

判断原则是:先人工跑三次,再交给时间。

把流程拆成四段

不要让一个步骤从采集一路做到发送。拆开:

  1. Collect:采集原始数据,保存到文件。
  2. Summarize:基于原始文件生成摘要。
  3. Deliver:把摘要发到指定渠道或保存到指定位置。
  4. Log:记录开始时间、结束时间、输入路径、输出路径、失败原因。

这样投递失败时,可以只重发,不会重新采集一批不同数据,也不会生成另一版摘要。

一个日报模板

name: daily-ops-brief
trigger: "weekday 08:30"
collect:
  - github_issues
  - calendar_events
  - yesterday_notes
summarize_from: "artifacts/daily/raw.json"
deliver_to: "Feishu / Telegram / file"
approval_required: false
log_file: "logs/daily-ops-brief.log"
retry:
  collect: "no automatic retry if API auth fails"
  deliver: "retry twice, no duplicate message"

这里最重要的是 summarize_from。让 Hermes 基于保存下来的输入总结,而不是每次都重新读实时系统。

失败日志要像产品功能

日志不是开发者自嗨,是自动化体验的一部分。早上没收到日报时,第一反应不应该是“AI 又抽风了”,而应该能看到:

    1. 任务有没有启动。
    2. 读了哪些输入。
    3. 哪一步失败。
    4. 是否已经重试。
    5. 结果有没有发出去。

如果这些看不到,自动化就是新的负担。

今天交付什么

留下 hermes-day-6-automation.md

workflow: "daily-ops-brief"
manual_runs_passed: 3
trigger: "weekday 08:30"
raw_artifact: "artifacts/daily/raw.json"
final_artifact: "artifacts/daily/brief.md"
delivery: "chat or file"
idempotency_rule: "never send duplicate message on retry"
owner: "you"
rollback: "disable schedule and run manually"

明天讲多 Agent。定时任务解决的是重复执行,多 Agent 解决的是并行分工。两者都不该为了酷而上。

下一步

小白手把手:把一个稳定任务交给后台

自动化不是第一天就写 cron。小白先学会两件事:让 Hermes 在后台跑一个任务,以及让结果回到指定聊天或文件。

Hermes Agent Day 6 自动化运行卡流程图
Hermes Agent Day 6 自动化运行卡流程图

第 1 步:选一个低风险任务

选择“错了也不会造成损失”的任务,例如:

    1. 每天整理本地 notes 文件成一页摘要。
    2. 每周检查 ~/.hermes/memories 是否有重复记忆。
    3. 每天把固定 RSS/网页内容整理成草稿。

不要第一天自动发群消息、自动删文件、自动创建工单。

第 2 步:先手动跑三次

同一个任务,手动发三次,确认输出稳定。比如:

请读取 hermes-day4/raw/meeting-notes.md,
生成一页待办摘要,写入 hermes-day6/output/daily-brief.md。
不要向外发送。

第 3 步:如果在聊天通道里,先设置 Home Chat

在飞书/Lark 等聊天里发送:

/set-home

这一步的意义是告诉 Hermes:以后后台任务完成后,默认把结果发回这个聊天窗口。

第 4 步:使用后台任务

如果你的版本支持聊天命令,可以使用:

/background 请整理 hermes-day4/raw/meeting-notes.md,并把结果写到 hermes-day6/output/daily-brief.md,不要对外发送。

后台任务完成后,通常会把结果回传到同一聊天或 Home Chat。第一次先让它写文件,不要让它直接对外发。

第 5 步:做运行卡

把任务写成固定卡片:

workflow: "daily-brief"
manual_runs_passed: 3
input: "hermes-day4/raw/meeting-notes.md"
output: "hermes-day6/output/daily-brief.md"
delivery: "file first, chat later"
approval_required:
  - send to group
  - delete source file
  - create external ticket
logs: "~/.hermes/logs/gateway.log"

Day 6 常见卡点

    1. 后台任务没回消息:检查 Home Chat、gateway 是否运行、日志是否有错误。
    2. 每次结果不一样:保存 raw 输入,固定从同一份输入总结。
    3. 自动化噪音大:先改摘要格式,不要急着扩大范围。
    4. 想上系统级定时:先保证手动和后台任务都稳定,再用系统 cron 或平台调度。

今天必须留下的文件

hermes-day6/
  output/daily-brief.md
  run-card.yaml
  logs/run-001.md