내부 리서치 에이전트 아키텍처
내부 분석·리서치 에이전트를 Workflow, Sandbox, artifact 중심으로 설계하는 방법을 정리합니다.
내부 리서치 에이전트는 고객-facing 챗보다 느려도 되지만, 긴 실행, 반복 재시도, artifact 생성, 소스 추적이 훨씬 중요합니다.
따라서 이 시나리오는 채팅형 UX보다 Workflow 기반의 durable orchestration이 중심이 됩니다.
| 조건 | 적합도 | 이유 |
|---|
| 분석이 수분 이상 걸릴 수 있음 | 높음 | Workflow가 필요 |
| 코드/파일/브라우저 실행이 필요함 | 높음 | Sandbox가 자연스럽게 결합됨 |
| 결과물이 리포트/artifact로 남아야 함 | 높음 | 비동기 결과 전달 구조에 적합 |
| 응답 즉시성이 중요함 | 낮음 | 고객지원 패턴이 더 적합 |
| 계층 | 책임 | 구현 포인트 |
|---|
| Trigger Layer | 분석 요청 접수 | thin UI + task id 반환 |
| Orchestration | 장기 실행, 재시도, 이벤트 기록 | Workflow steps |
| Agent Layer | 계획, 질의 생성, synthesis | AI SDK Agent / loop control |
| Tool Runtime | 파일/코드/스크립트 실행 | Sandbox |
| Delivery Layer | artifact 저장과 알림 | object storage / report link |
| 단계 | 동작 | 핵심 통제 |
|---|
| 1 | 분석 브리프 등록 | operator identity |
| 2 | 데이터 수집 | MCP resources / scoped tools |
| 3 | 모델 추론 | quality tier model |
| 4 | Sandbox 실행 | network allowlist |
| 5 | artifact 생성 | immutable report id |
| 6 | 완료 알림 | workflow trace 연결 |
export async function researchWorkflow(researchId: string) {
'use workflow'
const brief = await loadBrief(researchId)
const draft = await generateDraft(brief)
return runSandboxAnalysis(draft)
}
async function loadBrief(researchId: string) {
'use step'
return loadResearchBrief(researchId)
}
async function generateDraft(brief: ResearchBrief) {
'use step'
return generateResearchDraft({
model: 'anthropic/claude-sonnet-4.6',
brief,
})
}
async function runSandboxAnalysis(draft: ResearchDraft) {
'use step'
return runInSandbox({ runtime: 'node24', input: draft })
}
| 통제 | 이유 |
|---|
| workflow key 분리 | 비용/감사 분리 |
| scoped OAuth tools | 과권한 방지 |
| sandbox allowlist network | 외부 유출 제한 |
| artifact 저장소 분리 | 결과물 통제 |
| 실패 모드 | 대응 |
|---|
| step timeout | step 재시도 또는 partial result 저장 |
| MCP source 실패 | source missing 표시 후 계속 진행 |
| Sandbox 실행 실패 | lightweight 분석 경로로 축소 |
| 모델 품질 저하 | human review queue로 전환 |
| 지표 | 목표 예시 |
|---|
| 평균 완료 시간 | 5~20분 내 |
| step retry rate | 10% 이하 |
| artifact 생성 성공률 | 95% 이상 |
| analysis cost per task | 팀 예산 내 |
Decision
내부 리서치 에이전트는 synchronous chat이 아니라 Workflow 중심으로 설계합니다. long-running
analysis, artifact generation, sandbox execution을 request path에서 분리하고, 결과는 비동기적으로
전달합니다.
- 작업 시작 직후 task id를 반환하는가
- long-running analysis가 Workflow step으로 분리돼 있는가
- Sandbox 결과물이 artifact로 외부화되는가
- source provenance가 보고서에 남는가