거대 프로젝트는 항상 실패한다… 앤스로픽(Anthropic)이 그 문제를 해결하는 방법

AAI LABS
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00요즘 작은 프로젝트를 배포하는 건 정말 쉬워졌지만, 코드 베이스가 커지고
00:00:04여러 의존성이 생기기 시작하면 에이전트들은 제대로 작동하지 않게 됩니다. 문제는
00:00:09오류나 이슈를 추적하기 훨씬 더 어려운 비주류 언어를 사용할 때 더욱 심각해집니다.
00:00:14사람들이 놓치는 점은 대규모 코드 베이스에서 에이전트를 작업시키기 전에
00:00:19적절한 조치를 취해야 한다는 것입니다. Anthropic이 바로 여기서 다루는 내용이죠.
00:00:23그들은 프로젝트가 확장될 때 어떻게 다뤄야 하는지 설명합니다. 저희 스스로도
00:00:28실제 프로젝트에서 사용해 보고 꽤 도움이 되었던 내용이라 매우 통찰력이 있었습니다. 대규모
00:00:33규모로 프로젝트를 설정하는 방법을 자세히 알아보기 전에, 먼저 에이전트가
00:00:38일반적으로 코드를 어떻게 탐색하는지 이해해 봅시다. 두 가지 방식이 있습니다. 첫 번째는 RAG 기반입니다. 이는
00:00:43전체 코드 베이스를 임베딩하고 쿼리 시점에 관련 청크를 검색하는 방식입니다. 쿼리를 기반으로
00:00:48데이터베이스의 코드와 쿼리를 일치시키는 의미론적 검색을 실행합니다. 유사도 매칭을 통해
00:00:53모델이 분석하고 다음 작업을 이어갈 특정 컨텍스트를 로드합니다. 이는 소규모 앱에는
00:00:58작동할지 몰라도 대규모 앱에서는 지속 가능하지 않습니다. 왜냐하면 데이터를 유지 관리하는 중앙
00:01:03데이터베이스가 있는데, 데이터베이스에 파일이 너무 많으면 의미론적 매칭이
00:01:08문제가 될 수 있기 때문입니다. 이것이 바로 코딩 에이전트가 더 이상 존재하지 않는 모듈을 환각하는 이유입니다.
00:01:14정확히 이러한 문제들 때문에 RAG 기반 방식은 완전히 대체되었습니다. 다른
00:01:18유형은 파일 시스템 기반 탐색인데, 이는 현재 Claude Code와 대부분의 다른 에이전트들이 사용하는 방식입니다. 이것은
00:01:24소프트웨어 개발자들이 실제로 탐색하는 방식과 비슷합니다. 에이전트는 bash 도구를 사용하여 ls 명령어로
00:01:29파일을 찾고, grep으로 필요한 정확한 코드 스니펫을 좁혀서 컨텍스트로 불러옵니다.
00:01:34Bash 도구는 불필요한 스니펫으로 컨텍스트 창을 오염시키지 않기 때문에 효과적입니다.
00:01:39그래서 이 모드는 RAG 기반 시스템이 실패하던 모든 방식을 처리하며, 거의 모든
00:01:44코딩 에이전트들이 이제 이 방식으로 탐색합니다. 여기서 핵심은 모델이 스스로 아무리 발전하더라도
00:01:49모델 혼자서만으로는 얼마나 좋은 코드를 생산할 수 있는지가 결정되지 않는다는 것입니다.
00:01:54작동하는 시스템을 만드는 데 있어 훨씬 더 중요한 것은 코딩을 위해 어떤 하네스를 사용하느냐입니다.
00:01:59따라서 Claude Code, Codex, Gemini CLI 중 어떤 도구를 사용하든, 여러분이 얻는 결과물은
00:02:05강력한 모델에 의해서만 결정되지 않습니다. 모델의 능력과 결합한 하네스에도 달려 있습니다.
00:02:10하네스는 약한데 모델만 강하다면, 모델 혼자 강한 것은 의미가 없습니다.
00:02:15이제 Claude Code나 Codex 같은 에이전트들이 강력한 내장 하네스를 가지고 있다는 건 알지만, 그것들에
00:02:19전적으로 의존할 필요는 없습니다. 프로젝트에 더 잘 맞도록 맞춤형 하네스를 설정해야 합니다.
00:02:24오픈 소스 하네스도 있는데, 무언가를 만들 때는 그런 것들을 사용할 수 있지만
00:02:29대규모 프로젝트를 개발할 때는 이러한 하네스들이 지속되지 않을 수 있어서 어차피 직접 설정해야 할 것입니다.
00:02:33여러분 스스로 만들거나 공유된 채팅에서 가져온 모든 에이전트 하네스에는
00:02:38다섯 가지 요소가 포함되어 있으며, 이는 Claude의 작업과 에이전트 루프가 환경적으로 어떻게
00:02:42설정되어 있는지에 집중되어 있습니다.
00:02:47각각 살펴볼 것입니다. 에이전트 하네스의 첫 번째 요소는 세션 시작 시 로드되어
00:02:53전체 세션 동안 메모리에 유지되는 Claude.md 파일입니다. 이 파일은 Claude에게
00:02:57코드 베이스에 대한 지식 기반을 제공하기 때문에 정말 중요합니다. 이미 채널에서 따로
00:03:02적절한 Claude.md를 작성하고 구조화하는 방법에 대한 영상을 다뤘으니 확인해 보실 수 있습니다.
00:03:07코드 베이스가 커지면 Claude.md는 중요해집니다. 이 파일에 시간을 투자하지 않으면
00:03:12프로젝트는 규모가 커질 때 실패할 수밖에 없습니다. 이 파일은 프로젝트 규칙, 코드 베이스 지식,
00:03:17그리고 단일 측면이 아니라 전체 코드 베이스에 적용되는 규칙들을 위한 것입니다. 코드 베이스가
00:03:22작다면 괜찮을 수 있지만, 여러 아키텍처로 확장되는 순간 문제가 됩니다.
00:03:26따라서 코드의 모든 측면을 하나의 파일에 집어넣는 것은 매우 비효율적입니다. 지금 당장
00:03:32필요 없는 정보로 에이전트의 주의를 분산시킵니다. 그래서 Claude.md는 짧게 유지해야 합니다.
00:03:37이상적으로는 약 300줄 정도가 좋고, 여러 영역이 있는 모노 레포를 운영한다면 각 하위 디렉토리에
00:03:43동일한 규칙을 따르는 고유한 Claude.md를 두어야 합니다. 에이전트는 해당 디렉토리에서 작업할 때
00:03:48이를 점진적으로 로드하므로 루트 파일에서 모든 것을 가져오는 대신 더 집중된 지침을
00:03:53하위 리포 파일들로부터 받게 됩니다. 이 파일은 한 번 쓰고 영원히 의존하는 것이 아닙니다.
00:03:58프로젝트가 진화함에 따라뿐만 아니라 모델 지능이 진화함에 따라 능동적으로 유지 관리해야 합니다.
00:04:04Sonnet 4.5에 적용되는 원칙은 Opus에는 분명 적용되지 않을 것입니다. 더 최신 모델들은
00:04:09이전 지침에서 실패하던 패턴을 극복하도록 훈련되었습니다. 따라서 동일한
00:04:14지침을 모든 모델에 주는 것은 토큰 낭비일 뿐입니다. 하지만 넘어가기 전에, 저희의
00:04:19스폰서인 CleanMyMac에 대해 잠시 말씀드리겠습니다. 저희처럼 AI 도구를 사용하신다면, Mac에 정크 파일, 오래된 빌드,
00:04:26캐시, 손상된 다운로드 파일이 조용히 쌓이고, 느려지기 전까지는 눈치채지 못합니다. 저는 매주 CleanMyMac을 실행하는데
00:04:31단 한 번의 스캔으로 15기가 넘는 용량을 확보합니다. 이것으로 한 번 클릭하면 Mac이 다시 새것처럼 됩니다.
00:04:37CleanMyMac은 MacPaw에서 제작했고, Apple의 인증을 받았으며 17년 동안 2,900만 명 이상의 사람들이 신뢰해 왔습니다.
00:04:42정리 기능은 20가지 이상의 정크 파일을 제거하여 신경 쓰지 않아도 시스템이 빠르게 유지됩니다. SpaceLens는
00:04:48드라이브를 시각적으로 매핑하여 무엇이 공간을 차지하고 있는지 알 수 있게 해 줍니다. iCloud, Google Drive, Dropbox까지
00:04:53로컬에서 스캔하여 클라우드 스토리지를 낭비하는 동기화되지 않은 파일들을 찾아냅니다. 그리고 Moonlock을 통해 99%의 알려진
00:04:59악성코드를 차단하므로 Mac이 깨끗하고 안전하게 유지됩니다. Mac은 여러분이 아니라 Mac이 여러분을
00:05:03따라와야 합니다. 코드 'AI Labs'를 사용해 20% 할인받고 CleanMyMac을 7일간 무료로 체험해 보세요.
00:05:09이제 훅(Hooks)은 이런 대규모 코드 베이스로 작업할 때 도움이 되는 또 다른 중요한 것입니다.
00:05:14이들은 기본적으로 에이전트가 특정 조건에 따라 특정 작업을 수행하도록 하는 스크립트입니다.
00:05:19보통 에이전트의 행동을 제어하는 셸 스크립트로 작성된 다양한 종류의 훅을
00:05:23설정할 수 있습니다. 예를 들어, 세션 시작 훅을 설정하면 각 세션
00:05:28시작 시 Claude가 컨텍스트를 위해 로드할 파일과 같이 원하는 정보를 로드할 수 있습니다. 종료 코드
00:05:33와 함께 훅을 사용하여 오류 메시지를 Claude에게 다시 전달하여 반복 작업할 수도 있습니다. 도구 사용 전
00:05:38훅도 다른 유형입니다. 에이전트가 설정한 도구를 사용할 때마다 훅이 명령을 실행합니다.
00:05:43이를 사용하여 Claude가 건드리지 않아야 할 파일을 편집하지 못하게 할 수 있습니다. 하지만
00:05:48가장 중요한 훅 중 하나는 세션이 끝난 후 실행되는 정지 훅입니다. 이는 Claude가 지금까지
00:05:53수행한 작업에 대해 반성하도록 독려합니다. 이를 통해 세션에서 얻은 교훈으로 Claude.md를 업데이트하여
00:05:58같은 문제가 다시 발생하지 않도록 할 수 있습니다. 린팅, 테스트 실행,
00:06:03그리고 많은 다른 목적을 위해 훅을 설정할 수 있습니다. 이 모든 것을 함께 사용하면 대규모 코드 베이스에 큰 도움이 됩니다.
00:06:08훅은 Claude.md의 지침만으로는 충분하지 않을 수 있는 부분에서 에이전트가 주의해야 할 작업을
00:06:13강제합니다. Claude.md의 지침은 너무 집중해야 할 것들이 많아 에이전트의 집중력 범위 내에서 흐려질 수
00:06:19있지만, 훅은 실제로 Claude가 행동하도록 강제합니다. 워크플로우의 세 번째
00:06:23요소는 기술(Skills)입니다. 이는 필요할 때마다 로드되고, 모든 세션에 존재하여
00:06:29불필요하게 부풀리지 않는 skills.md 파일들과 기타 그룹화된 파일들의 세트입니다. 기술은
00:06:34점진적 공개를 사용하고 워크플로우에 필요한 특정 전문 작업을 수행하도록 조정되기 때문에 중요합니다.
00:06:40그것들은 에이전트가 이미 할 수 있는 무언가에 대한 지식을 확장합니다. 만약 여러분이
00:06:44이 지침들을 Claude.md에 넣으면 불필요한 토큰만 소비할 뿐입니다. 프로젝트별
00:06:49지침은 에이전트가 실제로 필요할 때만 로드되므로 기술에 들어가야 합니다.
00:06:54기술을 특정 경로로 범위 지정하여 코드의 관련 부분에서만 활성화되게 하고 그
00:06:59외부에서는 컨텍스트를 부풀리지 않게 할 수도 있습니다. 예를 들어 배포 영역에서
00:07:04작업 중이라면 해당 디렉토리의 경로를 기술 설명에 지정할 수 있으므로 다른 곳에서
00:07:09작업할 때는 기술이 절대 로드되지 않습니다. 기술을 설정하려면, 이제 Claude 코드에 내장된
00:07:14기술 생성기를 호출하기만 하면 됩니다. 이전에는 GitHub에서 오픈 소스로 가져와야 했지만 이제는 논의 세션 동안
00:07:19질문에 답변하기만 하면 됩니다. 세션을 다시 시작하면 액세스할 수 있는 여러분의 정확한 요구에 맞춘 기술을 갖게 될 것입니다.
00:07:23기술 외에도 플러그인을 사용할 수 있습니다. 플러그인은
00:07:29단일 다운로드 및 배포 가능한 패키지로 제공되는 기술, 훅, MCP의 번들입니다. 그래서
00:07:34이 플러그인을 설치하는 사람은 누구든지 즉시 사용할 수 있는 정확히 동일한 컨텍스트와 구성을
00:07:39제공받게 됩니다. 그러니 팀으로 작업 중이라면 배포할 여러분만의 플러그인을 만드는 것이
00:07:44매우 중요해집니다. 모든 설정을 한곳에 하면 그 정보를
00:07:49조직 전체에 배포하여 팀원들이 여러분과 동일한 컨텍스트를 갖도록 할 수 있습니다. 직접 플러그인을 만들고
00:07:54수동으로 업로드하거나 GitHub 리포지토리와 동기화하여 관리하면 됩니다.
00:07:59플러그인 명령어를 사용하여 모든 플러그인을 설치할 수 있고,
00:08:03마켓플레이스를 탐색하고 원하는 것을 설치할 수 있습니다. 'add plugin marketplace' 명령어를 사용하여
00:08:08다른 마켓플레이스를 추가할 수도 있습니다. Claude 코드에는
00:08:13프론트엔드 디자인, 코드 리뷰, 코드 단순화, Playwright 등 모두 Claude 공식 마켓플레이스에서 제공하는
00:08:18여러 플러그인이 번들로 제공됩니다. 이를 워크플로우에 바로 사용할 수 있고 직접 만들 수도 있습니다.
00:08:22많은 사람이 같은 프로젝트에서 작업하므로 플러그인은 대규모 프로젝트에 특히 중요하며,
00:08:27그들 간에 컨텍스트를 배포하는 것은 중요합니다. 그러니 각자 기술과
00:08:32다른 구성 요소를 따로 다운로드하게 하는 대신, 플러그인을 바로 설치할 수 있습니다. 또한
00:08:36저희 콘텐츠가 마음에 드신다면 'hype' 버튼을 누르는 것을 고려해 주세요. 저희가 이런 콘텐츠를 더 많이 만들고
00:08:41더 많은 사람에게 다가가는 데 도움이 됩니다. 에이전트 하네스에서 중요하지만 충분히
00:08:46언급되지 않는 또 다른 것은 LSP입니다. 언어 서버 프로토콜(LSP)은 기본적으로 에이전트에게
00:08:52개발자가 IDE에서 가지는 것과 동일한 종류의 탐색 기능을 제공하는 통합입니다. 거의 모든 프로그래밍 언어에 대한 LSP가 있으며,
00:08:58대중적인 언어에는 불필요할지 몰라도 비주류 언어에서는 중요해집니다. 그것은
00:09:03에이전트에게 프로그래밍 언어에 대한 지능을 주어 사람이 하는 것처럼 코드 베이스를 탐색할 수 있게 합니다.
00:09:08예를 들어, 사람이 함수를 찾고 싶을 때 그 함수가 어디서 가져오는지 확인하고 해당 파일로 이동하여 함수 정의를 확인합니다.
00:09:13그것이 그들이 실제로 필요한 정확한 소스를 찾는 방식입니다. LSP 없이는 에이전트가
00:09:17텍스트 기반으로 패턴 매칭을 하여 잘못된 심볼에 도달할 가능성이 높습니다. 언급했듯이 Claude 코드는
00:09:22파일 시스템 기반 접근 방식을 bash 명령어로 사용하므로, LSP가 없으면 파일명과 텍스트로
00:09:28패턴 매칭을 할 뿐 더 깊은 지능으로 탐색하지 않습니다. 이제 에이전트가
00:09:33오류를 아직 경험하지 않았다고 해서 LSP가 필요 없다고 가정하지 마세요. 프로젝트 작업을 시작하기 전에도 LSP를 설정하세요.
00:09:38코드를 작성하기 전에도 사용할 모든 언어에 대해 설정하여 에이전트가
00:09:44그것들로 작업하는 방법에 대한 정보를 이미 갖추도록 하세요. 에이전트가 패턴을 추측하게 두는 대신, LSP를 설치하면
00:09:49단순한 텍스트가 아닌, 개발자가 생각하는 방식대로 코드를 읽고 편집할 수 있게 됩니다. 이제 이미 아시다시피, MCP는
00:09:55에이전트를 외부 도구와 연결하는 데 사용되지만, MCP를 프로젝트 내부의
00:10:00도구, 데이터 소스, API 또는 에이전트가 접근할 수 없는 다른 시스템과 연결할 수도 있습니다.
00:10:05이를 위해서는 자신만의 MCP를 만들고 팀원들이 쉽게 사용할 수 있도록 제공해야 합니다. MCP는
00:10:10필요할 때 로드되는 기존 설정에 대한 확장이며, 그것들이 제공하는 도구는 에이전트가
00:10:16사용할 수 있게 됩니다. 대규모 코드 베이스에서 작업 중이라면, 문서 가이드 역할을 하거나,
00:10:20분석을 검색하거나 심지어
00:10:25변경을 가할 수 있는 등 많은 목적에 부합하는 MCP를 구축할 수 있습니다. 이것들은 여러분만의 코드 베이스가 있다면
00:10:31에이전트가 방대한 문서를 뒤지는 대신 내부 정보와 자연스럽게 상호 작용하고,
00:10:35도구를 호출하고 그곳에서 변경 사항을 만들 수 있게 해주기 때문에 유용합니다.
00:10:40이것은 에이전트에게 필요한 정보와 시스템에 대한 더 직접적인 액세스를 제공합니다.
00:10:45하지만 MCP를 구성하려면 앱의 기본 설정이 이미 작동 중이어야 합니다.
00:10:51그 전에 MCP를 구성하면 문제가 발생할 수 있고 MCP 구현이
00:10:57실패할 수 있습니다. 따라서 먼저 앱이 제대로 작동하는지 확인한 다음 MCP를 만들고 에이전트가
00:11:02더 많은 지능과 더 나은 정보로 프로젝트와 상호 작용하게 하세요. 만들어야 할 또 다른 것은
00:11:06하위 에이전트(Subagents)입니다. 하위 에이전트는 자체적인 격리된 컨텍스트 창을 포함하며 메인 오케스트레이터 에이전트가
00:11:12위임한 작업을 수행한 다음 최종 결과물만 부모에게 반환합니다.
00:11:17이것은 에이전트 하네스의 핵심 부분이며, 하위 에이전트를 적절하게 사용하면 컨텍스트를
00:11:22불필요하게 부풀리지 않으며 메인 에이전트의 컨텍스트를 불필요한 정보로 채우지 않기 때문에 컨텍스트 활용이
00:11:28훨씬 더 효율적입니다. 하위 에이전트는 호출될 때만 실행되고 결과만 반환합니다.
00:11:33Claude는 스스로 하위 에이전트를 생성하지만, 여러분이 직접 하위 에이전트를 구성할 수도 있습니다. 여러분은
00:11:38그들을 위해 원하는 도구와 모델을 구성하고, 그들이 어떻게 운영되어야 하는지에 대한 지침을 제공하여
00:11:42자신의 워크플로우를 위한 특정 에이전트를 만들 수 있습니다. Claude의 기존 에이전트를
00:11:47재정의할 수도 있습니다. 예를 들어, 기존의 탐색 지침을 재정의하는 자신만의 에이전트를 만들고
00:11:52디렉토리를 어떻게 탐색해야 하는지에 대한 설명을 제공할 수 있습니다. Claude의 자체
00:11:57탐색 에이전트는 모든 종류의 코드 베이스에 대해 일반화되어 있지만, 직접 구성하면 커스텀 에이전트가
00:12:03기본값을 재정의합니다. 이는 에이전트에게 프로젝트 파일들이 어떻게
00:12:08구조화되어 있는지에 대한 더 많은 컨텍스트를 제공하므로, Claude.md의 정보에만 의존하여 파일을 탐색하는 데 토큰을 낭비하지 않습니다.
00:12:13따라서 메인 에이전트가 전체 프로젝트 실행을 제어하게 하고 실제 작업은
00:12:18하위 에이전트에게 맡길 수 있습니다. 하위 에이전트는 에이전트 위임을 통해 작업을 병렬화할 수 있으므로
00:12:23모든 것을 순차적으로 하는 것보다 워크플로우를 훨씬 더 매끄럽고 빠르게 만듭니다.
00:12:28대규모 코드 베이스를 탐색할 때 따라야 할 몇 가지 더 많은 관행이 있습니다.
00:12:32이는 Claude가 대규모 코드 베이스를 탐색하는 능력이
00:12:36올바른 컨텍스트를 찾을 수 있는지에 의해 결정되기 때문에 중요합니다. 그러니 Claude가 올바른 컨텍스트를 얻도록 보장하여
00:12:41에이전트가 너무 적게 혹은 너무 많이 얻지 않고 집중 상태를 유지하도록 하는 것이 중요합니다. Claude.md를
00:12:46분리하는 것 외에도, 테스트들을 모두 한곳에 두는 대신 각 하위 디렉토리별로 분리해야 합니다.
00:12:51이렇게 하면 세그먼트화되어 유지되고, 많은 테스트를 한 번에 실행할 때 발생하는 시간 초과 문제를 피하며,
00:12:56더 효과적으로 범위를 지정할 수 있습니다. 프로젝트 구조를 매핑하는 별도의 코드 베이스 맵 파일을
00:13:01만들 수도 있습니다. React나 Next.js 같은 일반적인 앱으로 작업 중이라면 에이전트들이
00:13:06그런 것들에 대해 광범위하게 훈련되었기 때문에 이것을 건너뛸 수 있습니다. 하지만 C++와 같은 비주류 언어에서는
00:13:12코드 베이스 맵이 필요합니다. 그것은 에이전트에게 각 파일이 어디에 있는지 알려주는 목차 역할을 하여
00:13:16오른쪽 파일을 좁히기 위해 많은 bash 명령어를 실행하는 대신 사용할 수 있습니다. 마지막으로
00:13:21가장 중요한 것은 모델이 진화함에 따라 몇 달마다 설정을 검토하는 것입니다. 새로운 모델이 더 이상 필요하지 않은
00:13:26지침, 훅, 또는 다른 것들을 제거하세요. .gitignore와 같은 .ignore 파일을 사용하여 에이전트나 버전 제어가
00:13:32건드리지 않기를 원하는 파일들은 그대로 두세요.
00:13:37이렇게 하면 여러분의 설정이 대규모 앱에서도 지속될 수 있을 것입니다. 이제 이 비디오에 대한 리소스는
00:13:41AI Labs Pro에서 이 비디오와 이전의 모든 비디오에 대해 찾을 수 있으며, 거기서 다운로드하여
00:13:46여러분만의 프로젝트에 사용할 수 있습니다. 저희가 하는 일에서 가치를 발견했고 채널을 지원하고 싶다면
00:13:51이것이 가장 좋은 방법입니다. 설명에 링크가 있습니다. 이것으로 이번 비디오의 끝에 도달했습니다.
00:13:55채널을 지원하고 저희가 이런 비디오를 계속 만들 수 있도록 돕고 싶다면
00:14:00아래의 super thanks 버튼을 사용하여 그렇게 할 수 있습니다. 항상 시청해 주셔서 감사하며 다음 영상에서 뵙겠습니다.

