공부 노트
No.07 / 1인 앱 개발 / 병렬 에이전트

에이전트 하나로는 안 돌아가서 워크트리로 갈랐어요

클로드 코드(Claude Code)를 병렬로 돌리려고 ORCA와 git worktree(워크트리)를 썼어요. 앱 여러 개, 채널 여러 개, 매일 도는 자동 점검까지 한 세션에서 시키니 맥락이 섞여서 에이전트마다 작업공간을 나누고, 만든 모델이 아닌 다른 모델에게 검증을 맡겼어요. 쓰면서 확인한 것과 못 한 것을 적어 둬요.

By heysep7 min readORCA 워크트리

Contents
  1. 한 세션으로는 안 돌아갔어요
  2. ORCA가 하는 일
  3. 워크트리로 갈랐어요
  4. 역할을 나눴어요
  5. GPT를 검증에 쓰니 실제로 잡힌 것
  6. 한계와 못 한 것
  7. 정리하면
굵은 줄기가 세 갈래로 나뉘어 각자 폴더로 가고, 위 두 갈래는 검사 게이트를 거쳐 합쳐지며 아래 얇은 갈래는 따로 가는 일러스트
한 줄기가 갈래로 나뉘어 각자 자기 폴더에서 일하고, 중요한 갈래만 검사 게이트를 거쳐 합쳐져요 · ChatGPT 이미지 생성

한 세션으로는 안 돌아갔어요#

처음에는 한 터미널에서 한 에이전트에게 모든 일을 시켰어요. 앱을 고치다가 영상 작업을 시키고, 다시 앱으로 돌아오면 앞의 맥락이 남아서 엉뚱한 파일을 건드렸어요. 한 작업이 길어지는 동안 다른 작업은 기다려야 하는 것도 문제였어요. 필요한 건 더 똑똑한 에이전트가 아니라 일을 갈라서 동시에 돌릴 자리였어요.

ORCA가 하는 일#

ORCA는 MIT 라이선스 오픈소스예요. 공식 소개 문구는 Codex, Claude Code, OpenCode, Pi를 나란히 돌리고, 각각 자기 git 워크트리에서 돌게 하며 한곳에서 추적한다는 거예요. 아래 기능은 공식 README 기준이에요.

  • 병렬 워크트리: 한 프롬프트를 에이전트 여러 개에 펼치고, 결과를 비교해 이긴 쪽을 병합해요
  • 터미널 분할: 터미널을 계속 쪼개 쓰고 재시작해도 출력이 남아요
  • 모바일 컴패니언: 폰에서 에이전트가 끝나면 알림을 받고 후속 지시를 보내요
  • 디자인 모드: 화면 요소를 클릭하면 그 HTML·CSS·스크린샷이 프롬프트로 들어가요

저는 이 중 워크트리 분리와 여러 에이전트를 한 화면에서 보는 것을 가장 많이 썼어요.

워크트리로 갈랐어요#

워크트리는 같은 저장소를 폴더를 달리해 여러 개 펼쳐 놓는 git 기능이에요. 에이전트마다 자기 폴더에서 일하니까 서로의 파일을 덮어쓰지 않아요. 제 작업 폴더에는 프로젝트가 여러 개 들어 있고, 프로젝트마다 워크트리가 따로 있어요.

자동 실행도 같은 방식이에요. 「앱인토스 일일 점검」이라는 이름의 자동 실행이 8월 22일부터 매일 밤 23시 40분에 돌았고, 실행마다 별도 워크트리가 남아서 지금 폴더가 23개예요. 매번 깨끗한 작업공간에서 시작하니 전날 실행의 찌꺼기가 다음 날에 섞이지 않아요. 대신 이 폴더들이 쌓인다는 대가가 있어요.

역할을 나눴어요#

