AcpAgent 클래스
그만큼AcpAgent클래스는 ACP(Agent 클라이언트 프로토콜) 호환 코딩 Agent를 Mastra 하위 Agent로 래핑합니다. 상위 Mastra Agent가 저장소 검사 및 코드 편집을 위임해야 할 때 사용하세요. 또한 다른 ACP 지원 작업을 하위 Agent에 위임할 수도 있습니다.
대신 상위 Agent가 ACP Agent를 Tool로 호출하도록 하려면 다음을 사용하세요.createACPTool().
사용예사용예에 대한 직접 링크
상위 Agent에 ACP 호환 코딩 Agent를 등록합니다.agents map:
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 명령을 구성한 다음, 세션 생성 후 Claude Model을 선택하세요:
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 서버 목록입니다.initialize?:
authMethodId?:
persistSession?:
false로 설정하세요.onPermissionRequest?:
createClient?:
extMethod 및 extNotification 핸들러를 추가할 수 있습니다. 확장 메서드를 참조하세요.workspace?:
cwd 또는 process.cwd()의 LocalFilesystem을 기반으로 하는 Workspace입니다.model?:
session/set_model 메서드를 사용하여 ACP 세션 생성 후 선택할 Model ID입니다.속성속성에 대한 직접 링크
id:
name:
description:
connection:
행동 양식행동 양식에 대한 직접 링크
세대세대에 대한 직접 링크
generate(messages, options?)generatemessages-options에 대한 직접 링크
ACP Agent에 Prompt를 보내고, 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에 Prompt를 보내고 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()은 지원되지 않으며 호출하면 오류가 발생합니다.
Model 관리Model 관리에 대한 직접 링크
getAvailableModels()getavailablemodels에 대한 직접 링크
필요한 경우 ACP 프로세스를 시작하고 ACP 세션에서 광고한 Model 목록을 반환합니다.
const models = await codeAgent.getAvailableModels()
// [{ modelId: 'claude-sonnet-4-6', name: 'Claude Sonnet' }, ...]
setModel(modelId)setmodelmodelid에 대한 직접 링크
활성 ACP 세션에 대한 Model을 선택합니다. ACP Agent가 사용 가능한 Model을 광고하는 경우 Model ID는 해당 Model 중 하나와 일치해야 합니다.
await codeAgent.setModel('claude-sonnet-4-6')
세션 수명주기세션 수명주기에 대한 직접 링크
AcpAgent는 처음 사용할 때 구성된 command를 시작하고 ACP 클라이언트를 초기화합니다. 그런 다음 ACP 세션을 생성합니다. 기본적으로 persistSession은 true이므로 generate(), stream(), getAvailableModels(), setModel() 호출 간에 프로세스와 세션이 유지됩니다.
각 Prompt를 새로운 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를 사용하면 각 Prompt가 완료된 후 @mastra/acp가 ACP 프로세스를 중지합니다.
작업공간 통합작업공간 통합에 대한 직접 링크
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는 계속 진행하기 전에 클라이언트에 권한 옵션을 선택하도록 요청할 수 있습니다. 기본적으로 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,
},
}
},
})
이 콜백을 사용하여 로컬 정책을 시행하거나 권한 제목을 검사하세요. 또한 결정을 자체 승인 흐름으로 라우팅할 수도 있습니다.