Key Takeaway

대규모 프로젝트에서 코딩 에이전트의 성공은 단순한 모델 성능이 아니라, Claude.md, 훅, LSP, 기술, MCP, 하위 에이전트를 포함한 커스텀 하네스의 체계적인 설정에 달려 있다.

Highlights

  • 대규모 코드 베이스에서 에이전트 작업 시 RAG 기반 탐색은 데이터 관리 문제와 환각 현상으로 인해 비효율적이다.

  • Claude Code와 같은 현대적 에이전트는 bash 도구를 사용하여 파일 시스템을 직접 탐색하는 방식을 채택한다.

  • 효과적인 에이전트 하네스(harness)를 구성하기 위해 Claude.md 파일을 약 300줄 내외로 유지하고 하위 디렉토리별로 세분화해야 한다.

  • 에이전트가 특정 작업을 강제하도록 세션 시작, 도구 사용 전, 세션 종료 등 단계별 셸 스크립트 훅(hooks)을 설정할 수 있다.

  • 언어 서버 프로토콜(LSP)을 설정하면 에이전트가 텍스트 패턴 매칭이 아닌 개발자 방식의 구조적 코드 탐색을 수행할 수 있다.

  • 하위 에이전트(subagents)를 사용하면 메인 컨텍스트를 오염시키지 않고 특정 작업을 병렬로 처리하여 워크플로우 속도를 높일 수 있다.

