블로그로 돌아가기

여러 Claude Code 에이전트의 병렬 작업을 모니터링하는 방법

여러 Claude Code 에이전트의 병렬 작업을 모니터링하는 방법

tmux 패인에 6개의 Claude Code 에이전트를 띄웠습니다. 각각 태스크를 가져갔습니다. 모두 출력을 내뿜고 있고, 읽을 수 없는 속도로 스크롤됩니다. 하나가 방금 무언가를 커밋했습니다. 다른 하나는 테스트를 실행 중입니다. 세 번째는 20분째 의심스러울 정도로 조용합니다.

실제로 무슨 일이 벌어지고 있는지 전혀 모릅니다.

이것이 병렬 에이전트 워크플로의 핵심 문제입니다. 에이전트 자체는 생산적입니다. Claude Code는 작업을 가져가고, 코드를 작성하고, 테스트를 실행하고, 구조화된 명령어를 통해 완료를 보고할 수 있습니다. 하지만 6개 또는 10개의 에이전트를 감독하는 인간에게는 통합된 뷰가 없습니다. tmux 패인을 전환하고, 터미널 히스토리를 스크롤하며, 머릿속에서 프로젝트 상태를 재구성할 수밖에 없습니다.

에이전트 2개는 됩니다. 5개에서 무너집니다.

에이전트가 beads를 통해 작업을 보고하는 방법

기반이 되는 것은 beads입니다. 이 워크플로에 특화되어 설계된 오픈소스 Git 네이티브 이슈 트래커입니다. beads는 에이전트에게 작업 내용을 기록하는 구조화된 방법을, 그리고 여러분에게는 그것을 쿼리하는 구조화된 방법을 제공합니다. 모든 에이전트 액션은 로컬 데이터베이스에 기록하는 CLI 명령이 됩니다.

에이전트가 작업을 가져갈 때:

bd update bb-f8o --status in_progress --assignee agent-3

선행 조건을 발견하고 새 이슈를 생성할 때:

BLOCKER=$(bd create \
  --title "Auth middleware needs rate limiting before deploy" \
  --type task --priority 1 --json | jq -r '.id')

bd dep add bb-f8o "$BLOCKER"

작업이 완료되었을 때:

bd update bb-f8o --status closed
bd comments add bb-f8o --author agent-3 \
  "DONE: Implemented request throttling. Commit: a1c9e4f"

이 명령어들은 모두 밀리초 단위로 실행됩니다. 모두 같은 로컬 데이터베이스에 기록합니다. 에이전트에게 API 토큰, HTTP 클라이언트, 인증 플로가 필요 없습니다. git commit이나 npm test를 실행하는 것과 같은 방식으로 셸 명령을 실행하면 됩니다.

몇 시간의 병렬 작업 후, 데이터베이스에는 전체 그림이 담겨 있습니다: 누가 무엇을 하고 있는지, 무엇이 블로킹되어 있는지, 무엇이 방금 완료되었는지, 무엇이 가용한지. 정보는 존재합니다. 문제는 그것을 보는 것입니다.

bd list가 보여주지 못하는 것

터미널에서 데이터베이스를 쿼리할 수 있습니다:

bd list --status=in_progress
bd blocked
bd ready

각 명령은 유용한 데이터를 반환합니다. 하지만 플랫한 텍스트로, 한 시점의 스냅샷으로 반환됩니다. 프로젝트 상태를 파악하려면 bd list를 실행하고, 몇몇 이슈에 bd show를 실행하고, bd dep list로 무엇이 무엇을 블로킹하는지 확인하고, bd blocked로 멈춘 에이전트를 찾습니다. 수동으로 전체 그림을 맞춰나갑니다.

에이전트가 빠르게 움직일 때(90초 동안 3개의 이슈를 클로즈하고 각각이 서로 다른 하위 작업을 언블로킹할 때), CLI는 변화 속도를 따라갈 수 없습니다. bd blocked 읽기를 마칠 무렵이면, 그 블로커 중 2개는 이미 해결되어 있습니다.

Beadbox가 보여주는 것

Beadbox.beads/ 디렉토리를 감시하고 전체 프로젝트 상태를 실시간으로 렌더링하는 네이티브 데스크톱 앱입니다. 에이전트가 터미널에서 bd update를 실행하면, Beadbox는 파일 시스템 변경을 감지하고 밀리초 이내에 WebSocket을 통해 UI에 푸시합니다. 폴링 없음. 새로고침 버튼 없음. 누가 무엇을 했는지 파악하기 위해 tmux 패인을 전환할 필요 없음.

구체적으로 다음을 제공합니다:

에픽 진행 트리. 최상위 기능이 12개 서브태스크 중 7개 완료로 표시됩니다. 펼치면 어떤 서브태스크가 진행 중인지(각 에이전트가 무엇을 담당하는지), 어떤 것이 블로킹되어 있는지, 어떤 것이 새로 가용해졌는지 볼 수 있습니다. 한 눈에 수십 개의 bd show 명령을 대체합니다.

