
단순 작업에 프리미엄 모델 비용을 지불하는 것을 멈추세요
요약
고비용 프리미엄 모델이 단순 반복 작업에 낭비되는 것을 방지하기 위해, 오케스트레이터 모델이 저가형 모델에게 작업을 위임하는 분업 구조를 제안합니다. 이를 위해 Claude Code나 Cursor 같은 MCP 호스트에서 서브에이전트를 병렬로 실행할 수 있는 opencode-mcp를 소개합니다.
핵심 포인트
- 프리미엄 모델은 아키텍처와 버그 해결에 집중하고 단순 작업은 저가형 모델에 위임해야 함
- opencode-mcp를 통해 MCP 호스트에서 비동기 및 병렬로 서브에이전트 활용 가능
- Claude Code, Codex, Cursor 등 다양한 MCP 호스트와 호환됨
- npx 명령어를 통해 복잡한 빌드 과정 없이 즉시 설치 및 사용 가능
당신의 오케스트레이터 (Orchestrator) 모델은 훌륭합니다. 하지만 인턴이 처리할 수 있는 수준의 작업도 수행하고 있습니다.
Claude Code가 변수 이름을 바꾸거나, 보일러플레이트 (Boilerplate) 테스트를 작성하거나, 코드베이스를 grep으로 검색할 때마다, 당신은 더 저렴한 모델도 충분히 잘 해낼 수 있는 작업에 대해 Opus-tier (또는 Fable-tier) 급의 비용을 지불하고 있습니다. 더 나쁜 점은, 당신의 최상위 모델이 그런 단순 작업 (Grunt work)을 수행하느라 바쁜 동안, 정작 당신이 고용한 목적인 아키텍처, 버그, 기능에 대해 고민하는 일은 하지 못하고 있다는 것입니다.
해결책은 더 똑똑한 프롬프트 (Prompt)를 만드는 것이 아닙니다. 그것은 분업입니다: 비싼 모델이 지시하고, 더 저렴한 모델이 실행하는 것입니다. 오케스트레이터는 문제를 분해하고, 기계적인 부분들을 위임하며, 결과를 검토합니다. 이를 통해 모델의 컨텍스트 (Context)와 당신의 예산을 어려운 부분에 집중시킬 수 있습니다.
그것이 바로 opencode-mcp가 하는 일입니다.
한 문장으로 요약한 아이디어
opencode-mcp는 Claude Code, Codex, Cursor와 같은 모든 MCP 호스트 (Host)가 OpenCode 인스턴스를 구동하고, 비동기적(Asynchronously) 및 병렬적(In parallel)으로 서브에이전트 (Subagents)에게 작업을 위임할 수 있게 해주는 MCP 서버입니다.
당신의 오케스트레이터는 통제권을 유지합니다. 저가형 모델부터 특화된 모델까지 당신이 설정한 어떤 모델이든 실행하는 OpenCode의 에이전트들이 힘든 일을 처리합니다.
30초 만에 설치하기
Node.js 18 이상 버전과 최소 하나 이상의 프로바이더 (Provider)가 설정된 OpenCode가 설치되어 있어야 합니다. 그런 다음, Claude Code의 경우:
claude mcp add opencode -- npx -y mcp-server-opencode
Codex의 경우:
codex mcp add opencode -- npx -y mcp-server-opencode
끝입니다. 클로닝 (Cloning)이나 빌드 (Building)도 필요 없습니다. 호스트를 재시작하면 opencode_* 도구들을 사용할 수 있습니다.
실제 세션: Claude가 계속 작업하는 동안 5개의 테스트 스위트를 병렬로 실행하기
이것이 제가 이것을 만들기로 결심하게 만든 데모입니다. Claude Code에 전달한 프롬프트는 다음과 같습니다:
"1-5번 블록에 대한 단위 테스트 (unit tests)를 생성하세요. 작업을 OpenCode 에이전트들에게 위임하고, 완료되면 결과를 검토하세요."
내부적으로 일어나는 일:
1. Claude가 서버를 시작하고 사용 가능한 대상을 확인합니다.
Claude는 opencode_start_server를 호출한 다음, opencode_list_agents를 호출하여 OpenCode 인스턴스가 어떤 에이전트와 모델을 노출하고 있는지 확인합니다.
2. Claude는 다섯 개의 작업을 실행하며, 기다리지 않습니다.
각 블록당 하나씩, 총 다섯 번의 opencode_start_task 호출이 이루어집니다. 각 호출은 즉시 task_id를 반환합니다. 각 작업은 자신만의 격리된 OpenCode 세션에서 실행되므로, 다섯 명의 에이전트가 서로 간섭할 수 없습니다.

이것이 핵심적인 설계 결정입니다: 위임은 **비동기적 (asynchronous)**으로 이루어집니다. Claude는 진행 표시줄을 바라보며 차단(blocked)되지 않습니다. 다섯 명의 하위 에이전트(subagents)가 테스트를 작성하는 동안, 오케스트레이터(orchestrator)는 계속해서 움직입니다. 제 세션에서 Claude는 그 시간을 활용해 서비스 인터페이스를 검토하고 통합 테스트 (integration-test) 계획 초안을 직접 작성했습니다.
3. Claude는 가시성을 확보한 채 다섯 개 작업 모두를 기다립니다.
결과를 수집할 준비가 되면, Claude는 다음과 같이 호출합니다:
opencode_wait_for_task
task_ids: [t1, t2, t3, t4, t5]
mode: "all"
...
wait_for_task는 모든 작업이 완료될 때까지(또는 타임아웃이 발생할 때까지) 롱 폴링 (long-polls)을 수행합니다. 타임아웃이 발생했을 때 무언가 여전히 실행 중이라면, include_progress는 부분적인 출력 스니펫과 **현재 하위 에이전트가 실행 중인 도구 (tool)**를 반환합니다. 따라서

