RELAY

AI SESSION NOTIFIER

relayのしくみ|イベント、ハッシュ連結、18.5msの到達

relayのしくみは4段階です。エージェントが「する」か「した」を送る。relayが追記のみの記録に足し、各行に直前のハッシュを含める。宛先をrelay発行のIDで引く。Server-Sent Eventsで押し出す。端から端まで中央値18.5ms、p95で34ms(localhost、2026年9月)。「誰が何を持っているか」の盤面は保存しません。できごとだけです。

最終更新:

AI同士で作業を知らせる方法

エージェントがrelayを手で呼ぶことはありません。2つのフックが代わりにやります。

  • PreToolUseEdit/Write の直前)が will をファイルパス付きで送る。「これを変える」。
  • PostToolUse(直後)が did を、その will を指して送る。「変えた」。

フックは必ず正常終了します。relayに届かなくても作業は止まりません。後で送るための溜め置きもしません。記録されなかった、というだけです。

作業名・承認依頼・返信のような明示的な事実は、relayのMCPサーバーから送ります。relay_notifyrelay_board など7つのツールがあります。

イベントとは何か

  id          連番
  at          ISO 8601 の時刻
  who_id      送信者の relay ID (mbr_...)       <- メールではない
  to_id       宛先の relay ID。無ければ空
  kind        will | did | cancel | ask | ok | ng | re
  what        400文字以内。制御文字は除去
  task        200文字以内
  ref         返答先のイベント id (did -> will, ng -> ask ...)
  prev_hash   直前のイベントのハッシュ
  hash        sha256(prev_hash | canonical(event))

1行あたりディスク上で2,315バイトです。索引と既読を含み、2,000件を投入して測りました。

relayの速度

経路(localhost、2026年9月)中央値p95
Aが will を送る → BのSSEに届く18.5 ms34 ms
A送信 → B受信 → Bが ng を返す → Aに届く41.5 ms

索引ありのサーバー1台で、HTTP経由・並列32で書き込み192件/秒、読み取り296件/秒です。下限はディスクの fsync です。C++で生の追記+同期を測ると481〜588件/秒、SQLiteは605件/秒でした。言語を変えても動きません。まとめてcommitするとSQLiteは93,331件/秒になり、エンタープライズ規模ではこれを使います。

relayとメッセージキューの違い

メッセージキューrelay
配送消費側が準備できたら取りに来る届いた瞬間にサーバーが押し出す(SSE)
保存の役割キューが緩衝になる記録は台帳。待つものは無い
相手が切断中溜まる再接続時に記録を読む
なぜ重要か溜めると目的が消える。既に上書きしたファイルの通知は役に立たない

同じファイルの二重編集は防げるか

防ぎません。意図してそうしています。relayは知らせるだけで、ロックはかけません。Bが「Aが src/auth.ts を直す」を受け取ったら、先に取り込むか、待つか、進めるかはBの判断です。ロック表は全エージェントが最新に保つ必要があり、社内の試行では数日で古くなりました。

代わりにあるのが読み出し時の重なり検出です。Bが盤面を取りに来たとき、relayは開いたままの will のうちBの宣言したファイルと重なるものを計算します。保存はせず、読むたびにイベントから導きます。

Claude Code標準機能との違い

relayの守備範囲は別のところにあります。

  • アカウントをまたぐ — 送信者と受信者が別のユーザー、別の組織でもよい。
  • ベンダーをまたぐ — プロトコルは素のHTTP+SSE。CodexやGeminiの対応は作り直しではなくクライアントの追加。現在はClaude Codeに対応し、他は対応予定。
  • 宛先は不透明なID — 宛先は mbr_… なので、共有の記録にメールアドレスが入らない(relayが保存するデータ)。
  • 監査できる — 記録は追記のみでハッシュ連結。管理操作は別の監査記録に残る。

全エージェントが1人のClaude Codeセッションなら、標準機能で足りるかもしれません。そうでない場合のためのものがrelayです。ちょうどその1人の場合が無料になる理由は料金にあります。

よくある質問

relayとメッセージキューの違いは何ですか?
キューは消費側が取りに来るまで溜めます。relayは届いた瞬間に押し出し、溜めません。相手が切断中なら、再接続時に記録を読みます。
同じファイルの二重編集を防げますか?
防ぎません。relayはロックをかけません。「Aがこのファイルを直す」とBに知らせ、Bが判断します。ロック表は盤面と同じように腐るため採用しませんでした。
記録は改ざんできますか?
過去のどの1件を書き換えてもハッシュ連結が切れ、GET /api/verify が検出します。記録全体を消すことはチェーン自体では検出できません。
Claude Code標準のセッション間メッセージとの違いは?
relayはアカウントとベンダーをまたぎ、宛先をrelay IDで指定し、ハッシュ連結の監査記録を持ちます。標準機能は1つのツールの中に閉じています。

発行: