Hermes Agent: チェックポイント

最終更新:2026-08-31

チェックポイントはHermes Agentのセーブシステムです。ゲームのセーブのように、いつでも状態を保存でき、問題が発生したらロードし直せます。実験が中断しても続きから再開できます。

💡 ヒント: チェックポイントは会話履歴だけでなく、エージェントの完全な状態も保存します:メモリ、スキル呼び出しチェーン、ツール実行結果、LLM推論の中間ステップ。リカバリ後はブレイクポイントから継続し、最初からやり直す必要はありません。

📋 前提知識: 第6課 メモリシステム、第7課 スキルシステム

1. 学ぶ内容

# 内容
チェックポイント機構の原理
自動チェックポイントと手動保存
リカバリとロールバック
実験管理
チェックポイントの保存とクリーンアップ

2. ストーリー

(1) 課題:長時間タスクが中断されると全て無駄に

Bobがエージェントに複雑なコードレビューをさせ、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%