智能体工具
每个编程智能体都自带工具:读取文件、运行命令、编辑代码。OAR 在此基础上额外添加了一小组工具,让智能体能够做只有中继才能做的事:与其他会话协作,发布网页预览,以及向你提出一个只需轻点一下就能回答的问题。
你从不需要自己调用这些工具。你用日常语言提出请求,由智能体选择工具。本章节帮助你了解智能体能做什么、哪些操作需要你批准,以及它具体发送什么、得到什么。
工具 #
| 工具 | 智能体用它做什么 | 页面 |
|---|---|---|
relay_ |
列出、读取、启动、停止和监视其他会话,并向它们发送提示词,可以是此中继上的会话,也可以是已配对中继上的会话。一个工具,23 个操作。 | relay_tool |
preview |
将本地开发服务器或文件夹发布到公开链接上,列出其会话的预览并关闭它们。 | preview |
ask_ |
以带按钮的卡片向你提问并等待回答。 | ask_user |
- relay_toolrelay_tool 智能体工具——与此中继和已配对中继上的会话协作。全部 23 个操作、它们的参数和结果、权限、限制和错误。
- previewpreview 智能体工具——将本地开发服务器或文件夹发布到公开链接上。操作、参数、结果、设置和限制。
- ask_user智能体如何以带按钮的卡片向你提问——OAR 的 ask_user 工具和各提供商自带的提问工具,以及每个提供商的参数。
你可以提出哪些请求 #
一些请求以及智能体会使用的工具:
| 你写 | 智能体使用 |
|---|---|
| “启动三个会话,让它们各自审阅这些文件夹中的一个,然后汇总它们的发现。” | relay_:create_、wait、read_ |
| “询问 @build-box 上的会话部署是否成功。” | relay_:list_、send |
| “监视那些会话,并在某个会话提问或失败时告诉我。” | relay_:subscribe |
| “我的 Claude 套餐在此中继上还剩多少?” | relay_:usage |
| “启动开发服务器,并给我一个能在手机上打开的链接。” | preview:create |
| “在你更改 schema 之前,先和我确认。” | ask_ |
按提供商 #
工具的作用在每个提供商上都相同。不同的是提供商的智能体是否获得该工具,以及它们看到的工具名称。
| 提供商 | relay_ |
preview |
提问卡片 |
|---|---|---|---|
| Claude | 有,名称为 mcp__ |
有,名称为 mcp__ |
Claude 自带的 Ask,由 OAR 以卡片形式展示 |
| Claude API 0.9.18 新增 | 有,名称为 mcp__ |
有,名称为 mcp__ |
Claude 自带的 Ask,由 OAR 以卡片形式展示 |
| DeepSeek 0.9.17 新增 | 有,名称为 mcp__ |
有,名称为 mcp__ |
Claude Code 的 Ask,由 OAR 以卡片形式展示 |
| GitHub Copilot 和 OpenAI,SDK 引擎 | 有,名称为 relay_ |
无工具:改为告知智能体如何调用中继的预览 API | OAR 的 ask_ |
| GitHub Copilot 和 OpenAI,扩展引擎 | 有,通过 OAR 的 MCP 服务器(oar) |
有,通过 OAR 的 MCP 服务器(oar) |
Copilot 自带的 ask_,由 OAR 以卡片形式展示 |
| Cursor | 有,名称为 relay_ |
有,名称为 preview |
OAR 的 ask_ |
| Grok | 有,通过 OAR 的 MCP 服务器(oar) |
有,通过 OAR 的 MCP 服务器(oar) |
无 |
| Claude Cloud | 无 | 无 | Claude 自带的 Ask,由 OAR 以卡片形式展示 |
为什么名称不同
通过模型上下文协议(MCP)接收工具的提供商会把服务器名称放在工具名称前面。Claude、Claude API 和 DeepSeek 的智能体从一个名为 relay 的服务器获得 OAR 的工具,因此 preview 显示为 mcp__。Grok 和 Copilot 的扩展引擎从一个名为 oar 的服务器获得这些工具,并各自以自己的方式给名称加前缀。无论哪种情况,都是同一个工具。
Claude API 和 DeepSeek 对话在中继主机上运行 Claude Code,因此它们的智能体获得的工具与 Claude 对话完全相同。参见 Claude API 和 DeepSeek。
Claude Cloud 会话在 Anthropic 的沙箱中运行,而不是在你的机器上。中继的工具无法进入其中:云端会话没有 relay_ 也没有 preview。其他会话中的智能体仍然可以用 relay_ 启动、读取和停止云端会话,或向它发送提示词。
Grok 和 Copilot 的扩展引擎从 OAR 附加到智能体的一个小型 MCP 服务器获得工具。为中继设置环境变量 OAR_ 会关闭该服务器;这些智能体就没有 relay_,也没有 preview 工具,而是被告知如何调用预览 API。
工具何时存在 #
| 工具 | 智能体在什么情况下拥有它 |
|---|---|
relay_ |
至少有一个中继已配对,或者 Settings → Relays → Agent sessions → Agents may start and use sessions on this relay(设置 → 中继 → 智能体会话 → 智能体可以在此中继上启动和使用会话)已开启。两者都没有时,就完全不提供该工具。 |
preview |
在提供该工具的提供商上始终拥有。它能否发布取决于预览通道,该通道在你设置之前是关闭的;通道关闭时,工具会返回原因。 |
ask_ |
在提供该工具的提供商上始终拥有。 |
会话是否获得 relay_,在其智能体进程启动时确定。你配对第一个中继或开启智能体会话后,已经在运行的对话可能要等其智能体重新启动后才有该工具。0.9.18 新增 该工具的新名称同样如此:在你更新到 0.9.18 时正在运行的会话可能仍以 remote_ 的名称拥有它;参见名称。
你始终掌控什么 #
- 凡是超出对话范围的功能,默认都不开启。 智能体会话在你开启之前是关闭的,已配对的中继在每个对话中保持锁定,直到你提及它,预览通道在你配置之前也是关闭的。
- 审批卡片。 智能体在对话中启动的第一个会话、它第一次在中继上监视会话,以及 ask 和 plan 中继模式下的每个写入操作,都会先通过提问卡片征求你的同意。
- 这些工具从不给智能体令牌。 对另一个中继的调用通过你自己的中继进行,它持有那个中继的令牌。但这不是沙箱:智能体以中继的用户身份运行,能够从磁盘读取配置文件和数据库。参见 OAR 暴露什么。
- 预览链接是公开的。 任何拥有预览链接的人都无需登录即可打开它。智能体被告知在给你链接时要说明这一点。智能体只能列出和关闭它自己对话的预览 0.9.14 新增;Settings → Previews(设置 → 预览)显示并关闭所有预览。
详细信息见每个工具的页面:relay_tool → 权限与批准 和 preview → 限制。
不是工具 #
智能体在 OAR 中做的一些事情无需 OAR 的工具即可完成:
- 回复中的图片、视频和音频。 智能体会被告知可以通过绝对路径嵌入媒体文件;中继会内联显示它。这是提示词中的一条指令,不是工具。Copilot 扩展引擎上和 Claude Cloud 中的智能体不会收到这条指令。
- 输入区中的
/。 你可以通过输入preview /自己发布、列出和关闭预览(输入区)。这不消耗智能体的轮次,并且适用于所有提供商。preview - 计划看板。 当智能体完成规划时,OAR 会显示一个 Plan ready(计划已就绪)看板。在 Claude 和 DeepSeek 上,它来自 Claude Code 自带的计划工具,由 OAR 接收并显示。
源代码
供贡献者和感兴趣的读者参考:这些工具在 OAR 仓库中的位置。每个工具只定义一次,与提供商无关,位于 shared/ 下,再通过一个小型适配器接入每个提供商。
| 文件 | 其中包含什么 |
|---|---|
| shared/remote-relay-contract.mjs | relay_:描述、参数、操作、权限、限制、错误码、输入检查 |
| shared/remote-relay-tool-core.mjs | relay_:每个提供商适配器所做的调用,以及何时提供该工具 |
| server/services/remote-relay-dispatcher.mjs | relay_:每个操作做什么、执行前的检查、等待回复 |
| shared/relay-events.mjs | 事件订阅:事件类型、限制、事件消息的文本 |
| server/services/relay-event-service.mjs | 事件订阅:存储它们并传递事件 |
| shared/preview-tool-core.mjs | preview:描述、参数、输入检查、调用 |
| server/services/preview-registry-service.mjs | preview:预览本身及其限制 |
| shared/ask-user-bridge.mjs | 提问卡片:从智能体的问题到卡片,再返回 |
| server/claude-worker/claude-sdk-adapter.mjs | Claude、Claude API 和 DeepSeek:relay MCP 服务器和 Ask 桥接 |
| server/cursor-worker/cursor-turn-runner.mjs | Cursor:作为自定义工具的 relay_、preview 和 ask_ |
| server/copilot-worker/copilot-sdk-session-process.mjs | Copilot SDK 引擎:作为会话工具的 relay_ 和 ask_ |
| server/mcp/oar-mcp-server.mjs | 用于 Grok 和 Copilot 扩展引擎的 oar MCP 服务器 |
| server/relay-tools.md | Copilot 引擎获得的关于这些工具的常驻指令 |