Skip to main content

Agent

定义所有符合ACP的代理必须实现的接口。 代理是使用生成式AI自主修改代码的程序。它们处理来自客户端的请求,并使用语言模型和工具执行任务。

authenticate

使用指定的认证方法对客户端进行认证。 当代理在允许创建会话之前需要认证时调用。客户端提供在初始化期间广告的认证方法ID。 成功认证后,客户端可以继续使用new_session创建会话,而不会收到auth_required错误。 查看协议文档:Initialization

AuthenticateRequest

authenticate方法的请求参数。 指定要使用的认证方法。 类型: Object 属性:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
methodId
string
required
要使用的认证方法的ID。 必须是初始化响应中广告的方法之一。

AuthenticateResponse

authenticate 方法的响应。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility

initialize

与客户端建立连接并协商协议能力。 此方法在连接开始时调用一次,用于:
  • 协商要使用的协议版本
  • 在客户端和代理之间交换能力信息
  • 确定可用的认证方法
代理应使用其支持的协议版本和能力进行响应。 查看协议文档:Initialization

InitializeRequest

初始化方法的请求参数。 由客户端发送以建立连接和协商能力。 查看协议文档:Initialization Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
clientCapabilities
客户端支持的能力。
  • Default: {"fs":{"readTextFile":false,"writeTextFile":false},"terminal":false}
clientInfo
发送给代理的客户端名称和版本信息。Note: in future versions of the protocol, this will be required.
protocolVersion
required
客户端支持的最新协议版本。

InitializeResponse

Response to the initialize 包含协商的协议版本和代理能力。 查看协议文档:Initialization Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
agentCapabilities
代理支持的能力。
  • Default: {"loadSession":false,"mcpCapabilities":{"http":false,"sse":false},"promptCapabilities":{"audio":false,"embeddedContext":false,"image":false},"sessionCapabilities":{}}
agentInfo
发送给客户端的代理名称和版本信息。Note: in future versions of the protocol, this will be required.
authMethods
代理支持的认证方法。
  • Default: []
protocolVersion
required
如果代理支持,则为客户端指定的协议版本, 或代理支持的最新协议版本。如果客户端不支持此版本,应断开连接。

session/cancel

取消会话的正在进行操作。 这是客户端发送的通知,用于取消正在进行的提示轮次。 收到此通知后,代理应该:
  • 尽快停止所有语言模型请求
  • 中止所有正在进行的工具调用
  • 发送所有待处理的 session/update 通知
  • 使用 StopReason::Cancelled 响应原始的 session/prompt 请求
查看协议文档:Cancellation

CancelNotification

取消会话正在进行操作的通知。 查看协议文档:Cancellation Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
sessionId
required
要取消操作的会话ID。

session/load

加载现有会话以恢复之前的对话。 此方法仅在代理声明了 loadSession 能力时可用。 代理应该:
  • 恢复会话上下文和对话历史
  • 连接到指定的MCP服务器
  • 通过通知将整个对话历史流式传输回客户端
查看协议文档:Loading Sessions

LoadSessionRequest

加载现有会话的请求参数。 仅在代理支持 loadSession 能力时可用。 查看协议文档:Loading Sessions Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
cwd
string
required
此会话的工作目录。
mcpServers
required
此会话要连接的MCP服务器列表。
sessionId
required
要加载的会话ID。

LoadSessionResponse

加载现有会话的响应。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
modes
如果代理支持,则为初始模式状态查看协议文档:Session Modes

session/new

与代理创建新的对话会话。 会话表示具有自己历史和状态的独立对话上下文。 代理应该:
  • 创建新的会话上下文
  • 连接到任何指定的MCP服务器
  • 返回唯一的会话ID用于后续请求
如果代理需要身份验证,可能会返回 auth_required 错误。 查看协议文档:Session Setup

NewSessionRequest

