에이전트 기반 코딩 도구가 실제 리포지토리를 운영할 때 관찰되는 가장 두드러진 현상 중 하나는 설정 파일의 비정상적인 성장이다. 특히 Anthropic의 Claude가 사용하는 CLAUDE.md 파일은 프로젝트 수명 기간 동안 지속적으로 확장되며, 리포지토리가 중단되거나 파일 전체가 한 번에 재작성될 때까지 그 크기가 줄어드는 경향이 없다(출처: arXiv CS.LG RSS 요약). 이러한 현상은 단순한 파일 관리의 부실함을 넘어, 대언어 모델(LLM)이 문맥을 처리하고 유지하는 방식에 내재된 구조적 한계를 드러낸다. 이 현상은 '재해적 기억(Catastrophic Remembering)'이라는 개념으로 설명될 수 있으며, 이는 에이전트가 과거의 의사결정 맥락을 완전히 이해하지 못한 채 지시를 누적시켜 시스템의 복잡성을 폭발시키는 과정을 의미한다.
불완전한 기억과 지시의 누적 구조
에이전트 코딩 시스템에서 CLAUDE.md와 같은 README 파일은 모델에게 프로젝트의 컨텍스트와 제약 조건을 전달하는 핵심 인터페이스이다. 문제는 모델이 과거에 추가된 지시의 '근거(Rationale)'를 충분히 기억하거나 이해하지 못한다는 점에 있다. 새로운 지시를 추가하는 행위는 즉각적인 비용이 저렴하고 실행이 용이하기 때문에 에이전트는 자연스럽게 파일의 하단으로 지시를 덧붙이는 경향을 보인다. 그러나 시간이 지남에 따라 해당 지시가 왜 필요했는지, 어떤 상황을 해결하기 위해 도입되었는지에 대한 맥락은 모델의 문맥 창 밖으로 사라지거나 희석된다.
이러한 맥락의 손실은 지시의 삭제를 극도로 어렵게 만든다. 개발자나 에이전트가 특정 지시를 제거할 때, 그것이 과거의 버그 수정이나 특정 아키텍처 결정에 필수적이었는지 여부를 재확인할 수 있는 정보가 부족하다. 따라서 모델은 '정확성 퇴화(Correctness Regress)'의 위험을 감수하기 싫어하여, 불필요해 보이는 지시조차 삭제하지 않고 유지한다. 결과적으로 파일은 사용되지 않는 레거시 지시들로 가득 차게 되며, 이는 문맥 창(Context Window)의 소모를 가속화하고 모델의 추론 품질을 저하시키는 원인이 된다.
에이전트 에이전트의 의사결정 편향
에이전트 시스템의 동작 원리를 살펴보면, '추가' 행위는 '삭제' 행위에 비해 훨씬 낮은 인지적 및 실행적 부하를 가진다는 것을 알 수 있다. 새로운 규칙을 적용하는 것은 현재 상태를 개선하는 긍정적인 피드백 루프로 간주되는 반면, 기존 규칙을 제거하는 것은 시스템의 안정성을 해칠 수 있는 파괴적인 행위로 인식된다. 이러한 비대칭성은 에이전트가 방어적 프로그래밍(Defensive Programming)의 극단적인 형태로 행동하게 만든다.
모델은 불확실성이 있을 때마다 새로운 지시를 생성하여 이를 문서화하려는 경향이 있다. 이는 단기적으로는 특정 오류를 해결할 수 있지만, 장기적으로는 지시들의 중복과 모순을 초래한다. 예를 들어, 초기 버전에서는 특정 라이브러리 사용을 금지하는 지시가 있었으나, 후속 업데이트에서 해당 라이브러리가 필수적으로 필요해졌을 때, 에이전트는 기존 지시를 명시적으로 삭제하기보다 '예외 사항'을 추가하는 방식을 선호한다. 이처럼 예외의 예외가 누적되면 지시 파일은 논리적으로 모순되거나 해석하기 어려운 상태에 이르게 된다.
기술 부채의 가속화와 문맥 창 고갈
CLAUDE.md의 무한 성장은 단순한 텍스트 파일의 문제를 넘어 프로젝트의 기술 부채(Technical Debt)가 가속화되는 메커니즘으로 작용한다. 대언어 모델의 성능은 제공되는 컨텍스트의 질과 양에 크게 좌우된다. 관련성이 낮은 레거시 지시들이 문맥 창을 차지하게 되면, 모델이 현재 작업에 집중해야 할 핵심 코드와 로직을 처리하는 데 필요한 토큰(Token) 자원이 부족해진다. 이는 모델의 응답 지연 시간 증가와 함께, 코드 생성의 정확도 저하로 이어진다.
특히 대규모 프로젝트에서는 이러한 효과가 기하급수적으로 나타난다. 프로젝트가 커질수록 관리해야 할 제약 조건이 많아지고, 이에 따라 CLAUDE.md에 기록될 수 있는 잠재적 지시의 양도 증가한다. 에이전트가 과거의 모든 결정을 완벽하게 추론하지 못하는 한, 이 파일은 프로젝트의 역사가 아니라 '오류 수정 이력의 나열'로 전락한다. 이는 결국 인간 개발자조차도 파일의 전체적인 구조를 파악하기 어렵게 만들며, 프로젝트 온보딩과 유지보수의 비용을 급격히 상승시킨다.
실패 조건과 운영 최적화의 한계
이러한 현상을 해결하기 위한 일반적인 접근법인 '정기적인 파일 정리'는 에이전트 시스템의 특성상 제한적인 효과만 보인다. 에이전트가 파일을 재작성하더라도, 그것이 과거의 맥락을 완전히 이해하고 최적의 구조로 재구성했다는 보장은 없다. 오히려 중요한 제약 조건이 실수로 삭제되어 새로운 버그를 유발할 가능성이 있다. 따라서 CLAUDE.md의 성장을 완전히 차단하는 것은 현재 기술 수준에서는 거의 불가능에 가깝다.
개발팀은 이러한 실패 조건을 인정하고, 에이전트의 출력을 맹신하지 않는 검증 프로세스를 도입해야 한다. 예를 들어, CLAUDE.md의 변경 이력을 사람이 주기적으로 리뷰하여, 실제로 더 이상 적용되지 않거나 모순되는 지시를 식별하여 수동으로 제거하는 절차가 필요하다. 또한, 지시를 추가할 때 반드시 '왜' 그 지시가 필요한지 명확한 근거를 함께 기록하도록 프롬프트 엔지니어링을 강화하는 것이 중요하다. 이는 미래의 에이전트나 인간 리뷰어가 해당 지시의 유효성을 판단하는 데 필요한 맥락을 제공해준다.
실무 적용을 위한 경계선 설정
실무에서 에이전트 코딩 도구를 도입할 때, CLAUDE.md와 같은 설정 파일의 관리는 전략적 우선순위가 되어야 한다. 무제한 성장을 방치하면 프로젝트의 확장성이 떨어지고 유지보수 비용이 통제 불능 상태가 될 수 있다. 따라서 프로젝트 초기부터 지시 파일의 구조를 모듈화하고, 유효기간이 있는 지시와 영구적인 지시를 분리하는 기준을 마련해야 한다.
또한, 에이전트의 행동을 모니터링하는 도구를 구축하여, 특정 파일이 비정상적으로 빠르게 성장하는지 추적하는 것이 필요하다. 이는 단순히 파일 크기를 측정하는 것을 넘어, 지시들의 중복도와 모순도를 분석하는 수준까지 높아져야 한다. 이러한 모니터링 데이터는 에이전트의 프롬프트를 조정하거나, 프로젝트 아키텍처 자체를 단순화해야 하는 신호로 활용될 수 있다. 궁극적으로 에이전트 코딩의 성공은 도구의 자동화 능력뿐만 아니라, 인간이 이러한 자동화의 한계를 이해하고 적절히 개입하는 능력에 달려 있다.
참고: arXiv CS.LG