Skills와 SubAgent 선택 방법
둘 다 같은 문제를 해결합니다. 이미 작성된 Agent가 있는데, 이제 새로운 기능을 추가하고 싶을 때, 이 기능을 현재 Agent 시스템에 어떻게 넣을 것인가?
문서의 설명에 따르면, Skills는 메인 Agent에게 그림 그리기, 기획 등과 같은 더 많은 능력을 제공하는 것으로 이해할 수 있습니다.
반면 SubAgent는 별도의 Agent를 시작하여 격리된 컨텍스트로 이러한 작업을 수행합니다.
SubAgent의 추가적인 장점은 다음과 같습니다:
- 컨텍스트 격리: 메인 Agent의 컨텍스트와 분리되어 오염을 방지합니다.
- 병렬화: 서로 다른 sub Agent는 병렬로 실행될 수 있어 더 빠릅니다.
위 내용이 제가 생각하는 Sub Agent와 Skills의 가장 주요한 차이점입니다. 특별한 지시 지식이나 도구 제한 같은 것은 Sub Agent도 구현할 수 있고 Skills도 구현할 수 있으므로 중요한 차이점이 되기에는 부족합니다.
그렇다면 둘 다 새로운 작업을 처리하는 능력을 강화하는 것이라면, 언제 Skills를 선택하여 작업을 메인 Agent에 맡기고, 언제 작업을 Sub Agent에 맡겨야 할까요?
저는 소프트웨어 공학의 '높은 응집도, 낮은 결합도' 원칙을 따르는 것이 좋다고 생각합니다.
새 작업이 메인 Agent의 작업과 명확히 다르거나 병렬 실행이 필요하다면 Sub Agent를 별도로 시작하는 것을 선택할 수 있습니다. 그렇지 않으면 Skills로 구현하는 것을 권장합니다. Agent를 별도로 시작하면 아키텍처의 복잡성과 결과의 불확실성이 발생할 수 있기 때문입니다. 또한 컨텍스트 격리는 축복이자 저주입니다. 메인 Agent가 서브 Agent에게 메시지를 전달할 때 정확성을 어떻게 제어할 수 있을까요?