创建新会话的请求参数。 查看协议文档:Creating a Session Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
cwd
string
required
此会话的工作目录。 Must be an absolute path.
mcpServers
required
代理应连接的MCP(Model Context Protocol)服务器列表。

NewSessionResponse

创建新会话的响应。 查看协议文档:Creating a Session Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
modes
如果代理支持,则为初始模式状态查看协议文档:Session Modes
sessionId
required
创建会话的唯一标识符。用于此对话的所有后续请求。

session/prompt

在会话中处理用户提示。 此方法处理提示的整个生命周期:
  • 接收用户消息及可选的上下文(文件、图像等)
  • 使用语言模型处理提示
  • 向客户端报告语言模型内容和工具调用
  • 请求运行工具的权限
  • 执行任何请求的工具调用
  • 当轮次完成时返回停止原因
查看协议文档:Prompt Turn

PromptRequest

向代理发送用户提示的请求参数。 包含用户的消息和任何附加上下文。 查看协议文档:User Message Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
prompt
required
组成用户消息的内容块。作为基线,代理必须支持 ContentBlock::TextContentBlock::ResourceLink, 而其他变体可以通过 PromptCapabilities 可选启用。客户端必须根据 PromptCapabilities 调整其界面。客户端可以选择包含引用的上下文片段为 ContentBlock::ResourceContentBlock::ResourceLink当可用时,首选 ContentBlock::Resource 因为它避免了额外的往返,并允许消息包含 来自代理可能无法访问的源的上下文片段。
sessionId
required
发送此用户消息的会话ID

PromptResponse

处理用户提示的响应。 查看协议文档:Check for Completion Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
stopReason
required
指示代理停止处理轮次的原因。

session/set_mode

设置会话的当前模式。 允许在不同的代理模式之间切换(例如,“ask”、“architect”、“code”) 这些模式会影响系统提示、工具可用性和权限行为。 该模式必须是会话创建或加载期间在 availableModes 中声明的模式之一 。代理也可以自主更改模式并通过 current_mode_update 通知通知客户端。 此方法可以在会话期间的任何时候调用,无论代理是 空闲还是正在主动生成响应。 查看协议文档:Session Modes

SetSessionModeRequest

设置会话模式的请求参数。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
modeId
required
要设置的模式ID。
sessionId
required
要设置模式的会话ID。

SetSessionModeResponse

session/set_mode 方法的响应。 Type: Object Properties:
_meta
object | null

Client

定义符合ACP的客户端必须实现的接口。 客户端通常是代码编辑器(IDE、文本编辑器),提供 用户和AI代理之间的接口。它们管理环境、处理用户交互, 并控制对资源的访问。

fs/read_text_file

从客户端文件系统中的文本文件读取内容。 仅在客户端声明了 fs.readTextFile 能力时可用。 允许代理访问客户端环境中的文件内容。 查看协议文档:Client

ReadTextFileRequest

从文本文件读取内容的请求。 仅在客户端支持 fs.readTextFile 能力时可用。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
limit
integer | null
要读取的最大行数。
  • Minimum: 0
line
integer | null
开始读取的行号(从1开始)。
  • Minimum: 0
path
string
required
要读取文件的绝对路径。
sessionId
required
此请求的会话ID。

ReadTextFileResponse

包含文本文件内容的响应。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
content
string
required

fs/write_text_file

将内容写入客户端文件系统中的文本文件。 仅在客户端声明了 fs.writeTextFile 能力时可用。 允许代理在客户端环境中创建或修改文件。 查看协议文档:Client

WriteTextFileRequest

将内容写入文本文件的请求。 仅在客户端支持 fs.writeTextFile 能力时可用。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
content
string
required
要写入文件的文本内容。
path
string
required
要写入文件的绝对路径。
sessionId
required
此请求的会话ID。

WriteTextFileResponse

fs/write_text_file 的响应 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility

session/request_permission

