遠端中繼與配對 0.9.4 新增
如果你執行不只一個 OAR 中繼,例如一個在工作站上、一個在伺服器上,就可以把它們配對起來。之後,任何對話中的 agent 都能列出並讀取另一個中繼的 session、對其中一個下提示、啟動新的 session、等待回覆,並把另一個 agent 提出的問題帶回來給你。哪些中繼可以讓 agent 碰、能碰到什麼程度,由你決定。
agent 為此使用 relay_ 工具。它的動作在參考資料中說明;本頁說的是你要設定什麼,以及你會看到什麼。同一個中繼上的 session,請見 Agent session。
配對 #
- 開啟 Settings → Relays(設定 → 中繼)。
- 在 Add a relay(新增中繼)下方,貼上另一個中繼的網址:也就是你在瀏覽器中開啟它時用的位址。
- 如果另一個中繼也應該列出這一個,就讓 Also add this relay there(同時在對方新增此中繼)保持勾選。按下 Add(新增)。
OAR 會用此中繼自己的 token,或貼上的連結所帶的 ?token=,來檢查該位址。只有在檢查失敗時,才會出現 Token of the other relay(另一個中繼的 token)欄位;把另一個中繼的 token 貼到那裡,再按一次 Add。你也可以用 Use a different token(使用其他 token)先開啟這個欄位。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(接受其他中繼 agent 的提示)在下方說明。
移除配對 #
在中繼那一列按 Remove(移除),會結束此中繼這一端:這裡的 agent 就不能再在那個中繼上工作。它不會撤銷另一端:
- 另一個中繼會保留它自己對此中繼的項目。要雙向解除配對,也請在那裡移除。
- 如果配對時交出了此中繼的 token,另一個中繼仍然持有它。移除項目並不會撤銷它。請輪替此中繼的 token,把另一個中繼擋在外面。
token 才是真正的界線
任何持有中繼 token 的人都能完整存取它。Agents may(agent 可以)和 Accept prompts from other relays' agents 限制的是 agent 透過工具所做的事;它們不會限制 token 持有者直接做的事。
Token 不同時 #
如果兩個中繼使用相同的 token,就不會交出任何東西。如果另一個中繼需要不同的 token 才能回頭呼叫這一個,介紹時就會帶上此中繼的 token,之後另一個中繼的 agent 就能在這裡工作。已經在另一個中繼清單中的中繼,會保留為它儲存的位址和 token;要變更,請到它自己的設定中修改。
線上或離線 #
每個已配對的中繼都會顯示一個點和一行資訊,內容是它的主機名稱、OAR 版本(若已知)以及上次看到它的時間,或 not reached yet(尚未連通)。點的狀態不是 Online(線上)或 Not checked yet(尚未檢查)時,原因會顯示在名稱下方。此中繼每分鐘會檢查一次所有已配對的中繼。Check(檢查)會立即檢查一個。Open(開啟)會在新分頁中開啟該中繼。
| 點 | 意義 |
|---|---|
| Online | 該中繼有回應。 |
| Offline(離線) | 無法連到它,或它前方的閘道回報它已停止運作。 |
| Token not accepted(Token 未被接受) | 它有回應,但拒絕了為它儲存的 token。 |
| Error(錯誤) | 發生了其他問題;名稱下方那一行會說明是什麼。 |
| Not checked yet | 還沒有任何檢查完成。 |
提及中繼以解鎖 #
agent 一律看得到有哪些已配對的中繼。但已配對的中繼在對話中是鎖定的,直到你開啟它為止,這樣 agent 就不會伸手進入你無意讓它碰的中繼。有兩種方式可以開啟它:
- 你提及它,在你的某則訊息中。輸入
@並從清單中選取該中繼,或寫出它的名稱或主機名稱。IP 位址或localhost形式的主機名稱一律不算數,而名稱本身是位址的中繼,只有在前面加上@時才算數。 - 該中繼上的 agent 在對話中寫入訊息。 之後該中繼就會對這個對話開放,範圍以 Agents may 允許的為限,讓被詢問的 agent 可以回答、反問或稍後回報。
一旦解鎖,中繼在這個對話剩下的部分都會保持開放。來自 agent 的提示絕不會解鎖任何其他中繼。鎖定的中繼除了列出中繼之外,什麼都會拒絕;agent 會被告知請你提及它。此中繼本身不需要提及。
Agent 可以做什麼 #
每個已配對的中繼在自己那一列都有一個 Agents may 選單。新的配對一開始是 Full(完整存取)。
| 等級 | agent 在該中繼上可以做什麼 |
|---|---|
| Read only(唯讀) | 查看:列出並讀取 session、讀取背景指令的輸出、查看供應商以及方案還剩多少、等待回覆、監看 session。 |
| Read and prompt(讀取並傳送提示) | 上述全部,再加上對現有的 session 下提示。 |
| Full | 上述全部,再加上啟動 session、0.9.16 新增 變更它們的設定、回答問題、停止回合以及封存。 |
參考資料列出了各等級的動作。
Accept prompts from other relays' agents #
這個開關位於此中繼上,決定其他中繼的 agent 可以在這裡做什麼。它預設為開啟。關閉後,對方的 agent 仍然可以列出並讀取這裡的 session 和背景指令的輸出、等待回覆,以及查看此中繼的供應商和方案用量。任何會改變東西的動作都會被拒絕:傳送提示、啟動 session、回答問題、停止回合、封存與取消封存,以及在這裡監看 session。它們收到的拒絕訊息是:This relay does not accept prompts from other relays' agents(此中繼不接受其他中繼的 agent 送來的提示)。
這個開關只與其他中繼的 agent 有關。此中繼的 agent 在這裡的 session 上工作時,受 Agents may start and use sessions on this relay(agent 可在此中繼上啟動並使用 session)這項設定管理,而不是這個開關。
它和 Agents may 是兩個不同的決定:那一個限制你的 agent 在另一個中繼上能做什麼,這一個限制對方的 agent 在你的中繼上能做什麼。
保護你的限制 #
- 兩個中繼,不是三個。 已經跨過兩個中繼的提示,不會再傳給第三個中繼,除非你自己用提及解鎖了那個中繼。提示的來源中繼則一律可以回覆。讀取和等待從不受這種限制。
- 30 個提示後就會問你。 當對話的 agent 在你沒有發送任何訊息的情況下,已向其他 agent 傳送了 30 個提示,下一個就會在卡片上詢問你,不論是哪種中繼模式。傳送提示、啟動 session 和回答問題各算一次,對此中繼上的 session 所做的也算。Allow(允許)會重新開始計數。
- 在 ask 與 plan 中需要核准。 在這兩種中繼模式中,每個會改變另一個中繼上東西的動作,都會先在提問卡片上詢問你:下提示、啟動 session、回答問題、停止和封存。
- 另一端的 agent 會被告知。 它收到的提示開頭有一行說明是另一個 agent 在和它對話,並寫出傳送端的中繼和 session。
- 你的帳戶不會被動用。 在另一個中繼上啟動的 session,使用的是那個中繼的供應商帳戶,而不是你在這裡的帳戶。
你會看到什麼 #
在接收 agent 提示的中繼上:
- 訊息上的 ↗ from …(來自 …):一個徽章,寫出傳送端的中繼、它的 session 以及該 agent 的模型。它會連回來源 session。
- 對話清單中的 ↗ name,出現在由中繼
name的 agent 所建立的 session 上。 - agent 啟動的回合不會有「reply ready」通知。 等待回覆的 agent 會自己向它的使用者回報。提問的通知仍然會送達。
在 agent 執行的中繼上,這次呼叫會顯示為一行帶有 🛰️ 的活動記錄,而遠端 agent 提出的問題會以卡片形式出現在你的對話中。較長的等待時間由 Agent session 下的 Longest wait per tool call(每次工具呼叫的最長等待)設定;那個滑桿也適用於已配對的中繼。
agent 也可以要求在已配對中繼上的 session 發生某些事時被喚醒。這稱為監看 session;工具端的說明在參考資料中。
位址與 token #
- 遠端位址必須使用
https://。貼上時沒有通訊協定的位址,會當作https://讀取。貼上網頁用戶端的連結也可以;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::/範圍。以這種方式連到的中繼會標上警告。在私有範圍上,警告會說明 token 會以未加密的方式經過你的網路。7 - 貼上的連結中的
?token=只用於配對,不會成為所儲存位址的一部分。 - 另一個中繼的 token 儲存在此中繼上。它絕不會出現在設定清單或網頁中。工具絕不會把 token 交給 agent:它的呼叫會經過此中繼,由此中繼加上 token。不過 agent 是以中繼的使用者身分執行,可以讀取存放在磁碟上的內容:見機密資訊。
無法正常運作時 #
| 發生了什麼 | 原因與處理方式 |
|---|---|
agent 說該中繼已鎖定(REMOTE_) |
你還沒有在這個對話中提及它。輸入 @ 並選取該中繼。 |
該列顯示 Offline(或 agent 收到 REMOTE_) |
另一個中繼沒有在執行,或在儲存的位址上連不到。等它恢復後按 Check。 |
Token not accepted(或 REMOTE_) |
另一個中繼的 token 已變更。用它的位址再新增一次該中繼,並在被要求時輸入它的 token;現有的那一列會被更新。 |
| 新增時說另一個中繼不接受該 token | 把它的 token 貼到 Token of the other relay,再按一次 Add。 |
| 新增成功,但出現「adding this relay there failed」(在對方新增此中繼失敗) | 通常是 Public address 為空,或另一個中繼執行的是還沒有配對功能的舊版 OAR。請在另一端手動新增此中繼。 |
| 另一個中繼執行的是舊版 OAR | 配對功能推出前的中繼仍然可以從這裡新增,它那一列也會顯示它的 OAR 版本,但它無法反向配對。有些動作,例如方案用量和監看 session,需要較新的中繼,並會說明這一點。 |
另一個中繼上的 agent 無法在這裡傳送提示(REMOTE_) |
此中繼上的 Accept prompts from other relays' agents 已關閉。 |
agent 被以 REMOTE_ 拒絕 |
它正在處理的提示來自另一個中繼,而且會繼續傳到第三個中繼。請自己提及那第三個中繼來允許它。 |
| That address is this relay(該位址就是此中繼) | 你貼上的是此中繼自己的位址。請貼上另一個中繼的位址。 |
所有錯誤碼都列在錯誤之下。