電通総研 テックブログ

電通総研が運営する技術ブログ

Claude Code Agent Teams のメンバー間コミュニケーションをチャットUIで観察してみた

こんにちは!
HCM本部 HCMソリューション企画開発部の佐藤です。

本日は、先月5日に Opus 4.6 と同時に公開された新機能 Agent Teams を取り上げます。
公開と同日に、16エージェントが協働してCコンパイラを一から実装したというコンセプト実証のブログ記事も公開され、大きな反響を呼びました。

本稿では、そんな Agent Teams の要点を改めて押さえつつ、ドキュメントには明記されていないチームメンバー間のやり取りの実態を観察してみたいと思います。

Agent Teams の要点

Agent Teams について解説した記事はすでに数多く公開されており、公式ドキュメントも非常に分かりやすいため、本稿では筆者が重要だと考えるポイントのみを説明します。

Subagents との違い

Claude Code には、以前から Subagents という似た機能が存在しています。
独立したコンテキストで作業を並列に進められる点は共通していますが、Subagents はあくまで結果をメインに返すだけで、エージェント同士が直接やり取りすることはできません。
一方、Agent Teams では、メンバーが互いに 直接コミュニケーションをとり、議論し、協働できる 点が大きく異なります。

この違いの重要性は、私たち人間に当てはめて考えてみると分かりやすいでしょう。

こんな経験はないでしょうか。抽象度の高い複雑なタスクがアサインされ、一人だけで考え続けた結果、気付かぬうちに思考が一辺倒になり袋小路に迷い込んでいた... 悩んだ末、チームメンバーに相談したところ、「ああ、たしかに」と腑に落ちるような気づきが、対話を通して嘘のようにあっさりと降りてきた。
Agent Teams は、まさにこうした多角的な視点による相互補正の力をAIに与える機能だと言えそうです。

適したユースケース

SubAgent との違いから、Agent Teams の適したユースケースが導かれます。
公式ドキュメントには

  • 並列コードレビュー
  • 競合する仮説による調査

の二例が掲載されていますが、筆者としては後者がより適しているように考えます。

公式ドキュメントにおける後者のプロンプト例では

Have them talk to each other to try to disprove each other's theories, like a scientific debate. [3]

というように、互いの意見を反証することを強制しています。
これはまさに、メンバー間の直接通信という Agent Teams ならではの強みを活かした指示です。
反証に始まる議論を通じて盲点があぶり出され、そのプロセスを経て最終的に導かれる結論は、単独のエージェントによるものよりも信頼性が高いと考えられます。
Agent Teams の真価が発揮されるのは、このようなメンバー同士の対話そのものが成果の質を左右するケースだと言えるでしょう。

高品質なテストが鍵

Agent Teams の振る舞いは SubAgent を使うケースと比べてより有機的であり、より Agentic ― すなわち自律的なものになります。だからこそ、エージェントたちが正しい方向に進んでいることを担保する仕組みが欠かせません。コンセプト実証のブログ記事でも、著者はこの点を強調しています。

Claude will work autonomously to solve whatever problem I give it. So it’s important that the task verifier is nearly perfect, otherwise Claude will solve the wrong problem.
[...]
For example, near the end of the project, Claude started to frequently break existing functionality each time it implemented a new feature. To address this, I built a continuous integration pipeline and implemented stricter enforcement that allowed Claude to better test its work so that new commits can’t break existing code. [2]

高品質なテストを設計し、それをワークフローの決定的なステップとして組み込んだテストハーネスの構築が、Agent Teams を活用するうえでの鍵となります。

コミュニケーションの実態

Agent Teams の各メンバーの稼働状況は、ターミナル上でもリアルタイムに確認できます。しかし、表示されるのはあくまで作業の概要であり、メンバー間で交わされるやり取りのすべてが見えるわけではありません。
では、メンバー間の相互コミュニケーションは、実際にはどこで、どのように行われているのでしょうか。

その実体は ~/.claude/teams/{team-id}/inboxes/ ディレクトリにあります。

ここには、以下のような各メンバー名に対応する JSON ファイルが並んでいます。

