Fallow 설정으로 Claude 에이전트의 토큰 낭비와 헛스윙 줄이기
2026년 5월 1일
0
컴퓨터/소프트웨어Comments (0)
Log in to leave a comment
No posts yet
Log in to leave a comment
No posts yet
대규모 모노레포에서 AI 에이전트를 써보면 금방 깨닫습니다. 수만 개의 파일을 무분별하게 읽어대며 지갑을 털어가는데, 정작 내놓는 코드는 맥락을 놓친 쓰레기일 때가 많습니다. 에이전트의 지능을 탓하기 전에 우리가 무엇을 먹이고 있는지부터 봐야 합니다. Rust 기반 코드 분석 도구인 Fallow를 활용해 에이전트가 '진짜 위험한 코드'만 골라 읽게 만드는 구체적인 방법입니다.
에이전트에게 전체 코드베이스를 던져주는 건 무책임합니다. 정보가 너무 많으면 모델은 중간 내용을 까먹는 'Lost in the Middle' 현상을 겪습니다. Fallow의 인덱싱 기능을 활용해 에이전트가 탐색할 범위를 물리적으로 제한해야 합니다.
.fallow.json을 만듭니다. exclude 배열에 **/dist/**, **/tests/**와 레거시 패키지를 때려 넣으세요. 소음을 줄이는 게 우선입니다.rules 섹션에서 high-complexity 임계치를 15 정도로 잡습니다. 에이전트가 인지 복잡도가 높은 모듈부터 훑도록 강제하는 장치입니다.strictBoundaries 옵션을 켭니다. 에이전트가 패키지 경계를 무시하고 의존성을 꼬아버리는 대참사를 막아줍니다.이 설정만으로도 에이전트가 읽는 파일 수가 급감합니다. 실제로 불필요한 파일 읽기를 차단하면 API 비용을 40% 넘게 아낄 수 있습니다.
에이전트가 코드를 직접 한 줄씩 읽으며 문제를 찾게 하지 마세요. 그건 돈 낭비입니다. Fallow가 미리 계산한 구조적 데이터를 요약해서 던져주는 게 훨씬 빠르고 정확합니다.
터미널에서 fallow audit --format json > audit_report.json을 실행해 아키텍처 위반 사항과 복잡도 리포트를 뽑습니다. 이 JSON 데이터를 Claude의 컨텍스트 창에 직접 넣거나 CLAUDE.md 파일에 참조시킵니다. 시스템 프롬프트에는 "수정 전 반드시 리포트의 verdict와 complexity 점수를 확인하고, 점수가 낮은 모듈부터 작업하라"고 적어두면 끝입니다.
개발자가 구구절절 설명할 필요가 없습니다. 에이전트는 이미 데이터로 정리된 우선순위에 따라 가장 썩어있는 코드부터 수술을 시작합니다.
정적 분석만으로는 실제로 돌아가는 코드인지 알 수 없습니다. 참조는 살아있지만 실제로는 아무도 호출하지 않는 '좀비 코드'가 모노레포의 주범입니다. Meta의 SCARF 프레임워크가 증명했듯, 정적 분석과 동적 커버리지를 합쳐야 안전한 삭제가 가능합니다.
V8 커버리지 데이터(NODE_V8_COVERAGE)를 수집한 뒤 Fallow의 runtime-sync 기능을 돌리세요. "정적 참조는 존재하지만 지난 한 달간 한 번도 실행되지 않은 함수" 목록이 나옵니다. 에이전트에게 이 목록을 주고 삭제 승인을 요청하게 만드세요. "이 함수는 6개월간 호출 기록이 없으니 지워도 안전합니다"라는 근거를 에이전트 입에서 듣게 될 겁니다.
에이전트가 짠 코드가 당장 돌아간다고 해서 무턱대고 머지하면 안 됩니다. 장기적으로 가독성을 해치는지 체크해야 합니다. Fallow는 할스테드 복잡도와 논리 경로 수를 조합해 유지보수성 지수(MI)를 계산합니다.
GitHub Actions에 fallow audit --base main --format json 단계를 추가하세요. health_score가 70점 밑으로 떨어지면 빌드를 실패하게 만들면 됩니다.
이 게이트 하나가 시니어 개발자의 리뷰 시간을 매주 2시간 이상 줄여줍니다. 에이전트가 싼 똥을 치우는 게 아니라, 이미 기계가 검증한 고품질 코드의 설계만 검토하면 되니까요. 에이전트와의 협업에서 생산성 차이는 이런 결정론적인 도구를 얼마나 냉정하게 쓰느냐에서 갈립니다.