所有頁面
本頁內容

Agent 工具

每個程式設計 agent 都有自己的工具:讀取檔案、執行指令、編輯程式碼。OAR 在這之上再加了一小組工具,讓 agent 能做只有中繼才做得到的事:與其他 session 協作、發布網頁預覽,以及向你提出一個點一下就能回答的問題。

你永遠不必自己呼叫這些工具。你用一般的話提出要求,agent 會自己挑選工具。這個章節讓你了解 agent 能做什麼、哪些事需要你核准,以及它到底送出什麼、收到什麼。

工具 #

工具 agent 用它做什麼 頁面
relay_tool 列出、讀取、提示、啟動、停止和監看其他 session,可以是此中繼上的,也可以是配對中繼上的。一個工具,23 個動作。 relay_tool
preview 以公開連結發布本機的 dev server 或資料夾,列出所屬對話的預覽並關閉它們。 preview
ask_user 以附有按鈕的卡片向你提問,並等待回答。 ask_user

你可以要求什麼 #

一些要求範例,以及 agent 會用到的工具:

你寫的內容 agent 使用
「開三個 session,分別審查這些資料夾中的一個,然後彙整它們的發現。」 relay_tool: create_session, wait, read_session
「問一下 @build-box 上的 session,部署是否成功了。」 relay_tool: list_sessions, send
「監看那些 session,有任何一個提問或失敗時告訴我。」 relay_tool: subscribe
「這個中繼上我的 Claude 方案還剩多少?」 relay_tool: usage
「啟動 dev server,給我一個可以在手機上開啟的連結。」 preview: create
「變更 schema 之前先跟我確認。」 ask_user

依供應商 #

工具的作用對每個供應商都一樣。不同的是供應商的 agent 是否能取得該工具,以及它們看到的工具名稱。

供應商 relay_tool preview 提問卡片
Claude 有,名稱為 mcp__relay__relay_tool 有,名稱為 mcp__relay__preview Claude 自己的 AskUserQuestion,由 OAR 顯示為卡片
Claude API 0.9.18 新增 有,名稱為 mcp__relay__relay_tool 有,名稱為 mcp__relay__preview Claude 自己的 AskUserQuestion,由 OAR 顯示為卡片
DeepSeek 0.9.17 新增 有,名稱為 mcp__relay__relay_tool 有,名稱為 mcp__relay__preview Claude Code 的 AskUserQuestion,由 OAR 顯示為卡片
GitHub Copilot 和 OpenAI,SDK 引擎 有,名稱為 relay_tool 沒有工具:agent 會被告知如何改為呼叫中繼的 preview API OAR 的 ask_user
GitHub Copilot 和 OpenAI,擴充功能引擎 有,透過 OAR 的 MCP 伺服器(oar) 有,透過 OAR 的 MCP 伺服器(oar) Copilot 自己的 ask_user,由 OAR 顯示為卡片
Cursor 有,名稱為 relay_tool 有,名稱為 preview OAR 的 ask_user
Grok 有,透過 OAR 的 MCP 伺服器(oar) 有,透過 OAR 的 MCP 伺服器(oar) 無
Claude Cloud 無 無 Claude 自己的 AskUserQuestion,由 OAR 顯示為卡片

名稱為何不同

透過 Model Context Protocol(MCP)取得工具的供應商,會在工具名稱前面加上伺服器的名稱。Claude、Claude API 和 DeepSeek 的 agent 從名為 relay 的伺服器取得 OAR 的工具,所以 preview 會顯示為 mcp__relay__preview。Grok 和 Copilot 的擴充功能引擎則從名為 oar 的伺服器取得工具,並各自以自己的方式為名稱加上前綴。無論哪種情況,都是同一個工具。

Claude API 和 DeepSeek 對話會在中繼主機上執行 Claude Code,所以它們的 agent 取得工具的方式和 Claude 對話完全相同。見 Claude API 和 DeepSeek。

Claude Cloud session 在 Anthropic 的沙箱中執行,而不是在你的機器上。中繼的工具無法伸入其中:雲端 session 沒有 relay_tool,也沒有 preview。不過其他 session 中的 agent 仍然可以用 relay_tool 啟動、讀取、提示和停止雲端 session。

Grok 和 Copilot 的擴充功能引擎會從 OAR 附加到 agent 的小型 MCP 伺服器取得工具。為中繼設定環境變數 OAR_MCP_SERVER=0 會關閉這個伺服器;這時這些 agent 就沒有 relay_tool,也沒有 preview 工具,而是被告知如何呼叫 preview API。

