검색 결과는 입력창 다음에 링크 목록으로 표시됩니다.

사례 3 — 멀티에이전트 5부서 제도 설계

근거 확인된 출처성숙도 운영중 · 판정기 실측

문제

여러 AI 에이전트가 같은 repo를 두고 충돌했고, 누가 무엇을 했는지 대화 기록으로는 판정이 안 됐다.

해결

AI에게 권한이 아니라 계약을 — 5부서 조직, handoff STATE 머신, 삼중 신호 판정기, 사람 승인 게이트 6종.

결과

충돌이 8단계로 자동 판정되고, 부서 상태가 파일로 영속화되며, 위험 경계가 명문화된 조직이 됐다 (현재도 운영중).

배경과 시기

  • 2026-07-25 record SFX department focus audit — Claude와 Codex 세션이 같은 코드를 두고 충돌. 원인: 작업 소유권이 대화에만 존재.
  • 에이전트를 더 쓰면 속도가 빨라지는 대신, 충돌·중복·무단 경계 통과라는 새 비용이 생겼다.

방향이 바뀐 순간

  • 에이전트에게 "권한"을 주면 사고가 나고, "제한"만 주면 느리다. 필요한 건 계약이었다: 각자의 영역·상태 기록 방식·경계를 문서로 합의하고, 위반은 사람이 아니라 판정기가 잡는다.
  • 두 번째 통찰: 상태의 진실은 대화가 아니라 Git과 프로세스에 있다. 대화는 증거가 못 된다.

목표

  1. 같은 repo를 여러 에이전트가 안전하게 쓰는 구조
  2. "지금 누가 뭐 하는 중인가"가 파일만으로 판정 가능
  3. 위험 행동은 반드시 사람 승인을 통과하도록 경계 명문화

결정한 것과 버린 것

  1. 락(lock) 시스템고정 부서 worktree

    고정 부서 선택

    고정 부서 선택. 이유: 락은 충돌만 막고, 부서는 책임 결과를 정의한다(전략·재무, 고객·마케팅·성장, 제품·출시, 플랫폼·운영, 지식·PM).

  2. 상태를 중앙 DBGit 파일

    Git 선택

    Git 선택. 이유: 커밋 이력이 곧 감사 로그가 되고, 에이전트가 이미 다룰 줄 안다.

  3. 모델별 전담 제도모델 중립 교대

    모델 중립 선택

    모델 중립 선택. “Claude는 이 부서” 같은 배정은 도구 버전이 바뀌면 깨진다.

  4. 자동 승인 확대사람 승인 게이트

    게이트 유지

    게이트 유지. 자동화를 과감히 쓰려면 경계가 명확해야 한다는 판단.

만든 것

  • 5부서 × 고정 dept/* 브랜치 × 물리 worktree 매핑
  • handoff STATE 머신: IDLE / ACTIVE / BLOCKED / READY_FOR_REVIEW + branch@commit 필수
  • 삼중 신호 판정기: Git 사실 × OS 프로세스(lsof) × handoff 의도 → 8단계 판정(CONFLICT · DIRTY_UNCLAIMED · DIVERGED · STALE_HANDOFF · ACTIVE_VERIFIED · ACTIVE_UNRECORDED · BLOCKED · READY), --self-test 내장
  • 사람 승인 게이트 6종: 외부 발송 · 결제/계약 · 배포/DNS/Secret · 스토어 제출 · PR 병합 · CORE 변경
  • 표시명 계약: 대화에는 한국어 부서명만, 내부 식별자는 진단 시에만

지표 — 전과 후

  1. 충돌 판정

    불가 (대화 의존)8단계 자동 판정

    체계 신설

    sfx_department_monitor.py

  2. 부서 상태

    대화에만 존재handoff 파일 영속화 (branch@commit)

    5부서

    부서 handoff 5종

  3. 위험 경계

    암묵적 관행승인 게이트 6종 명문화

    +6

    CONTROL_TOWER.md

  4. 설계 집중

    산발07-26 하루 8커밋

    집중 증거

    git log

  5. 현재 운영

    —REVIEW 2 · IDLE 3

    실측

    handoff 실측 2026-08-25

  6. 판정기 신뢰

    —–self-test 자가검증 내장

    +1

    스크립트

실패한 가설과 대응

  • 가설 1: “대화창의 자기보고로 상태를 알 수 있다”

    → 실패. 에이전트는 유휴여도 프로세스를 유지한다. → "대화 자기보고는 증거가 아니다"를 판정 규칙으로 명문화하고 OS 신호로 대체.

  • 가설 2: “Claude 앱 세션도 API로 볼 수 있다”

    → 불가. → 무리하게 조회하지 않고 ACTIVE_UNRECORDED 상태를 신설해 정직하게 표기.

  • 교훈

    관측 불가능한 것은 상태에서 "모름"이라도 명시해야 한다. 억지로 채운 상태가 제일 위험하다.

면접용 2분 답변

  1. 상황

    “AI 에이전트 여럿이 같은 repo를 쓰면서 서로의 작업을 덮어쓰는 사고가 실제로 있었습니다.”

  2. 과제

    “속도를 잃지 않고 충돌과 무단 경계 통과를 막는 운영 구조를 설계하는 게 제 몫이었습니다.”

  3. 행동

    “락 대신 5부서 조직을 설계했습니다. 각 부서에 고정 worktree와 handoff 계약을 주고, Git·프로세스·선언의 삼중 신호로 상태를 판정하는 스크립트를 만들었으며, 위험 행동 6종은 사람 승인 게이트로 남겼습니다.”

  4. 결과

    “충돌이 8단계로 자동 판정되고, 부서 상태가 파일로 영속화됐습니다. 지금도 2개 부서가 승인 대기, 3개가 대기 상태로 실제 운영중입니다. 덕분에 자동화를 더 과감하게 쓸 수 있게 됐습니다.”

증거

주장 증거
제도 문서 Solve-for-X/docs/LLM_Wiki/CONTROL_TOWER.md · 05_Atlas/AGENT_OPERATIONS.md
판정기 scripts/ops/sfx_department_monitor.py (–self-test)
운영중 부서 handoff 5종 — REVIEW 2, IDLE 3 (2026-08-25)
설계 집중 2026-07-26 8커밋 (worktree→handoff→readiness)

판정기는 8단계 판정을 내장 자체 검증으로 확인한다. 실제 실행 결과에는 부서별 blocker 와 승인 대기 항목이 그대로 담기므로 여기에는 자체 검증 출력만 싣는다.

$ python3 scripts/ops/sfx_department_monitor.py --self-test
PASS: READY, STALE_HANDOFF, DIRTY_UNCLAIMED, CONFLICT

다음으로

  • 조직 설계는 AI 시대의 핵심 역량 — 도구가 아니라 계약과 판정기를 만드는 일
  • 관측 불가 상태는 "모름"으로 정직하게

이후 이어진 이야기