← Ascendy EN

meta

두 AI 모델을 붙였더니 느려졌다 — 그래서 작업을 티어로 갈랐다

· Ascendy Engineering


TL;DR

배경 — 왜 두 모델을 페어로 쓰나

시작은 단순한 가설이었다. 두 모델을 cross해서 쓰면 단일 모델보다 결과가 낫다. 근거도 단순하다. 각 모델 벤더는 training 방향과 방법론을 공유하지 않는다. 그러니 모델마다 장단점 분포가 다를 수밖에 없고, 한쪽이 놓치는 걸 다른 쪽이 잡는다. 이전에 Gemini와 GPT를 병용하며 체감한 점이기도 했다.

처음엔 회의적이었다. 단일 코딩 에이전트(Claude Code)의 신봉자로 출발했고, 프로젝트 자체도 여러 벤더(GPT → Gemini → Claude)를 거쳐왔다. 주변에서 다른 에이전트(Codex)를 페어로 붙여보라는 추천을 들었지만 반신반의했다. 하나의 모델만으로도 충분하지 않나 싶었다.

직접 써보기 전까지는.

세 단계로 진화한 하네스

v1 — tdd-batch: 품질은 최고, 속도는 최악

첫 형태는 테스트를 축으로 두 모델을 갈랐다. 한 모델이 계획과 테스트 코드를 쓰고, 다른 모델이 그 테스트를 통과시키는 구현을 했다. 테스트가 명세이자 합의점이 되니 코드 품질은 매우 높았다.

문제는 속도였다. 몇 줄짜리 수정에도 두 모델 사이 핑퐁이 길어졌다. 테스트 작성 → 구현 → 실패 → 재작성의 사이클이 사소한 변경에도 그대로 돌았다. 품질을 100으로 끌어올린 대가로 속도가 바닥을 쳤다.

v2 — pair-agent: 빠르지만 마진이 얇다

그래서 테스트 강제를 걷어냈다. 한 모델이 코드를 짜고, 다른 모델이 리뷰한다. 핑퐁이 짧아지니 빠르다. 대신 v1이 주던 안전 마진 — 테스트가 강제하던 회귀 방어 — 은 얇아졌다.

여기서 두 형태를 나란히 놓고 보니 분명해졌다. v1은 품질 위주, v2는 속도 위주. 둘 다 옳지만, 둘 다 모든 작업에 옳지는 않다.

v3 — 티어 라우팅: 작업이 자기 티어를 가진다

세 번째 형태의 전제는 이거였다. 품질과 속도는 같은 자리에서 동시에 살 수 없다. 그렇다면 모든 작업을 한 절차에 밀어넣을 게 아니라, 작업을 그 성격에 따라 갈라야 한다.

작업이 들어오면 먼저 티어를 분류하고, 그 티어에 맞는 절차로 보낸다. 세션 간 메시지 전달은 inter-session agent communication 도구가 맡는다 — 이게 없으면 multi-agent 워크플로우는 결국 운영자가 창과 창 사이를 수동으로 복사붙이기 하다 깨진다.

낮음 · 중간

높음

들어온 작업 / 이슈

티어 분류

(보안·비즈로직·난이도·아키텍처 임팩트)

pair: 코드 → 리뷰

속도 우선, 단일 PR 사이클

Agent Committee

사전: 다중 모델이 변경 계획 적대적 검토

합의된 방향으로 구현

모두 참관: 결정 로그 + 리뷰 트레일

Mermaid source
flowchart TD
  T["들어온 작업 / 이슈"] --> C{"티어 분류<br/>(보안·비즈로직·난이도·아키텍처 임팩트)"}
  C -->|"낮음 · 중간"| P["pair: 코드 → 리뷰<br/>속도 우선, 단일 PR 사이클"]
  C -->|"높음"| K["Agent Committee"]
  K --> K1["사전: 다중 모델이 변경 계획 적대적 검토"]
  K --> K2["합의된 방향으로 구현"]
  K --> K3["모두 참관: 결정 로그 + 리뷰 트레일"]

수술실 비유

이 구조를 한 장으로 설명하는 가장 좋은 그림은 수술실이다.

맹장 수술은 한 명의 숙련의가 처리한다. 정형화돼 있고 위험이 낮다 — 낮은 티어, pair로 충분하다. 반면 복잡한 다학제 수술은 다르다. 각 전문영역의 전문가들이 사전에 강도 높은 계획 회의를 하고, 수술이 진행되는 동안 모두가 참관 가능한 상태에서 움직인다 — 높은 티어, committee다.

둘 다 정당한 방식이다. 맹장 수술에 전체 팀을 소집하는 건 낭비고, 다학제 수술을 한 명에게 맡기는 건 위험이다. 무엇을 어디로 보낼지 정하는 트리아지가 시스템의 핵심인 이유다.

세 하네스의 트레이드오프

하네스품질속도오버헤드적합한 작업
tdd-batch★★★★★★★★★★핵심 라이브러리 / 보안 critical
pair-agent★★★★★★★★★일반 기능 / 버그 픽스
티어 라우팅티어별티어별★★★모든 케이스 (자동 라우팅)

(별점은 정성적 평가다.)

결정 / 트레이드오프

영감의 일부는 외부에서 왔다. Andrej Karpathy가 공개한 CLAUDE.md가 초기 출발점 중 하나였고, 한 소규모 YouTube 크리에이터가 공유한 하네스 컨셉도 방향에 영향을 줬다 — 공개된 글과 영상이 실제 워크플로우로 이어진 사례다.

후속


저작·인용: 이 글은 Ascendy Engineering이 작성했으며 출처 표기 시 재인용 가능합니다. 잘못된 정보를 발견하면 GitHub 이슈로 알려주세요.


Tags: llm-agents, pair-programming, claude-code, codex, agent-os, dogfooding, developer-workflow