ソロエージェントからエージェントチームへ:移行ガイド

Dev.to / 2026/4/5

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • このガイドでは、1つのAIコーディングエージェントを順次実行する状態から、「エージェントチーム」へ移行する手順を、並列性と監督レベルを段階的に高めながら説明します。
  • ステージ0では、ワークフローは1エージェントが1つのターミナルでタスクを1つずつ実行するものです。これは機能しますが、複数の独立したタスクを同時に実行できるのに時間を浪費してしまいます。
  • ステージ1では、別々のディレクトリとGitのworktrees/ブランチを使って、2つのエージェントを並行実行します。これにより、エージェント同士が互いのファイルを上書きすることを防ぎますが、それでも手動での監視、テスト、マージが必要です。
  • ステージ2では、ターミナルタブの代わりにtmuxを使用して複数のエージェントを同時により確実に監督できるようにし(例えば、エージェントの実行を停止せずにデタッチできるなど)、さらに自動化/監視の改善につながる基盤を整えます。

あなたはすでにAIコーディングエージェントを使っています。Claude Code、Codex、Aider — 1つ選んでください。うまくいきます。あなたがタスクを渡し、エージェントがコードを書き、あなたがレビューします。シンプルです。

しかし、バックログがあります。並行して実行できるタスクが5つ。3つのターミナルタブを開いてプロンプトを貼り付けると、なぜ「エージェントを増やすだけ」ではスケールしないのか、すぐに分かります。

ここでは、1つのエージェントから監督付きのチームへと段階的に進む道筋を示します。各ステップは、すべてを一度に作り直す必要なく、能力を追加していきます。

ステージ 0:いまのあなたの状況

1エージェント。1つのターミナル。順次タスク。

claude-code
# 「JWT認証を追加」
# 15分待つ
# レビューして、改善
# 「次にAPIのテストを書く」
# 10分待つ
# レビューして、改善

これは動きます。制限は「時間」です — 多くのタスクが並行で動かせるのに、あなたはタスクを順番に処理しているからです。

ここを超えるべきタイミング: 独立したタスクが定期的に3つ以上キューにあり、エージェントの出力をレビューする時間よりも、エージェントを待つ時間のほうが増えている場合です。

ステージ 1:並行で2つのエージェント

最も簡単なアップグレードです。ターミナルタブ2つ、エージェント2つ、タスク2つ。

# Terminal 1
mkdir -p .agents/agent-1
git worktree add .agents/agent-1 -b agent-1/task-auth
cd .agents/agent-1
claude-code
# 「JWT認証を追加」

# Terminal 2
mkdir -p .agents/agent-2
git worktree add .agents/agent-2 -b agent-2/task-tests
cd .agents/agent-2
codex
# 「ユーザーAPIの統合テストを書く」

重要な変更点: Git worktreesです。各エージェントが、自分専用のブランチ上のディレクトリを持ちます。これをしないと、互いのファイルを上書きしてしまいます。

まだ手作業で管理すること: 各エージェントが終わったタイミングを確認すること。テストを実行すること。ブランチを1つずつマージすること。コンフリクトを解消すること。

ここを超えるべきタイミング: 2つのエージェントは安定して動いているものの、手作業の「マージ/テスト/確認」サイクルが、監督に使う時間を食ってしまっている場合です。「エージェント2はまだ作業中?それとも止まってる?」と自問するようになります。

ステージ 2:tmux と基本的な監視を追加

ターミナルタブを tmux に置き換えます。これで両方のエージェントを同時に見ながら、殺さずにデタッチできます。

# 2つのペインでセッションを作成
tmux new-session -s agents -d
tmux split-window -h -t agents

# worktree 上でエージェントを起動
tmux send-keys -t agents:0.0 'cd .agents/agent-1 && claude-code' Enter
tmux send-keys -t agents:0.1 'cd .agents/agent-2 && codex' Enter

# 接続して両方を監視
tmux attach -t agents

重要な変更点: 可視性と永続性です。両方のエージェントが横並びで作業しているのが見えます。ラップトップを閉じて、後でSSHし直して tmux attach — 彼らはまだ動いています。

まだ手作業で管理すること: ステージ1のすべてに加えて、ペインの移動のための tmux の操作に慣れていく必要があります。

ここを超えるべきタイミング: 3つ以上のエージェント、テストの自動チェック、あるいは離席してもマージ済みの結果に戻ってこられる仕組みが欲しい場合です。

ステージ 3:テスト・ゲーティングを追加

