클로드 코드(Claude Code) 에이전트 도구 설계 비법 공개
에이전트(Agent) 도구 설계는 클로드(Claude) API 기반 에이전트 개발의 핵심 과제이며, 도구 호출(Tool Calling)을 통해 에이전트의 동작을 제어함
AskUserQuestion 도구를 통해 사용자 질문(Elicitation) 기능을 개선하려 시도, 출력 형식 변경, 별도 도구 생성 등의 과정을 거침
TodoWrite 도구를 Task 도구로 대체하여 에이전트 간의 협업(Collaboration) 및 유연성(Flexibility)을 향상시킴
Grep 도구를 활용한 자체 컨텍스트 구축(Context Building)을 통해 RAG(Retrieval-Augmented Generation)의 한계를 극복하고, 프로그래시브 디스클로저(Progressive Disclosure) 방식을 도입
에이전트(Agent) 도구 설계의 핵심 원리
본문에서는 에이전트(Agent)의 도구 설계가 모델의 능력에 맞춰져야 한다고 강조하며, 이는 마치 어려운 수학 문제를 풀 때 필요한 도구를 선택하는 것과 유사하다는 점을 설명한다.
최소한의 도구(Minimum Tools): 수동 계산을 위한 종이(Paper)와 같이 기본적인 도구는 필수적
능력 확장(Capability Expansion): 계산기(Calculator)와 같이 더 발전된 도구는 사용법 숙지가 필요
최적의 도구(Optimal Tools): 코드 작성 및 실행을 위한 컴퓨터(Computer)는 가장 강력하지만, 사용법 숙련이 중요
결과적으로 에이전트의 능력에 맞는 도구를 제공하고, 지속적인 실험과 출력을 통해 도구를 개선해야 한다.
AskUserQuestion 도구 개발 과정
글에 따르면 AskUserQuestion 도구 개발은 클로드(Claude)의 질문 능력(Elicitation) 향상을 목표로 진행되었으며, 여러 번의 시도를 통해 개선되었다.
ExitPlanTool 수정 시도: 질문을 ExitPlanTool에 통합하려 했으나, 계획과 질문 간의 충돌로 인해 실패
출력 형식 변경 시도: 마크다운(Markdown) 형식으로 질문을 생성하려 했으나, 신뢰성 부족으로 실패
AskUserQuestion 도구 개발: 별도의 도구를 생성하여 사용자에게 구조화된 질문을 제시하고, 에이전트의 루프를 차단하여 사용자 응답을 기다림
결과적으로 AskUserQuestion 도구는 클로드(Claude)의 질문 능력을 향상시키고, 사용자 인터랙션을 개선하는 데 기여했다.
Task 도구 도입과 TodoWrite 도구의 한계
본문에서는 TodoWrite 도구의 한계를 지적하고, Task 도구로의 전환을 통해 에이전트의 협업과 유연성을 개선한 과정을 설명한다.
TodoWrite 도구의 한계: 모델이 할 일 목록에 얽매여 유연한 대처가 어려웠고, 하위 에이전트 간의 협업이 불가능
Task 도구의 장점: 하위 에이전트 간의 작업 공유 및 의존성 관리, 모델의 작업 변경 및 삭제 기능 지원
모델 능력 향상: 모델의 능력이 향상됨에 따라 기존 도구의 제약이 발생할 수 있으며, 지속적인 검토 필요
결론적으로 모델의 발전과 함께 도구의 역할과 기능을 재평가하고, 필요에 따라 개선해야 한다.
Grep 도구와 프로그래시브 디스클로저(Progressive Disclosure)
글에서는 Grep 도구를 활용하여 클로드(Claude)가 자체적으로 컨텍스트를 구축하는 방법을 설명하고, 프로그래시브 디스클로저(Progressive Disclosure) 방식을 소개한다.
RAG(Retrieval-Augmented Generation)의 한계: 코드베이스(Codebase) 인덱싱 및 설정의 복잡성, 환경 의존성 문제, 모델이 직접 컨텍스트를 찾지 못하는 점
Grep 도구 도입: 클로드(Claude)가 코드베이스(Codebase)를 검색하여 필요한 컨텍스트를 스스로 구축
프로그래시브 디스클로저(Progressive Disclosure): 새로운 기능을 도구 추가 없이 점진적으로 공개하는 방식, Claude Code Guide 에이전트 활용
결과적으로 Grep 도구와 프로그래시브 디스클로저(Progressive Disclosure)를 통해 클로드(Claude)의 컨텍스트 구축 능력을 향상시키고, 도구의 수를 최소화했다.