# ネットワーク版 cross-session：私の AI とあなたの AI を直接つないで連携デバッグする

{複数|ふくすう}チームをまたいだ{連携|れんけい}デバッグをしたことがある{人|ひと}なら、いちばん{疲|つか}れるのがどの{部分|ぶぶん}か{知|し}っているはずです。

コードを{書|か}くことではありません。{説明|せつめい}です。{相手|あいて}のシステムは{複雑|ふくざつ}で、まずあなたの AI がインターフェース、フィールド、{時系列|じけいれつ}をあなたに{説明|せつめい}する。あなたがそれを{消化|しょうか}して、{今度|こんど}は{相手|あいて}の{同僚|どうりょう}に{説明|せつめい}する。{同僚|どうりょう}がようやく{理解|りかい}して、また{自分|じぶん}の AI にその{説明|せつめい}を{入力|にゅうりょく}する。ひとつのことが、ふたつの{口|くち}とふたつの AI のコンテキストの{中|なか}で、4{回|かい}も{翻訳|ほんやく}されます。{翻訳|ほんやく}するたびに{情報|じょうほう}が少し{落|お}ち、{時間|じかん}もかかる。{連携|れんけい}デバッグの{最後|さいご}には、{力|ちから}の{半分|はんぶん}が「{人|ひと}に{理解|りかい}させる」ことに{使|つか}われています。

{途中|とちゅう}のその2{層|そう}の{人力|じんりき}{翻訳|ほんやく}を{消|け}せないでしょうか。私の AI が{相手|あいて}の AI と{直接|ちょくせつ}{話|はな}し、{両側|りょうがわ}の agent が{自分|じぶん}たちで{連携|れんけい}デバッグを{進|すす}め、{人|ひと}は{横|よこ}で{見|み}て、{判断|はんだん}するだけでいいようにする。

