检查点、定时任务与持久目标
本章介绍 Hermes 的三种自动化与安全保障机制:检查点在执行危险操作前保护你的文件,定时任务让 Agent 按计划自主执行,持久目标让 Agent 跨会话推进长期工作。
检查点与回滚
Hermes 提供文件系统级别的检查点(Checkpoint)机制,让你可以在 Agent 执行危险操作前创建快照,并在需要时回滚。
手动创建与恢复
实例
# 会话中手动创建检查点
/checkpoint 重构前的状态
# 列出所有检查点
/rollback
# 回滚到指定检查点
/rollback 2
/checkpoint 重构前的状态
# 列出所有检查点
/rollback
# 回滚到指定检查点
/rollback 2
命令行管理
实例
# 列出所有检查点
hermes checkpoints list
# 恢复到指定检查点
hermes checkpoints restore <id>
hermes checkpoints list
# 恢复到指定检查点
hermes checkpoints restore <id>
自动检查点:在执行高风险操作(如大规模文件修改、数据库变更)前,Agent 会自动创建检查点,无需手动干预。
检查点是文件系统级别的快照,适合在让 Agent 执行大规模重构或数据迁移前手动创建一个。它不是 Git 提交的替代品,而是额外的安全保障。
定时任务(Cron)
Hermes 内置 first-class Cron 调度系统,支持多种格式的调度计划。
创建定时任务
实例
# 交互式创建定时任务
hermes cron create
# 命令行创建每日早报任务
hermes cron create \
--name "daily-briefing" \
--schedule "0 8 * * *" \
--prompt "搜索今天的 AI 领域最新进展,发送摘要到 Telegram" \
--platform telegram \
--chat-id 123456789
hermes cron create
# 命令行创建每日早报任务
hermes cron create \
--name "daily-briefing" \
--schedule "0 8 * * *" \
--prompt "搜索今天的 AI 领域最新进展,发送摘要到 Telegram" \
--platform telegram \
--chat-id 123456789
管理定时任务
实例
# 列出所有任务
hermes cron list
# 暂停/恢复/删除任务
hermes cron pause daily-briefing
hermes cron resume daily-briefing
hermes cron delete daily-briefing
# 立即执行一次(用于测试)
hermes cron run daily-briefing
hermes cron list
# 暂停/恢复/删除任务
hermes cron pause daily-briefing
hermes cron resume daily-briefing
hermes cron delete daily-briefing
# 立即执行一次(用于测试)
hermes cron run daily-briefing
会话中管理 Cron
实例
# 在任意平台的会话中使用斜杠命令管理定时任务
/cron list # 查看所有任务
/cron pause <name> # 暂停指定任务
/cron resume <name> # 恢复指定任务
/cron list # 查看所有任务
/cron pause <name> # 暂停指定任务
/cron resume <name> # 恢复指定任务
Cron 配置格式
每个定时任务是一个独立的 JSON 文件:
实例
// 文件路径:~/.hermes/cron/daily-briefing.json
{
"name": "daily-briefing",
"schedule": "0 8 * * *",
"prompt": "搜索今天的 AI 领域最新进展,汇总成简报",
"platform": "telegram",
"chat_id": "123456789",
"toolsets": ["web", "memory"],
"enabled": true
}
{
"name": "daily-briefing",
"schedule": "0 8 * * *",
"prompt": "搜索今天的 AI 领域最新进展,汇总成简报",
"platform": "telegram",
"chat_id": "123456789",
"toolsets": ["web", "memory"],
"enabled": true
}
支持的调度格式
| 格式 | 示例 | 含义 |
|---|---|---|
| cron 表达式 | "0 8 * * *" | 每天早上 8 点 |
| 人类语言 | "every day at 8am" | 同上 |
| 间隔 | "every 2 hours" | 每 2 小时执行一次 |
Cron 安全:危险命令处理
定时任务中遇到需要审批的危险命令时,默认行为是拒绝(而非等待审批——因为没有人会在凌晨 4 点等着点 approve):
实例
# 文件路径:~/.hermes/config.yaml
# 定时任务的审批策略
approvals:
cron_mode: deny # deny(默认)| approve(自动批准,谨慎使用)
# 定时任务的审批策略
approvals:
cron_mode: deny # deny(默认)| approve(自动批准,谨慎使用)
cron_mode: approve 意味着定时任务中的危险命令会被自动批准执行——仅在完全信任任务内容的场景下使用。
持久目标(Persistent Goals)
持久目标让 Hermes 在多个会话中自主推进长期任务,而不需要你每次提醒。
管理持久目标
实例
# 设置一个持久目标
hermes goals add "每周监控 GitHub 上 Hermes Agent 的 Issue,
汇总未解决问题发到 Slack"
# 查看所有目标
hermes goals list
# 暂停/完成/删除目标
hermes goals pause <id>
hermes goals complete <id>
hermes goals delete <id>
hermes goals add "每周监控 GitHub 上 Hermes Agent 的 Issue,
汇总未解决问题发到 Slack"
# 查看所有目标
hermes goals list
# 暂停/完成/删除目标
hermes goals pause <id>
hermes goals complete <id>
hermes goals delete <id>
持久目标 vs 定时任务
| 对比维度 | 定时任务(Cron) | 持久目标(Goals) |
|---|---|---|
| 触发方式 | 固定时间点自动触发 | Agent 自主决定何时行动 |
| 执行内容 | 固定 Prompt,每次相同 | Agent 根据上下文动态决策 |
| 状态跟踪 | 无(每次独立执行) | 跟踪推进进度 |
| 适用场景 | 定期报告、每日摘要 | 需要上下文判断的长期任务 |
| 典型示例 | 每天早上 8 点发 AI 资讯 | 持续监控某个仓库的 Issue 并跟进 |
Cron 适合「固定时间做固定的事」,持久目标适合「Agent 你看着办,目标是这个,你自己把握节奏」。两者互补而非替代。