このステージの前までは、「完了」の意味はエージェントが「終わった」と言ったことです。このステージの後は、「完了」の意味はテストが通ったことです。

# agent-1 が「終わった」と言った後:
cd .agents/agent-1
cargo test          # もしくは npm test, pytest
echo $?             # 0 = マージする / 0以外 = 返してフィードバック

# テストが通った場合:
cd /project
git merge agent-1/task-auth

# テストが失敗した場合:
# 失敗した出力をエージェントに戻す
# 「Tests failed: thread 'test_jwt_auth' panicked...」

重要な変更点: 品質ゲートです。この1つのチェックによって、「エージェントが何かを壊した」インシデントが約80%減ります。残りの20%は、エージェントの失敗ではなく、テストカバレッジの穴です。

まだ手作業で管理すること: テストコマンドを実行すること、出力を読むこと、マージするかフィードバックを返すかを判断すること。

ここを超えるべきタイミング: すべてのタスクで「テスト実行→マージ」というサイクルを手作業で回しており、それを自動化したい場合です。エンジニアが実行する前に特徴を分解できるアーキテクトが欲しい場合でもあります。

ステージ 4:アーキテクトを追加

計画と実行を分離します。1つのエージェントが分解し、他のエージェントが実行します。

これまでのあなたはアーキテクトでした — 各エージェントに何をやらせるかを決めていました。アーキテクトのエージェントは、ハイレベルな目標を受け取り、それを具体的でテスト可能なタスクに分解します。

あなた → 「JWTでユーザー認証を構築して」

アーキテクト → タスクを作成:
  1. 保護されたルートにJWTミドルウェアを追加
  2. トークン生成付きのログインエンドポイントを実装
  3. トークン更新(リフレッシュ)エンドポイントを実装
  4. 認証フローの統合テストを書く

各タスクは独立していて具体的で、完了条件が明確です。「認証を作る」というだけと、「4つに分解されたタスク」では、出力の品質の差が劇的です。

重要な変更点: タスク分解の質です。優れたアーキテクトのプロンプトは、曖昧なタスクを持つ追加のエンジニアを増やすよりも、より良い結果を生みます。

ステージ 5:Battyで自動化

上記の各ステップは、すべて手作業でできます。Battyは、ループ全体を自動化します:

# .batty/team_config/team.yaml
roles:
  - name: architect
    role_type: architect
    agent: claude
    instances: 1
    talks_to: [manager]

  - name: manager
    role_type: manager
    agent: claude
    instances: 1
    talks_to: [architect, engineer]

返却形式: {"translated": "翻訳されたHTML"}- name: engineer
    role_type: engineer
    agent: codex
    instances: 3
    use_worktrees: true
    talks_to: [manager]
cargo install batty-cli
batty init --template standard
batty start --attach
batty send architect "JWTでユーザー認証を構築する"

Battyが自動化すること:

  • ワークツリー作成: エンジニアごとに永続化し、タスクごとに新しいブランチを作成
  • テストのゲーティング: マージを許可する前にテストコマンドを実行
  • マージの直列化: ファイルロックにより同時マージの競合を防止
  • タスク配信: 自動割り当て付きのMarkdownカンバンボード
  • メッセージルーティング: talks_to の制約に基づくMaildirインボックス
  • アイドル検出: 4層システム(出力ハッシュ、セッションファイル、コンテキスト枯渇、完了パケット)
  • エージェントのライフサイクル: 起動し、監視し、クラッシュまたはコンテキスト枯渇時に再起動

あなたは機械を操作するのではなく、チームを監督します。

どのステージにいますか?

ステージ 次の状態になったら準備完了... セットアップにかかる時間
0 → 1 2つ以上の独立したタスクがある 5分
1 → 2 エージェントを並べて見たい 10分
2 → 3 マージ前に品質ゲートがほしい 5分
3 → 4 より良いタスク分解がしたい 15分
4 → 5 ループ全体を自動化したい cargo install batty-cli

今いるところから始めましょう。各ステージは、ワークフローを最初から作り直す必要なしに機能を追加してくれます。多くの開発者は、ステージ1(ワークツリー)がすぐに価値をもたらすと感じています。より多くを必要とするまで、何週間もそこに留まることができます。

重要なのはツールではありません。大事なのは進め方です。作業を切り分け、テストでゲートし、タスクを分解し、その後に自動化する——これがポイントです。

こちらから開始: cargo install batty-cliGitHub | デモ