에이전트맡긴 일이유
Claude Code구현과 수정, 스킬·훅이 적용되는 주력스킬과 훅을 이쪽에 걸어 뒀어요
Codex(GPT)검증. 만든 쪽이 아니라 다른 모델이 점검해요같은 모델은 같은 맹점을 공유한다고 봤어요
OpenCode쉬운 작업어려운 일에 쓰는 주력 에이전트가 쉬운 일까지 맡을 필요는 없다고 봤어요

OpenCode에는 쉬운 작업을 맡겼어요. 어려운 판단이 필요 없는 일까지 주력 에이전트의 시간과 한도를 쓸 필요는 없다고 봤고, 여러 컴퓨터에서 나눠 돌렸어요.

GPT를 검증에 쓰니 실제로 잡힌 것#

둥근 모양의 작업자가 낸 문서를 네모 모양의 작업자가 돋보기로 보고 결함에 라임색 동그라미를 표시하는 일러스트
만든 쪽과 다른 모양의 눈이 봐야 결함이 보여요 · ChatGPT 이미지 생성

다른 모델에게 검증을 맡기는 건 기분 좋은 아이디어가 아니라, 실제로 값을 한 적이 있어서 규칙으로 넣었어요.

  • 돈 계산 오류: 청년미래적금 앱에서 정부기여금은 만기에 일괄 지급인데, 차트가 중간 시점 잔액에도 기여금을 더하고 있었어요. 제가 만든 쪽에서는 못 봤고 Codex 리뷰가 잡았어요. 커밋에도 「코덱스 리뷰 반영」으로 남아 있어요.
  • 블라인드 판정: 아이콘 후보를 만든 모델이 아니라 Codex가 라벨 없이 A/B로 채점하는 스크립트를 만들었어요. 좌우를 섞고 크기를 줄이고 판정을 JSON 형식으로 강제하는 것까지 코드가 해요. 한 번은 제가 1순위로 고른 아이콘이 16초 만에 졌고, Codex는 제가 탈락시킨 후보를 「열린 문」으로 읽었어요. 표본은 하나뿐이라 Codex가 옳다는 증거는 아니고, 판정이 반증 가능한 형태로 나온다는 점이 요점이에요.
  • 검수 규칙: 같은 모델이 렌즈를 전부 돌려도 같은 맹점을 공유하니, 되돌리기 어려운 변경은 다른 모델의 검토 통과를 완료 조건에 넣었어요.

다른 모델을 부를 때 막힌 곳도 기록해 뒀어요. Codex를 명령으로 부를 때 입력을 안 닫으면 입력을 기다리며 멈춰요. 로그인 상태가 정상으로 보여도 갱신 토큰이 만료되면 실제 호출에서 죽어요. 그래서 호출 코드에 입력 닫기를 넣고, 판정이 안 나오면 통과가 아니라 판정 불가로 끝나게 했어요.

한계와 못 한 것#

  • 병렬로 돌려서 시간이 얼마나 줄었는지는 재지 못했어요. 체감은 있지만 수치는 없어요.
  • 워크트리가 쌓이는 비용(디스크)은 정리가 필요하다는 것까지만 확인했어요. 얼마나 먹는지는 이 글에서 말하지 않아요.
  • 다른 모델 검증이 결함을 얼마나 줄였는지도 비교 실험은 못 했어요. 잡힌 사례가 있다는 것까지가 확인한 범위예요.

정리하면#

  • 에이전트를 더 똑똑하게 만들기 전에, 일을 갈라서 자리를 따로 주는 것이 먼저였어요.
  • 워크트리는 파일 충돌을 막고 매번 깨끗한 시작을 주지만, 쌓이는 비용을 같이 관리해야 해요.
  • 만든 모델 말고 다른 모델에게 한 번 더 검증을 받아요. 검증 결과가 안 나오면 통과로 치지 않아요.
  • 이 구조에서 문서 규칙은 안 지켜졌고, 그래서 훅과 스킬 서열이 필요해졌어요.

다른 글

글 목록으로 돌아가기