Timeline

에이전트 탐색 방식의 전환

  • RAG 기반 탐색은 데이터베이스의 대규모 파일 유지 관리와 의미론적 매칭 한계로 대규모 프로젝트에서 실패한다.
  • 파일 시스템 기반 탐색은 bash 도구의 ls 및 grep 명령어를 활용하여 소프트웨어 개발자의 실제 탐색 방식과 일치시킨다.
  • 강력한 모델이라도 이를 지원하는 하네스가 부족하면 실제 작동하는 시스템을 만드는 데 한계가 있다.

과거 코드 에이전트가 주로 사용하던 RAG 방식은 데이터베이스와 매칭 과정에서 환각을 유발했다. 반면, Claude Code와 같은 최신 시스템은 파일 시스템을 직접 읽는 방식으로 전환하여 컨텍스트 오염을 방지한다. 모델의 지능만큼이나 이러한 탐색 환경을 구성하는 하네스의 품질이 결과물을 결정한다.

에이전트 하네스 핵심 요소

  • Claude.md 파일은 프로젝트 규칙과 지식을 제공하며, 모노 레포 구조에서는 하위 디렉토리별로 분산 배치하는 것이 효율적이다.
  • 훅(hooks)은 세션 시작, 작업 종료, 도구 사용 전 단계에서 에이전트의 행동을 스크립트로 강제 제어한다.
  • 기술(Skills)은 필요할 때만 로드되는 모듈식 지침으로 컨텍스트 토큰 소비를 최소화한다.
  • 플러그인은 기술, 훅, MCP를 번들로 묶어 팀 전체가 동일한 구성을 공유하게 만든다.