전체 오케스트레이터 (orchestrator)의 개입: 작업을 분해하고, 실행하고, 검토하고, 개선합니다. 기계적인 글쓰기는 다른 곳에서, 즉 해당 작업을 위해 선택한 모델 (models)에서 이루어졌습니다.
비동기 (async) 방식이 모든 것을 바꾸는 이유
대부분의 "다른 에이전트에게 위임"하는 MCP 서버들은 블로킹 (blocking) 도구 호출을 수행합니다. 즉, 호스트가 도구를 호출하면 도구가 에이전트를 실행하고, 모두가 기다리는 방식입니다. 이는 금방 한계에 부딪힙니다:
- MCP 클라이언트 타임아웃 (timeouts). 20분짜리 리팩토링 (refactor) 작업은 도구 호출 타임아웃 시간 내에 완료될 수 없습니다. 비동기 위임 (Async delegation)은 이 문제를 완전히 우회합니다.
start_task는 밀리초 단위로 응답하며, 상태는 별도로 폴링 (polled) 됩니다. - 병렬성 (parallelism) 부재. 블로킹 호출은 하위 에이전트 (subagents)를 직렬화합니다. 실행 후 망각 (fire-and-forget) 방식의 작업을 사용하면, 다섯 개의 에이전트가 각각 격리된 세션에서 실제로 동시에 실행됩니다.
- 가시성 (visibility) 부재. 블로킹 호출은 반환될 때까지 아무런 소식이 없습니다.
get_task_status와include_progress를 포함한wait_for_task는 중간 출력물과 현재 실행 중인 도구 (tool)를 보여줍니다. - 대화 (conversation) 부재. 블로킹 호출이 반환되면 세션은 종료됩니다. 여기서는
continue_task가 하위 에이전트의 세션을 유지하여 반복적인 피드백 (iterative back-and-forth)이 가능하게 합니다. 즉, 작업을 다시 실행하는 대신 결과를 개선할 수 있습니다.
강조할 만한 또 다른 부분은, 서버가 **모델 선택 가이드 (model selection guide)**가 포함된 delegate_task MCP 프롬프트 (prompt)를 제공한다는 점입니다. 이는 각 OpenCode 모델 계층 (tier)을 해당 모델이 처리해야 할 작업 난이도와 매핑한 것입니다. 위임의 목적은 단순히 작업을 넘길 수 있다는 것이 아니라, 무엇을 누구에게 넘겨야 하는지 아는 것입니다. 이 프롬프트는 오케스트레이터에게 바로 그 방법을 가르쳐 줍니다.
도구 인터페이스 (tool surface)
서버, 에이전트, 그리고 작업 수명 주기 (task lifecycle)를 다루는 9개의 집중된 도구들:
| 도구 (Tool) | 기능 |
|---|---|
opencode_start_server / opencode_stop_server | OpenCode 인스턴스 시작 (또는 연결) / 중지 |
| ... |
이는 의도된 설계입니다. 이 서버는 70개의 도구 뒤에 모든 OpenCode 기능을 억지로 집어넣으려 하지 않습니다. 대신 단 한 가지, 비동기 작업 위임 (async task delegation)을 제대로 수행하는 데 집중합니다. 코드베이스는 CI에서 강제되는 100% 커버리지 임계값(라인, 브랜치, 함수, 구문 — 커버되지 않은 라인이 있으면 빌드가 깨짐)을 통해 이를 뒷받침합니다.
팬아웃 (fan-out) 그 이상
데모에서는 병렬 작업 (parallel-tasks) 사례를 다루었지만, 동일한 패턴은 더 많은 곳에 적용될 수 있습니다:
- 비용 계층화 (Cost-tiering): 기계적인 작업(이름 변경, 보일러플레이트 (boilerplate), 문서화)은 저가형 모델로 라우팅하고, 프리미엄 모델은 의사 결정용으로 아껴둡니다.
- 교차 모델의 제2의 의견 (Cross-model second opinions): 오케스트레이터 (orchestrator)가 생성한 diff를 다른 모델이 검토하게 합니다.
- 장시간 실행되는 백그라운드 작업 (Long-running background work): 20분짜리 리팩터링 (refactor)을 시작해 두고, 그것이 실행되는 동안 계속 다른 작업을 수행합니다.
직접 시도해 보세요
claude mcp add opencode -- npx -y mcp-server-opencode
리포지토리는 github.com/alejandro-technology/opencode-mcp에 있으며, 패키지는 npm의 mcp-server-opencode입니다. 설치한 후 작업을 위임해 보고, 무엇을 넘겼는지 저에게 알려주세요. 여러분의 오케스트레이터가 스스로 하던 일 중 무엇을 멈추게 되었는지 정말 궁금합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기