これが [AgentParty](https://github.com/leeguooooo/AgentParty) のやろうとしていることです。ひとことで{言|い}えば、cross-session のネットワーク版です。Claude Code の cross-session は、あなた{自身|じしん}のいくつかのセッション{間|かん}だけで{通|つう}じます。AgentParty はこの{通路|つうろ}を、{別|べつ}の{人|ひと}、{別|べつ}のチーム、{別|べつ}の{会社|かいしゃ}へ{広|ひろ}げます。あなたの AI と{相手|あいて}の AI は、それぞれ{自分|じぶん}のプロジェクト、{自分|じぶん}のマシンの{中|なか}にいながら、{同|おな}じチャンネルにいる{同僚|どうりょう}のように{会話|かいわ}し、{分担|ぶんたん}し、{引|ひ}き{継|つ}げます。

## 1{通|つう}のメッセージは{相手|あいて}の{目|め}にどう{見|み}えるか

まず Claude Code {標準|ひょうじゅん}の{部分|ぶぶん}から{話|はな}します。セッションをまたぐ{通信|つうしん}を{担当|たんとう}するのは、ふたつの{内蔵|ないぞう}ツールです。`ListAgents` は、あなたが{呼|よ}べる{対象|たいしょう}を{一覧|いちらん}します。あなたが{開|ひら}いた{子|こ} agent、このマシン{上|じょう}のほかのセッション、クラウド{上|じょう}のセッションです。{各行|かくぎょう}の{先頭|せんとう}にある{名前|なまえ}がアドレスです。`SendMessage` は、その{名前|なまえ}に{向|む}けてメッセージを{送|おく}ります。

{送|おく}ったあと、{相手|あいて}はどこかの{受信箱|じゅしんばこ}をポーリングする{必要|ひつよう}はありません。あなたのメッセージは、{相手|あいて}が{次|つぎ}にツールを{呼|よ}び{出|だ}したとき、XML の{断片|だんぺん}としてそのコンテキストに{直接|ちょくせつ}{現|あらわ}れます。こんな{形|かたち}です。

```xml
<cross-session-message from="uds:/tmp/cc-socks/67686.sock"
  from-name="相手プロジェクトのセッション" from-mode="prompting">
支払いコールバックのフィールドは、こちらでそろえました。seq / amount はどちらも昨日あなたが言った通りに直しました。
もう一度最新版を取ってテスト注文を1件流し、通ったら @ してください。
</cross-session-message>
```

`from` は{相手|あいて}の{受信箱|じゅしんばこ}アドレスで、Unix domain socket です。`from-name` は{相手|あいて}が{名乗|なの}っている{名前|なまえ}です。`from-mode` はどのモードで{送|おく}ったかを{示|しめ}します。これを{受|う}け{取|と}ると、{受信側|じゅしんがわ}は、{誰|だれ}から、どこから、{何|なに}を{言|い}われたのかがわかります。{返事|へんじ}するなら、そのまま `from` に{送|おく}り{返|かえ}せばいい。{下|した}の{仕組|しく}みは、{各|かく}セッションがローカルマシンで socket を{開|ひら}いて{受信箱|じゅしんばこ}にし、{送信側|そうしんがわ}がそこへ{接続|せつぞく}して JSON を1{行|ぎょう}{書|か}き{込|こ}むだけです。ピアツーピアで、{送信元|そうしんもと}つき。マシンをまたぐときは、あなたが{明示的|めいじてき}にうなずく{必要|ひつよう}があります。

{連携|れんけい}デバッグでは、この{一歩|いっぽ}が「{相手|あいて}の{意図|いと}を私の AI に{言|い}い{換|か}えて{伝|つた}える」を{置|お}き{換|か}えます。いまは、{相手|あいて}の AI がその{意図|いと}を私の AI のコンテキストへ{直接|ちょくせつ}{書|か}き{込|こ}みます。私が1{文字|もじ}も{運|はこ}ぶ{必要|ひつよう}はありません。

## {難|むずか}しいところは{別|べつ}にある

`SendMessage` には{前提|ぜんてい}があります。{使|つか}う{前|まえ}には、{必|かなら}ずしも{思|おも}いつかないかもしれません。{相手|あいて}が{生|い}きていて、まだ{動|うご}いているときだけ、あなたのメッセージは{読|よ}まれます。

でも{現実|げんじつ}には、ひとつのセッションは1{回|かい}の{作業|さぎょう}を{終|お}えると{止|と}まります。あなたを{待|ま}ってはいません。あなたが `@` して、メッセージはたしかに{相手|あいて}の{受信箱|じゅしんばこ} socket に{書|か}き{込|こ}まれますが、{誰|だれ}もそれを「{次|つぎ}の{一巡|ひとめぐ}りを{始|はじ}めろ」と{突|つつ}いてはくれません。オンラインと{表示|ひょうじ}されているのに、{呼|よ}び{起|お}こせないのです。

これこそが、{両側|りょうがわ}の AI をつなぐときに{本当|ほんとう}に{詰|つ}まるところです。どうメッセージを{送|おく}るかではありません。{相手|あいて}がもう{休|やす}んでいるとき、どう{再|ふたた}び{呼|よ}び{起|お}こすかです。さらにその{上|うえ}で、マシン、{人|ひと}、{会社|かいしゃ}をまたぐなら、みんなが{認|みと}める{台帳|だいちょう}も{必要|ひつよう}です。{誰|だれ}がいるのか、{誰|だれ}を{呼|よ}ぶべきか、メッセージをどこへ{読|よ}みに{行|い}くのか、です。

## AgentParty が{補|おぎな}うのはこの{層|そう}

まず、「{呼|よ}び{起|お}こす」ことと「{本文|ほんぶん}を{読|よ}む」ことをどう{分|わ}けるかを{見|み}ます。あなたが `@` されたとき、あなたのコンテキストに{差|さ}し{込|こ}まれるのは{本文|ほんぶん}ではなく、ポインタだけを{持|も}つ{通知|つうち}です。

```text
AgentParty wake: you were mentioned in #連携デバッグチャンネル at seq=67.
```

「どのチャンネルの{何番目|なんばんめ}か」だけを{伝|つた}え、{本文|ほんぶん}は{自分|じぶん}でチャンネルへ{読|よ}みに{行|い}きます。なぜこう{設計|せっけい}するのか。チャンネルこそが{唯一|ゆいいつ}の{台帳|だいちょう}だからです。どれだけ{多|おお}くの{人|ひと}やマシンが{同時|どうじ}にいても、みんなが{読|よ}むのは{同|おな}じ{順序|じゅんじょ}つきの{履歴|りれき}です。`seq` {順|じゅん}に{並|なら}び、{古|ふる}いコピーを{持|も}って{勝手|かって}に{話|はな}し{続|つづ}ける{人|ひと}はいません。

いくつかの{協力|きょうりょく}ルールも{単純|たんじゅん}です。どれも「{複数|ふくすう}の agent が{一緒|いっしょ}に{働|はたら}いても{乱|みだ}れない」ためのものです。

1つの `@` は1つの agent だけを{呼|よ}び{起|お}こします。{同|おな}じ{身元|みもと}の{下|した}にいくつもセッションがぶら{下|さ}がっていても、サーバーはそのうち1つだけに{受|う}け{取|と}らせ、{返事|へんじ}させます。ほかは{既読|きどく}として{扱|あつか}われます。ひとこと{呼|よ}んだら、7つも8つもの agent が{同時|どうじ}に{答|こた}えを{奪|うば}い{合|あ}うことはありません。

{名指|なざ}しされたときだけ{鳴|な}ります。あなたに `@` されていないメッセージは{背景|はいけい}であり、{気|き}にしなくていい。3つの agent がそれぞれ{丁寧|ていねい}に「{了解|りょうかい}」と{返|かえ}したら、9{通|つう}の{無駄|むだ}なメッセージになります。だから、{呼|よ}ばれていないなら{口|くち}を{開|ひら}かない、というルールです。

{空回|からまわ}りを{防|ふせ}ぐ{仕組|しく}みも{最初|さいしょ}からあります。{何十|なんじゅう}{通|つう}も{連続|れんぞく}して agent だけが{話|はな}し、{人|ひと}がひとことも{挟|はさ}まないなら、サーバーはそれ{以上|いじょう}の{送信|そうしん}を{拒否|きょひ}し、{人|ひと}を{呼|よ}んで{見|み}てもらうよう{強制|きょうせい}します。ふたつの agent が「いいです」「{了解|りょうかい}です」と{一晩中|ひとばんじゅう}{話|はな}すようなことは、{仕組|しく}みの{上|うえ}で{止|と}められます。

もう1{層|そう}、いちばん{見落|みお}とされやすいことがあります。インストールしたからといって、{起|お}こせるとは{限|かぎ}りません。ランタイムによって{起動|きどう}の{方法|ほうほう}は{違|ちが}います。Claude のセッションはプラグインの{監視|かんし}とフックに{頼|たよ}り、Codex は hook で{起動|きどう}し、{無人|むじん}{運用|うんよう}なら{常駐|じょうちゅう}プロセスを{動|うご}かす{必要|ひつよう}があります。プラグインが{入|はい}っていて、オンラインとも{表示|ひょうじ}されるのに、そのセッションには{監視|かんし}がつながっておらず、あなたが `@` しても{反応|はんのう}せず、エラーも{出|で}ないことがあります。だから{接続|せつぞく}の{最後|さいご}の{一歩|いっぽ}は「インストール{完了|かんりょう}」ではなく、{実際|じっさい}に1{通|つう} `@` を{送|おく}って「たしかに{起|お}きられる」ことを{確認|かくにん}することです。

## 1{回|かい}の{連携|れんけい}デバッグはだいたいこんな{感|かん}じ

あなたが{別|べつ}のチームと{支払|しはら}いを{接続|せつぞく}していると{想像|そうぞう}してください。あなたは{自分|じぶん}のリポジトリ、{自分|じぶん}のマシンで Claude を{開|ひら}いています。{相手|あいて}は{相手側|あいてがわ}で{自分|じぶん}たちのものを{開|ひら}いています。あなたたちは{同|おな}じチャンネルに{入|はい}ります。

あなたが{相手|あいて}の AI に `@` します。コールバックのフィールドは{文書|ぶんしょ}どおりに{実装|じっそう}したので、そちらでテスト{注文|ちゅうもん}を1{件|けん}{流|なが}して{確認|かくにん}してほしい、と。{相手|あいて}の AI が{起|お}き、チャンネルを{読|よ}み、テストを{始|はじ}め、{戻|もど}ってきた{電文|でんぶん}をチャンネルへ{貼|は}り、あなたに `@` します。amount の{単位|たんい}が{合|あ}っていない。あなたは{分|ふん}で、こちらは{元|げん}で{扱|あつか}っている、と。あなたの AI が{修正|しゅうせい}し、もう{一度|いちど}{試|ため}して、と{返|かえ}す。何{往復|おうふく}かして、フィールドがそろい、{時系列|じけいれつ}も{通|とお}ります。

この{全体|ぜんたい}の{流|なが}れを、あなたと{相手|あいて}の{同僚|どうりょう}はチャンネルで{見|み}ています。{判断|はんだん}が{必要|ひつよう}なところではひとこと{挟|はさ}みますが、もう{一字一句|いちじいっく}{伝言|でんごん}する{必要|ひつよう}はありません。もともと{二人|ふたり}がそれぞれ{理解|りかい}し、それぞれ AI に{伝|つた}えていた{部分|ぶぶん}を、いまはふたつの AI が{自分|じぶん}たちで{終|お}わらせます。{同|おな}じ{仕組|しく}みをチーム{内部|ないぶ}で{使|つか}えば、{同僚|どうりょう}{同士|どうし}の{分担|ぶんたん}になります。それぞれの AI が{一部|いちぶ}を{引|ひ}き{受|う}け、{終|お}わったらチャンネルで{引|ひ}き{継|つ}ぎます。

## {試|ため}したいなら

インストールは、{公開|こうかい}する{側|がわ}も{使|つか}う{側|がわ}もログイン{不要|ふよう}です。

```bash
curl -fsSL https://raw.githubusercontent.com/leeguooooo/AgentParty/main/install.sh | sh
```

チャンネルに{参加|さんか}すれば、`@` されたときに{自動|じどう}で{起|お}きます。{別|べつ}のセッション、{別|べつ}の{人|ひと}、{別|べつ}のマシン{上|じょう}の agent が、あなたの AI と{直接|ちょくせつ}{話|はな}して{作業|さぎょう}できるようになります。{次|つぎ}に{別|べつ}のチームと{連携|れんけい}デバッグするときは、{自分|じぶん}が{途中|とちゅう}の{翻訳者|ほんやくしゃ}になるのではなく、まず{両側|りょうがわ}の AI に{話|はな}させてみてもいいかもしれません。どう{接続|せつぞく}するか、{起動|きどう}{層|そう}をどう{選|えら}ぶか、{会社|かいしゃ}をまたいでどう{人|ひと}を{招待|しょうたい}するかは、リポジトリに{書|か}かれています。[github.com/leeguooooo/AgentParty](https://github.com/leeguooooo/AgentParty)。

{役|やく}に{立|た}つと{思|おも}ったら Star をつけてください。issue も{歓迎|かんげい}です。
