传输层
Agent 与客户端之间通信的机制
ACP 使用 JSON-RPC 编码消息。JSON-RPC 消息必须以 UTF-8 编码。协议目前定义了以下用于 Agent-客户端通信的传输机制:
- stdio,通过标准输入和标准输出进行通信
- Streamable HTTP(草案提案进行中)
Agent 和客户端应当尽可能支持 stdio。
Agent 和客户端也可以实现自定义传输。
stdio
在 stdio 传输中:
- 客户端将 Agent 作为子进程启动。
- Agent 从其标准输入(
stdin)读取 JSON-RPC 消息,并将消息发送到其标准输出(stdout)。 - 消息是独立的 JSON-RPC 请求、通知或响应。
- 消息以换行符(
\n)分隔,且不得包含嵌入的换行符。 - Agent 可以向其标准错误(
stderr)写入 UTF-8 字符串用于日志目的。客户端可以捕获、转发或忽略此日志。 - Agent 不得向其
stdout写入任何非有效 ACP 消息的内容。 - 客户端不得向 Agent 的
stdin写入任何非有效 ACP 消息的内容。
Agent 进程ClientAgent 进程Clientloop[消息交换]启动子进程写入 stdin写入 stdout可选日志到 stderr关闭 stdin,终止子进程
Streamable HTTP
讨论中,草案提案进行中。
自定义传输
Agent 和客户端可以实现额外的自定义传输机制以满足其特定需求。协议是传输无关的,可以在任何支持双向消息交换的通信通道上实现。选择支持自定义传输的实现者必须确保它们保留 ACP 定义的 JSON-RPC 消息格式和生命周期要求。自定义传输应当记录其特定的连接建立和消息交换模式以帮助互操作。