https://www.webdeveducation.com/when-to-use-custom-agents-github-copilot/
GitHub Copilot Chat은 단순한 코딩 도우미에서 훨씬 더 강력한 도구로 빠르게 진화했습니다. 에이전트, 프롬프트, 도구가 도입되면서 개발자는 이제 프로젝트 내에서 Copilot이 복잡한 작업을 수행할 수 있도록 구조화된 워크플로를 설계할 수 있습니다.
자주 제기되는 질문 중 하나는 다음과 같습니다.
맞춤 프롬프트만 사용하는 대신, 언제 맞춤 에이전트를 생성해야 할까요?
언뜻 보기에는 불필요해 보일 수 있습니다. 이미 맞춤 프롬프트(/create-instructions)가 있다면, 기본 Copilot 에이전트를 사용해 실행하면 되지 않을까 생각할 수 있습니다.
답은 컨텍스트 제어, 도구 접근, 그리고 토큰 효율성에 있습니다.
기본 에이전트의 문제
기본 Copilot Chat 에이전트는 현재 환경에서 사용 가능한 모든 도구에 접근할 수 있습니다.
예를 들면 다음과 같습니다.
- 파일 시스템 액세스
- 터미널 명령
- 웹 접근
- MCP 도구
- 맞춤 에이전트, 프롬프트, 지침에 대한 정보
- 그 외 다양한 기능
이것은 강력해 보이고 실제로도 강력합니다. 하지만 동시에 미묘한 문제를 일으킵니다.
Copilot이 작업을 수행할 때는 사용 가능한 도구들을 함께 고려해야 합니다. 각 도구에는 메타데이터, 설명, 사용 지침이 포함되며, 이 정보가 컨텍스트 창에 삽입됩니다.
즉, 모델은 실제로 필요한 것보다 훨씬 더 많은 정보를 처리하게 됩니다.
도구가 많아질수록 다음 문제가 생깁니다.
- 추가 컨텍스트가 로드됨
- 더 많은 토큰이 소비됨
- 모델의 혼란 가능성이 커짐
이것이 많은 개발자가 말하는 컨텍스트 오염(context pollution) 입니다.
모델은 현재 작업과 전혀 관련 없는 도구들까지 함께 고려해야 합니다.
간단한 예시: 명령 생성기
프로젝트용 지침 파일을 생성하는 에이전트를 만든다고 가정해 봅시다.
AGENTS.md
CLAUDE.md
.github/copilot-instructions.md
.github/instructions/database-interactions.instructions.md
이를 위해 다음과 같은 맞춤 프롬프트를 만들 수 있습니다.
/create-instructions
.github/prompts/create-instructions.prompt.md
---
agent: Instructions Generator
---
Take the information below and generate a `[NAME].instructions.md`
file for it in the `/.github/instructions` directory.
Generate an appropriate name for the `[NAME]` placeholder based on
the generated content. Make sure the instructions are concise and not too long.
If no information is provided below, prompt the user to give
the necessary details about the layer of architecture or coding standards to document.
The .md file should have frontmatter with a description property
that informs copilot of when to use this set of instructions.
이 프롬프트는 프로젝트를 분석하고, 저장소 내에서 AI 도구가 더 효율적으로 작동하도록 돕는 지침 파일을 생성할 수 있습니다.
물론 기본 에이전트를 사용해 이 프롬프트를 실행할 수도 있습니다.
하지만 기본 에이전트는 여전히 다음 모든 것에 접근할 수 있습니다.
- 파일 시스템 액세스
- 터미널 명령
- 웹 접근
- MCP 도구
- 맞춤 에이전트, 프롬프트, 지침에 대한 정보
실제로 지침 파일 생성 작업에는 이 중 많은 기능이 필요하지 않습니다.
더 나은 접근법: 맞춤형 에이전트
기본 에이전트를 사용하는 대신, 이 작업에 맞게 특별히 설계된 맞춤 에이전트를 만들 수 있습니다.
이 맞춤 에이전트는 다음과 같은 소수의 도구만 활성화하면 됩니다.
- 파일 읽기
- 디렉터리 목록 조회
- 코드 검색
이 정도면 충분합니다.
이제 에이전트는 프로젝트 구조를 이해하고 지침을 생성하는 데 필요한 것만 갖추게 됩니다. 그 이상은 필요하지 않습니다.
왜 이것이 중요한가
에이전트가 사용할 수 있는 도구를 제한하면 여러 가지 이점이 생깁니다.
1. 더 작은 컨텍스트 창 사용
활성화된 모든 도구는 컨텍스트 창에 데이터를 추가합니다.
도구 목록을 20개에서 3개로 줄이면, 모델이 처리해야 할 컨텍스트 양도 크게 줄어듭니다.
그 결과는 다음과 같습니다.
- 더 적은 토큰 사용
- API 비용 절감
- 더 빠른 응답
대규모 프로젝트에서는 이 차이가 상당히 커질 수 있습니다.
2. 컨텍스트 오염 감소
큰 컨텍스트 창은 종종 잡음을 유발합니다.
모델이 다음과 같은 도구를 볼 경우
- 셸 실행
- 데이터베이스 접근
- 배포
- Git 작업
실제로는 불필요한 상황에서도 이를 사용하려고 시도할 수 있습니다.
이로 인해 다음과 같은 문제가 발생할 수 있습니다.
- 불필요한 도구 호출
- 지나치게 복잡한 추론 경로
작은 도구 집합은 에이전트가 원래 설계된 작업에 집중하도록 도와줍니다.
3. 더 신뢰할 수 있는 출력
에이전트는 환경이 잘 제한되어 있을 때 가장 잘 작동합니다.
정말 필요한 도구에만 접근할 수 있도록 하면, 결과는 더 예측 가능하고 일관되게 나옵니다.
이 점은 특히 다음과 같은 반복 가능한 워크플로에서 중요합니다.
- 문서 생성
- 지침 파일 생성
- 프로젝트 구조 스캐폴딩
- 저장소 분석
즉, 에이전트는 범용 도구가 아니라 전문화된 도구가 됩니다.
맞춤 에이전트는 마이크로서비스와 같습니다
에이전트를 이해하는 좋은 방법 중 하나는 소프트웨어 아키텍처의 마이크로서비스에 비유하는 것입니다.
모든 일을 처리하는 거대한 에이전트 하나를 두는 대신, 각각 매우 구체적인 작업만 수행하는 작은 에이전트 여러 개를 만드는 방식입니다.
예를 들면 다음과 같습니다.
- 지침 생성기 에이전트
- 문서 작성 에이전트
- 리팩토링 에이전트
- 데이터베이스 쿼리 에이전트
각 에이전트는 다음을 가집니다.
- 자체 프롬프트 세트
- 자체 도구 접근 권한
- 자체의 좁고 명확한 목적
이 구조는 더 깔끔한 워크플로와 훨씬 더 예측 가능한 동작을 가능하게 합니다.
맞춤 에이전트를 사용해야 할 때
맞춤 에이전트는 일반적으로 다음과 같은 경우에 적합합니다.
- 작업의 목적이 명확하게 정의되어 있을 때
- 필요한 도구가 소수에 불과할 때
- 일관되고 반복 가능한 출력을 원할 때
- 토큰 효율성이 중요할 때
- 불필요한 도구 사용을 피하고 싶을 때
반대로 워크플로가 광범위하거나 탐색적인 성격이라면, 기본 에이전트가 여전히 적절할 수 있습니다.
하지만 구조화된 개발자 워크플로를 구축하고 있다면, 맞춤형 에이전트가 거의 항상 더 나은 선택입니다.
최종 생각
맞춤 프롬프트는 분명 유용하지만, 그것만으로는 충분하지 않습니다.
기본 Copilot 에이전트 위에서 맞춤 프롬프트를 실행하더라도, 여전히 환경에 존재하는 모든 도구의 오버헤드를 감당해야 합니다.
반면 맞춤 에이전트를 사용하면 그 환경 자체를 제어할 수 있습니다.
에이전트가 사용할 도구를 신중하게 제한하면 다음이 가능해집니다.
- 컨텍스트 크기 축소
- 토큰 사용량 감소
- 결과 품질 향상
실제로 이는 다음을 의미합니다.
- 더 빠른 AI 워크플로
- 더 낮은 비용
- 더 높은 신뢰성
그리고 이것이 바로 진지한 AI 기반 개발자 도구를 만들 때 원하는 방향입니다.
댓글
댓글 쓰기