主题
ACP Profile
目标
ACP 是 AaaS v1 的一等北向协议档案,用于承载客户端会话、权限请求、文件系统与终端能力协商。
ACP 对外暴露的会话语义必须映射到 canonical AaaS 资源,而不是绕开 Run、InteractionRequest 或平台事件流。
档案声明
- ACP 能力由
AgentRevision.protocolProfiles.acp声明 - 实际 endpoint、transport 和 security 由
ProtocolBinding(protocol=acp)声明 protocolVersion表示 ACP 版本,不等于 AaaS/v1capabilities用于声明是否支持loadSession、sessionList、sessionInfoUpdate、permissions、terminal、fs、mcp- 仍处于草案状态的 ACP 能力
MUST通过extensions声明,MUST NOT作为 AaaS v1 的必选行为
核心映射
| ACP 概念 | AaaS canonical model |
|---|---|
initialize | 对 revision profile 与 ProtocolBinding(acp) 的能力与 transport 协商 |
session/new | CreateRunCommand |
session/load | 既有 Run / Thread 的恢复视图;仅在 loadSession=true 时可用 |
session/prompt | ContinueRunCommand,或在客户端便捷层中折叠为创建新 run |
session/update | 由 run 事件流与读模型投影出来的稳定更新 |
session/cancel | CancelRunCommand |
session/request_permission | InteractionRequest |
fs/* | 受 execution profile 和沙箱策略约束的文件系统能力 |
terminal/* | 受 execution profile 和沙箱策略约束的终端能力 |
session/list | GET /v1/runs 的协议视图;仅在 sessionList=true 时可用 |
session_info_update | run / attempt / session 元数据变更的协议事件;仅在 sessionInfoUpdate=true 时可用 |
会话语义
- ACP adapter
MUST为映射到同一runId/threadId的会话提供稳定句柄 - canonical 写入与读取身份仍以
runId为准 - ACP 会话的历史、状态与恢复
MUST来源于平台事件流、消息投影、interaction 投影和 checkpoint,而不是 adapter 私有内存 - 当
loadSession为false时,adapterMUST NOT伪造恢复能力
权限与输入
- ACP 中需要用户确认、授权、补充参数或确认继续执行的场景,
MUST映射到InteractionRequest session/request_permission产生的等待态MUST反映为 run 的blockingInteractionId与blockedReason- 权限结果
MUST通过 respond interaction 的标准写路径回到平台 - adapter
MUST NOT直接在协议边界内吞掉权限决策而不留下平台审计事实
文件系统、终端与 MCP
fs/*与terminal/*只在底层 execution profile 实际支持时才可宣告为可用- ACP adapter
MUST将文件与终端访问约束到 run / session 的安全边界内 - 如 ACP profile 同时宣告
mcp能力,MCP server 目录MUST来源于AgentRevision.mcpServerRefs[]解析得到的McpServerRevision,其 tool catalog 则来源于该 revision 的toolCatalog[]与可选Tool引用 - ACP transport 只是暴露方式;工具调用产生的结果如进入 run 输出流,仍
MUST转换为标准 tool call / result 事件
v1 原生范围
AaaS v1 将以下 ACP 能力视为原生对齐范围:
initializesession/newsession/loadsession/promptsession/updatesession/cancelsession/request_permissionfs/*terminal/*- 可选已完成能力:
session/list、session_info_update
以下能力不属于 AaaS v1 必选范围,若实现需要支持,必须放入 extensions:
- 仍处于草案阶段的
session/resume - draft elicitation / draft close / delete 等实验性会话语义
- 任何会改变 canonical run / interaction 语义的私有暂停模型
兼容要求
- ACP adapter
MUST NOT引入独立于 AaaS 的 session 状态机真源 - ACP 中的取消、权限、恢复、列表能力
MUST与 canonical run 事实保持一致 - ACP
protocolVersion可单独演进,但不得改变 AaaS v1 资源模型字段语义