跳转到主要内容

工具

Copilot CLI 的内置工具默认已启用。这里可以指定的是自定义工具。

基本使用方式

在 SessionConfig 的 tools 中指定工具的定义。 Tool::define() 是与其他语言版本的 defineTool 类似的辅助函数。 parameters 可以使用 Laravel 自身在 Laravel MCP 中使用的 JsonSchema。也可以不使用 JsonSchema,直接指定数组。

skipPermission

指定 skipPermission: true 后,该工具可以在没有权限确认的情况下执行。

$invocation

工具处理器的第二个参数 $invocation 会传入以下字段。

协议详情

在 Protocol v3(当前默认)中,工具调用不再作为 JSON-RPC 请求,而是作为会话事件(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年7月18日