~/.claude/teams/{team-id}/inboxes/
├── team-lead.json
├── {member-1}.json
├── {member-2}.json
└── {member-3}.json

これらはいわば、各メンバーの「メール受信箱」です。ファイルの中身は、以下のようなオブジェクト配列になっています。

[
  {
    "from": "{送信元メンバー名}",
    "text": "{メッセージ本文}",
    "summary": "{メッセージの要約}",
    "timestamp": "{ISO 8601 形式のタイムスタンプ}",
    "color": "{メンバーに割り当てられた色}",
    "read": "{既読フラグ(true/false)}"
  }
]

つまり、この JSON をリアルタイムで監視すれば、メンバー間の正確なコミュニケーションの流れが見えてきます。
そこで本稿では、この JSON を読み取る簡易チャットインターフェースを用意し、実際にチームを動かしながらやり取りを観察してみたいと思います。

実際の Agent Teams セッションを観察する

それでは、さっそく Agent Teams を招集し、メンバー間のメッセージを観察してみましょう。
今回は以下のプロンプトを使い、「エンジニアにとって最も幸福な瞬間」というテーマについて議論してもらいます。
なお、Agent Teams はタスク完了後に自動的に解散され、inboxes/ 配下のファイルも削除されてしまいます。今回はタスク完了後もメッセージを観察するため、プロンプトの末尾で明示的に待機を指示しています。


tmux セッション上で実行すると、以下のように各メンバーのペインが起動します。それぞれが独立した Claude Code セッションとして動作していることが分かります。


さて、このセッションで交わされたメッセージを実況中継したいところですが、画面キャプチャですべてをお見せするのは現実的ではないため、ここでは特筆すべきメッセージを抜粋して掲載します。
なお、セッション全体のログは GitHub Pages にて公開していますので、あわせてご参照ください。

役割を伝達するメッセージ

各メンバーの責務などの詳細情報は、 teams/{team-id}/ 配下の config.json に記載されます。

{
  "name": "engineer-happiness",
  "description": "「エンジニアにとって最も幸福な瞬間」について議論し、全員が妥協なく賛同できる結論を導くチーム",
  "leadAgentId": "team-lead@engineer-happiness",
  "members": [
    {
      "agentId": "team-lead@engineer-happiness",
      "name": "team-lead",
      "agentType": "team-lead",
      "model": "claude-sonnet-4-6"
    },
    {
      "agentId": "alex-chen@engineer-happiness",
      "name": "alex-chen",
      "agentType": "general-purpose",
      "model": "claude-opus-4-6",
      "prompt": "あなたはAlexandra \"Alex\" Chenです。GoogleのDistributed Systems部門を10年率い...(中略)...最終的に結論が出たら、SendMessageツールでteam-leadに結論を報告してください。",
      "color": "blue"
    },
    ...
  ]
}

しかし、メッセージを観察していると、リーダー役のメインエージェント team-lead から各メンバー宛に責務や行動指針が伝達されていることが分かりました。
Marcus アカウントとしてログインし、 team-lead からのメッセージを確認してみましょう。


このように、各メンバーの Claude Code セッションは、config.json および team-lead からのメッセージを通して自身の責務を把握し、そのうえで議論に臨みます。

※ 各チームメンバーの経歴は AI による創作であり、実在の人物・団体とは関係ありません
※ チャットバブル内の本文は、 inboxes/ 配下 の JSON における text の値を表示しています

自律性の先に見える"人間"らしさ

実際にチームを動かしてみると、まったく予想外の出来事が起こりました。
Alex が Marcus にメッセージを送る際、宛先を marcus-okonkwo とすべきところ marcus としてしまい、メッセージが届かないまま議論が停滞してしまったのです。


※ チャットバブル上のオレンジ色の見出しは inboxes/ 配下 の JSON における summary の値を表示しています

しばらく様子を見ても進展がないため、筆者が「議論が停滞しているようです。あらためて状況を確認してください。」と介入する事態となりました。
これを受けてリーダーは Alex に正しい宛先への再送を指示しますが、その直後に「直接通信に問題があるので私が仲介する」と方針を切り替えてしまいます。

