Hermes Agent: 检查点

最后更新:2026-08-31

检查点是 Hermes Agent 的存档系统——就像游戏存档,随时保存状态,出了问题可以读档重来,实验中断也能接着跑。

💡 提示:检查点不仅保存对话历史,还包括完整的 Agent 状态:记忆、技能调用链、工具执行结果、LLM 推理中间步骤。恢复后 Agent 从断点继续,不需要重新开始。

📋 前置知识:第6课 记忆系统、第7课 技能系统

1. 你将学到

编号 内容
检查点机制原理
自动检查点与手动保存
恢复与回滚
实验管理
检查点存储与清理

2. 故事

(1) 痛点:长任务中断,一切白费

Bob 让 Agent 做一个复杂的代码审查,分析了 20 分钟,突然断网。重新开始,又得从头来。

(2) 解法:检查点存档,断点续传

Alice 的 Hermes 自动保存检查点,断网后恢复:

BASH
# 断网前
Agent: 已审查 15/20 个文件...

# 恢复后
hermes checkpoint restore latest
Agent: 从检查点恢复,继续审查 16/20...

3. 检查点机制原理

(1) 检查点内容

JSON
{
  "checkpoint_id": "cp_20260315_143022",
  "timestamp": "2026-03-15T14:30:22Z",
  "session_id": "session_abc123",
  
  "agent_state": {
    "current_task": "code-review",
    "progress": "15/20 files",
    "active_skills": ["react-component-review"],
    "pending_actions": ["review_file_16", "review_file_17"]
  },
  
  "memory_snapshot": {
    "working_memory": [...],
    "long_term_changes": [...]
  },
  
  "tool_results": {
    "fs_read_src_main_py": "content_hash_abc",
    "code_python_result": "output_hash_def"
  },
  
  "llm_context": {
    "messages": [...],
    "tokens_used": 12500
  }
}

(2) 检查点流程

100%
graph LR
    A[Agent 执行] --> B{自动触发?}
    B -->|每5分钟| C[保存检查点]
    B -->|技能完成| C
    B -->|工具调用| C
    C --> D[写入磁盘]
    D --> A
    
    E[中断/错误] --> F[恢复检查点]
    F --> G[读取状态]
    G --> H[继续执行]

4. 自动与手动检查点

(1) 自动检查点配置

YAML
checkpoint:
  enabled: true
  
  # 自动保存策略
  auto_save:
    interval: 300              # 每5分钟
    on_skill_complete: true    # 技能完成后
    on_tool_call: true         # 工具调用后(大任务时)
    on_error: true             # 出错时
    max_checkpoints: 50        # 最多保留50个
    
  # 存储配置
  storage:
    path: "~/.hermes/checkpoints"
    compression: true          # 压缩存储
    max_size_mb: 500           # 总大小上限

(2) 手动保存

BASH
# 对话中手动保存
/checkpoint save "review-half-done"

# 命令行保存
hermes checkpoint save --name "before-deploy"

# 查看所有检查点
hermes checkpoint list

# 输出示例:
# ┌──────────────────────┬──────────┬─────────┬──────────┐
# │ Checkpoint           │ Time     │ Progress│ Size     │
# ├──────────────────────┼──────────┼─────────┼──────────┤
# │ review-half-done     │ 14:30    │ 15/20   │ 2.3 MB   │
# │ auto-cp-143000       │ 14:30    │ 15/20   │ 2.1 MB   │
# │ auto-cp-142500       │ 14:25    │ 12/20   │ 1.8 MB   │
# └──────────────────────┴──────────┴─────────┴──────────┘

5. 恢复与回滚

(1) 恢复检查点

BASH
# 恢复最近的检查点
hermes checkpoint restore latest

# 恢复指定检查点
hermes checkpoint restore review-half-done

# 对话中恢复
/checkpoint restore review-half-done

Agent: 从检查点 "review-half-done" 恢复
  任务: 代码审查
  进度: 15/20 文件
  继续审查第16个文件...

(2) 回滚

BASH
# 回滚到检查点(丢弃之后的所有更改)
hermes checkpoint rollback review-half-done

# ⚠️ 这会丢弃检查点之后的所有记忆和技能更改
# 确认? (y/n)

(3) 选择性恢复

YAML
# 只恢复部分状态
checkpoint:
  restore_options:
    agent_state: true         # 恢复任务状态
    memory: true              # 恢复记忆快照
    tool_results: true        # 恢复工具结果缓存
    llm_context: false        # 不恢复LLM上下文(重新生成)

6. 实验管理

(1) 研究模式检查点

研究模式下,检查点特别重要——批量轨迹生成可能跑几个小时:

YAML
research:
  mode: true
  
  checkpoint:
    save_every_n_tasks: 10    # 每完成10个任务保存
    save_on_error: true       # 出错时保存(保留失败样本)
    
  trajectory:
    output_format: "sharegpt"
    output_dir: "~/.hermes/research/trajectories"
BASH
# 批量轨迹生成
hermes research run \
  --tasks experiment_tasks.jsonl \
  --model gpt-4o \
  --batch-size 50 \
  --output sharegpt

# 中断后恢复
hermes research resume \
  --from-checkpoint latest \
  --output sharegpt

(2) 实验对比

BASH
# 保存不同实验的检查点
hermes checkpoint save --tag "experiment-a-temp07"
hermes checkpoint save --tag "experiment-b-temp03"

# 对比实验结果
hermes research compare \
  --checkpoint experiment-a-temp07 \
  --checkpoint experiment-b-temp03

7. 检查点存储与清理

(1) 存储格式

~/.hermes/checkpoints/
├── cp_20260315_143022.tar.gz    # 自动检查点
├── review-half-done.tar.gz      # 手动检查点
└── experiment-a.tar.gz          # 实验检查点

(2) 清理策略

YAML
checkpoint:
  cleanup:
    auto: true
    keep_manual: true            # 保留手动保存的
    keep_last_n: 10              # 保留最近10个自动检查点
    max_age_days: 30             # 超过30天的自动清理
    max_total_size: "500MB"      # 总大小超限后清理最旧的
BASH
# 手动清理
hermes checkpoint clean --keep-last 5

# 查看存储使用
hermes checkpoint storage-info

❓ 常见问题

Q 检查点占多少空间?
A 单个检查点 1-5 MB(压缩后)。50个约 50-250 MB。可以配置自动清理。
Q 恢复检查点后记忆会丢失吗?
A 不会。恢复只还原任务状态和上下文,不删除长期记忆。回滚才会丢弃。
Q 检查点能跨机器迁移吗?
A 可以。导出检查点文件,在另一台机器导入。路径差异需要手动调整。
Q 多久自动保存一次?
A 默认每 5 分钟。可配置 checkpoint.auto_save.interval 调整。频繁保存会轻微影响性能。
Q 研究模式必须用检查点吗?
A 强烈建议。批量实验跑几小时,中断后从检查点恢复比从头开始划算得多。
Q 检查点支持加密吗?
A 支持。配置 checkpoint.storage.encryption: true,使用 AES-256 加密。

📖 小节


📝 作业

  1. 基础题(难度⭐):在对话中手动保存检查点,重启 Hermes 后恢复,验证状态一致。
  2. 进阶题(难度⭐⭐):配置自动检查点策略(每 3 分钟 + 技能完成时),执行长任务,观察自动保存。
  3. 挑战题(难度⭐⭐⭐):模拟研究场景,批量运行 10 个任务,中途强制中断,从检查点恢复继续,验证零丢失。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