工具何時可用 #

工具 agent 在以下情況擁有它
relay_tool 至少配對了一個中繼,或已開啟 Settings → Relays → Agent sessions → Agents may start and use sessions on this relay(設定 → 中繼 → Agent session → agent 可在此中繼上啟動並使用 session)。兩者皆無時,完全不會提供這個工具。
preview 在有這個工具的供應商上一律可用。它能否發布,取決於預覽通道;在你設定好之前,預覽通道是關閉的。通道關閉時,工具會回覆原因。
ask_user 在有這個工具的供應商上一律可用。

session 是在它的 agent 處理程序啟動時,得知自己是否取得 relay_tool。在你配對第一個中繼或開啟 agent session 之後,已在執行的對話可能要等到它的 agent 重新啟動,才會有這個工具。0.9.18 新增 工具的新名稱也是如此:你更新到 0.9.18 時正在執行的 session,可能仍以 remote_relay 這個名稱擁有它;見名稱。

你仍能掌控的部分 #

  • 預設不會開啟任何超出對話範圍的功能。 agent session 在你開啟之前都是關閉的,配對的中繼在每個對話中都處於鎖定狀態,直到你提到它為止,預覽通道在你設定之前也是關閉的。
  • 核准卡片。 agent 在對話中啟動的第一個 session、它第一次監看某個中繼上的 session,以及在 ask 和 plan 中繼模式下的每個寫入動作,都會先以提問卡片詢問你。
  • 工具絕不會把 token 交給 agent。 對其他中繼的呼叫會經過你自己的中繼,由它保管對方中繼的 token。這不是沙箱:agent 以中繼的使用者身分執行,可以從磁碟讀取設定檔和資料庫。見 OAR 會暴露什麼。
  • 預覽連結是公開的。 任何拿到預覽連結的人都不必登入就能開啟。agent 會被要求在提供連結時說明這一點。agent 只能列出和關閉自己對話的預覽 0.9.14 新增;Settings → Previews(設定 → 預覽)則會顯示並可關閉所有預覽。

詳細說明請見各工具的頁面:relay_tool → 權限與核准和 preview → 限制。

不是工具的功能 #

agent 在 OAR 中做的一些事,並不需要 OAR 的工具:

  • 回覆中的圖片、影片和音訊。 agent 會被告知可以用絕對路徑嵌入媒體檔案;中繼會內嵌顯示它。這是提示中的一項指示,而不是工具。Copilot 擴充功能引擎上的 agent 和 Claude Cloud 中的 agent 不會收到這項指示。
  • 輸入區中的 /preview。 你可以自己輸入 /preview 來發布、列出和關閉預覽(輸入區)。這不會耗用 agent 的回合,而且適用於每個供應商。
  • 計畫看板。 agent 完成規劃時,OAR 會顯示 Plan ready(計畫已就緒)看板。在 Claude 和 DeepSeek 上,它來自 Claude Code 自己的計畫工具,由 OAR 接手顯示。
原始碼

給貢獻者和好奇的人:這些工具在 OAR 儲存庫中的位置。每個工具都只在 shared/ 下定義一次,與供應商無關,再由一個小型轉接器附加到每個供應商。

檔案 內容
shared/remote-relay-contract.mjs relay_tool:說明、參數、動作、權限、限制、錯誤碼、輸入檢查
shared/remote-relay-tool-core.mjs relay_tool:每個供應商的轉接器所發出的呼叫,以及何時提供這個工具
server/services/remote-relay-dispatcher.mjs relay_tool:每個動作做什麼、執行前的檢查、等待回覆
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 提問卡片:從 agent 的提問到卡片,再回到 agent
server/claude-worker/claude-sdk-adapter.mjs Claude、Claude API 和 DeepSeek:relay MCP 伺服器和 AskUserQuestion 橋接
server/cursor-worker/cursor-turn-runner.mjs Cursor:以自訂工具提供的 relay_tool、preview 和 ask_user
server/copilot-worker/copilot-sdk-session-process.mjs Copilot SDK 引擎:以 session 工具提供的 relay_tool 和 ask_user
server/mcp/oar-mcp-server.mjs 供 Grok 和 Copilot 擴充功能引擎使用的 oar MCP 伺服器
server/relay-tools.md Copilot 引擎取得的、關於這些工具的常設指示