- 状态:Draft
- 日期:2026-04-03
这份文档定义 acp-runtime 应如何覆盖 ACP 官方协议中的能力,并规定 harness 如何记录每个 agent 的协议兼容结果。
这里的目标不是要求 runtime 在第一阶段把所有 optional 特性都实现完,而是要求:
- ACP 协议能力全部进入覆盖模型
- 每个 agent 的宣告能力都必须有测试结果
- 每一项结果都必须有 transcript 证据
矩阵中每一项能力都应落在以下状态之一:
PASSFAILN/AMISSING
含义:
PASS:agent 宣告支持,且 harness 测试通过FAIL:agent 宣告支持,但 harness 测试失败N/A:agent 未宣告该 capability,或该能力不适用于当前 agentMISSING:agent 宣告支持,但当前还没有对应测试或本次未执行
- 协议能力全部进入 matrix
- baseline 能力必须进入首批实现与首批测试
- optional 能力如果 agent 宣告支持,则必须执行对应测试
- extension 能力允许单独记录,但不能伪装成标准协议能力
矩阵中的每项能力都应同时标注:
- 协议层级:
baseline/optional/extension - runtime 实现状态:
planned/partial/implemented - harness 状态:
has-case/missing-case
下表用于定义标准覆盖范围。
| 能力组 | 方法 / 能力 | 协议层级 | 说明 | harness 要求 |
|---|---|---|---|---|
| 初始化 | initialize |
baseline | 建立能力协商入口 | 必测 |
| 认证 | authenticate |
optional | 仅当 agent 触发认证流时测试 | 按需 |
| Session | session/new |
baseline | 创建会话 | 必测 |
| Session | session/load |
optional | 恢复并回放历史 | agent 宣告支持即必测 |
| Session | session/list |
optional | 列出可装载 session | agent 宣告支持即必测 |
| Prompt | session/prompt |
baseline | 发起 turn | 必测 |
| Prompt | session/update |
baseline | turn 事件流与消息更新 | 必测 |
| Prompt | session/cancel |
baseline | 取消 active turn | 必测 |
| Mode | session/set_mode |
optional | 切换 mode | agent 宣告支持即必测 |
| Mode | current_mode_update |
optional | agent 主动更新当前 mode | agent 宣告支持即必测 |
| Config | session/set_config_option |
optional | 设置配置项 | agent 宣告支持即必测 |
| Config | config_option_update |
optional | agent 主动更新配置状态 | agent 宣告支持即必测 |
| Permission | session/request_permission |
optional | 请求宿主权限决策 | agent 使用 client authority 时必测 |
| FS | fs/read_text_file |
optional | 读取文件 | 若 agent 使用该能力则必测 |
| FS | fs/write_text_file |
optional | 写入文件 | 若 agent 使用该能力则必测 |
| Terminal | terminal/create |
optional | 创建 terminal | 若 terminal capability 存在则必测 |
| Terminal | terminal/output |
optional | 获取输出 | 若 terminal capability 存在则必测 |
| Terminal | terminal/wait_for_exit |
optional | 等待退出 | 若 terminal capability 存在则必测 |
| Terminal | terminal/kill |
optional | 杀死进程 | 若 terminal capability 存在则必测 |
| Terminal | terminal/release |
optional | 释放 terminal 资源 | 若 terminal capability 存在则必测 |
| Tool Calls | tool_call / tool_call_update |
baseline | 通过 session/update 上报工具调用状态 |
必测 |
| Extensibility | _meta |
baseline | 附加元数据透传 | 必测兼容 |
| Extensibility | 自定义 _ 前缀方法 |
extension | 私有扩展 | 记录即可 |
每个协议能力测试,至少需要在输出中包含:
- 是否执行
- 是否通过
- 关联的 transcript 片段
- 若失败,失败阶段
- 若为
N/A,为什么是N/A
建议写入 summary.json 的字段:
{
"protocolCoverage": {
"session/load": {
"status": "PASS",
"advertised": true,
"caseId": "protocol.session-load",
"notes": []
}
}
}协议覆盖结论必须能回溯到 transcript。
例如:
initialize的 request / responsesession/new的 request / responsesession/update的通知序列session/request_permission的请求与 decisionterminal/*的调用序列
如果某项能力没有 transcript 证据,不应标为 PASS。
这份矩阵不是“当前必须全部实现完的功能列表”,而是:
- runtime 设计边界的完整协议地图
- harness 必须知道的完整覆盖面
- 新 agent 接入时必须对照的兼容清单
因此:
- 可以有
planned - 可以有
partial - 但不能没有矩阵位置
acp-runtime 后续应把 ACP 官方协议中我们可能涉及的能力全部纳入 coverage matrix。
是否在 v1 首批实现,不由这份矩阵决定; 但是否被纳入测试与接入门禁,由这份矩阵决定。