远程中继与配对 0.9.4 新增
如果你运行不止一台 OAR 中继,例如一台在你的工作站上、一台在服务器上,就可以把它们配对。之后,任何对话中的智能体都可以列出并读取另一台中继的会话、向其中某个会话发送提示词、启动新会话、等待回复,并把另一个智能体提出的问题带回来给你。智能体可以接触哪些中继、可以做到什么程度,由你决定。
智能体通过 relay_ 工具完成这些。它的操作见参考;本页讲的是你要设置什么、会看到什么。关于同一台中继上的会话,见智能体会话。
配对 #
- 打开 Settings → Relays(设置 → 中继)。
- 在 Add a relay(添加中继)下,粘贴另一台中继的网页地址,即你在浏览器中打开它时使用的地址。
- 如果另一台中继也应列出这一台,就保持勾选 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 限制的是智能体通过该工具能做什么;它们不限制令牌持有者直接做什么。
令牌不同时 #
如果两台中继使用相同的令牌,就不会交出任何东西。如果另一台中继需要不同的令牌才能回连这一台,介绍信息中就会带上此中继的令牌,之后另一台中继的智能体就能在这里工作。已经在另一台中继列表中的中继,会保留为它存储的地址和令牌;要更改,请在那台中继自己的设置中修改。
在线或离线 #
每台已配对的中继都显示一个点和一行信息:它的主机名、它的 OAR 版本(已知时)以及上次连通的时间,或者 not reached yet(尚未连通)。点的状态不是 Online(在线)或 Not checked yet(尚未检查)时,名称下方会显示原因。此中继每分钟检查一次每台已配对的中继。Check(检查)立即检查某一台。Open(打开)在新标签页中打开该中继。
| 点 | 含义 |
|---|---|
| Online | 中继有响应。 |
| Offline(离线) | 无法访问它,或它前面的网关报告它已停止服务。 |
| Token not accepted(令牌未被接受) | 它有响应,但拒绝了为它存储的令牌。 |
| Error(错误) | 出了其他问题;名称下方的那一行会说明原因。 |
| Not checked yet | 还没有完成任何检查。 |
提及中继以解锁 #
智能体始终能看到哪些中继已配对。但在一个对话中,已配对的中继在你打开它之前处于锁定状态,这样智能体就不会伸手进入你并不打算让它接触的中继。有两种方式可以打开它:
- 你在自己的某条消息中提及它。 输入
@并从列表中选择该中继,或者写出它的名称或主机名。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 是两个独立的决定:后者限制你的智能体在另一台中继上的权限,前者限制对方的智能体在你的中继上的权限。
保护你的限制 #
- 两台中继,而不是三台。 已经跨过两台中继的提示词不会再传给第三台,除非你自己通过提及解锁了那台中继。提示词所来自的中继始终可以回复。读取和等待从不受此限制。
- 30 条提示词后询问你。 当一个对话的智能体在你没有发消息的情况下已向其他智能体发送了 30 条提示词,下一条会通过卡片询问你,无论处于哪种中继模式。发送提示词、启动会话和回答问题各算一条,发给此中继上会话的也算。Allow(允许)会重新开始计数。
- ask 和 plan 下需要审批。 在这两种中继模式下,每个会改变另一台中继上状态的操作都会先在提问卡片上询问你:发送提示词、启动会话、回答问题、停止和归档。
- 另一侧的智能体会被告知。 它收到的提示词开头有一行说明,告诉它另一个智能体正在和它对话,并注明发送方的中继和会话。
- 你的账户不会被借用。 在另一台中继上启动的会话使用那台中继的提供商账户,而不是你在这里的账户。
你会看到什么 #
在接收智能体提示词的中继上:
- 消息上的 ↗ from …(来自 …):一个徽标,注明发送方的中继、其会话和智能体的模型。它链接回来源会话。
- 对话列表中的 ↗ name:出现在由中继
name上的智能体创建的会话上。 - 没有“reply ready”通知:智能体启动的一轮不会发送此通知。等待回复的智能体会自己向它的用户汇报。提问的通知仍会照常送达。
在智能体运行的中继上,这次调用显示为一条带 🛰️ 的活动行,远程智能体提出的问题会以卡片形式出现在你的对话中。更长的等待时间由智能体会话下的 Longest wait per tool call(每次工具调用的最长等待)设置;该滑块同样适用于已配对的中继。
智能体还可以要求在已配对中继上的会话发生某些事情时被唤醒。这称为监视会话;工具方面的说明见参考。
地址和令牌 #
- 远程地址必须使用
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::/段。以这种方式访问的中继会带有警告标记。在私有网段上,警告会说明令牌以未加密的形式穿过你的网络。7 - 粘贴的链接中的
?token=只用于配对,不会作为存储地址的一部分保留。 - 另一台中继的令牌存储在此中继上。它绝不会出现在设置列表或网页中。该工具绝不会把令牌交给智能体:智能体的调用经过此中继,由此中继加上令牌。不过,智能体以中继的用户身份运行,可以读取磁盘上存储的内容:见密钥。
无法正常工作时 #
| 现象 | 原因及解决办法 |
|---|---|
智能体说中继已锁定(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_ 拒绝 |
它正在处理的提示词来自另一台中继,还会继续传到第三台。你自己提及那第三台中继即可允许。 |
| That address is this relay(该地址就是此中继) | 你粘贴的是此中继自己的地址。请粘贴另一台中继的地址。 |
所有错误码都列在错误下。