Vercel AI SDK 发布 @ai-sdk/harness-acp 元适配器,支持任何实现 ACP 协议的开发框架接入 AI SDK harness 层,但官方仍建议 Claude Code/Codex 使用直适配器以获得更紧密集成。
AI SDK 的 harness 层现已支持任何兼容 Agent Client Protocol(ACP)的 harness,方式是新增的 @ai-sdk/harness-acp 包。
此前,每种 harness 适配器都只封装某一个特定的运行时(Claude Code、Codex、Pi、Deep Agents、OpenCode)。@ai-sdk/harness-acp 则封装的是协议层本身——它是一个元适配器:与其只适配某一个 harness,不如让你为任何自带 ACP 兼容包的 harness 构建适配器。
实现一个 harness,只需将对应包传入 createACP 并配置基本的 harness 映射即可:
1import { createACP } from '@ai-sdk/harness-acp';
2
3export function createCodexACP() {
4 return createACP({
5 harnessId: 'codex-acp',
6 source: {
7 type: 'npm-simple',
8 packageName: '@agentclientprotocol/codex-acp',
9 },
10 executable: 'codex-acp',
11 forwardEnv: ['CODEX_API_KEY', 'OPENAI_API_KEY'],
12 permissionModeMapping: {
13 'allow-reads': null,
14 'allow-edits': null,
15 'allow-all': { type: 'session-mode', modeId: 'agent-full-access' },
16 },
17 authentication: {
18 methodId: 'api-key',
19 },
20 });
21}
基于 ACP 元 harness 的 Codex 基本实现示例
然后像使用其他 harness 一样将其传给 HarnessAgent:
1import { HarnessAgent } from '@ai-sdk/harness/agent';
2import { createCodexACP } from './codex-acp-harness';
3
4const agent = new HarnessAgent({
5 harness: createCodexACP(),
6});
使用上述 Codex ACP harness 的基本示例
ACP 是对 coding harness 的抽象,但 AI SDK 的 harness 层刻意与其保持解耦。并非所有 harness 都支持 ACP,对某些 harness 来说 ACP 会限制或改变它们暴露内部行为的方式,因此直接适配器反而能实现更紧密的集成。
对于 Claude Code 和 Codex,建议优先使用直接的 @ai-sdk/harness-claude-code 和 @ai-sdk/harness-codex 适配器,而非基于 ACP 的实现;当某个 harness 没有直接适配器,但又提供了 ACP 兼容包时,才选用 @ai-sdk/harness-acp。
阅读 ACP harness 文档以开始使用。