请求用户对工具调用操作的权限。 当代理在执行可能敏感的操作之前需要用户授权时调用。 客户端应向用户展示选项 并返回他们的决定。 如果客户端通过 session/cancel 取消提示轮次,它必须 使用 RequestPermissionOutcome::Cancelled 响应此请求。 查看协议文档:Requesting Permission

RequestPermissionRequest

执行工具调用的用户权限请求。 当代理在执行敏感操作之前需要授权时发送。 查看协议文档:Requesting Permission Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
options
required
用户可选择的可用权限选项。
sessionId
required
此请求的会话ID。
toolCall
required
需要权限的工具调用的详细信息。

RequestPermissionResponse

权限请求的响应。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
outcome
required
用户对权限请求的决定。

session/update

处理来自代理的会话更新通知。 这是一个通知端点(不需要响应),接收 关于会话进度的实时更新,包括消息块、 工具调用和执行计划。 注意:客户端应在发送 session/cancel 通知后继续接受工具调用更新, 因为代理可能会在以取消的停止原因响应之前发送最终 更新。 查看协议文档:Agent Reports Output

SessionNotification

包含代理会话更新的通知。 用于在提示处理期间流式传输实时进度和结果。 查看协议文档:Agent Reports Output Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
sessionId
required
此更新相关的会话ID。
update
required
实际的更新内容。

terminal/create

在新终端中执行命令 仅在 terminal 客户端能力设置为 true 时可用。 返回一个 TerminalId,可用于其他终端方法 以获取当前输出、等待退出和终止命令。 TerminalId 也可以用于通过 ToolCallContent::Terminal 变体 在工具调用中嵌入终端。 代理负责使用 terminal/release 方法释放终端。 查看协议文档:Terminals

CreateTerminalRequest

创建新终端并执行命令的请求。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
args
命令参数数组。
command
string
required
要执行的命令。
cwd
string | null
命令的工作目录(绝对路径)。
env
命令的环境变量。
outputByteLimit
integer | null
要保留的最大输出字节数。当超出限制时,客户端从输出开头进行截断,以保持在限制范围内。客户端必须确保截断发生在字符边界,以保证输出字符串有效,即使这意味着保留的内容略少于指定限制。
  • Minimum: 0
sessionId
required
此请求的会话ID。

CreateTerminalResponse

包含创建的终端ID的响应。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
terminalId
string
required
创建的终端的唯一标识符。

terminal/kill

终止终端命令而不释放终端 虽然 terminal/release 也会终止命令,但此方法将保持 TerminalId 有效,以便可以与其他方法一起使用。 此方法在实现命令超时时很有用,它会立即终止命令, 然后获取最终输出以便发送给模型。 注意:当不再需要 TerminalId 时,使用 terminal/release 查看协议文档:Terminals

KillTerminalCommandRequest

终止终端命令而不释放终端的请求。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
sessionId
required
此请求的会话ID。
terminalId
string
required
要终止的终端ID。

KillTerminalCommandResponse

对terminal/kill命令方法的响应 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility

terminal/output

获取终端输出和退出状态 返回终端中的当前内容而不等待命令退出。 如果命令已退出,则包含退出状态。 查看协议文档:Terminals

TerminalOutputRequest

获取终端当前输出和状态的请求。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
sessionId
required
此请求的会话ID。
terminalId
string
required
要获取输出的终端ID。

TerminalOutputResponse

包含终端输出和退出状态的响应。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
exitStatus
命令完成时的退出状态。
output
string
required
到目前为止捕获的终端输出。
truncated
boolean
required
输出是否因字节限制而被截断。

terminal/release

