AcpAgent 类
AcpAgent 类将兼容 Agent Client Protocol(ACP)的编码 Agent 封装为 Mastra 子 Agent。当父级 Mastra Agent 需要委派代码仓库检查和代码编辑任务时,可以使用此类。它也可以将其他由 ACP 支持的任务委派给子 Agent。
如果希望父级 Agent 改为将 ACP Agent 作为 Tool 调用,请使用 createACPTool()。
使用示例使用示例的直接链接
在父级 Agent 的 agents 映射中注册兼容 ACP 的编码 Agent:
import { AcpAgent } from '@mastra/acp'
import { Agent } from '@mastra/core/agent'
const codeAgent = new AcpAgent({
id: 'code-agent',
name: 'Code Agent',
description: 'An ACP-compatible coding agent that can inspect and edit files',
command: 'acp-agent',
args: ['--stdio'],
cwd: process.cwd(),
})
export const codeSupervisor = new Agent({
id: 'code-supervisor',
name: 'Code Supervisor',
instructions: 'Delegate code editing tasks to the code-agent subagent.',
model: 'openai/gpt-5.6-sol',
agents: {
codeAgent,
},
})
对于 Claude Code,ACP 支持由 @agentclientprotocol/claude-agent-acp 桥接包提供。将 ACP Agent 命令配置为运行该桥接程序,然后在创建 Session 后选择 Claude 模型:
import { AcpAgent } from '@mastra/acp'
export const claudeCodeAgent = new AcpAgent({
id: 'claude-code-agent',
name: 'Claude Code Agent',
description: 'Use Claude Code through ACP.',
command: 'npx',
args: ['@agentclientprotocol/claude-agent-acp'],
cwd: process.cwd(),
model: 'claude-sonnet-4-6',
})
构造函数参数构造函数参数的直接链接
id:
name?:
id。description:
command:
args?:
env?:
cwd?:
session?:
cwd 或 process.cwd(),MCP server 列表默认为空。initialize?:
authMethodId?:
persistSession?:
false 可在每次提示词处理完成后停止进程。onPermissionRequest?:
createClient?:
extMethod 和 extNotification handler。请参阅扩展方法。workspace?:
cwd 或 process.cwd() 路径下的 LocalFilesystem 支持的 Workspace。model?:
session/set_model 方法选择的模型 ID。属性属性的直接链接
id:
name:
description:
connection:
方法方法的直接链接
生成生成的直接链接
generate(messages, options?)generatemessages-options的直接链接
将提示词发送给 ACP Agent,缓冲 ACP 响应中的文本块,并返回 Mastra 子 Agent 的生成结果。
const result = await codeAgent.generate('Inspect the repository and summarize the test setup')
console.log(result.text)
stream(messages, options?)streammessages-options的直接链接
将提示词发送给 ACP Agent,并返回 Mastra 子 Agent 的流式结果。ACP agent_message_chunk 更新会作为 Mastra text-delta 块发出。
const result = await codeAgent.stream('Refactor the selected module and explain each change')
for await (const chunk of result.fullStream) {
if (chunk.type === 'text-delta') {
process.stdout.write(chunk.payload.text)
}
}
不支持 resumeGenerate() 和 resumeStream(),调用时会抛出错误。
模型管理模型管理的直接链接
getAvailableModels()getavailablemodels的直接链接
如有需要,启动 ACP 进程,并返回 ACP Session 公布的模型列表。
const models = await codeAgent.getAvailableModels()
// [{ modelId: 'claude-sonnet-4-6', name: 'Claude Sonnet' }, ...]
setModel(modelId)setmodelmodelid的直接链接
为活动 ACP Session 选择模型。如果 ACP Agent 公布了可用模型,则模型 ID 必须与其中一个模型匹配。
await codeAgent.setModel('claude-sonnet-4-6')
Session 生命周期Session 生命周期的直接链接
AcpAgent 在首次使用时启动已配置的 command,并初始化 ACP Client。然后它会创建 ACP Session。默认情况下,persistSession 为 true,因此在调用 generate()、stream()、getAvailableModels() 和 setModel() 期间,进程和 Session 会保持运行。
如果每个提示词都应在新的 ACP 进程中运行,请设置 persistSession: false:
import { AcpAgent } from '@mastra/acp'
export const codeAgent = new AcpAgent({
id: 'code-agent',
description: 'Run one isolated ACP coding task',
command: 'acp-agent',
args: ['--stdio'],
cwd: process.cwd(),
persistSession: false,
})
当 persistSession: false 时,@mastra/acp 会在每个提示词处理完成后停止 ACP 进程。
Workspace 集成Workspace 集成的直接链接
ACP 文件操作通过 Mastra 的 Workspace 抽象执行。如果未传入 workspace,@mastra/acp 会创建一个由 LocalFilesystem 支持的 Workspace,并使用 cwd 或 process.cwd() 作为文件系统基础路径。
如果 ACP Agent 应通过特定文件系统实现进行读写,请传入自定义 Workspace:
import { AcpAgent } from '@mastra/acp'
import { LocalFilesystem, Workspace } from '@mastra/core/workspace'
const workspace = new Workspace({
filesystem: new LocalFilesystem({
basePath: process.cwd(),
}),
})
export const codeAgent = new AcpAgent({
id: 'code-agent',
description: 'Run coding tasks in a controlled workspace',
command: 'acp-agent',
args: ['--stdio'],
workspace,
})
当 ACP 进程应在一个目录中启动,但文件操作应使用显式配置的 Workspace 根目录时,请同时使用 cwd 和 workspace。
权限处理权限处理的直接链接
ACP Agent 可能会要求 Client 选择一个权限选项,然后才能继续。默认情况下,AcpAgent 会选择 ACP Agent 返回的第一个选项;如果没有可用选项,则取消。
传入 onPermissionRequest 可检查请求并返回自己的权限响应:
import { AcpAgent } from '@mastra/acp'
export const codeAgent = new AcpAgent({
id: 'code-agent',
description: 'Use an ACP-compatible coding agent',
command: 'acp-agent',
args: ['--stdio'],
async onPermissionRequest(request) {
const allowOption = request.options.find(option => option.name === 'Allow')
if (!allowOption) {
return { outcome: { outcome: 'cancelled' } }
}
return {
outcome: {
outcome: 'selected',
optionId: allowOption.optionId,
},
}
},
})
可使用此回调强制执行本地策略或检查权限标题。它也可以将决策转交给你自己的审批流程。