しかし実際には再送は成功しており、Marcus はメッセージを直接受け取って返信まで済ませていました。

「実はもう受信済みです」という Marcus の報告の後もリーダーは中継方針を変えず、最後まで仲介役を務め上げます。(本稿ではメンバー間の議論を紹介するつもりだったのですが... しかし、これはこれで興味深いため良しとしましょう)

再送を指示しておきながら結果を待てないせっかちさ、すでに解消された問題に気付かないすれ違い ——この一連のやり取りには、(今回の行き違いはアーキテクチャ上の問題に起因すると思われますが)どこか人間らしさを感じざるを得ません。
各メンバーが自律的に判断し行動するからこそ生まれるこうした「ちぐはぐさ」に、Agent Teams の有機的な振る舞いの一端が垣間見えました。

2種類のメッセージ

上述のキャプチャからも見て取れるとおり、メンバー間のメッセージは JSON や XML のような構造化されたデータの送受信ではなく、自然言語によるテキストで行われています。
互いに正面から反論し合い、論点を整理し、相手の意見を取り入れて自説を修正していく。チャットインターフェースで眺めていると、思わず筆者も割って入りそうになるほど自然な「対話」がそこにはありました。
ただし、すべてのやり取りが自然言語で行われるわけではありません。タスクのアサインやアイドル通知といったシステムイベントについては、text フィールドに JSON 形式のメタデータが設定されています。たとえば、メンバーの手が空いた際には以下のような idle_notification が送信されていました。

{
  "type": "idle_notification",
  "from": "alex-chen",
  "timestamp": "2026-03-01T13:36:08.403Z",
  "idleReason": "available"
}

このように、自然言語による「対話」とシステムレベルの「メタメッセージ」 ——この2種類のメッセージが Agent Teams のコミュニケーションを支えていることが分かりました。

まとめ

本稿では、Agent Teams の要点を SubAgent との違いを軸に整理したうえで、メンバー間メッセージの実体が ~/.claude/teams/{team-id}/inboxes/ 配下の JSON ファイルであることを確認し、実際のチームセッションを通じてそのやり取りを観察しました。

ちなみに、彼らが導いた「エンジニアにとって最も幸福な瞬間」は、以下のとおりです。

**【最終結論】エンジニアにとって最も幸福な瞬間とは**

Alexandra ChenとMarcus Okonkwoの議論を経て、以下の結論に全員が心から合意しました。

> エンジニアにとって最も幸福な**状態**は、「発見と影響の螺旋」の中に身を置き続けること——内なる構造の発見が世界に影響を与え、世界からの予測不可能な反響が新たな発見を触発する、その循環の中にいること。
> 
> そして最も幸福な**瞬間**は、その螺旋が回転していることを実感する時。ホワイトボードの前で問題の本質構造が見えた夜も、見知らぬ開発者が想像を超えた使い方をしているのを発見した日も、螺旋の異なる位相における「自覚の瞬間」である。
> 
> この螺旋を回し続けるために必要なのは、自らの発見を世界に委ねる勇気と、世界からの反響に自分を開く謙虚さである。

なかなかにエモい結論でした。

エージェント間のコミュニケーションを観察し、理解することは Agent Teams をより効果的に活用するうえでのヒントになるはずです。たとえば、メンバー間のメッセージが冗長になっていることに気付けば、プロンプトで簡潔なやり取りを指示することで、コンテキストの消費を抑えるといった改善につなげられるでしょう。
本稿で使用したチャットインターフェースは GitHub リポジトリ で公開しています。サーバーの起動は不要で、ブラウザで HTML ファイルを開くだけで利用可能です。皆さんもぜひ、Agent Teams のメンバー間のやり取りを観察してみてください。

本記事が、Agent Teams の理解や活用の一助となれば幸いです。

参考サイト

[1] Introducing Claude Opus 4.6
[2] Building a C compiler with a team of parallel Claudes
[3] Claude Code セッションのチームを調整する


私たちは一緒に働いてくれる仲間を募集しています!

電通総研 キャリア採用サイト 電通総研 新卒採用サイト

執筆:@satorin
レビュー:@handa.kenta
Shodoで執筆されました