LLM 에이전트 병렬 실행: Git Worktree와 맞춤형 스크립트 활용

[4/4] Code with LLMs in parallel

작성자
발행일
2025년 08월 17일

핵심 요약

  • 1 LLM 에이전트의 병렬 실행은 미래 엔지니어링의 핵심 기술로 부상하고 있으나, 현재 툴링은 초기 단계이며 수동 `git worktree` 관리나 커스텀 스크립트가 선호됩니다.
  • 2 Conductor 및 Claude Squad와 같은 기존 GUI/TUI 도구는 `--dangerously-skip-permissions` 같은 필수 기능의 부재와 유연성 부족으로 인해 활용에 한계가 있습니다.
  • 3 작성자는 기존 도구의 단점을 보완하고 필요한 제어 기능을 확보하기 위해 `git worktree`를 기반으로 한 맞춤형 Ruby 스크립트를 개발하여 에이전트 병렬 작업을 관리하고 있습니다.

도입

인공지능 에이전트를 활용한 개발이 점차 중요해짐에 따라, LLM 에이전트의 병렬 실행 능력은 향후 몇 년간 엔지니어가 개발해야 할 핵심 역량 중 하나로 강조되고 있습니다. 현재 관련 툴링은 아직 완벽하지 않지만, 10분 이상 소요되는 대규모 작업을 에이전트에게 맡길 때 병렬 처리의 필요성이 대두됩니다. 본문은 `PLAN.md -> Implement -> Iterate`와 같은 기법에서 병렬 작업자의 필요성을 인식하고, 다양한 병렬 실행 방법론과 그 한계를 탐구합니다.

LLM 에이전트를 병렬로 실행하는 방법은 여러 가지가 있으며, 각 방법은 장단점을 가집니다. 작성자는 네 가지 방법을 시도했으며, 그중 맞춤형 스크립트나 수동 관리를 선호하는 이유를 설명합니다.

1. git worktree를 활용한 수동 병렬 실행

git worktree 명령어를 사용하면 동일한 저장소의 여러 브랜치를 동시에 체크아웃할 수 있어, 각 작업 트리에서 독립적으로 LLM 에이전트를 실행할 수 있습니다. 예를 들어, git worktree add ../project-parallel-1 명령으로 새로운 작업 공간을 생성하고, 여기서 에이전트에게 작업을 할당합니다.

  • 장점: 메인 브랜치와 충돌 없이 독립적인 장기 작업 수행 가능.

  • 단점:

    • 인지적 부담: 작업 트리 관리가 수동으로 이루어지므로 인지적 부담이 크고, 에이전트가 오랫동안 바쁠 것이라는 확신이 필요합니다.
    • 환경 설정: 로컬 환경 설정의 복잡성(예: Docker/Kubernetes 혼합 환경)에 따라 모든 테스트(단위, 통합, 시스템)가 추가 명령어 없이 실행되지 않거나, 수동 테스트를 위한 앱 인스턴스 구동이 어려울 수 있습니다.
    • 반복 개발의 어려움: 변경 사항을 테스트하기 위해 메인 브랜치에 병합될 때까지 기다려야 할 수 있어 빠른 반복 개발이 어렵습니다.
    • 주로 새로운 인접 작업, 작은 버그 수정, 다음 작업의 PLAN.md 생성 등에 활용됩니다.

2. 기존 GUI/TUI 도구의 한계

git worktree 관리를 돕는 Conductor(GUI)와 Claude Squad(TUI) 같은 도구들이 존재하지만, 작성자의 요구 사항을 충족시키지 못했습니다.

  • Conductor (GUI)
    • 장점: 버튼 클릭으로 worktree 생성, worktree 생성 시 bundle 실행 같은 설정 가능.
    • 단점:
      • --dangerously-skip-permissions 옵션 사용 불가.
      • 항상 main/master 브랜치에서 분기하며, 현재 브랜치에서 분기하는 설정 부재.
      • 동일 저장소 내에 worktree를 생성하여 파일 검색 시 중복 문제 발생 가능.
      • 내장된 diff 뷰어와 Claude Code 래퍼가 제한적이며, /mcp와 같은 전체 Claude Code 기능 사용 불가.
  • Claude Squad (TUI)
    • 장점: 현재 브랜치에서 분기, 저장소 외부 worktree 생성, 안정적인 브랜치 명명 규칙.
    • 단점:
      • --dangerously-skip-permissions 옵션 사용 불가.
      • 내부 설정 옵션이 부족하여 ‘새 worktree 생성 시 항상 xyz 수행’과 같은 자동화 불가.
      • 일부 버그 존재.

3. 맞춤형 스크립트 (Ruby)의 활용

작성자는 기존 도구들의 한계를 극복하기 위해 Ruby 스크립트를 개발했습니다. 이 스크립트는 아직 정교하지 않지만, 여러 작업 트리를 관리하기 위한 좋은 시작점이며, 특히 --dangerously-skip-permissions와 같은 필수 기능을 직접 제어할 수 있다는 점에서 기존 도구보다 우월합니다. 이 스크립트는 가장 단순한 형태로, 여러 에이전트를 동시에 여러 트리에서 실행하는 수준까지는 아니지만, 필요한 제어력을 제공합니다.

결론

LLM 에이전트의 병렬 실행을 위한 `git worktree` 관리는 현재 수동 작업의 부담과 툴링의 미성숙으로 인해 도전적인 과제입니다. Conductor나 Claude Squad와 같은 기존 도구들은 `--dangerously-skip-permissions` 옵션 부재 및 유연성 부족으로 한계를 보입니다. 그러나 작성자가 개발한 Ruby 스크립트와 같이 맞춤형 접근 방식을 통해 필요한 제어력을 확보할 수 있으며, 이는 향후 몇 달 안에 툴링이 발전하면서 더욱 흥미로운 개발 분야가 될 잠재력을 가지고 있습니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!