대규모 프로젝트를 위한 에이전트 하네스는 다섯 가지 요소로 구성된다. 특히 Claude.md는 300줄 정도의 핵심 지침을 유지하고, 프로젝트 진화에 따라 능동적으로 관리해야 한다. 훅과 기술, 플러그인을 결합하면 팀원 간의 컨텍스트 일관성을 확보하고 불필요한 토큰 낭비를 줄일 수 있다.

고급 최적화 및 구조 관리

  • LSP 설정은 에이전트가 텍스트 기반이 아닌 구조적 심볼 기반으로 코드를 탐색하게 하여 정확도를 높인다.
  • MCP(Model Context Protocol)는 외부 데이터 소스나 프로젝트 내부 도구와 에이전트를 연결한다.
  • 하위 에이전트는 컨텍스트를 분리하여 작업을 병렬화하고 메인 오케스트레이터의 부담을 줄인다.
  • 코드 베이스 맵 파일을 사용하면 비주류 언어 프로젝트에서도 에이전트가 파일 위치를 효과적으로 파악할 수 있다.

에이전트의 지능을 극대화하려면 LSP와 MCP를 활용해 시스템 내부에 직접 접근해야 한다. 또한 하위 에이전트를 통해 작업을 위임함으로써 컨텍스트 활용을 최적화할 수 있다. 마지막으로 정기적인 설정 검토와 테스트 격리 등을 통해 코드 베이스 규모가 커져도 시스템이 지속 가능하도록 관리해야 한다.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video