출시: 여러 Claude Code 에이전트를 하나의 레포에서 돌려봤는데, 각각은 성공했지만 병합된 앱은 매번 망가졌습니다. 해결책을 공유합니다 (오픈 소스)
Launch: I ran several Claude Code agents on one repo. Each one finished green, and the merged app was broken every single time. Here's what fixed it (open source)
핵심 요약
여러 에이전트를 독립된 브랜치에서 실행할 때 발생하는 의미론적 충돌 문제를 해결하기 위해, 에이전트들이 같은 폴더를 공유하게 하여 협업하도록 유도하는 실험적 도구 'Médula'를 소개함.
- 에이전트 협업 — 독립된 브랜치보다 같은 폴더 공유가 에이전트 간 충돌 방지에 효과적임.
- 의미론적 충돌 — Git은 텍스트 충돌만 감지하므로 에이전트가 개별적으로 성공해도 병합 후 앱이 깨질 수 있음.
- Médula 도구 — 변경 사항이 다른 에이전트와 충돌하는지 실시간으로 확인하는 오픈 소스 실험 도구.
- 테스트 전략 — 에이전트 개별 테스트를 맹신하지 말고 병합 후 전체 테스트 스위트를 실행할 것.
여기 딱 한 번만 홍보 글 올릴게. 나 MIT 라이선스 기반의 무료 실험 프로젝트인 Médula 만든 사람이야. 근데 툴보다 중요한 건 여기서 얻은 교훈이니까, 그거부터 얘기할게.
여러 에이전트를 각각 다른 브랜치에서 병렬로 돌려봤을 때 내가 측정한 결과야. 작은 앱 하나에 에이전트 6명을 붙여서 작업 6개를 시켰거든. 그중 두 쌍은 서로 충돌하게 설계했어. 한 놈은 로그인에 2단계 인증을 추가하고, 다른 놈은 예전 로그인 방식 그대로 호출하는 내보내기 기능을 만들게 한 거지. 결과는? 에이전트들은 지들 테스트는 다 통과했다고 보고했어. 텍스트 충돌 두어 개 해결하고 나서 깃(Git)으로 합쳤는데, 앱은 5번 다 박살 났어. 매번 똑같은 테스트 6개가 실패하더라고. 깃은 코드의 의미가 아니라 텍스트만 비교하니까 당연한 결과지.
근데 해결책이 의외였어. 내 툴이 아니라, 에이전트들을 브랜치 나누지 말고 그냥 같은 폴더에서 작업하게 놔두는 거였어. 그렇게 하니까 10번 다 테스트 통과하더라. 서로가 뭘 했는지 보고 알아서 적응하니까. 심지어 단순한 파일 잠금(file lock)만으로도 충분했어.
당장 내일부터 써먹을 수 있는 팁 3가지 알려줄게.
-
"에이전트별 테스트 통과"라는 말 절대 믿지 마. 배포하기 전에 합쳐진 결과물로 전체 테스트 스위트 무조건 돌려봐.
-
작업 간의 연관성을 확인하는 테스트를 몇 개 짜놔. 예를 들면 "새 로그인 방식에서도 내보내기 기능이 작동하는가?" 같은 거. 기능별 테스트는 다 통과해도 앱은 박살 나 있을 수 있거든.
-
에이전트들이 서로 작업 내용을 볼 수 있다면 그렇게 해. 내가 돌려보니까 서로 메시지 주고받을 수 있게 해주니까, 누가 시키지도 않았는데 지들끼리 "야 이거 건드리면 터져"라고 경고하더라.
Médula가 추가로 하는 일은 이거야. 뭘 쓰기 전에 빠른 결정 모델한테 "이거 다른 에이전트 작업이랑 충돌 안 나냐?"라고 물어보는 거지. 단순 파일 잠금이랑 비용은 똑같은데($1.65/회), 무해한 작업은 안 막으면서 진짜 충돌만 기가 막히게 잡아내더라고. 마법은 아니야. 빠른 모델이 실제 쓰기 작업의 61%는 확신을 못 해서 느린 LLM한테 넘겼거든. 그리고 설정당 테스트 횟수도 1~5번 정도로 적고.

너희는 에이전트 여러 명 돌릴 때 어떻게 해? 브랜치 따로 파? 아니면 한 폴더에 몰아넣어? 그것도 아니면 그냥 한 명씩 순서대로 돌려?


