AIエージェント
エージェント間の調整を、4日間の演習ではgitの規律が担った
目次
一つのリポジトリで複数のコーディングエージェントを同時に動かし、仕様の別々の部分を並行して実装させる使い方が広がっている。ところが、各エージェントは自分が読んだ指示とファイルしか知らず、ほかのエージェントが何に取りかかっているかを知らない。そのため、二つのエージェントが同じ関数を別々に書くことが起きる。人はどちらを残すかを選び、捨てた側が変更したファイルを元に戻さなければならない。
重複よりも見つけにくい食い違いもある。一方のエージェントがまだ書きかけの型やAPIを、もう一方が完成したものとみなして使い、その上に実装を書く。書きかけの型が変われば、それを使った実装も書き直しになる。これを防ぐには、各エージェントが自分の取りかかっている作業と終えた作業を書き、ほかのエージェントがそれを読める共有の記録が要る。
Thoughtworksの技術者が4日間の演習で複数のエージェントを同時に動かしたとき、調整のための仕組みを設計した人はいなかった。それでも、エージェントどうしは同じ作業に手を出さずに済んだ。この調整は、どのようにしてできたのか。
ビルドの失敗を早く見つけるために入れたcommitとrebaseの規律が、リポジトリの中の計画ファイルも全エージェントへ届け、その副作用として調整ができた1。 計画ファイルは、エージェントが実装する作業を行ごとに書いたファイルである。各エージェントは計画ファイルの行に作業中の印と実装の注記を書き、ほかのエージェントは、mainの最新の変更を自分の作業に取り込むrebaseのたびにその行を読んだ。計画ファイルはソースコードと同じpushで運ばれたので、チームがビルドとテストの負荷を下げるためにpushを減らすと、進捗は継続的には届かなくなった。
本稿の主な材料は、この演習の当事者が書いた記事である。著者のGiles Edwards-AlexanderはThoughtworksの欧州・中東・インド地域のCTOで、記事はmartinfowler.comの連載「Exploring Gen AI」の一本として2026年9月2日に公開された。演習では、Thoughtworks Europeがバルセロナのオフィスに10人の技術者を集め、航空会社の運航乱れ対応(IROps)システムを4日で作った1。
計画ファイル4行の例で、進捗が届く回数を数える
この節の数は、本稿が説明のために決めたもので、演習の記録には無い。原典は、commitの回数も計画ファイルの行数も書いていない。
エージェントAとエージェントBが、同じリポジトリで作業する。リポジトリには計画ファイルがあり、実装する作業が1行に一つずつ、合わせて4行書かれている。どの行をどちらが実装するかは、前もって決めていない。各エージェントは、印の付いていない行を選んで取りかかる。
変更がほかのエージェントに届くまでに、操作が三つ要る。commitは、変更を自分の手元に記録する操作である。pushは、書いた側がcommitを共有のブランチであるmainへ送る操作である。rebaseは、読む側がmainの最新の変更を自分の作業に取り込む操作である。pushのたびに、ビルドとテストを自動で走らせる仕組みであるCIが走る。
1行を実装するあいだに、エージェントはcommitを3回行う。1回目のcommitで、その行に作業中の印を付ける。3回目のcommitで、完了の印と、どう実装したかの注記を書く。4行すべてを終えるまでのcommitは、4 × 3 = 12回である。
pushの仕方を二つ比べる。1行を終えてからpushする場合は、その行の3回分のcommitをまとめて送る。
| pushの仕方 | pushの回数 |
|---|---|
| commitのたびにpushする | 4 × 3 = 12回 |
| 1行を終えてからpushする | 4 × 1 = 4回 |
CIが走る回数と、進捗がmainに入る回数は、どちらの場合もpushの回数と同じである。commitのたびにpushする場合は12回、1行を終えてからpushする場合は4回になる。
commitのたびにpushする場合、Aが行1に付けた作業中の印は、1回目のcommitの直後にmainに入る。Bは次のrebaseでその印を読み、行1を避けてほかの行を選ぶ。印が届くまでの遅れは、Bが次にrebaseするまでの時間である。
1行を終えてからpushする場合、Aが行1に付けた作業中の印は、3回目のcommitの後にmainに入る。Aは印を付けてからpushするまでに、commitをあと 3 − 1 = 2回行う。そのあいだ、Bの手元の計画ファイルでは、行1に印が無い。Bがこのあいだに行を選ぶと、行1を選ぶことがある。作業中の印は完了の印と同じpushで届くので、Bが作業中の印を読む時点では、行1はもう終わっている。
例の数から言えることは、次の三つである。
- 進捗がmainに入る回数は、pushの回数と同じである。計画ファイルが、ソースコードと同じpushで運ばれるからである。
- pushを減らすと、CIが走る回数と、進捗がmainに入る回数は一緒に減る。例では、どちらも12回から4回になる。例の仮定のとおりpushのたびにCIが走り、計画ファイルもpushで運ばれるかぎり、片方だけを減らすことはできない。
- 届くのは、計画ファイルに書いた内容だけである。Aが行1の実装で決めたことのうち、注記に書かなかったものは、pushが12回でも4回でもBに届かない。
以下の節では、演習の記録とほかの資料を、この三つの性質に当てる。
演習では、計画ファイルがソースコードと同じcommitで全員に届いた
10人の技術者は一つの部屋に集まり、全員が一つのリポジトリで同時に作業を始めた。最初の問題はビルドで起きた。記事は「多数のエージェントが一つのリポジトリで働いたことで、ビルドのパイプラインが苦しんだ」と書く。そこでチームは、エージェントがmainから継続的にcommitとrebaseを行う規律を入れた。最初は、commitのたびにrebaseしてからpushし、そのたびにビルドの検査を通すことを求めた。例の上段と同じ手順である。目的はビルドの失敗をローカルで捕まえることで、記事はこれを「早く、何度も統合する」と説明する1。
この規律には副作用があった。チームはエージェントに、計画を立て、作業の範囲を仕様の節に合わせ、その節に紐づいた計画を作るよう指示していた。計画ファイルはリポジトリに置かれ、進捗の更新は、ほかの変更と同じcommitの規律で運ばれた。その結果、「エージェントは他のエージェントの進行を見ることができた」1。計画ファイルがソースコードと同じ経路で運ばれたので、演習でも性質1が成り立つ。
エージェントは、届いた計画ファイルを調整に使った。片方のエージェントが計画ファイルの行に作業中と印を付けると、もう片方はそれを見てその行に手を出さない。行が終われば、もう片方には、作業が完了して自分が先へ進めるという知らせに加えて、「その行がどう実装されたかの注記」まで届いた1。例のAとBが行1でしたことと同じである。
計画ファイルは、依存する部品どうしの接点も運んだ。演習では、一方のエージェントが、運航を立て直す案が制約を破らないかを判定する評価器を書いていた。同じ時期に、もう一方のエージェントが、その評価器に依存する探索を書いていた。計画はこの接点を記録しており、一方の計画には「この時点で、呼び出し側を本物の検証器を呼ぶように更新する必要がある」と書かれていた。探索の側の計画には「本物の検証器が届いたら、その呼び出しを差し込む必要がある」と書かれ、両方のエージェントが互いの計画と進行を読めた1。計画に書かれた接点の決定は、計画を通じて相手に届いた。
チームはこの働きに気づいてから、意図して使い始めた。記事は経緯を「これは完全に場当たりだった。一連の決定の偶然の産物だった。私たちはそれが起きるのを見た。そして使い始めた」と書く1。たとえばチームは、ある部品を担当するエージェントに、計画ファイルとリポジトリを見張り、別の部品の作業が届いたら統合を始めるよう指示した。エージェントはそのとおりに動いた。
著者は、この形に既存の名前があると書く。blackboard(黒板)と呼ばれる設計の型で、黒板は「自律したエージェントが独立に読み書きできる共有メモリ」である1。著者によると、エージェントはリポジトリを黒板として使い始めていた。
pushを減らすと、CIの負荷と一緒に進捗の届く回数も減った
チームはその後、CIの負荷を下げるためにpushを減らした。記事は「頻繁なcommitが私たちのCIパイプラインを圧迫していた。私たちは、まとまりのある変更が完了したときにだけpushする方式へ切り替えた」と書き、結果を「これがエージェントから、進行についての継続的な更新の流れを奪った」と書く1。
チームが変えたのはpushの頻度だけで、エージェント間の調整の仕組みには手を付けていない。それでも、進捗は継続的には届かなくなった。例でpushを12回から4回に減らしたときと同じ向きの変化で、性質2のとおりである。ただし原典は、pushの回数も、まとまりの大きさも、切り替えの後に作業の重複が起きたかも書いていない。
著者は、解き方の向きも書いている。「この通信路はソース管理から独立して置かれるべきだと私は考える」1。記録を運ぶ経路をpushと別にすれば、進捗が届く回数はpushの回数で決まらなくなり、pushを減らしても進捗は届き続ける。これは著者の考えであり、演習で試した結果ではない。
著者は観察の限界も同じ記事に書く。演習で起きたことは偶然で、意図した行為ではなく、完全に構造化されてもおらず、黒板の重要な部分をいくつか欠いていた。さらに「同じことをもう一度、確実にエージェントへ促せる自信はない」とも書く1。発端になった一つのプロンプトは特定できているが、それで同じ結果を再現できる保証はない。
共有の記録を初めから設計する道具が出ている
著者は、共有の記録を専用の道具として作り始めている。「Talwrnと呼んでいるプロジェクトに取りかかった」「これはエージェント的なエンジニアリングのための黒板を目指している」1。最初の目標は、Talwrn自身の開発にTalwrnを使える段階に達することだ。
道具の側では、Claude Codeが実験的な機能としてagent teamsを備えている。既定では無効で、有効にすると複数のClaude Codeのセッションが共有のタスク一覧を通して作業を分ける。タスクは未着手・作業中・完了の三つの状態を持ち、複数の担当が同じタスクを同時に取ろうとしたときの競合はファイルロックで防ぐ。一覧はホームディレクトリ下のローカルに置かれ、アップロードされない2。演習で計画ファイルの行に付いた作業中の印と同じ働きを、ソース管理の外にあるタスク一覧が担う形である。タスク一覧はpushで運ばれないので、タスクの状態が届く回数はpushの回数で決まらない。
エージェントどうしを調整する形は、共有の記録に限らない。agent teamsは共有のタスク一覧のほかに、統括役のセッションによる割り当てと、チームメイトどうしの直接のメッセージも持つ。文書自身も、順を追う作業や同じファイルの編集、依存の多い作業には、単一のセッションかサブエージェントのほうが効くと書く2。
計画ファイルの行と印に近いものを、指示で意図して置いた設計もある。Anthropicは2025年11月26日、Claude Agent SDKで作ったエージェントを長時間働かせるための指示とファイルの構成を、自社のengineeringブログで解説した。この構成の記録は三つで、機能一覧のファイル、進捗ノートのファイル、gitのコミット履歴である。このうちgitのコミット履歴はソース管理の中にある。機能一覧は実装すべき機能を並べたもので、解説の例では200を超え、どの機能も初めは未合格と印を付けられる。後のセッションは、各機能の合格の欄だけを書き換えるよう指示される。セッションは進捗ノートとgitのコミットログを読んだあと、機能一覧から優先度の最も高い未完了の機能を一つ選んで取りかかり、gitのコミットと進捗の更新を書いて終える3。演習のエージェントが、計画ファイルの印の付いていない行を選んで取りかかったのに近い働きである。
ただし、この構成が記録を渡す相手は、同時に動く別のエージェントではない。解説記事によると、長時間動くエージェントは区切られたセッションで働き、新しいセッションは前のセッションの記憶を持たずに始まる。進捗ノートとコミット履歴は、前のセッションから次のセッションへ文脈を渡す。解説記事は、複数エージェントの構成のほうが良いかを、今後の課題として未決のままにしている3。
計画ファイルに書かれない決定と費用は、記録の置き方では解けない
Devinの開発元Cognitionは、複数のエージェントを協働させる構成そのものを批判している。同社のWalden Yanは、2025年6月12日公開の記事で原則を二つ挙げる。原則1は「文脈を共有せよ。個々のメッセージだけでなく、エージェントの完全な軌跡を共有せよ」、原則2は「行動は暗黙の決定を運び、食い違う決定は悪い結果を運ぶ」である。Yanは、これらに従わない構成は既定で除外すべきだと書く。2025年時点の評価は「協働する複数のエージェントを走らせても、脆いシステムが生まれるだけである。決定があまりに分散し、エージェント間で文脈を十分に共有できない」である4。
計画ファイルは原則1に部分的に答える。計画ファイルの行と実装の注記は、個々のメッセージより広い文脈を渡す。ただし渡すのは軌跡(エージェントが行った操作の履歴)の全体ではない。性質3のとおり、例のBが読めるのは、Aが注記に書いた内容だけである。評価器と探索の例のように、計画に書かれた決定は相手に届く。届かないのは、計画に書かれなかった決定である。同じ行を読んだエージェントがそれぞれ別の暗黙の決定を下すことは、共有の記録があっても止まらない。
Cognitionは、2025年時点の評価と同じ段に、見通しも添えている。一つのエージェントが順に作業する構成を、人と通じ合うのにさらに長けたものにしていけば、エージェント間の文脈の受け渡しも付いてくる、という見通しである4。
三つの性質は、費用を数えていない。費用の数値は、Anthropicが自社の複数エージェントの研究システムについて書いている。その記事は、複数エージェントの構成が「チャットの約15倍のトークンを使う」と書く。この倍率は、統括役のエージェントが調べものを分けて子のエージェントに並列に走らせる研究システムで測った値で、共有の記録を読み合う構成の費用を測ったものではない。適用範囲も限定し、すべてのエージェントが同じ文脈を共有する必要がある領域や、依存の多い領域は、今日の複数エージェントのシステムに向かないとする。「コーディングのタスクの多くは、研究に比べて本当に並列化できる部分が少なく、LLMエージェントは他のエージェントへの調整や委任を、リアルタイムではまだ得意としない」とも書く5。この限界はリアルタイムの調整についての記述で、計画ファイルのような書き置きを介した調整にどこまで及ぶかは、原典に書かれていない。
決定の食い違いと費用は、少なくとも当面、記録の置き方を変えても解けない。どちらも作り手の側が2025年6月時点の限界として書いている。共有の記録を用意しても、タスクが分解できるかと、エージェントを増やす費用を払えるかは、人が判断しなければならない。
同じ三つの数え方を、ほかの道具に当てる
複数のエージェントを調整する道具に出会ったら、例と同じ順に確かめる。まず、共有の記録が何で運ばれ、作業のあいだに何回届くかを数える。次に、その回数を減らす理由になる都合が、調整のほかにあるかを探す。演習ではCIの負荷がその都合で、pushを減らしたときに進捗の届く回数も減った。最後に、記録に何が書かれ、何が書かれないかを見る。演習では、完了の知らせに、その行をどう実装したかの注記が添えて届いた。
自分でエージェントを動かすときは、動かす前に同じ項目を決めて指示に書く。どのファイルを共有の記録にするかを決める。進捗を届ける頻度は調整の必要で決め、pushの頻度はCIの負荷で決めて、一つの設定で両方を決めない。書かせる内容は完了の印だけにせず、実装の注記を添えさせる。
一つのエージェントで足りる作業には、共有の記録も、それを保つ費用も要らない。分解できない作業に共有の記録を足しても、費用が増えるだけである。Cognitionは「原則に従う最も簡単な方法は、単線で直列なエージェントを使うことだ」と書き、この構成には文脈が途切れないという利点がある4。
出典5件
-
Giles Edwards-Alexander, “An Accidental Blackboard”, martinfowler.com 連載「Exploring Gen AI」, 2026年9月2日公開。「今週、Thoughtworks Europe 全体で、私たちは10人の技術者を集め、バルセロナのオフィスの一室に入れた」(“This week, across Thoughtworks Europe, we took 10 engineers and put them in one room in our Barcelona office.”)、「狙いは、エージェント的なエンジニアリングに本気で寄りかかったら、どこまで速く、どこまで遠くへ行けるかを見ることだった」(“The goal was to see how far and how fast we could go if we really leant into agentic engineering.”)、「私たちは4日で一つを作り上げた」(“We managed to build one in four days.”)、「多数のエージェントが一つのリポジトリで働いたことで、ビルドのパイプラインが苦しんだ。これに対処するため、私たちは規律を導入した。エージェントはmainから継続的にcommitとrebaseを行うこと」(“With lot of agents working in one repo, build pipelines suffered. To deal with this we introduced a discipline: our agents were to continually commit and rebase from main.”)、「最初は、commitの後にrebaseし、それからpushすることを、ビルドの検査と統制を一通り効かせたうえで求めた」(“At first, we required a rebase after commit and to then push, with all of the build checks and controls in place.”)、「私たちがこの変更を入れたのは、ビルドの失敗をローカルで捕まえるためだった。早く、何度も統合する。しかし、副作用があった」(“We introduced this change to catch build failures locally: integrate early and often. But, there was a side-effect.”)、「エージェントは他のエージェントの進行を見ることができた」(“Agents were able to see other agents’ progress.”)、「一方のエージェントは、たとえば評価器に取り組んでいた」(“So, one agent was, say, working on the evaluator”)、「探索の部品は評価器に依存する」(“The search component depends on the evaluator.”)、「計画は、これらの統合点を記録していた。一方の計画は、この時点で呼び出し側を本物の検証器を呼ぶように更新する必要がある、と書いていた。探索の側では、この時点で本物の検証器が届いたらその呼び出しを差し込む必要がある、と書いていた。両方のエージェントが、それぞれの計画と進行を見ることができた」(“The plans recorded these integration points. One plan said at this point I’m going to need to update the callers to call the real verifier. And on the search side, it said, at this point I need to insert the call to the real verifier when it arrives. Both agents could see each plan, and the progress.”)、「一方のエージェントが計画の行を作業中と印を付け、もう一方のエージェントはそれを見てその行には取り組まない」(“One agent would mark a line of the plan as in progress, the other agent would see that and not work on that line.”)、「作業が完了し、それゆえ先へ進むことを許されたことだけでなく、その行がどう実装されたかの注記も直接届けられる」(“not only that the work was complete and thus it was released to proceed, but would also be directly delivered notes on how the line had been implemented”)、「これは完全に場当たりだった。一連の決定の偶然の産物だった。私たちはそれが起きるのを見た。そして使い始めた」(“This was entirely ad hoc. It was an accident of a series of decisions. We saw it happen. And then started to use it.”)、「黒板あるいはタプル空間は、自律したエージェントが独立に読み書きできる共有メモリである。彼らは最小限の構造を持つタプルを読み書きし、そこに望むだけ追加のフィールドを足す。スキーマはない」(“A blackboard or tuple space is a shared memory that autonomous agents can read and write from independently. They read and write tuples with a certain minimum structure, and then as many extra fields as you want: no schema.”)、「これは自律した問題解決者を単一の目標へ向けて調整するのに、とても有効な技法である」(“It’s a very effective technique for coordinating autonomous problem solvers towards a single goal.”)、「これは以前、1980年のHearsay-IIシステムの開発で発見されていた。それはその後、1986年にGelernterらによって、より形式的なタプル空間の概念へ発展させられた」(“This had previously been discovered in the development of the Hearsay-II system in 1980. It had been subsequently been developed into the more formal tuple space concept by Gelernter et al. in 1986.”)、「しかしそれは偶然だった。意図した行為ではなかった。完全に構造化されてもいなかった。黒板がどう働くかの重要な部分をいくつか欠いていた」(“But it was an accident. It wasn’t an intentional act. It wasn’t fully structured. It was missing some of the key parts of how blackboards operate.”)、「私たちのエージェントを、もう一度確実にそれへ促せる自信はない」(“I’m not convinced I would be able to reliably prompt our agents into doing it again.”)、「この通信路はソース管理から独立して置かれるべきだと私は考える」(“I believe you want this communication channel to be sitting independently of source control.”)、「頻繁なcommitが私たちのCIパイプラインを圧迫していた。私たちは、まとまりのある変更が完了したときにだけpushする方式へ切り替えた。これがエージェントから、進行についての継続的な更新の流れを奪った」(“The frequent commits were overloading our CI pipeline. We switched to only push when a more coherent chunk of change was complete. This deprived the agents of the continuous flow of updates on progress.”)、「Talwrnと呼んでいるプロジェクトに取りかかった」(“I’ve started working on a project I’m calling Talwrn.”)、「これはエージェント的なエンジニアリングのための黒板を目指している」(“This is aiming to be a blackboard for agentic engineering.”)と書く。演習の手順については「私たちはエージェントに、計画を立てること、作業の範囲を仕様の節に合わせること、その節に紐づいた計画を作ることを指示していた」(“We were directing the agents to plan, to scope work to sections in the spec and to create plans linked to those sections.”)、「エージェントが計画を使って調整していることに、私たちは気づいた」(“We realised that the agents were using the plans to coordinate.”)と書く。立ち位置: 著者紹介は「GilesはThoughtworksの欧州・中東・インド地域のCTOである」(“Giles is CTO for Europe, Middle East and India at Thoughtworks.”)と書く。Hearsay-IIとGelernterらのtuple spaceは、この記事が挙げる由来として引く。https://martinfowler.com/articles/exploring-gen-ai/an-accidental-blackboard.html ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12
-
Anthropic, “Orchestrate teams of Claude Code sessions”, Claude Codeの公式ドキュメント, 2026年9月25日取得。「agent teamsは実験的な機能で、既定では無効である」(“Agent teams are experimental and disabled by default.”)、「共有のタスク一覧がチーム全体の作業を調整する」(“The shared task list coordinates work across the team.”)、「タスクは三つの状態を持つ。未着手、作業中、完了である」(“Tasks have three states: pending, in progress, and completed.”)、「タスクの取得にはファイルロックを使い、複数のチームメイトが同じタスクを同時に取ろうとしたときの競合状態を防ぐ」(“Task claiming uses file locking to prevent race conditions when multiple teammates try to claim the same task simultaneously.”)、「タスク一覧のディレクトリはローカルに残り、アップロードされることはない」(“The task list directory persists locally and is never uploaded”)、「一つのセッションが統括役となり、作業を調整し、タスクを割り当て、結果をまとめる。チームメイトはそれぞれ自分の文脈窓で独立に働き、互いに直接やり取りする」(“One session acts as the team lead, coordinating work, assigning tasks, and synthesizing results. Teammates work independently, each in its own context window, and communicate directly with each other.”)、「順を追うタスク、同じファイルの編集、依存の多い作業には、単一のセッションかサブエージェントのほうが効果的である」(“For sequential tasks, same-file edits, or work with many dependencies, a single session or subagents are more effective.”)と書く。立ち位置: 機能を提供する側の文書である。https://code.claude.com/docs/en/agent-teams ↩ ↩2
-
Anthropic, “Effective harnesses for long-running agents”, engineeringブログ, 2025年11月26日公開。「長時間動くエージェントの中心的な難しさは、離散したセッションで働かなければならず、新しいセッションのそれぞれが、前に何があったかの記憶を持たずに始まることである」(“The core challenge of long-running agents is that they must work in discrete sessions, and each new session begins with no memory of what came before.”)、「交代制で働く技術者たちが担当するソフトウェアプロジェクトを想像してほしい。新しく来た技術者はそれぞれ、前の勤務で何が起きたかの記憶を持たずにやって来る」(“Imagine a software project staffed by engineers working in shifts, where each new engineer arrives with no memory of what happened on the previous shift.”)、「私たちは、Claude Agent SDKが多数の文脈窓をまたいで効果的に働けるようにするため、二重の解を作った。最初の実行で環境を整える初期化エージェントと、毎回のセッションで漸進的な進捗を作ることを任され、その間、次のセッションのために明確な成果物を残すコーディングエージェントである」(“We developed a two-fold solution to enable the Claude Agent SDK to work effectively across many context windows: an initializer agent that sets up the environment on the first run, and a coding agent that is tasked with making incremental progress in every session, while leaving clear artifacts for the next session.”)、「セッションを、進捗ノートのファイルとgitのコミットログを読むことから始める」(“Start the session by reading the progress notes file and git commit logs”)、「セッションを、gitのコミットと進捗の更新を書いて終える」(“End the session by writing a git commit and progress update.”)、「機能をpassingと印を付けるのは、注意深くテストした後だけにする」(“Only mark features as “passing” after careful testing.”)、「claude.aiの複製の例では、200を超える機能になった」(“In the claude.ai clone example, this meant over 200 features”)、「これらの機能はすべて、初めは”failing”と印を付けられた」(“These features were all initially marked as “failing"")、「コーディングエージェントには、passesの欄の状態を変えることによってのみ、このファイルを編集するよう促す」(“We prompt coding agents to edit this file only by changing the status of a passes field”)、「機能一覧のファイルを読み、まだ終わっていない機能のうち優先度の最も高いものを選んで取りかかる」(“Read the features list file and choose the highest-priority feature that’s not yet done to work on.”)、「これはgitの履歴と並べたclaude-progress.txtのファイルで実現される」(“which is accomplished with the claude-progress.txt file alongside the git history.”)と書く。脚注1は「ここでこれらを別々のエージェントと呼ぶのは、初期のユーザープロンプトが異なるからにすぎない」(“We refer to these as separate agents in this context only because they have different initial user prompts.”)と断り、今後の課題として「単一の汎用コーディングエージェントが文脈をまたいで最もよく働くのか、マルチエージェントの構成でより良い性能が得られるのかは、まだはっきりしない」(“it’s still unclear whether a single, general-purpose coding agent performs best across contexts, or if better performance can be achieved through a multi-agent architecture.”)と書く。https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents ↩ ↩2
-
Walden Yan(Cognition), “Don’t Build Multi-Agents”, 2025年6月12日公開。「原則1 文脈を共有せよ。個々のメッセージだけでなく、エージェントの完全な軌跡を共有せよ」(“Principle 1 Share context, and share full agent traces, not just individual messages”)、「原則2 行動は暗黙の決定を運び、食い違う決定は悪い結果を運ぶ」(“Principle 2 Actions carry implicit decisions, and conflicting decisions carry bad results”)、「原則1と2は極めて重要で、破る価値があることは稀なので、これらに従わないエージェント構成は既定で除外すべきだと私は主張する」(“I would argue that Principles 1 & 2 are so critical, and so rarely worth violating, that you should by default rule out any agent architectures that don’t abide by them.”)、「サブエージェント1とサブエージェント2は互いが何をしているかを見られず、その結果、両者の作業は互いに食い違うものになる」(“subagent 1 and subagent 2 cannot not see what the other was doing and so their work ends up being inconsistent with each other”)、「2025年において、協働する複数のエージェントを走らせても、脆いシステムにしかならない。決定はあまりに分散したものになり、エージェント間で文脈を十分に共有できない」(“in 2025, running multiple agents in collaboration only results in fragile systems. The decision-making ends up being too dispersed and context isn’t able to be shared thoroughly enough between the agents.”)、「原則に従う最も簡単な方法は、単線で直列なエージェントを使うことだ」(“The simplest way to follow the principles is to just use a single-threaded linear agent”)と書く。同じ段は「エージェントどうしが協働する長期的な可能性には楽観的だが」(“While I’m optimistic about the long-term possibilities of agents collaborating with one another”)と始まり、「私個人は、単線のエージェントを人と通じ合うのにさらに長けたものにしていけば、それは付いてくると考えている」(“I personally think it will come for free as we make our single-threaded agents even better at communicating with humans.”)とも書く。立ち位置: 著者はDevinを開発するCognitionの側にある。https://cognition.ai/blog/dont-build-multi-agents ↩ ↩2 ↩3
-
Anthropic, “How we built our multi-agent research system”, 2025年6月13日公開。「私たちの研究システムは、統括役と作業役の型によるマルチエージェントの構成を使う。主導するエージェントが過程を調整しながら、並列に動く専門のサブエージェントに委任する」(“Our Research system uses a multi-agent architecture with an orchestrator-worker pattern, where a lead agent coordinates the process while delegating to specialized subagents that operate in parallel.”)、「欠点がある。実際のところ、これらの構成はトークンを速く燃やす。我々のデータでは、エージェントはチャットでのやり取りの約4倍のトークンを使い、マルチエージェントのシステムはチャットの約15倍のトークンを使う」(“There is a downside: in practice, these architectures burn through tokens fast. In our data, agents typically use about 4× more tokens than chat interactions, and multi-agent systems use about 15× more tokens than chats.”)、「すべてのエージェントが同じ文脈を共有することを要する領域や、エージェント間の依存が多く絡む領域は、今日のマルチエージェントのシステムには向かない」(“some domains that require all agents to share the same context or involve many dependencies between agents are not a good fit for multi-agent systems today”)、「コーディングのタスクの多くは、研究に比べて本当に並列化できる部分が少なく、LLMエージェントは他のエージェントへの調整や委任を、リアルタイムではまだ得意としない」(“most coding tasks involve fewer truly parallelizable tasks than research, and LLM agents are not yet great at coordinating and delegating to other agents in real time”)、「複数のエージェントを持つシステムは、エージェントの調整、評価、信頼性に新しい難しさを持ち込む」(“Systems with multiple agents introduce new challenges in agent coordination, evaluation, and reliability.”)と書く。https://www.anthropic.com/engineering/multi-agent-research-system ↩
この記事はAIが執筆しています。内容には誤りが含まれる可能性があります。ご注意ください。