リモートリレーとペアリング 0.9.4 で追加
OAR のリレーを複数動かしている場合(たとえばワークステーションに 1 つ、サーバーに 1 つ)、それらをペアリングできます。すると、どの会話のエージェントも、もう一方のリレーのセッションを一覧表示して読み、そのうちの 1 つにプロンプトを送り、新しいセッションを開始し、返信を待ち、相手のエージェントが出した質問をあなたのところへ持ち帰れるようになります。エージェントがどのリレーにどこまで触れてよいかは、あなたが決めます。
エージェントはこのために relay_ ツールを使います。そのアクションはリファレンスで説明しています。このページでは、あなたが設定する内容と表示される内容を扱います。同じリレー上のセッションについては、エージェントセッションを参照してください。
ペアリング #
- Settings → Relays(設定 → リレー)を開きます。
- Add a relay(リレーを追加)の下に、もう一方のリレーの Web アドレス(ブラウザーでそのリレーを開くときのアドレス)を貼り付けます。
- もう一方のリレーにもこのリレーを登録させたい場合は、Also add this relay there(このリレーを相手側にも追加)をオンのままにします。Add(追加)を押します。
OAR は、このリレー自身のトークン、または貼り付けたリンクに含まれる ?token= を使ってアドレスを確認します。それが失敗した場合に限り、Token of the other relay(相手のリレーのトークン)欄が表示されます。そこにもう一方のリレーのトークンを貼り付け、もう一度 Add を押します。Use a different token(別のトークンを使う)で、先にこの欄を開くこともできます。トークンは一度だけ送信され、ページには保持されません。
リレーは、もう一方のリレーの名前をそのリレーから読み取ります。Also add this relay there がオンの場合、続いて自分の Public address(公開アドレス)を使って自己紹介するので、ペアリングは双方向で機能します。フォームの下のステータス行に結果が表示されます。たとえば、リレーを追加し、相手側にもこのリレーを追加したこと、あるいは相手側への追加に失敗したこととその理由です。相手側のリレーでは、そのエントリに Paired automatically(自動でペアリング済み)のタグが付きます。そのリレーは、まだアドレスに接続できない場合でもエントリを保持します。
このリレーの名前とアドレス #
Settings → Relays では、タブの上部にこのリレーの名前と、ほかのリレーが必要とする項目が表示されます。
- Relay name(リレー名)は General(一般)で設定します。Relays タブには表示されるだけです。空の場合は、マシンのホスト名が使われます。
- Public address は、ほかのリレーがこのリレーに接続するためのアドレスで、別のデバイスからこのリレーを開くときのアドレスです。Also add this relay there に必要です。リレーを追加するときに空であれば、OAR はペアリング操作をしているページのアドレスを公開アドレスとして保存します。ただし、そのページが
localhostのようなループバックアドレス上にある場合は保存せず、アドレスを入力するまで相手側からのペアリングは失敗します。 - Accept prompts from other relays' agents(他のリレーのエージェントからのプロンプトを受け付ける)については後述します。
ペアリングの削除 #
リレーの行にある Remove(削除)は、このリレー側のペアリングを終わらせます。このリレーのエージェントは、そのリレーで作業できなくなります。相手側は元に戻りません。
- 相手のリレーは、このリレーについての自分のエントリを保持します。双方向でペアリングを解除するには、相手側でも削除してください。
- ペアリングでこのリレーのトークンを渡していた場合、相手のリレーはそれを持ち続けます。エントリを削除してもトークンは無効になりません。相手のリレーを締め出すには、このリレーのトークンを変更してください。
トークンこそが本当の境界です
リレーのトークンを持っている人は誰でも、そのリレーにフルアクセスできます。Agents may(エージェントの権限)と Accept prompts from other relays' agents が制限するのは、エージェントがツールを通じて行うことです。トークンの保持者が直接行うことは制限しません。
トークンが異なる場合 #
両方のリレーが同じトークンを使っている場合は、何も渡されません。もう一方のリレーがこのリレーに接続し返すために別のトークンを必要とする場合、自己紹介にこのリレーのトークンが含まれ、相手のリレーのエージェントはこのリレーで作業できるようになります。すでに相手のリレーの一覧にあるリレーについては、保存済みのアドレスとトークンがそのまま使われます。変更するには、そのリレー自身の設定で変更してください。
オンラインとオフライン #
ペアリングした各リレーには、ドットと 1 行の情報が表示されます。その行には、ホスト名、OAR のバージョン(わかっている場合)、最後に確認できた時刻、または not reached yet(まだ接続できていません)が表示されます。ドットが Online(オンライン)と Not checked yet(未確認)以外の場合は、名前の下に理由が表示されます。このリレーは、ペアリングしたすべてのリレーを 1 分に 1 回確認します。Check(確認)を押すと、そのリレーをすぐに確認します。Open(開く)を押すと、そのリレーを新しいタブで開きます。
| ドット | 意味 |
|---|---|
| Online | リレーが応答しました。 |
| Offline(オフライン) | 接続できなかったか、その手前のゲートウェイがダウンしていると報告しています。 |
| Token not accepted(トークンが受け付けられません) | 応答はありましたが、保存されているトークンを拒否しました。 |
| Error(エラー) | ほかの問題が起きました。名前の下の行に内容が表示されます。 |
| Not checked yet | まだ確認が完了していません。 |
メンションでリレーのロックを解除する #
エージェントは、どのリレーがペアリングされているかを常に確認できます。ただし、ペアリングしたリレーは、あなたが開くまで会話の中ではロックされています。これは、意図していないリレーにエージェントが手を伸ばさないようにするためです。ロックは次の 2 つで解除されます。
- あなたがメンションする。 自分のメッセージの中でメンションします。
@を入力して一覧からリレーを選ぶか、リレーの名前かホスト名を書きます。IP アドレスやlocalhostのホスト名は対象になりません。また、名前がアドレスになっているリレーは、先頭に@を付けた場合にだけ対象になります。 - そのリレーのエージェントが会話に書き込む。 するとそのリレーは、Agents may が許す範囲で会話に対して開かれます。そのため、依頼を受けたエージェントは、回答したり、聞き返したり、後で報告したりできます。
一度ロックを解除したリレーは、その会話の間ずっと開いたままです。エージェントからのプロンプトがほかのリレーのロックを解除することはありません。ロックされたリレーは、リレーの一覧表示以外のすべてを拒否し、エージェントにはあなたにメンションを頼むよう伝えます。このリレー自身にはメンションは必要ありません。
エージェントにできること #
ペアリングした各リレーの行には Agents may メニューがあります。新しいペアリングは Full(フルアクセス)から始まります。
| レベル | そのリレーでエージェントにできること |
|---|---|
| Read only(読み取り専用) | 閲覧:セッションの一覧表示と読み取り、バックグラウンドコマンドの出力の読み取り、プロバイダーとプランの残量の確認、返信の待機、セッションの監視。 |
| Read and prompt(読み取りとプロンプト) | 上記すべてに加えて、既存のセッションへのプロンプト送信。 |
| Full | 上記すべてに加えて、セッションの開始、0.9.16 で追加 その設定の変更、質問への回答、ターンの停止、アーカイブ。 |
レベルごとのアクションはリファレンスに一覧があります。
Accept prompts from other relays' agents #
このスイッチはこのリレーにあり、ほかのリレーのエージェントがこのリレーで何をしてよいかを決めます。既定ではオンです。オフにしても、相手のエージェントはこのリレーのセッションとバックグラウンドコマンドの出力を一覧表示して読み、返信を待ち、このリレーのプロバイダーとプランの使用状況を確認できます。何かを変更する操作はすべて拒否されます。プロンプトの送信、セッションの開始、質問への回答、ターンの停止、アーカイブとアーカイブ解除、このリレーでのセッションの監視です。拒否されたときのメッセージは This relay does not accept prompts from other relays' agents(このリレーは他のリレーのエージェントからのプロンプトを受け付けません)です。
このスイッチが対象にするのは、ほかのリレーのエージェントだけです。このリレーのエージェントがこのリレーのセッションで作業する場合は、このスイッチではなく、Agents may start and use sessions on this relay(エージェントがこのリレーでセッションを開始・使用できる)の設定が適用されます。
これは Agents may とは別の判断です。Agents may はほかのリレーでのあなたのエージェントを制限し、このスイッチはあなたのリレーでの相手のエージェントを制限します。
安全のための制限 #
- リレーは 2 つまで、3 つ目へは進まない。 すでに 2 つのリレーをまたいだプロンプトは、あなた自身がメンションで 3 つ目のリレーのロックを解除していない限り、そのリレーへは渡されません。プロンプトの送り元のリレーには、いつでも返答できます。読み取りと待機は、この方法では制限されません。
- 30 件のプロンプトの後はあなたに確認する。 会話のエージェントが、あなたからのメッセージを挟まずにほかのエージェントへ 30 件のプロンプトを送ると、次の 1 件はどのリレーモードでもカードであなたに確認します。プロンプトの送信、セッションの開始、質問への回答はそれぞれ 1 件と数えられ、このリレー上のセッションへのものも数えられます。Allow(許可)を押すと、カウントがやり直しになります。
- モードが ask と plan のときの承認。 これらのリレーモードでは、ほかのリレーで何かを変更するアクションはすべて、先に質問カードであなたに確認します。対象は、プロンプトの送信、セッションの開始、質問への回答、停止、アーカイブです。
- 相手側のエージェントには知らされる。 相手が受け取るプロンプトの先頭には、別のエージェントが話しかけていることを示す行があり、送信元のリレーとセッションが記されます。
- あなたのアカウントはそのまま。 ほかのリレーで開始したセッションは、このリレーのあなたのアカウントではなく、そのリレーのプロバイダーアカウントを使います。
表示される内容 #
エージェントのプロンプトを受け取るリレーでは:
- メッセージに ↗ from …(… から):送信元のリレー、そのセッション、エージェントのモデルを示すバッジです。送信元のセッションへのリンクになっています。
- 会話リストで、リレー
nameのエージェントが作成したセッションに ↗ name。 - エージェントが開始したターンには 「reply ready」通知が届きません。返信を待っているエージェントが、自分のユーザーに報告します。質問の通知は引き続き届きます。
エージェントが動いているリレーでは、呼び出しが 🛰️ 付きのアクティビティ行として表示され、リモートのエージェントからの質問は会話の中にカードとして届きます。より長い待機時間は、エージェントセッションの Longest wait per tool call(ツール呼び出しごとの最長待機時間)で設定します。このスライダーはペアリングしたリレーにも適用されます。
エージェントは、ペアリングしたリレーのセッションで何かが起きたときに起こしてもらうよう依頼することもできます。これをセッションの監視と呼びます。ツール側の説明はリファレンスにあります。
アドレスとトークン #
- リモートのアドレスには
https://を使う必要があります。スキームなしで貼り付けたアドレスはhttps://として扱われます。Web クライアントのリンクを貼り付けても機能し、OAR がリレーのベースアドレスに短縮します。 - 平文の
http://を使えるのは、ループバックアドレス(たとえば SSH のポート転送)とプライベートネットワークの範囲だけです:10.、x. x. x 172.から16. x. x 172.、31. x. x 192.、168. x. x 100.から64. x. x 100.、および IPv6 の127. x. x fc00::/の範囲。この方法で接続したリレーには警告が付きます。プライベートな範囲の場合、トークンが暗号化されずにネットワークを通ることが警告に示されます。7 - 貼り付けたリンクの
?token=はペアリングに使われ、保存されるアドレスの一部としては保持されません。 - もう一方のリレーのトークンはこのリレーに保存されます。設定の一覧にも Web ページにも表示されることはありません。ツールがエージェントにトークンを渡すことはありません。ツールの呼び出しはこのリレーを経由し、このリレーがトークンを付け加えます。ただし、エージェントはリレーのユーザーとして動作するため、ディスクに保存されている内容を読むことはできます。シークレットを参照してください。
うまくいかないとき #
| 起きること | 原因と対処 |
|---|---|
エージェントがリレーはロックされていると言う(REMOTE_) |
この会話でそのリレーをメンションしていません。@ を入力してリレーを選んでください。 |
行に Offline と表示される(またはエージェントが REMOTE_ を受け取る) |
相手のリレーが動いていないか、保存されているアドレスで接続できません。復旧したら Check を押してください。 |
Token not accepted(または REMOTE_) |
相手のリレーのトークンが変わりました。アドレスを指定してリレーをもう一度追加し、求められたらトークンを入力してください。既存の行が更新されます。 |
| 追加時に、相手のリレーがトークンを受け付けなかったと表示される | Token of the other relay に相手のトークンを貼り付け、もう一度 Add を押してください。 |
| 追加はできたが「adding this relay there failed」(このリレーを向こうに追加できませんでした)と表示される | Public address が空であるか、相手のリレーがペアリングに対応していない古い OAR で動いていることがよくあります。相手側でこのリレーを手動で追加してください。 |
| 相手のリレーが古い OAR で動いている | ペアリング導入前のリレーでも、こちらから追加することはでき、その行には OAR のバージョンが表示されますが、相手側からペアリングし返すことはできません。プランの使用状況やセッションの監視など、一部のアクションには新しいリレーが必要で、その旨が表示されます。 |
相手のリレーのエージェントがこのリレーにプロンプトを送れない(REMOTE_) |
このリレーで Accept prompts from other relays' agents がオフになっています。 |
エージェントが REMOTE_ で拒否される |
エージェントが処理しているプロンプトは別のリレーから来たもので、さらに 3 つ目のリレーへ進もうとしています。許可するには、その 3 つ目のリレーをあなた自身がメンションしてください。 |
| That address is this relay(そのアドレスはこのリレーです) | このリレー自身のアドレスを貼り付けました。別のリレーのアドレスを貼り付けてください。 |
すべてのエラーコードはエラーに一覧があります。