Git worktreeでClaude Code、Codex、OpenCodeのセッションを並列に動かす方法(スマートフォンから)
タスクをworktreeに分け、Claude Code、Codex、OpenCodeのセッションを並列で動かし、スマートフォンから安全にレビューとコミットまで1か所で行う実践的なワークフロー。
- CLI
- 0.2.17
- プレビュー ref
- a2c45c8
ここでworktreeが役立つ理由は、「2つのブランチを同時にチェックアウトできる」ことではありません。
マルチエージェントの作業です。
同じフォルダで2つのセッションを動かすと、失敗のパターンは予想どおりです。
- エージェントが同じファイルに触る
- diffが絡まる
- どの変更がどのタスクのものか分からなくなる
ほとんどは簡単なルールで解決します。
タスクごとにworktreeを1つ
そうすれば、たとえば次のことを並列で、互いに邪魔せずに行えます。
- Claude Codeのセッションでリファクタリング
- Codexのセッションでテスト
- OpenCodeのセッションでドキュメント
このガイドではそのワークフローを紹介します。
worktreeとは何か(そしてエージェントになぜ役立つか)
Git自身のドキュメントでは、worktreeは同じリポジトリに紐づく複数の作業ツリーを管理し、一度に複数のブランチをチェックアウトできるようにする仕組みと説明されています。(出典:https://git-scm.com/docs/git-worktree)
マルチエージェントの作業で大事なのは、もっと単純なことです。
- 各worktreeは独立したフォルダ
- 各エージェントが専用のフォルダを持つ
だから「このファイルを変えたのはどのエージェント?」は、推理ではなくディレクトリを見れば分かる問題になります。
よくあるやり方と、どこで破綻するか
- ブランチもフォルダも1つで、エージェントを順番に動かす: 安全ですが遅いです。
- フォルダ1つに複数のエージェント: 速いですが散らかります。
- タスクの合間にstashと復元を繰り返す: やれなくはないですが、頻繁だとミスが起きやすくなります。
速さと安全を両立できたと感じられたのは、worktreeが初めてでした。
うまくいくワークフロー
このワークフローではHappierを管理の中心に使います。HappierはClaude Code、Codexなどのエージェントをクロスデバイスで実行・オーケストレーションできるオープンソースアプリです。
1か所で次の2つが手に入ります。
- セッション: デバイスをまたいでClaude Code、Codex、OpenCodeのセッションを起動し、見守ります
- セッションごとのファイルとGit: 各セッションは1つのフォルダに紐づくので、その ファイル(Files)タブと Git タブにはそのフォルダだけが表示されます
トレードオフ:コンピューターはオンラインである必要があります。
Happierが初めての方へ(概要と入手方法)
Happierは、信頼できるコンピューターでセッションを動かし、スマートフォンから管理できるオープンソースのコンパニオンアプリ(モバイル、Web、デスクトップ)です。
セットアップ:
- GitHub: https://github.com/happier-dev/happier
- インストールとダウンロード: https://github.com/happier-dev/happier#how-it-works
- Discord: https://discord.gg/W6Pb8KuHfg
パターン:タスクごとにworktreeを1つ
簡単な形:
- タスクA用のworktreeを作る
- タスクB用のworktreeを作る
- それぞれでセッションを1つずつ動かす
- worktreeごとに別々にレビューとコミットをする
このガイドから1つだけ持ち帰るなら、これです。
手順
1) 本当に並列にしたいタスクを選ぶ
並列化は道具です。
並列に向いたタスク:
- テストとドキュメント
- リファクタリングとUIの小さな調整
- バグ修正と移行計画の作成
向かないタスク:
- 2つのエージェントが同じ中核ファイル群を編集する
2) worktreeを作る
素のGitなら、git worktree add ... でリンクされたworktreeを作ります。(出典:https://git-scm.com/docs/git-worktree)
実際に大事なのは結果です。
- それぞれ別のブランチをチェックアウトした2つのフォルダ
3) worktreeのフォルダごとにセッションを1つ起動する
Happierで新しいClaude Code、Codex、OpenCodeのセッションを始め、作業ディレクトリとしてworktreeのフォルダを選びます。2つ目のworktreeでも同じようにします。
セッションはフォルダに紐づくので、各セッションの Git タブは、変更が混ざらないworktree単位のdiff、コミット、プッシュの画面になります。
すっきり保つための習慣:
- セッションにworktreeやタスクの名前を付ける
- セッションの範囲を絞る(「このworktreeのファイルだけを触ること」)
4) 1か所からセッションを見守る
複数のセッションが動き出したら、すべてのトランスクリプトを読むことが目的ではありません。
目的は:
- どのセッションが動いているか確認する
- 承認に対応する
- フォローアップを1つ送る
そして何かが終わったら:
- そのセッションの Git タブを開く
- diffをレビューする
- コミットしてプッシュする(Gitの書き込み操作は実験的機能で、デフォルトではオフです。Gitのドキュメントを参照)
5) worktreeごとにレビューとコミットをする
安全のためのルール:
- 複数のworktreeにまたがる変更を1つのコミットにしない
そうしてしまうと、隔離の利点が失われます。
ターミナル(任意)
組み込みターミナルが使える場合、セッションに ターミナル(Terminal)タブが表示されます。機能一覧では実験的機能とされています。
grepや簡単なstatus確認など単発のコマンドに使い、主なワークフローにはしないでください。
よくある質問
worktreeを使わずにブランチだけではだめ?
1つのフォルダでブランチを切り替えると、stashやWIPコミットに頼ることになるからです。
worktreeなら作業をその場に置いたままにできます。
worktreeごとにエージェントは1つ必要?
必ずしもそうではありません。
ただ、エージェントを並列で動かすなら、worktreeごとに1つのエージェントにするのが衝突を防ぐ簡単な方法です。
よくある大きな失敗は?
worktreeを作ったのに、結局同じフォルダで複数のエージェントを動かしてしまうことです。
隔離は実際に使ってこそ機能します。
worktreeとセッションにはどんな名前を付ける?
スマートフォンの画面で見て意味が分かる名前にします。
- worktree:
hotfix-<ticket>/docs-<topic>/tests-<area> - セッション:worktreeの名前にエージェント名を足す(例:「hotfix-123 (Codex)」)
並列セッションは何個から「多すぎ」?
数そのものではなく、安全にレビューできるかどうかです。
デフォルトとしては2〜3個の並列セッションが適当です。
- 1つはメインの変更
- 1つは副次的なタスク(テストやドキュメント)
- 必要ならもう1つでレビューや確認
エージェントが別のworktreeに触らないようにするには?
2つの習慣が大いに役立ちます。
- 最初のメッセージにworktreeの名前を入れる:「
<worktree-name>だけで作業してください。」 - 最初の数ステップの後で、途中経過の要約を求める。
キーボードから離れているときほど、はっきり伝えておく価値があります。
複数のセッションが動いているときの「スマートフォンでの確認サイクル」は?
簡単なサイクル:
- Happierを開く
- どのセッションが動いているか確認する
- 承認に対応する
- 短いフォローアップを1つ送る(または「止めて要約して」)
- セッションが終わったら、そのworktreeのdiffをレビューしてコミットする
目的は、スマートフォンで本格的なコーディングをしようとせずに、主導権を保つことです。
各エージェントの作業を安全にレビューするには?
各worktreeを独立したレビューとコミットの単位として扱います。
- バージョン管理(Source control)→ 変更されたファイル(Changed files)→ ↓ レビュー(Review)
- 範囲の狭いメッセージでコミットする
- 自信があるときだけプッシュする
2つのエージェントが同じファイルに触る必要があるときは?
その時点で、並列化の効果は薄れます。
選択肢:
- 作業を順番にする(エージェントAの後にエージェントB)
- コードベースの別々の部分に触るようタスクを分ける
- 1つのエージェントが変更し、もう1つがレビューする
これはスマートフォンからでないと意味がない?
いいえ。ただ、スマートフォンからだと特に役立ちます。
worktreeはファイルシステムを整理された状態に保ちます。
Happierを使えば、モバイル、デスクトップ、Webのどこからでも、同じ場所でセッションを見守り、レビューとコミットができます。