チュートリアル15:Gitワークツリー — 並列エージェント
チュートリアル15:Gitワークツリー — 並列エージェント — 公式ドキュメントに基づくわかりやすいガイド
これはHermes Agent公式チュートリアルシリーズの一部です。すべてのチュートリアルを見る
キッチンが一つしかないのに、シェフが二人いると想像してみてください。二人が同じ調理台で料理したら、肘がぶつかったり、小麦粉をこぼしたり、お互いの料理を台無しにしてしまいますよね。Git worktreeは、各シェフに自分専用の調理台を与えるようなものです。同じキッチンでも、作業スペースは別々。この機能が、あなたのAIエージェントにまさにそれを提供します。
なぜ必要なのか? 単一チェックアウトの問題点
Hermes Agentは、実行しているフォルダをプロジェクトのルートとして扱います。同じフォルダで2つのエージェントを起動すると、すべてのファイルを共有することになります。つまり、次のような問題が発生します。
- エージェントAが、エージェントBが編集中のファイルを削除してしまう可能性があります。
- どの変更がどの実験によるものか区別できなくなります。
- ロールバックが複雑になります。あるエージェントの「元に戻す」操作が、別のエージェントの作業を消してしまうかもしれません。
Worktreeは、各エージェントに以下を提供することで、これらの問題を解決します。
- 専用のブランチ(変更が衝突しないように)
- 専用の作業フォルダ(ファイルが競合しないように)
- 専用のチェックポイント履歴(
/rollbackがそのエージェントにのみ影響するように)
ステップ 1: Worktreeを作成する(基本コマンド)
メインのリポジトリ(.git/があるもの)から、次のコマンドを実行します。
git worktree add ../my-agent-folder -b my-feature-branch
このコマンドを分解してみましょう。
../my-agent-folder– 新しいフォルダの場所(メインリポジトリの外側)-b my-feature-branch– このエージェント用の新しいブランチを作成
これで、プロジェクトの新しい分離されたコピーができました。
ステップ 2: HermesをWorktreeに向ける
Worktreeは2つの方法で使用できます。
オプションA: CLI(最も簡単)
Worktreeにcdして、そこでHermesを実行するだけです。
cd ../my-agent-folder
hermes chat
オプションB: メッセージングゲートウェイ(SlackやDiscordなど)
ゲートウェイを使用する場合は、~/.hermes/config.yamlを編集して、terminal.cwdをWorktreeのパスに設定します。
terminal:
cwd: /path/to/my-agent-folder
これで、そのエージェントが受信するすべてのメッセージは、その分離されたフォルダ内で処理されます。
ステップ 3: 複数のエージェントを並行実行する
必要な数だけWorktreeを作成します。
git worktree add ../agent-experiment-1 -b exp-1
git worktree add ../agent-experiment-2 -b exp-2
次に、各フォルダで1つのHermesセッションを開始します。それらは互いのファイルに触れることはなく、それぞれがコミット用の独自のブランチを持ちます。
ステップ 4: 完了後のクリーンアップ
実験が終了したら、Worktreeを削除します。
git worktree remove ../agent-experiment-1
git branch -d exp-1
最初のコマンドでフォルダが削除され、2番目のコマンドでブランチが削除されます。メインのリポジトリはクリーンな状態を保てます。
覚えておくべき重要なポイント
- Worktreeは軽量です – リポジトリ全体をコピーするのではなく、必要なファイルだけをコピーします。
- 各エージェントは独自の
/rollback履歴を持ちます – エージェント間での「元に戻す」操作による事故はもう起きません。 - ブランチを賢く使いましょう – 各エージェントが何をしたか分かるように、ブランチ名を明確にしましょう(例:
refactor-login、fix-bug-42)。
まとめ
Git worktreeを使うと、同じプロジェクト上で複数のHermesエージェントを、互いに干渉させることなく実行できます。エージェントごとにWorktreeを作成し、Hermesをそこに向けるだけです。まるで、各シェフに専用のまな板を与えるようなもの。同じキッチンでも、衝突はゼロです。
次のステップ: チュートリアル16では、HermesをDockerでデプロイします。自己修復型で常時稼働のアシスタントを構築します。
📖 公式ドキュメント
この記事は Hermes Agent の公式ドキュメントに基づいています:公式ドキュメント › user-guide/git-worktrees