ブログ

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 weft

ChatGPT は、そのディレクトリにある Weft アプリで接続します。Free を含むすべてのプランで使えます。手順のページ: Claude Code、Codex、ChatGPT、Cursor(ワンクリックでインストール)。サインインは MCP の認可仕様に従います。

ChatGPT はターン制で動きます。あなたが会話の中にいる間に行動します。計画、タスクの作成、質問への回答に向いています。長いコーディングの実行はターミナルのエージェントのほうが合います。数分ごとのハートビートには、動き続けるセッションが必要だからです。

1週間の試行はどんな流れになるか

  1. 1日目: クライアントを2つ接続する。 Claude Code と Codex、またはコーディングエージェント1つと ChatGPT。コーディングエージェントは write の権限にします。
  2. 1〜2日目: 上の取り決めに沿ってタスクを5〜10個書く。 結果一つ、範囲、完了の確認方法、証拠。Todo に置いておきます。Linear、Jira、Notion、Trello にすでにタスクがあるなら、先にインポートします。インポートは全プランで無料です。
  3. 2〜5日目: 同じ Todo のキューで両方のエージェントを動かす。 それぞれ専用の worktree で、start_task で確保し、complete_task と成果物で終えるよう伝えます。
  4. 5日目: わざと障害を起こす。 両方のエージェントを同じカードに向け、片方に already_claimed が返るのを見ます。タスクの途中で一方のセッションを終了させ、20分後にカードがまた空いているか確かめます。
  5. 7日目: ボードだけで監査する。 二度実行されたタスクや、終わった後も Doing に残ったタスクはありましたか。すべての結果を成果物から確かめられましたか。3つ目のエージェントを足す前に、タスクのテンプレートを直してください。

Hypertask のやり方と比べると

Hypertask のリースのモデルは堅実です。確保、ハートビート、解放、そして期限切れ。違いはそのモデルの置き場所です。Hypertask のドキュメントは、タスクのリース、証拠、エスカレーションを設計上 REST エンドポイントのみとしており、tools reference の21の MCP ツールにリースのツールはありません(MCP overview)。Weft では確保、ハートビート、質問、記録が MCP ツールなので、どの MCP クライアントも追加のコードなしで使えます。

WeftHypertask
確保とリースMCP の中: start_task、report_progress(20分のリース)設計上 REST エンドポイントのみ(docs)
MCP ツール3221(docs)
サインインブラウザでの OAuth、リフレッシュトークン付き。任意の個人アクセストークンドキュメント上の手順は30日で失効する API キーのコピー。ブラウザで承認した接続はリフレッシュなしで90日(docs)
エージェントの IDOAuth クライアントやトークンがそれぞれ別の行為者固有の 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,000Free: 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回までで、複数のエージェントのハートビートはそれをすぐに使い切ります。料金をご覧ください。