지난 포스팅에서 개발 환경을 모노레포로 통합하여, 동일한 Claude 세션 안에서 앱과 서버들을 한꺼번에 개발할 수 있게 했다고 이야기했다. 덕분에 명세 동기화 문제나 연동 디버깅의 번거로움이 크게 줄었다.
그런데 이렇게 앱과 여러 서버를 하나의 세션에서 다루다 보면, 또 다른 효율 저하 요인이 생긴다. 바로 컨텍스트 사이즈 제약이다.
컨텍스트 압축이라는 새로운 문제
요즘은 Max 요금제 기준으로 기본 1MB 컨텍스트를 제공해서 예전만큼 빡빡하지는 않다. 하지만 불과 두어 달 전까지만 해도 컨텍스트 크기가 지금보다 훨씬 작았다(그래도 다른 서비스보다는 컸다). 그래서 한꺼번에 많은 코드를 분석시키고 대화를 조금만 이어가면, 빈번한 컨텍스트 압축이 발생하곤 했다.
컨텍스트 압축이 일어나면 대화의 맥락이 흐려지기 시작한다. 방금 전까지 이해하고 있던 내용을 다시 설명해야 하거나, 이미 정한 구현 방향을 잊고 다른 길로 가기도 한다. 모노레포로 프로젝트를 합친 직후에 이 문제가 두드러지게 나타났다.
해결: 에이전트 팀 구성하기
이 문제를 줄이기 위해 Claude Code가 지원하는 서브에이전트(Sub-agent) 기능을 적극적으로 활용하기로 했다. 앱과 각 서버를 담당할 전문 에이전트를 만들고, 이들을 총괄할 팀 리더 에이전트를 따로 두는 방식이다. 말 그대로 "에이전트 팀"을 꾸리는 셈이다.
페르소나 구성은 대략 이렇게 잡았다.
팀 리더 └─ 제품 전체 기획 / 각 개발자에게 업무 지시 앱 개발자 └─ 모바일 앱 개발에 능숙한 개발자 서버#1 개발자 └─ Node.js 개발에 뛰어난 개발자 서버#2 개발자 └─ Python 개발자
이렇게 담당 프로젝트의 특성에 맞춰 각 에이전트의 페르소나를 정의한다. 테스터 에이전트를 따로 두는 분들도 있는데, 나는 별도로 분리하지 않았다. 서브에이전트 생성은 Claude Code에서 프롬프트로 설정할 수 있고, 추가한 뒤에는 세션을 새로 시작하는 게 좋다.
팀 리더를 기본 에이전트로
중요한 포인트는 세션의 기본 에이전트를 팀 리더로 설정하는 것이다. 이렇게 해두면 나는 항상 팀 리더와만 대화하면 된다.
새로운 기능을 기획해달라고 하면, 팀 리더가 전체 소스를 파악한 뒤(필요한 경우 해당 파트 담당 에이전트를 백그라운드로 호출한다) 기획서를 작성한다. 실제 개발을 지시하면 팀 리더가 작업을 적절히 분배해서 각 담당 에이전트에게 맡긴다. 동시에 진행 가능한 부분은 병렬로 작업이 이루어진다.
컨텍스트가 가벼워진다
에이전트 팀을 사용하면서 얻게 된 가장 큰 장점은 기본 세션의 컨텍스트가 훨씬 가볍게 유지된다는 점이다.
서브에이전트를 사용하지 않으면, 대화 도중 코드를 수정하기 위해 읽고 쓰는 모든 과정이 현재 세션의 컨텍스트를 잡아먹는다. 반면 에이전트 팀 구조에서는 실제 코딩 작업은 개별 서브에이전트가 그때그때 실행되므로, 서브에이전트의 컨텍스트는 생성되었다가 사라진다. 기본 세션에는 대화의 맥락을 유지하는 데 필요한 정보만 남는다.
결과적으로, 에이전트 팀을 도입한 이후로는 컨텍스트 압축을 거의 경험하지 않게 되었다. 모노레포로 개발 환경을 통합하면서 생겼던 부작용이, 또 하나의 구조 개선으로 자연스럽게 해소된 셈이다.
마치며
바이브 코딩을 하다 보면, 문제를 만나고 이를 해결하는 과정에서 개발 구조가 점점 정교해진다. 모노레포로 코드를 모으고, 에이전트 팀으로 역할을 나누는 이 두 가지 변화는 얼핏 상반된 방향처럼 보이지만, 결국 하나의 목적을 향한다. AI가 가장 효율적으로 일할 수 있는 환경을 만드는 것이다.
직접 코드를 작성하지 않는 대신, 팀을 설계하고 일하는 방식을 정돈한다. 어쩌면 이것이 바이브 코딩 시대의 개발자가 진짜로 고민해야 할 부분이 아닐까.
🤝 AI와 함께 춤을 시리즈
(5) 에이전트 팀으로 컨텍스트 압축 해결하기 ← 현재 글
✍️ 이 글은 Claude의 도움을 받아 다듬어졌습니다.
댓글
댓글 쓰기