Git とワークツリー

git ページ、どのペインからでもできるブランチ切り替え、そしてエージェント同士をぶつけないセッションごとのワークツリー。

git ページ#

⇧⌘G で GitHub Desktop 風のページが開きます。

  • リポジトリとブランチの切り替え
  • fetch(⇧⌘T)、pullpush(⌘P)、再読み込み(⌘R)
  • 差分をファイルごとに確認し、選んだものをステージしてコミット(⌘↩)
  • 履歴の閲覧とブランチのマージ

Agentty は利用者自身の git を、その設定と認証情報のまま使います。すべてのコマンドは非対話で実行されるため、見えないプロンプトで止まることがありません。認証ヘルパーで処理できない push は、固まる代わりにメッセージを出して失敗します。

ペインから直接#

どのペインでもヘッダーのブランチ名をクリックすれば、ターミナルを離れずにブランチ切り替え、pull、push、名前のコピーができます。

セッションごとに 1 つのワークツリー#

別のセッションがすでに作業しているプロジェクトで 2 つ目の AI セッションを開くと、Agentty はそれをプロジェクトの既定ブランチから切った新しいブランチの専用 git ワークツリーで起動します。2 つのエージェントが同じファイルを編集することはありません。

  • ワークツリーは ~/.agentty/worktrees/ の下に、agentty/<名前> ブランチで作られます。
  • すべてのセッションを同じフォルダで動かしたいなら設定 → 一般でオフにします。

仕組み#

Agentty は新しいブランチ agentty/<名前>git worktree add を実行します。基準はプロジェクトフォルダが今チェックアウトしているブランチではなく、既定ブランチです。そのため、あるセッションが別のセッションの未マージの作業の上に積み上がることがありません。

ツリーはプロジェクトの外、~/.agentty/worktrees/<プロジェクト>-<パスのハッシュ>/<名前>/ に作られます。プロジェクトフォルダの中に置かないことが重要です。コードの複製がその中にあると、あらゆる検索、ファイル監視、ビルドがその複製まで辿ってしまいます。

Agentty が削除するのはそのフォルダ配下のツリーだけです。利用者が自分で作ったワークツリーは一覧に出るだけで、触りません。

ファイルパネル#

⌥⌘B はプロジェクトツリーをターミナルの横に置きます。プロジェクトのすべてのワークツリーと、それぞれで誰が作業し何が変わったかも示します。

ツリーを右クリックすると、その中でターミナルを開く、パスをコピーする、(マージ後に)ブランチごと削除する、といった操作ができます。

並列タスク#

エージェントに作業を分けるよう頼めます —「A と B と C を並行で」。エージェントが Agentty に要求し、一度確認すれば、各タスクがそれぞれの分割ペインと専用のワークツリーで始まります。

この要求は毎回確認を経ます。エージェントが勝手にペインを開くことはできません。

ファイルエディタ#

ファイルパネルでファイルをクリックすると、ターミナルの横で開きます。主要な言語のシンタックスハイライト、元に戻す・やり直す、⌘S で保存、インストール済みのフォーマッタ(Prettier、google-java-format、ktlint、rustfmt、gofmt、Black)で整える ⇧⌥F に対応します。

エージェントが変更したファイルは自動で読み直されます。エディタで開くはファイルを VS Code、Cursor、またはシステムのエディタへ渡します。ファイルは読み書きされるだけで、実行されることはありません。