释放终端 如果命令尚未退出,则将其终止。使用 terminal/wait_for_exit 在释放终端之前等待命令退出。 释放后,TerminalId不能再与其他 terminal/* 方法一起使用, 但已经包含它的工具调用将继续显示其输出。 terminal/kill方法可用于终止命令而不释放终端, 从而允许代理调用 terminal/output 和其他方法。 查看协议文档:Terminals

ReleaseTerminalRequest

请求释放终端并释放其资源。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
sessionId
required
此请求的会话ID。
terminalId
string
required
要释放的终端ID。

ReleaseTerminalResponse

对 terminal/release 方法的响应。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility

terminal/wait_for_exit

等待终端命令退出并返回其退出状态 查看协议文档:Terminals

WaitForTerminalExitRequest

等待终端命令退出的请求。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
sessionId
required
此请求的会话ID。
terminalId
string
required
要等待的终端ID。

WaitForTerminalExitResponse

包含终端命令退出状态的响应。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
exitCode
integer | null
进程退出代码(如果被信号终止可能为null)。
  • Minimum: 0
signal
string | null
终止进程的信号(如果正常退出可能为null)。

AgentCapabilities

代理支持的能力。 在初始化期间广播,以告知客户端可用的功能和内容类型。 查看协议文档:Agent Capabilities Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
loadSession
boolean
代理是否支持 session/load。
  • Default: false
mcpCapabilities
代理支持的MCP能力。
  • Default: {"http":false,"sse":false}
promptCapabilities
代理支持的提示能力。
  • Default: {"audio":false,"embeddedContext":false,"image":false}
sessionCapabilities
  • Default: {}

Annotations

客户端的可选注释。客户端可以使用注释来告知对象如何使用或显示。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
audience
lastModified
string | null
priority
number | null

AudioContent

提供给或来自 LLM 的音频。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
annotations
data
string
required
mimeType
string
required

AuthMethod

描述可用的认证方法。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
description
string | null
可选描述,提供关于此认证方法的更多详细信息。
id
string
required
此认证方法的唯一标识符。
name
string
required
认证方法的人类可读名称。

AvailableCommand

命令的信息。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
description
string
required
命令功能的人类可读描述。
input
命令的输入(如需要)
name
string
required
命令名称(例如create_plan、research_codebase)。

AvailableCommandInput

命令的输入规范。 Type: Union
unstructured
命令名称后输入的所有文本都作为输入提供。

AvailableCommandsUpdate

可用命令已准备就绪或已更改 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
availableCommands
required
代理可以执行的命令

BlobResourceContents

二进制资源内容。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
blob
string
required
mimeType
string | null
uri
string
required

ClientCapabilities

客户端支持的能力。 在初始化期间广告,以告知代理可用的功能和方法。 查看协议文档:Client Capabilities Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
fs
客户端支持的文件系统能力。决定代理可以请求哪些文件操作。
  • Default: {"readTextFile":false,"writeTextFile":false}
terminal
boolean
客户端是否支持所有 terminal/* 方法。
  • Default: false

Content

标准内容块(文本、图像、资源)。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
content
required
实际的内容块。

ContentBlock

内容块用于在代理客户端协议中表示可展示的信息。 它们为处理各种面向用户的内容类型提供了结构化方式——无论是来自语言模型的文本、用于分析的图片,还是用于上下文的嵌入式资源。 内容块出现在以下场景:
  • 通过 session/prompt 发送的用户提示
  • 通过 session/update 通知流式传输的语言模型输出
  • 工具调用的进度更新和结果
该结构与模型上下文协议(MCP)兼容,使代理能够无需转换即可无缝转发来自 MCP 工具输出的内容。 查看协议文档:Content Type: Union
text
object
文本内容。可以是纯文本或Markdown格式。所有代理必须在提示中支持文本内容块。 客户端应以 Markdown 格式渲染此文本。
image
object
用于视觉上下文或分析的图像。在提示中包含时需要 image 提示能力。
audio
object
用于转录或分析的音频数据。在提示中包含时需要 audio 提示能力。
代理可以访问的资源的引用。所有代理必须在提示中支持资源链接。
resource
object
直接嵌入消息中的完整资源内容。首选用于包含上下文,因为它避免了额外的往返。在提示中包含时需要 embeddedContext 提示能力。

ContentChunk

流式内容项 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
content
required
单个内容项

CurrentModeUpdate

会话的当前模式已更改 查看协议文档:Session Modes Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
currentModeId
required
当前模式的ID

Diff

表示文件修改的差异。 以适合客户端UI显示的格式显示文件的更改。 查看协议文档:Content Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
newText
string
required
修改后的新内容。
oldText
string | null
原始内容(新文件为None)。
path
string
required
正在修改的文件路径。

EmbeddedResource

资源的内容,嵌入到提示或工具调用结果中。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
annotations
resource
required

EmbeddedResourceResource

可以嵌入到消息中的资源内容。 Type: Union
TextResourceContents
BlobResourceContents

EnvVariable

启动MCP服务器时设置的环境变量。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
name
string
required
环境变量名称。
value
string
required
环境变量的值。

Error

JSON-RPC错误对象。 表示方法执行期间发生的错误,遵循 JSON-RPC 2.0 错误对象规范,并带有可选的附加数据。 查看协议文档:JSON-RPC Error Object Type: Object Properties:
code
required
表示发生的错误类型的数字。该值必须是 JSON-RPC 规范中定义的整数。
data
object
可选的原始值或结构化值,包含有关错误的附加信息。可包括调试信息或上下文相关的细节。
message
string
required
提供错误简短描述的字符串。消息应限制为一句简洁的话。

ErrorCode

常见JSON-RPC和ACP特定错误的预定义错误代码。 这些代码遵循JSON-RPC 2.0规范中标准错误的定义 并使用保留范围(-32000到-32099)表示协议特定错误。 Type: Union
-32700
int32
解析错误:服务器收到无效 JSON。在服务器解析 JSON 文本时发生错误。
-32600
int32
无效请求:发送的JSON不是有效的请求对象。
-32601
int32
方法未找到:方法不存在或不可用。
-32602
int32
无效参数:无效的方法参数。
-32603
int32
内部错误:内部 JSON-RPC 错误。保留用于实现定义的服务器错误。
-32000
int32
内部错误:内部 JSON-RPC 错误。保留用于实现定义的服务器错误。
-32002
int32
资源未找到:未找到指定资源(如文件)。
Other
int32
其他未定义的错误代码。

ExtNotification

允许代理发送不属于ACP规范的任意通知。 扩展通知提供了一种发送自定义功能单向消息的方式 同时保持协议兼容性。 查看协议文档:Extensibility

ExtRequest

允许发送不属于ACP规范的任意请求。 扩展方法提供了一种添加自定义功能的方式,同时 保持协议兼容性。 查看协议文档:Extensibility

ExtResponse

允许向不属于ACP规范的 ExtRequest 发送任意响应。 扩展方法提供了一种添加自定义功能的方式,同时 保持协议兼容性。 查看协议文档:Extensibility

FileSystemCapability

客户端支持的文件系统能力。 查看协议文档:FileSystem Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
readTextFile
boolean
客户端是否支持 fs/read_text_file 请求。
  • Default: false
writeTextFile
boolean
客户端是否支持 fs/write_text_file 请求。
  • Default: false

HttpHeader

向MCP服务器发出请求时要设置的HTTP头。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
name
string
required
HTTP头名称。
value
string
required
HTTP头的值。

ImageContent

提供给LLM或从LLM获取的图像。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
annotations
data
string
required
mimeType
string
required
uri
string | null

Implementation

关于客户端或代理实现的信息。 描述MCP实现的名称和版本,可选 带有UI表示的标题。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
name
string
required
供编程或逻辑使用;若未提供 title,也可作为显示名称的备选。
title
string | null
面向 UI 和最终用户场景——专为人类可读、易于理解而优化。如果未提供,名称应用于显示。
version
string
required
实现版本号。可展示给用户,或用于调试、指标统计等目的(例如 “1.0.0”)。

McpCapabilities

代理支持的MCP能力 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
http
boolean
代理支持 McpServer::Http。
  • Default: false
sse
boolean
代理支持 McpServer::Sse。
  • Default: false

McpServer

连接到MCP(模型上下文协议)服务器的配置。 MCP服务器提供代理在处理提示时可以使用的 工具和上下文。 查看协议文档:MCP Servers Type: Union
http
object
HTTP传输配置仅在代理能力指示 mcp_capabilities.httptrue 时可用。
sse
object
SSE传输配置仅在代理能力指示 mcp_capabilities.ssetrue 时可用。
stdio
Stdio传输配置所有代理必须支持此传输。

McpServerHttp

HTTP传输配置 for MCP. Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
headers
required
向MCP服务器发出请求时要设置的HTTP头。
name
string
required
标识此MCP服务器的人类可读名称。
url
string
required
MCP服务器的URL。

McpServerSse

SSE传输配置 for MCP. Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
headers
required
向MCP服务器发出请求时要设置的HTTP头。
name
string
required
标识此MCP服务器的人类可读名称。
url
string
required
MCP服务器的URL。

McpServerStdio

Stdio传输配置 for MCP. Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
args
required
传递给MCP服务器的命令行参数。
command
string
required
MCP服务器可执行文件的路径。
env
required
启动MCP服务器时设置的环境变量。
name
string
required
标识此MCP服务器的人类可读名称。

PermissionOption

请求权限时向用户展示的选项。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
kind
required
关于此权限选项性质的提示。
name
string
required
向用户显示的人类可读标签。
optionId
required
此权限选项的唯一标识符。

PermissionOptionId

权限选项的唯一标识符。 Type: string

PermissionOptionKind

呈现给用户的权限选项类型。 帮助客户端选择适当的图标和UI处理方式。 Type: Union
allow_once
string
仅此次允许此操作。
allow_always
string
允许此操作并记住选择。
reject_once
string
仅此次拒绝此操作。
reject_always
string
拒绝此操作并记住选择。

Plan

完成复杂任务的执行计划。 计划由多个表示单个任务或目标的条目组成。 Agents report plans to clients to provide visibility into their execution strategy. Plans can evolve during execution as the agent discovers new requirements or completes tasks. 查看协议文档:Agent Plan Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
entries
required
要完成的任务列表。更新计划时,代理必须发送所有条目的完整列表 with their current status. 客户端在每次更新时替换整个计划。

PlanEntry

执行计划中的单个条目。 代表助手为完成用户请求而计划达成的一项任务或目标。 查看协议文档:Plan Entries Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
content
string
required
此任务旨在完成的人类可读描述。
priority
required
此任务的相对重要性。 Used to indicate which tasks are most critical to the overall goal.
status
required
此任务的当前执行状态。

PlanEntryPriority

计划条目的优先级级别。 Used to indicate the relative importance or urgency of different tasks in the execution plan. 查看协议文档:Plan Entries Type: Union
high
string
高优先级任务——对整体目标至关重要。
medium
string
中优先级任务——重要但非关键。
low
string
低优先级任务——锦上添花但非必需。

PlanEntryStatus

执行流程中计划条目的状态。 跟踪每个任务从规划到完成的生命周期。 查看协议文档:Plan Entries Type: Union
pending
string
任务尚未开始。
in_progress
string
任务当前正在处理中。
completed
string
任务已成功完成。

PromptCapabilities

代理在 session/prompt 请求中支持的提示能力。 主代理功能要求在提示请求中支持 ContentBlock::TextContentBlock::ResourceLink 其他变体必须明确选择加入。 提示请求中不同类型内容的能力。 指示代理除基线(文本与资源链接)外还能处理哪些内容类型。 查看协议文档:Prompt Capabilities Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
audio
boolean
代理支持 ContentBlock::Audio。
  • Default: false
embeddedContext
boolean
代理支持在 session/prompt 请求中嵌入上下文。When enabled, the Client is allowed to include ContentBlock::Resource in prompt requests for pieces of context that are referenced in the message.
  • Default: false
image
boolean
代理支持 ContentBlock::Image。
  • Default: false

ProtocolVersion

协议版本标识符。 此版本仅在重大更改时才会更新。 非重大更改应通过能力引入。 Type: integer (uint16)
ConstraintValue
Minimum0
Maximum65535

RequestId

JSON RPC请求ID 由客户端建立的标识符,如果包含必须包含字符串、数字或NULL值。 如果不包含,则假定为通知。 该值通常不应为Null [1] 数字不应包含小数部分 [2] 如果包含,服务器必须在响应对象中以相同的值回复。 此成员用于关联两个对象之间的上下文。 [1] 不建议在请求对象中将Null用作id成员的值, 因为此规范对未知id的响应使用Null值。 另外,由于JSON-RPC 1.0对通知使用Null作为id值,这可能导致处理时混淆。 [2] 小数部分可能有问题,因为许多十进制小数无法精确表示为二进制小数。 Type: Union

RequestPermissionOutcome

权限请求的结果。 Type: Union
cancelled
object
在用户响应之前提示轮次已被取消。当客户端发送 session/cancel 通知取消正在进行的 提示轮次时,它必须响应所有待处理的 session/request_permission 请求,并使用此 Cancelled 结果。查看协议文档:Cancellation
selected
object
用户选择了提供的选项之一。
服务器能够读取的资源,包含在提示或工具调用结果中。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
annotations
description
string | null
mimeType
string | null
name
string
required
size
integer | null
title
string | null
uri
string
required

Role

对话中消息和数据的发送者或接收者。 Type: Enumeration
Value
"assistant"
"user"

SelectedPermissionOutcome

用户选择了提供的选项之一。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
optionId
required
用户选择的选项的ID。

SessionCapabilities

代理支持的会话能力。 作为基线,所有代理必须支持 session/newsession/promptsession/cancelsession/update 此外,它们可以通过声明额外能力,选择性地支持其他会话方法与通知。 注意:session/load 仍由顶层 load_session 能力处理,未来协议版本将统一这一机制。 查看协议文档:Session Capabilities Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility

SessionId

客户端和代理之间对话会话的唯一标识符。 会话维护自己的上下文、对话历史和状态, 允许与同一个代理进行多次独立交互。 查看协议文档:Session ID Type: string

SessionMode

代理可以操作的模式。 查看协议文档:Session Modes Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
description
string | null
id
required
name
string
required

SessionModeId

会话模式的唯一标识符。 Type: string

SessionModeState

模式集和当前活动的模式。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
availableModes
required
代理可以操作的模式集
currentModeId
required
代理当前的模式。

SessionUpdate

会话处理期间可以发送的不同类型的更新。 这些更新提供关于代理进度的实时反馈。 查看协议文档:Agent Reports Output Type: Union
user_message_chunk
object
正在流式传输的用户消息块。
agent_message_chunk
object
正在流式传输的代理响应块。
agent_thought_chunk
object
正在流式传输的代理内部推理块。
tool_call
object
已启动新工具调用的通知。
tool_call_update
object
工具调用状态或结果的更新。
plan
object
代理完成复杂任务的执行计划。 查看协议文档:Agent Plan
available_commands_update
object
可用命令已准备就绪或已更改
current_mode_update
object
会话的当前模式已更改查看协议文档:Session Modes

StopReason

代理停止处理提示轮次的原因。 查看协议文档:Stop Reasons Type: Union
end_turn
string
轮次成功结束。
max_tokens
string
轮次因代理达到最大token数而结束。
max_turn_requests
string
轮次因代理达到允许的最大代理请求数而结束 在用户轮次之间。
refusal
string
轮次因代理拒绝继续而结束。 用户提示及其后的内容不会被包含在下一个提示中, 因此应在UI中反映这一点。
cancelled
string
轮次被客户端通过 session/cancel 取消。当客户端发送 session/cancel 通知时,必须返回此停止原因, 即使取消导致底层操作出现异常。 代理应该捕获这些异常并返回这个语义上有意义的 响应以确认成功取消。

Terminal

通过ID嵌入使用 terminal/create 创建的终端。 必须在调用 terminal/release 之前添加终端。 查看协议文档:Terminal Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
terminalId
string
required

TerminalExitStatus

终端命令的退出状态。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
exitCode
integer | null
进程退出代码(如果被信号终止可能为null)。
  • Minimum: 0
signal
string | null
终止进程的信号(如果正常退出可能为null)。

TextContent

提供给LLM或从LLM获取的文本。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
annotations
text
string
required

TextResourceContents

基于文本的资源内容。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
mimeType
string | null
text
string
required
uri
string
required

ToolCall

表示语言模型请求的工具调用。 工具调用是代理代表语言模型执行的操作, 如读取文件、执行代码或从外部来源获取数据。 查看协议文档:Tool Calls Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
content
工具调用产生的内容。
kind
被调用工具的类别。 帮助客户端选择适当的图标和UI处理方式。
locations
此工具调用影响的文件位置。 在客户端启用”跟随”功能。
rawInput
object
发送给工具的原始输入参数。
rawOutput
object
工具返回的原始输出。
status
工具调用的当前执行状态。
title
string
required
描述工具正在做什么的人类可读标题。
toolCallId
required
会话中此工具调用的唯一标识符。

ToolCallContent

工具调用产生的内容。 工具调用可以产生不同类型的内容,包括 标准内容块(文本、图像)或文件差异。 查看协议文档:Content Type: Union
content
object
标准内容块(文本、图像、资源)。
diff
object
显示为差异的文件修改。
terminal
object
通过ID嵌入使用 terminal/create 创建的终端。必须在调用 terminal/release 之前添加终端。查看协议文档:Terminal

ToolCallId

会话中工具调用的唯一标识符。 Type: string

ToolCallLocation

被工具访问或修改的文件位置。 使客户端能够实现”跟随”功能,跟踪 代理正在实时处理的文件。 查看协议文档:Following the Agent Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
line
integer | null
文件中的可选行号。
  • Minimum: 0
path
string
required
正在访问或修改的文件路径。

ToolCallStatus

工具调用的执行状态。 工具调用在其生命周期中经历不同的状态。 查看协议文档:Status Type: Union
pending
string
工具调用尚未开始运行,因为输入正在流式传输 或我们正在等待批准。
in_progress
string
工具调用当前正在运行。
completed
string
工具调用成功完成。
failed
string
工具调用失败并出现错误。

ToolCallUpdate

对现有工具调用的更新。 用于在工具执行时报告进度和结果。 All fields except the tool call ID are optional - only changed fields need to be included. 查看协议文档:Updating Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
content
替换内容集合。
kind
更新工具类型。
locations
替换位置集合。
rawInput
object
更新原始输入。
rawOutput
object
更新原始输出。
status
更新执行状态。
title
string | null
更新人类可读标题。
toolCallId
required
被更新的工具调用的ID。

ToolKind

可以调用的工具类别。 工具类别帮助客户端选择适当的图标并优化 显示工具执行进度的方式。 查看协议文档:Creating Type: Union
read
string
读取文件或数据。
edit
string
修改文件或内容。
delete
string
删除文件或数据。
move
string
移动或重命名文件。
搜索信息。
execute
string
运行命令或代码。
think
string
内部推理或规划。
fetch
string
检索外部数据。
switch_mode
string
切换当前会话模式。
other
string
其他工具类型(默认)。

UnstructuredCommandInput

命令名称后输入的所有文本都作为输入提供。 Type: Object Properties:
_meta
object | null
_meta属性由ACP保留,允许客户端和代理在交互中附加额外的元数据。实现不得对这些键的值做出假设。查看协议文档:Extensibility
hint
string
required
当输入尚未提供时显示的提示