모든 이슈에 의존성 배지. 명령어 하나 실행하지 않아도 bb-q3lbb-f8o를 기다리고 있다는 것을 즉시 알 수 있습니다. bb-f8o가 클로즈되면, bb-q3l이 언블로킹된 것으로 표시됩니다. 캐스케이드가 실시간으로 보입니다.

블로킹된 태스크 하이라이트. 모든 블로킹된 이슈가 블로킹 의존성을 인라인으로 표시하며 부각됩니다. 블로커를 찾아다닐 필요 없습니다. 존재하는 순간, 우선순위별로 정렬되어 화면에 표시됩니다.

멀티 워크스페이스 전환. 여러 프로젝트에 걸쳐 에이전트를 실행하고 있다면, 드롭다운에서 beads 데이터베이스를 전환할 수 있습니다. 각 워크스페이스는 자체 필터와 뷰 상태를 기억합니다.

실시간 동기화. 업데이트 파이프라인은 .beads/ 디렉토리에 대한 fs.watch이며, WebSocket을 통해 React UI에 푸시됩니다. 서브세컨드 전파로 30초 폴링 간격이 아닌 실시간으로 에이전트 활동을 볼 수 있습니다.

모니터링 워크플로

Beadbox를 tmux 세션 옆에 열어두면, 모니터링이 능동적인 조사가 아닌 패턴 인식이 됩니다. 주시해야 할 것들:

정체된 in_progress 태스크. 2시간 전에 태스크를 가져갔는데 업데이트가 없는 에이전트는 막혔거나 크래시한 것입니다. 인간 워크플로에서 2시간은 아무것도 아닙니다. 에이전트에게 그 정도의 침묵은 위험 신호입니다. tmux 패인을 확인하고, 에이전트를 nudge하거나, 작업을 재할당하세요.

블로킹된 태스크 누적. 블로킹된 태스크가 쌓이고 모두 같은 미해결 의존성을 가리킨다면, 그 의존성이 크리티컬 패스입니다. 우선순위를 올리거나, 가장 빠른 에이전트를 할당하거나, 직접 해결하세요.

잘못된 의존성. 에이전트는 계획 단계에서 의존성을 과도하게 선언하는 경향이 있습니다. 코드베이스의 초기 분석을 기반으로 필요한 것을 모델링합니다. 작업이 시작되면 그 의존성 중 많은 것이 불필요했다는 것이 드러납니다. 블로킹된 태스크의 의존성이 잘못된 것 같으면 제거하세요:

bd dep remove bb-q3l bb-f8o

이 명령 하나로 태스크가 즉시 언블로킹됩니다. Beadbox에서는 블로킹에서 가용으로 실시간 전환되는 것을 볼 수 있습니다.

할당자 없는 ready 작업. 언블로킹 캐스케이드 후, 할당된 에이전트 없이 5개의 태스크가 한꺼번에 가용해질 수 있습니다. 그것이 디스패치의 순간입니다. 유휴 에이전트를 최우선 ready 작업에 배정하세요.

트리아지 루프는 간단합니다: 블로킹을 스캔하고, 해결하거나 재할당하고, ready 작업을 스캔하고, 디스패치합니다. Beadbox는 각 스캔을 CLI 명령의 연속이 아닌 한 눈에 볼 수 있게 만듭니다.

스케일에서 중요한 이유

에이전트 2개는 터미널을 보며 감독할 수 있습니다. 34개에서 놓치기 시작합니다. 610개가 되면 계측이 필요합니다.

에이전트 자체는 병목이 아닙니다. Claude Code는 빠릅니다. 코드를 작성하고, 테스트를 실행하고, 여러분을 기다리지 않고 실패를 반복 개선합니다. 병목은 슈퍼바이저가 전체 보드를 볼 수 있는 능력입니다: 어떤 에이전트가 생산적이고, 어떤 것이 막혀 있고, 크리티컬 패스가 어디로 지나가고, 무엇이 새로 열렸는지.

실시간 비주얼 대시보드는 이것을 조사(5개 명령을 실행하고, 출력을 읽고, 상태를 머릿속에 유지하는 것)에서 스캔(화면을 보는 것)으로 전환합니다. 이 차이는 병렬 에이전트 코디네이션의 하루 종일에 걸쳐 복리로 효과가 쌓입니다.

시작하기

Homebrew로 Beadbox를 설치하세요:

brew tap beadbox/cask && brew install --cask beadbox

에이전트가 이미 beads를 사용하고 있다면, Beadbox가 기존 .beads/ 워크스페이스를 자동으로 감지합니다. 앱을 열면 이슈가 바로 보입니다. 임포트 단계 없음, 계정 생성 없음, 클라우드 동기화 없음. 데이터는 여러분의 머신에 남습니다.

beads를 처음 사용하신다면, CLI를 설치하고(go install github.com/steveyegge/beads/cmd/bd@latest), 프로젝트에서 bd init를 실행하고, 에이전트에 작업 디스패치를 시작하세요. 에이전트가 하는 모든 것이 하는 순간에 Beadbox에 표시됩니다.

Beadbox는 macOS, Linux, Windows에서 실행됩니다. 베타 기간 동안 무료입니다.