Skip to main content

工具

Copilot CLI 的內建工具預設為啟用。這裡可以指定的是自訂工具。

基本用法

在 SessionConfig 的 tools 中指定工具定義。 Tool::define() 是與其他語言版本的 defineTool 相同的輔助方法。 parameters 可以使用 Laravel 本身在 Laravel MCP 中使用的 JsonSchema。也可以不使用 JsonSchema 直接指定陣列。

skipPermission

指定 skipPermission: true 後,該工具可不經權限提示直接執行。

$invocation

工具處理器的第 2 個參數 $invocation 會傳入以下欄位。

協定細節

在 Protocol v3(目前的預設)中,工具呼叫並非以 JSON-RPC 請求形式,而是以 Session Event(external_tool.requested)形式廣播。SDK 會在內部處理此事件,並透過 session.tools.handlePendingToolCall RPC 回應。 SessionConfig 的使用方式並未改變。 只要在 tools 傳入定義,協定差異即由 SDK 吸收處理。

MCP CallToolResult 轉換

若要將 MCP 伺服器的工具結果(CallToolResult)轉換為 Copilot SDK 的 ToolResultObject,可使用 McpCallToolResult::convert()。 MCP 工具的結果是包含 text、image、resource 等的 content 區塊陣列,但 Copilot SDK 需要 ToolResultObject 格式,因此需要轉換。
最新資訊請參閱 GitHub 儲存庫
最後修改於 2026年8月2日