{
"schema": 1,
"updated_at": "2026-10-23",
"default_for_experiments": ["codebuddy", "mimo"],
"tiers": {
"verified": "跑通:真的拿到模型正文(message)且 run.completed ok=true;usage 有就落盘,没有要在备注里写明",
"handshake": "握手通:initialize/session/new/session/prompt 都发得出去,被后端自己的凭据或额度挡下",
"unknown": "未核:本机没装 / 没登录,没跑过;不写『应该可以』"
},
"harnesses": [
{
"id": "codebuddy",
"command": "codebuddy --acp",
"status": "verified",
"version": null,
"checked_at": "2026-10-23",
"notes": "initialize 不报版本(正常,不许伪造);用量在 _meta.usage;声明 loadSession 但对不存在的 id 也回放并成功,resume 未验证",
"blocker": null
},
{
"id": "mimo",
"command": "mimo acp",
"status": "verified",
"version": "0.1.15",
"checked_at": "2026-10-23",
"notes": "不给 --model 时默认模型会静默空跑;最后一条正文块晚于 session/prompt 结果;session/load 已验证(回放历史 + 能答上文)",
"blocker": null
},
{
"id": "opencode",
"command": "opencode acp",
"status": "handshake",
"version": "2.1.3",
"checked_at": "2026-10-23",
"notes": "provider 配置已加载(models 里有自定义 provider 的模型),但凭据在 auth store;试过多种字段写法",
"blocker": "网关没收到 Authorization 头(直连带凭据返回 200,不带头返回鉴权错误)"
},
{
"id": "gemini-cli",
"command": "gemini --acp",
"status": "unknown",
"version": null,
"checked_at": null,
"notes": "原生 ACP;本机未安装",
"blocker": null
},
{
"id": "cursor",
"command": "cursor-agent acp",
"status": "unknown",
"version": null,
"checked_at": null,
"notes": "原生 ACP;本机未安装",
"blocker": null
},
{
"id": "copilot",
"command": "npx -y @github/copilot --acp",
"status": "unknown",
"version": null,
"checked_at": null,
"notes": "public preview;本机未安装,未尝试现装",
"blocker": null
},
{
"id": "claude-code",
"command": "npx -y @agentclientprotocol/claude-agent-acp",
"status": "unknown",
"version": null,
"checked_at": null,
"notes": "官方 adapter,底层 Claude Agent SDK;本机未安装",
"blocker": null
},
{
"id": "codex-cli",
"command": "npx -y @agentclientprotocol/codex-acp",
"status": "unknown",
"version": null,
"checked_at": null,
"notes": "官方 adapter;本机未安装",
"blocker": null
}
]
}