--- name: simple-orchestration description: > 여러 전문 영역의 결과를 결합·조정해야 하거나 한 결과가 다음 단계의 입력이 되는 요청을 서브에이전트에 나누기 전에 로드한다. 독립적인 일은 dispatch_agents로 한 번에 병렬 위임하고, 단일 요청은 transfer_to_agent로 넘긴 뒤 결과를 검증·통합한다. compatibility: > 서브에이전트가 연결된 런에서만 쓸모가 있다. dispatch_agents 는 최상위 런에만 제시되고, 서브에이전트로 실행 중이면 transfer_to_agent 만 남는다. --- # 단순 오케스트레이션 복잡한 요청의 의존성과 완료 조건을 끝까지 추적하고, 서브에이전트 결과를 검증해 하나의 일관된 답변으로 통합한다. 단순히 적임자를 고르는 일은 Agent Studio의 기본 위임 지침에 맡기고, 이 스킬은 다단계 조정이 필요할 때만 사용한다. ## 판단 다음 중 하나에 해당하면 오케스트레이션한다. - 서로 다른 전문 영역이 둘 이상 필요하다. - 한 결과가 다음 단계의 입력이 되는 다단계 작업이다. - 여러 서브에이전트 결과 사이의 의존성이나 충돌을 관리해야 한다. 한 에이전트가 짧게 해결할 수 있는 요청은 나누지 말고 직접 처리한다. ## 두 개의 위임 툴 | | `dispatch_agents` | `transfer_to_agent` | |---|---|---| | 쓰임 | 서로 의존하지 않는 여러 갈래 | 단일 요청 하나 | | 호출 | **한 번에 전부** 담는다 | 한 번에 하나 | | 실행 | 동시에 | 순차 | | 결과 | 하나의 툴 결과에 모여서 | "For context: …" 형태로 | **서로 의존하지 않는 부분은 반드시 한 번의 `dispatch_agents`에 담는다.** `transfer_to_agent`를 여러 번 부르면 같은 일이 순차로 돌아 그만큼 느려진다. 반대로 앞 결과가 다음 입력이 되는 단계는 나눠서 순차로 처리해야 한다. `dispatch_agents`는 **최상위 런에서만** 제시된다. 서브에이전트로 실행 중이라면 목록에 없고, 그때는 `transfer_to_agent`만 쓴다. ### dispatch_agents - 한 번에 최대 **4갈래**다. 더 나눠야 하면 묶어서 4개 이하로 만든다. - 응답 길이 예산은 갈래 수만큼 **균등 분할**된다. 각 갈래에 원하는 분량을 명시해야 한 갈래가 길게 답해 나머지를 굶기지 않는다. - 한 갈래가 실패해도 나머지는 계속 돌고, 실패한 자리에는 사유가 담겨 온다. 결과 전체가 `Error:`로 시작하는 건 **전부** 실패했을 때뿐이다. - 턴 비용은 갈래 수와 무관하다 — 1개를 보내든 4개를 보내든 같다. 나눌 수 있으면 나누는 게 이득이다. ## 절차 1. 사용자의 최종 목표와 완료 조건을 한 문장으로 정리한다. 2. 작업을 결과물 기준으로 나누고, **서로 의존하는 것과 아닌 것을 가른다.** 3. 각 단위에 필요한 전문성, 입력, 기대 출력과 검증 기준을 정한다. 4. 연결된 서브에이전트의 description을 비교해 현재 agent보다 적합할 때만 위임한다. 독립적인 것들은 한 번의 `dispatch_agents`로, 단일 요청은 `transfer_to_agent`로. 5. 결과를 원래 목표와 대조하고, 충돌·누락·근거 부족을 확인한다. 6. 사용자가 바로 쓸 수 있는 하나의 답변으로 통합한다. ## 위임 메시지 `message`가 요청의 전부다. 상대는 내 지시문을 보지 못한다. 최근 대화는 배경으로 함께 실려 가지만(8,000자까지, 최신 것부터, **지금 답하는 턴은 제외**) 그것에 기대지 마라. 이미지 에이전트에게는 `message`만 가고, 잘린 부분은 상대에게 보이지 않는다. **요청 자체는 언제나 자기완결적이어야 한다.** - 목표, 제약, 기대 출력, 기대 분량을 메시지 안에 담는다. - 사용자의 전체 대화를 그대로 옮겨 적지는 마라. 필요한 사실만. - 같은 일을 여러 에이전트에게 중복 요청하지 않는다. - 한 번 답한 에이전트에게 **같은 요청으로 다시 넘기지 않는다.** - 적합한 서브에이전트가 없으면 억지로 위임하지 않고 직접 처리한다. - 실패한 위임을 같은 입력으로 반복하지 않는다. 직접 처리하거나 부족한 입력을 확인한다. ## 제약 - 위임 깊이는 **5단계**까지고, 이미 거쳐 온 에이전트로 되돌아가는 위임은 거절된다. 순환 구조를 만들지 마라. - 이미지를 넘기려면 `image_ids`에 id를 담는다. 없는 id를 쓰면 위임이 실패하면서 쓸 수 있는 id 목록이 돌아온다. - **원격(A2A) 에이전트는 이미지를 받지 못한다.** 이미지가 필요한 일은 로컬 에이전트에게 맡긴다. - 턴이 얼마 남지 않으면 위임이 거절된다(자식과 복귀에 두 턴이 필요하다). 거절당하면 직접 처리로 전환한다. ## 통합 - 서로 다른 결과가 충돌하면 각 근거를 비교하고 확정할 수 없는 부분을 밝힌다. - 중간 위임 과정이나 에이전트별 답변을 장황하게 나열하지 않는다. - 서브에이전트 결과를 검토 없이 그대로 전달하지 않는다. - 최종 답변은 결론부터 제시하고, 필요한 근거와 남은 제한만 덧붙인다. - 일부 작업만 완료됐다면 완료된 범위와 남은 작업을 구분한다. - 통합 답변에 "다음은 통합 결과입니다", "종합하면", "결론적으로", "도움이 되셨기를" 같은 도입·결산·마무리 문구를 넣지 않는다. 첫 문장이 결론이다. - 에이전트별 헤딩·이모지·볼드로 답변을 구획하지 않는다. 사용자는 답 자체를 읽는다. 출처를 밝혀야 하면 문장 안에 한 번 적는다. - "단순히 A가 아니라 B" 대구, "~것으로 보입니다" 남발, "-고,"·"-지만," 뒤 쉼표를 쓰지 않는다. 확인된 것은 단언하고 확인 못 한 것은 그렇다고 적는다. 전체 패턴 목록과 전후 예시는 이 저장소의 `plugins/workspace/skills/korean-humanize/ai-tell-catalog.md` 가 source 다. 인라인 규칙과 카탈로그가 어긋나면 카탈로그가 이긴다.