1つのボードで複数の AI エージェントを動かす: 実践ガイド
Claude Code、Codex、ChatGPT を仕事の重複なしに1つのボードで動かす方法。タスクの取り決め、アトミックな確保、リース、一つのレビュー待ちキュー。
Weft は、ひとり創業者と小さなチームのための AI タスク管理です。
著者: Andrei Finogeev ·
はい、ボードが各タスクの持ち主を決める限り、2つや3つの AI クライアントで1つのボードを共有できます。Weft では、Claude Code、Codex、ChatGPT がすべて同じ MCP エンドポイントに接続します。それぞれが start_task でタスクを確保し、ハートビートで生かし続け、記録を添えて返します。2つのクライアントが同じカードに手を伸ばすと、2つ目には already_claimed が返り、同じ仕事を二度する人はいません。
Weft は私たちが作っています。他社製品についての事実は各社の公式ページから取り、2026年10月27日に確認しました。
このガイドは、互いの足を踏み合う2つか3つの AI クライアントを動かしている、ひとり創業者や小さなチームのためのものです。
2つ目のエージェントが本当に役立つのはどんなときか
エージェントを増やしても、それだけで仕事が速くなるわけではありません。役立つのは仕事が互いに触れ合わない部分に分かれるときで、ファイル、テスト用データベース、まだ誰も下していない判断を共有するときは害になります。
| 状況 | エージェントは1つか、複数か | 理由 |
|---|---|---|
| 一つのリポジトリで一つの機能、一度の作業で終わる | 1つ(サブエージェントがあればそれも使う) | 一つのコンテキストにすべて収まる。ボードは手間を増やすだけ |
| コードの別々の場所にある、独立した二つの修正 | 2つ、別々のブランチか worktree で | 共有するファイルがないので、リスクは同じカードを取ることだけ |
| ChatGPT で計画とトリアージ、ターミナルのエージェントでコーディング | 2つのクライアント、別々の仕事 | ChatGPT がタスクを書いて整理し、コーディングエージェントがそれを確保する |
| 複数のエージェントが同じプロダクトの判断を待っている | あなたが決めた後に、1つ | 並行するエージェントは、それぞれ違う推測をする |
先に話し合わずに二つの仕事を二人に渡さないのなら、二つのエージェントにも渡さないでください。
エージェントが取る前に、タスクには何が書かれているべきか
エージェントはタスクを文字どおりに受け取り、めったに質問しません。カードが Backlog を出る前に、次を与えてください。
- 確かめられる結果を一つ。 「オンボーディングを改善する」ではなく、「プロジェクトのページに、作成ボタン付きの空の状態を追加する」。
- 範囲。 どのファイル、ページ、システムに触れてよいか、何が範囲外か。
- 完了の確認方法。 うまくいったことを示すテスト、ビルド、URL。
- 返してほしい証拠。 プルリクエストのリンク、コミットのハッシュ、デプロイ先の URL。
- 止まる場所。 取り返しのつかないこと(公開、本番環境、お金)は、行動ではなく、あなたへの質問で終わるべきです。
Weft の既定のカラムは Backlog、Todo、Doing、Done です。単純な決まりがよく効きます。確保してよいのは Todo にあるカードだけ。プロジェクトを使えば、一つのリポジトリやクライアントを他から分けておけます。
2つのエージェントが同じカードで start_task を呼んだらどうなるか
カードを Doing に動かすのはロックではありません。2つのエージェントが同じ Todo のカードを読み、両方が始められます。だから Weft では、確保そのものがロックです。
start_task の呼び出しは一意インデックスで守られた一回のデータベースへの挿入なので、どちらが勝つかはデータベースが決めます。勝ったほうは runId と leaseToken を受け取り、カードは Doing に動きます。負けたほうには、タスクの id、タイトル、仕事を重複させないようにというヒント付きで already_claimed が返ります。一方がターミナルのエージェントで、もう一方がチャットアプリであっても関係ありません。
エージェントにとって already_claimed はエラーではなく、普通の答えです。正しい動きは、もう一度 get_my_work を呼んで次のカードを取ることです。ループの全体は確保、ハートビート、記録のループで説明しています。
ハートビートと20分のリースはどう働くか
確保はリースで、恒久的な割り当てではありません。start_task は20分のリースを与え、300秒ごとに更新するようエージェントに伝えます。エージェントは runId と leaseToken を付けて report_progress を呼ぶことで更新します。その間にリースを失っていれば、呼び出しは lease_lost を返し、エージェントは編集を続けずに止まるべきです。
セッションが死ぬと、そう伝える者は誰も残りません。ボードに届く信号は沈黙だけなので、Weft は沈黙を信号として扱います。
- ハートビートがないまま20分たつと、実行は stale と記録され、トークンは消され、タスクは未割り当てに戻ります。
- 掃除は10分ごとに走り、別のクライアントが確保しようとしたときにも、stale なタスクはすぐに解放されます。
- エージェントがあなたへの質問の答えを待っている間は、60分間タスクを保ちます。その後リースは外れますが、質問は開いたままです。
ハートビートもツールの呼び出しです。5分ごとにハートビートを送る40分のタスクは、それに約8回の呼び出しを使います。Free は月200回なので、毎日動く3つのエージェントにはすぐ足りなくなります。Pro には呼び出しの上限がありません。
どのエージェントが何をしたか、ボードはどう知るのか
Weft にサインインする OAuth クライアントは、それぞれが別の行為者です。Claude Code、Codex、ChatGPT はそれぞれ別々に登録し、ボードには各クライアントが登録した名前が表示されます。履歴のすべてのイベントに、どのクライアントが行ったかが記録されます。
OAuth に対応しないクライアントは個人アクセストークンを使えます。トークンもそれぞれが別の行為者ですが、スコープはありません(アクセストークン)。権限は OAuth 接続ごとに設定します。
- full(既定): 32のツールすべて。
- write: 破壊的な3つのツール(ゴミ箱、アーカイブ、スプリントの完了)以外すべて。
- read: 11の読み取り専用ツールだけ。
妥当な分け方は、コーディングエージェントは write、試験的なものは read です。一つのクライアントを切断すると、他に触れずにそのトークンだけが取り消されます。Weft はリフレッシュトークンを発行するので、接続済みのクライアントは自分でサインインを更新します。
ボード上の ID は、ディスク上の隔離ではありません。名前の違う2つのエージェントでも、一つのチェックアウトの中では互いの変更を上書きできます。コーディングエージェントにはそれぞれ専用のブランチか worktree を与えてください。
終わった仕事はどこに届き、どれだけあなたを待てるのか
既定では、完了したタスクはそのまま Done に進みます。タスクにレビューが必要なとき、あるいは検証チェックに落ちたときは、代わりにインボックスで止まります。そこで承認、差し戻し、あとで、取りやめのどれかを選びます。差し戻しにはメモが要ります。request_input からの質問も同じインボックスに入り、スマホにもプッシュで届くので、どのエージェントが尋ねても、見る場所は一つです。
complete_task の記録には、結果、確かめられる成果物、やらなかったこと、わからないこと、nextStep が含まれます。nextStep は承認ボタンの上に表示されるので、承認はまさにその一歩を承認します。詳しくはAI エージェントは何をしたのかをご覧ください。
インボックスには上限があり、エージェントが複数いればそれに行き当たります。1人のワークスペースで5件、チームで10件、または見積もりでレビュー45分ぶんの、どれか早いほうです。質問も数に入ります。いっぱいになると、start_task は attention_queue_full で断り、進捗の報告やボードの読み取りなど、まだできることをエージェントに伝えます。3つのエージェントは、1人がレビューできるより速く仕事を生み出せます。上限があるので、あなたが決して読まない結果が積み上がることはありません。
何が壊れ、どう立て直すか
| 障害 | 見えること | Weft がすること | あなたがすること |
|---|---|---|---|
| 2つのクライアントが同じタスクを始める | Doing にカードが一枚、片方のクライアントには already_claimed | データベースが一方の確保を勝たせ、もう一方は断られる | 負けたエージェントが次に移るなら、何もしない。それでも作業を続けたなら、その指示を締め直す |
| セッションがクラッシュする、ノートパソコンがスリープする | 進捗のない Doing のカード | ハートビートなしで20分たつと実行は stale になり、タスクは未割り当てに戻る | 別のエージェントが取る前に、ブランチに途中の作業がないか確かめる |
| エージェントが終えたのに complete_task を呼ばない | 仕事はマージ済み、カードはまだ Doing | リースが切れ、タスクは解放されるが閉じられはしない | 自分で閉じるか、証拠を添えて完了させるようエージェントに頼む |
| あなたにしか下せない判断がエージェントに必要 | インボックスに質問、場合によってはプッシュ | 確保は60分保たれ、答えは次の start_task か get_my_work でエージェントに届く | 示された選択肢の一つで答える |
| あなたを待つものが多すぎる | いっぱいのインボックス | start_task が attention_queue_full で断る | 項目をレビューするか取りやめる。キューが減ればエージェントはまた始められる |
| 2つのエージェントが一つのチェックアウトを編集する | 無関係な変更が一つの差分に混ざる | 何もしない。Weft にはあなたのファイルは見えない | エージェントを並行で動かす前に、worktree かブランチを分ける |
2つか3つのクライアントをどう設定するか
3つとも同じエンドポイントに接続し、ブラウザでサインインします。コピーするキーはありません。
# Claude Code
claude mcp add --transport http weft https://letsweft.com/api/mcp
# Codex: add to ~/.codex/config.toml, then sign in
[mcp_servers.weft]
url = "https://letsweft.com/api/mcp"
codex mcp login weftChatGPT は、そのディレクトリにある Weft アプリで接続します。Free を含むすべてのプランで使えます。手順のページ: Claude Code、Codex、ChatGPT、Cursor(ワンクリックでインストール)。サインインは MCP の認可仕様に従います。
ChatGPT はターン制で動きます。あなたが会話の中にいる間に行動します。計画、タスクの作成、質問への回答に向いています。長いコーディングの実行はターミナルのエージェントのほうが合います。数分ごとのハートビートには、動き続けるセッションが必要だからです。
1週間の試行はどんな流れになるか
- 1日目: クライアントを2つ接続する。 Claude Code と Codex、またはコーディングエージェント1つと ChatGPT。コーディングエージェントは write の権限にします。
- 1〜2日目: 上の取り決めに沿ってタスクを5〜10個書く。 結果一つ、範囲、完了の確認方法、証拠。Todo に置いておきます。Linear、Jira、Notion、Trello にすでにタスクがあるなら、先にインポートします。インポートは全プランで無料です。
- 2〜5日目: 同じ Todo のキューで両方のエージェントを動かす。 それぞれ専用の worktree で、start_task で確保し、complete_task と成果物で終えるよう伝えます。
- 5日目: わざと障害を起こす。 両方のエージェントを同じカードに向け、片方に already_claimed が返るのを見ます。タスクの途中で一方のセッションを終了させ、20分後にカードがまた空いているか確かめます。
- 7日目: ボードだけで監査する。 二度実行されたタスクや、終わった後も Doing に残ったタスクはありましたか。すべての結果を成果物から確かめられましたか。3つ目のエージェントを足す前に、タスクのテンプレートを直してください。
Hypertask のやり方と比べると
Hypertask のリースのモデルは堅実です。確保、ハートビート、解放、そして期限切れ。違いはそのモデルの置き場所です。Hypertask のドキュメントは、タスクのリース、証拠、エスカレーションを設計上 REST エンドポイントのみとしており、tools reference の21の MCP ツールにリースのツールはありません(MCP overview)。Weft では確保、ハートビート、質問、記録が MCP ツールなので、どの MCP クライアントも追加のコードなしで使えます。
| Weft | Hypertask | |
|---|---|---|
| 確保とリース | MCP の中: start_task、report_progress(20分のリース) | 設計上 REST エンドポイントのみ(docs) |
| MCP ツール | 32 | 21(docs) |
| サインイン | ブラウザでの OAuth、リフレッシュトークン付き。任意の個人アクセストークン | ドキュメント上の手順は30日で失効する API キーのコピー。ブラウザで承認した接続はリフレッシュなしで90日(docs) |
| エージェントの ID | OAuth クライアントやトークンがそれぞれ別の行為者 | 固有の ID を持つサービスアカウントとしてのエージェント |
| ChatGPT からの接続 | ChatGPT のディレクトリで公開済みのアプリ、Free を含む全プラン | Hypertask によると、OpenAPI Actions のカスタム GPT、または Developer mode のカスタムコネクタ(docs) |
| CLI と REST API | なし | npm の CLI と REST API(docs) |
| モバイルアプリ | iOS と Android | ネイティブ iOS アプリなし(ホーム画面のウェブアプリ)。Google Play 未掲載(docs) |
| 対応言語 | 27 | 英語のみ |
| 1席あたりの価格 | Free: タスク50件、月200回の AI 呼び出し。Pro: 月 ¥1,182 または年 ¥10,000 | Free: 1人あたりボード3つ。BYOK 年払い $8/月払い $10。Pro 年払い $16/月払い $20(pricing) |
| AI クレジット | 不要: 考えるのはあなた自身の AI クライアント | 内蔵 AI。BYOK プランは自分のモデルのキーを使う |
エージェントがスクリプトや CI から動き、CLI と REST API がほしいなら、エージェントをユーザーのように管理されるサービスアカウントにしたいなら、あるいは内蔵 AI(タスクの作成、スマートラベル、トリアージ)、キーボード中心の速さ、時間計測がほしいなら、Hypertask のほうが良い選択です。Weft には CLI も REST API も Webhook もなく、GitHub や Slack との連携もありません。Weft が合うのは、エージェントがすでに使っている MCP クライアント(ChatGPT を含む)で、それらにスマホから答えたいときです。
より広い比較は、MCP タスク管理ツールの比較と Hypertask の代替をご覧ください。
- エージェント同士が会話する必要はありますか?
- ありません。エージェントはボードを通じて連携します。確保、記録、質問です。Weft がエージェントを呼び出すことはなく、それぞれが get_my_work で次のタスクを取りにいきます。
- クラッシュしたエージェントのせいで、タスクが Doing に永遠に残りませんか?
- 残りません。ハートビートなしで20分たつと実行は stale と記録され、タスクは未割り当てに戻るので、別のクライアントが確保できます。先に、ブランチに途中の作業がないか確かめてください。
- 3つのエージェントにレビューで埋もれさせられませんか?
- インボックスの上限は1人で5件(チームで10件)、またはレビュー45分ぶんです。いっぱいになると、エージェントは新しいタスクを始められません。終わったタスクのほとんどは、そのまま Done に進みます。
- 複数のエージェントを動かすと費用は増えますか?
- Weft はエージェントごとではなく1席ごとの料金です。Pro は1人あたり月 ¥1,182 または年 ¥10,000 です。Free プランは AI 呼び出しが月200回までで、複数のエージェントのハートビートはそれをすぐに使い切ります。料金をご覧ください。