코딩 에이전트, 이제 '런타임'을 선택하는 시대
AI 코딩 에이전트를 실무에 붙이다 보면 금방 벽에 부딪혀요. Claude Code로 잘 돌아가던 워크플로를 Codex로 옮기려면 코드를 다시 짜야 하고, OpenCode를 써보고 싶으면 또 별도 통합 작업이 필요하죠. 에이전트 런타임마다 API, 세션 관리, 도구 승인 방식이 다 다르니까요.
Vercel의 AI SDK Harness는 이 문제를 정면으로 다룹니다. 이미 자리잡은 코딩 에이전트 런타임들을 하나의 통합 인터페이스로 감싸서, 애플리케이션 코드를 건드리지 않고도 런타임을 교체할 수 있게 해주는 레이어예요. 이번 업데이트로 Deep Agents와 OpenCode 두 어댑터가 추가되면서, 지원 목록은 Claude Code, Codex, Deep Agents, OpenCode, Pi까지 총 5종으로 늘었습니다.
근거자료: Vercel Changelog — Deep Agents and OpenCode harness adapters

새로 추가된 두 어댑터, 코드로 바로 보기
1. Deep Agents 어댑터 — LangChain 생태계 연결
@ai-sdk/harness-deepagents는 LangChain의 deepagents 런타임을 Harness 위에서 돌립니다. 파일·셸 도구, 스킬, 호스트 도구, 멀티턴 세션, attach/resume, 도구 승인 기능이 기본으로 포함돼 있어요.
// Deep Agents를 HarnessAgent로 감싸는 최소 예제
import { HarnessAgent } from '@ai-sdk/harness/agent';
import { deepAgents } from '@ai-sdk/harness-deepagents';
const agent = new HarnessAgent({
harness: deepAgents,
});
딱 이 정도면 런타임이 바뀝니다. 애플리케이션 쪽에서 harness 값만 교체하면 되니까, 나머지 비즈니스 로직은 그대로 유지돼요.
2. OpenCode 어댑터 — 샌드박스 안에서 실제 서버 구동
@ai-sdk/harness-opencode는 조금 다른 접근이에요. @opencode-ai/sdk를 통해 샌드박스 안에 실제 OpenCode 서버를 부팅하고, 세션 이벤트를 Harness로 스트리밍합니다. OpenCode 내장 도구, 내장/호스트 도구 승인, 모델·프로바이더·reasoning variant 선택까지 지원해요.
// OpenCode 서버를 샌드박스에서 부팅해 Harness로 스트리밍
import { HarnessAgent } from '@ai-sdk/harness/agent';
import { openCode } from '@ai-sdk/harness-opencode';
const agent = new HarnessAgent({
harness: openCode,
});
둘 다 Vercel Sandbox 안에서 동작한다는 점이 핵심이에요. 로컬 환경 오염 없이 격리된 실행 계층을 확보할 수 있습니다.

지원 런타임 한눈에 비교
| 런타임 | 어댑터 패키지 | 특징 | 적합한 상황 |
|---|---|---|---|
| Claude Code | @ai-sdk/harness-claudecode | Anthropic 생태계, 안정적 도구 세트 | 이미 Claude Code 워크플로가 있는 팀 |
| Codex | @ai-sdk/harness-codex | OpenAI 계열 추론 강점 | GPT 계열 모델 선호 팀 |
| Deep Agents | @ai-sdk/harness-deepagents | LangChain deepagents, 파일·셸·스킬·멀티턴·승인 | LangChain 기반 에이전트 자산 재활용 |
| OpenCode | @ai-sdk/harness-opencode | 샌드박스 내 실제 서버 부팅, 모델·프로바이더 선택 자유 | OSS 런타임, 멀티 프로바이더 실험 |
| Pi | @ai-sdk/harness-pi | 경량 런타임 | 최소 오버헤드 원하는 경우 |
이 기술의 한계와 주의사항
- 샌드박스 의존성: OpenCode 어댑터는 Vercel Sandbox 안에서 서버를 부팅하는 구조라, 로컬 개발 환경에서 그대로 재현하기 어려울 수 있어요. 로컬 테스트 전략을 별도로 세워야 합니다.
- 버전 드리프트: 각 런타임이 독립적으로 릴리스되기 때문에, 어댑터가 특정 버전의 런타임만 지원하는 경우가 생깁니다. CI에서 어댑터-런타임 버전 조합을 고정해두는 걸 권장해요.
- 추상화 누수: 통합 인터페이스가 편하다고 해서 런타임 고유 기능이 100% 노출되는 건 아닙니다. 특정 런타임의 특수 기능이 필요하면 그때는 직접 붙이는 게 나아요.
한국 개발 생태계에서의 적용 맥락
국내 SI·스타트업 환경에서는 아직 Claude Code나 Codex 단일 런타임에 묶여 있는 팀이 많아요. 이 Harness 레이어를 도입하면 모델 단가가 바뀌거나 벤더 정책이 바뀔 때 런타임만 교체하면 되니, 벤더 락인 리스크를 크게 줄일 수 있습니다. 특히 사내 보안 정책상 외부 런타임을 샌드박스로 격리해야 하는 조직이라면 Vercel Sandbox 기반이라는 점이 실무적으로 유리해요.

정리: 런타임은 갈아끼우는 것
AI SDK Harness의 메시지는 명확해요. 에이전트 런타임은 애플리케이션의 부품이지, 애플리케이션 그 자체가 아니라는 거죠. Deep Agents와 OpenCode가 합류하면서 선택지가 넓어졌으니, 이제는 "어떤 런타임을 쓸까"보다 "어떤 런타임을 언제 교체할까"를 설계하는 게 더 중요해집니다.
다음 단계 학습 방향
@ai-sdk/harness/agent의HarnessAgent인터페이스 문서를 먼저 훑어보세요.- 기존에 쓰던 런타임 하나를 골라 Harness로 감싸는 리팩터링을 작은 프로젝트에서 시도해보세요.
- 샌드박스 격리·도구 승인 정책을 사내 보안 요구사항과 매핑해보면 도입 판단이 훨씬 쉬워집니다.