세 개의 AI 모델이 내 코드를 두고 논쟁하게 만든 뒤 승자를 판정해 보았다
요약
단일 AI 모델의 코드 리뷰 한계를 극복하기 위해 여러 모델이 서로 교차 검증하며 논쟁하는 멀티 에이전트 시스템을 소개합니다. 모델 간의 의견 수렴과 발산을 활용하여 코드 리뷰의 정확도와 커버리지를 높이는 워크플로를 제안합니다.
핵심 포인트
- 동일한 리뷰 에이전트를 여러 모델(Claude, Grok, Codex 등)에 실행하여 교차 검증 수행
- 모델 간 의견이 변할 때만 라운드를 진행하는 수렴 게이트 방식 도입
- 모델에게 점수 산정 사실을 숨겨 굿하트의 법칙에 따른 인센티브 부패 방지
- Claude Code의 워크플로 시스템을 기반으로 한 실시간 결정론적 런타임 활용
나는 단일 모델의 코드 리뷰를 완전히 신뢰한 적이 없다. 모델마다 놓치는 부분이 다르기 때문에, 나는 모든 것을 하나의 모델에 거는 대신 그 차이점을 나를 위해 활용하고 싶었다. 그래서 나는 동일한 리뷰 에이전트(review agent)를 여러 모델에 걸쳐 실행하고 서로 교차 검증(cross-check)하게 만드는 도구를 구축했다. 이것이 어떻게 작동하는지, 그리고 이것이 무엇이고 무엇이 아닌지에 대한 솔직한 노트를 공유한다.
하나의 에이전트, 여러 모델
당신은 이미 하나의 코딩 CLI를 위해 정의된 리뷰 에이전트, 즉 일반적인 .claude/agents/*.md 파일을 가지고 있다. multi-agent는 동일한 에이전트를 다른 모델 CLI인 grok, codex, claude에서 실행한다. 각 모델은 자신의 런타임(runtime)을 통해 네이티브하게 이를 실행한다. API 키도 필요 없고, 재구현할 필요도 없다. CLI가 설치되어 있고 로그인되어 있다면, 에이전트는 그곳에서 실행된다.
핵심은 중복이 아니라 다양성이다. 독립적인 모델들이 하나의 결과에 **수렴(converge)**할 때, 당신은 확신을 얻는다. 모델들이 **발산(diverge)**할 때, 당신은 단일 모델로는 얻을 수 없었을 커버리지(coverage)를 얻게 된다.
/arena: 논쟁이 스스로 멈추게 하라
첫 번째 명령은 결정론적 토너먼트(deterministic tournament)를 실행한다.
Round 1 각 모델이 독립적으로 감사(audit)
Round 2 교차 비판(cross-critique): 유지(KEEP) / 철회(WITHDRAW) / 채택(ADOPT) / 신규(NEW), 각 모델은 코드를 인용
Round 3, 4... 입장이 계속 변하는 동안에만 추가됨
...
라운드는 수렴 게이트(convergence gated) 방식으로 운영된다. 나의 첫 번째 버전은 정해진 횟수의 라운드를 실행했는데, 그중 절반은 보여주기식(theater)이었다. 라운드 2에 도달하면 아무도 입장을 바꾸지 않고, 그저 더 많은 토큰을 사용하여 자신의 의견을 재진술할 뿐이었다. 이제는 누군가가 실제로 주장을 철회하거나, 경쟁자의 주장을 채택하거나, 새로운 주장을 제기하는 동안에만 라운드가 추가된다. 논쟁이 얼어붙는(freeze) 순간, 종료된다.
모델의 점수를 매기되, 모델에게는 절대 말하지 마라
아레나(arena)는 스코어보드(scoreboard)와 함께 종료된다. 내가 가장 중요하게 생각한 설계 결정은 모델들에게 자신들이 점수 매겨지고 있다는 사실을 절대 알리지 않는 것이다.
모델이 자신이 경쟁 중이라는 사실을 아는 순간, 인센티브(incentives)는 부패합니다. 모델은 중도 포기가 패배처럼 보일까 봐 취약한 발견을 방어합니다. 점수를 따기 위해 경쟁자의 사소한 결점을 꼬투리 잡습니다. 토론은 더 이상 코드에 관한 것이 아니게 됩니다. 따라서 점수 산정은 모델들의 논쟁이 끝난 후, 판사의 확정된 결과로부터 이루어집니다. 확정된 발견은 심각도에 따라 가중치가 부여된 점수를 더하고, 거짓 양성(false positives)은 감점하며, 독창적인 실제 포착 사항과 정직한 양보는 추가 점수를 부여합니다.
모델들은 진실을 두고 논쟁합니다. 순위는 그들의 뒤에서 계산됩니다. 굿하트의 법칙(Goodhart's law)은 사람에게 미치는 것만큼이나 언어 모델(language models)에게도 강력하게 작용합니다.
정직한 부분
이 기술을 과장해서 설명하기 쉽기 때문에, 현재 상태에 대해 솔직하게 말씀드려야겠습니다.
이 시스템은 Claude Code를 위해 구축되었으며 Claude Code에서 테스트되었습니다. 다회차 아레나(multi-round arena)는 Claude Code의 워크플로(Workflow) 시스템, 즉 /workflows에서 실시간으로 확인할 수 있는 결정론적 런타임(deterministic runtime) 위에서 실행됩니다. Claude는 호스트 모델이자 항상 사용 가능하기 때문에 기본 판사(default judge)로 사용됩니다.
다른 CLI인 grok과 codex는 **대상(targets)**으로서 지원됩니다. 엔진은 해당 CLI 위에서 에이전트(agent)를 실행하고 그들의 발견 사항을 수집합니다. 아직 출시되지 않은 것은 이들에 대한 네이티브 호스트 래퍼(native host wrappers)입니다. 해당 경로를 신뢰할 수 있을 만큼 충분히 테스트하지 않았기 때문입니다. 하단의 오케스트레이션 엔진(orchestration engine)은 순수 파이썬(Python)이며 호스트에 구애받지 않으므로(host-agnostic), 이러한 래퍼들은 나중에 추가될 수 있습니다. 하지만 저는 다 되었다고 가장하기보다는 "아직은 아니다"라고 말하고 싶습니다.
또한 실제 비용이 발생합니다. 전체 적대적 실행(adversarial run)은 무겁습니다. 많은 모델 턴(model turns), 여러 라운드, 몇 분에서 수십 분의 시간, 실제 토큰 소모가 발생하며, 각 라운드는 가장 느린 모델이 완료될 때까지 기다려야 합니다. 빠른 작업을 원한다면 더 적은 모델을 사용하거나, 두 번째 명령인 작업 중에 대화할 수 있는 실시간 단일 모델 리뷰(live single-model review)를 사용하면 됩니다.
사용해 보기
이 프로젝트는 MIT 라이선스 하에 오픈 소스로 제공됩니다. 두 가지 명령어가 포함된 설명, 정확한 점수 산정 규칙 및 전체 제한 사항 목록은 프로젝트 페이지인 multi-agent on dogrubakar.com에 있으며, 코드는 GitHub에서 확인할 수 있습니다.
만약 여러분이 다중 모델 리뷰 워크플로우 (multi-model review workflows)를 실행한다면, 모델들이 정직하게 답변하도록 어떻게 관리하시는지 진심으로 듣고 싶습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기