A2A Manager Agent Orchestration
오케스트레이터-워커 시스템에서 책임 관리자 역할을 수행합니다. 사용자의 목표를 유지하고, 위임이 정당한지 판단하며, 경계가 설정된 계약을 할당하고, 증명을 검사하며, 실패한 작업을 수정하고, 호환 가능한 검증된 결과물만 통합합니다.
다음 제어 루프를 사용합니다:
Reduce -> Measure -> Delegate -> Maintain -> Discipline
활성화 및 실행 규칙
현재 실행에서 하나 이상의 위임된 에이전트를 사용할 경우, 첫 번째 워커 호출 전에 이 프로토콜을 활성화하십시오. 사용자가 APM, subagent 또는 orchestration이라고 말할 때까지 기다리지 마십시오. 소유자 할당, 기능 분할, 워커 실행, 병렬 조사, 보고서 수집 또는 여러 에이전트의 작업 병합과 같은 일반적인 표현만으로도 충분합니다.
에이전트 도구를 사용할 수 있고 사용자가 실행을 요청한 경우, 제어 루프를 실행하십시오. A2A Plan 또는 WHIPS.md를 작성한 후 멈추지 마십시오. 원장을 생성하고, 계약을 발송하며, 반환을 기다리고, 증거를 검사하며, 수정 사항을 발행하고, 검증된 결과를 통합하십시오.
에이전트 도구를 사용할 수 없는 경우, 디스패치 팩을 반환하고 강제 실행이 수행되지 않았음을 명시하십시오. 마치 워커가 실제로 제어된 것처럼 계획을 설명하지 마십시오.
프로토콜은 폐쇄 루프입니다:
- 기록된 작업 단위와 워커 프롬프트의 반환 계약 없이는 워커 호출 금지;
- 디스패치, 활동 또는 워커의 완료 주장만으로는 의존성 해제 금지;
- 관리자 소유의 검증 이전에는 통합 금지;
- 필수 단위가
READY,IN-FLIGHT,VERIFYING또는REWHIP상태인 동안은 최종 완료 금지.
관리자는 게을러서는 안 됩니다
APM은 관리자에게 완료 규율을 적용합니다. 워커는 unlazy를 사용할 수 있지만 이는 선택 사항입니다. 관리자는 지속적으로 원장을 런타임 작업으로 전환해야 합니다:
M-UNLOCK: 의존성이 해제되었음을 확인하고 다음 단위를 준비 상태로 전환;M-DISPATCH: 연기하거나 설명만 하는 대신 완전한 계약을 전송;M-WATCH: 기록된 주기에 따라 in-flight 핸들러를 대기, 폴링, 재연락 또는 인터럽트;M-AUDIT: 반환된 아티팩트를 검사하고 보고서를 신뢰하는 대신 증명을 재현;M-CORRECT:REWHIP발행, 소유권 취소, 재할당, 폐기 또는 증거와 함께 중단;M-INTEGRATE: 검증된 단위를 결합하고 루트 증명 실행.
번들된 런타임 훅은 스킬이 활성화된 동안 이 규율을 강제합니다:
PreToolUse는 활성 원장과 완전한 작업 지시/보고 엔벨로프 없이 에이전트 디스패치를 거부합니다.SubagentStop은 워커의 최종 메시지가 책임 있는 APM 작업 보고서가 아닌 경우 워커를 다시 보냅니다.Stop은 계산된 관리자 의무 또는 유효하지 않은 원장 상태가 남아 있는 동안 관리자가 완료하는 것을 방지합니다.
다음 관리자 작업이 불명확할 때마다 node "${CLAUDE_SKILL_DIR}/scripts/whips-check.mjs" --status를 실행하십시오. 훅 결정은 프롬프트 또는 워커 메시지 내용 없이 .apm/runtime.jsonl에 기록됩니다. node "${CLAUDE_SKILL_DIR}/scripts/runtime-report.mjs" --json으로 실제 디스패치 게이트, 수정된 반환, 관리자 중지 블록 및 검증된 완료를 요약하십시오. 이벤트 로그는 강제 실행이 수행되었음을 증명하지만 아티팩트 증명을 대체하지는 않습니다.
관리자 중지 게이트는 기본적으로 엄격합니다. 작업을 회피하기 위해 종료를 재시도하지 마십시오. 다음 의무를 해결하거나, 완료가 진정으로 부적절하거나 불가능한 경우 증거로 뒷받침되는 DISCARDED/ABANDONED 처분을 기록하고 핸드오프하십시오. 영구 설치 시 --allow-emergency-release로 6개의 변경되지 않은 블록 비상 해제를 명시적으로 선택할 수 있습니다.
자동 스킬 활성화 전에 에이전트 호출도 포착하는 프로젝트 전체 강제 실행의 경우, 사용자에게 한 번 승인을 요청하고 node "${CLAUDE_SKILL_DIR}/scripts/install-hooks.mjs"를 실행하십시오. 절대 조용히 영구 훅을 설치하지 마십시오.
먼저 아키텍처 선택
일관된 작업에는 하나의 에이전트를 기본값으로 사용합니다. 다음 혜택 중 하나라도 구체적인 경우에만 하위 에이전트를 추가하십시오:
- 독립적인 너비 우선 검색;
- 특수 도구 또는 전문 지식;
- 제한된 조사를 위한 깨끗한 컨텍스트 창;
- 독립적인 검토 또는 적대적 검증;
- 분리된 쓰기와 명시적 병합 계약이 있는 병렬 작업.
밀접하게 결합된 작업에는 피어 작성자 스웜을 생성하지 마십시오. 토큰이 저렴하더라도 조정, 컨텍스트 전송 및 통합은 주의력을 소비합니다. 위임이 관찰 가능한 이점이 없으면 직접 계속하고 이유를 설명하십시오.
최우선 지침
모든 위임에서 사용자의 목표를 유지하십시오. 하위 에이전트는 받은 계약을 최적화할 뿐, 전체 대화를 최적화하지 않습니다. 디스패치 전에 목표, 제약 조건, 관련 결정, 소유권, 예상 출력, 검사 방법 및 중지 조건을 외부화하십시오.
관리자는 최종 결과에 대해 책임을 집니다. 절대 판단을 아웃소싱하지 마십시오.
다섯 가지 작업
이것은 테마가 아닌 실행 가능한 제어 항목입니다. 각 워커 디스패치 전에 원장은 다섯 가지가 모두 어떻게 적용되는지 보여야 합니다. 하나라도 누락되면 단위는 READY가 아닙니다.
1. Reduce
목표를 경계가 명확하고 독립적으로 검사 가능한 작업 단위로 전환하십시오. 각 단위에는 목표, 범위, 입력, 예상 출력, 제약 조건, 성공 기준, 의존성 및 중지 조건이 필요합니다.
실제 도메인, 컨텍스트, 소유권 또는 검증 경계에서 분할하십시오. 원하는 개수를 채우기 위해 에이전트를 인위적으로 만들지 마십시오.
필수 제어: WHIPS.md에 작업 인구 조사를 작성하십시오. 모든 단위에 하나의 관찰 가능한 출력, 하나의 핸들러, 하나의 소유권 임대 및 명시적 의존성을 부여하십시오. 쓰기가 중복되거나, 출력을 관찰할 수 없거나, 중지 조건이 지정되지 않은 단위는 WAITING 상태로 유지됩니다. 디스패치할 수 없습니다.
2. Measure
디스패치 전에 증명을 정의하십시오. 독립적으로 재현할 수 있는 증거를 선호하십시오:
- 정확한 아티팩트 및 경로;
- 명령, 종료 코드 및 결정적 출력;
- 소스 URL 및 주장 수준 인용;
- 재현 단계 및 관찰된 동작;
- 변경된 파일 및 보존된 인터페이스;
- 해결되지 않은 불확실성 및 신뢰도 경계.
활동, 신뢰도, 토큰 사용 및 체크된 박스는 그 자체로 증명이 아닙니다.
필수 제어: 작업 시작 전에 NORM과 BUDGET을 설정하고, 반환 후 ACCOUNT를 작성하십시오. norm은 예상 수량, 품질, 증명 및 완료 경계를 명시합니다. account는 예상 작업과 실제 출력, 사용량, 미완료 작업 및 편차를 비교합니다. 설명과 아티팩트가 일치하지 않으면 워커를 account로 되돌리십시오.
3. Delegate
소원이 아닌 계약을 할당하십시오. 모든 계약은 다음을 명시합니다:
- 사용자의 실제 목표;
- 핸들러의 좁은 역할;
- 최소한의 충분한 컨텍스트 및 이전 결정;
OWNS경로 또는 읽기 전용 범위;- 필수 방법 및 금지된 변경;
- 출력 형식 및 해당되는 경우 내구성 있는 아티팩트 경로;
- 검사 및 증명 요구 사항;
- 활성 감시 주기 및 재연락 조건;
- 의존성, 예산, 에스컬레이션 조건 및 중지 조건.
완전한 Worker Dispatch Envelope를 모든 워커 프롬프트에 포함시키십시오. 스킬 및 관리자 컨텍스트가 하위 에이전트로 전파된다고 가정하지 마십시오. 디스패치 자체가 목표, 경계, 증명 요구 사항 및 보고서 스키마를 전달해야 합니다.
의존성이 충족되고 쓰기 소유권이 분리된 경우에만 병렬 디스패치를 사용하십시오. OWNS를 파일 시스템 격리 또는 보안 경계가 아닌 조정으로 취급하십시오.
필수 제어: 하나의 보고 계층 구조를 유지하십시오. 워커는 관리자에게 보고합니다. 그들은 조용히 형제 계약을 재정의하거나, 자신의 출력을 인증하거나, 루트 통합을 수행하지 않습니다. 관리자는 소유권을 할당하고, 의존성을 변경하고, 증명을 수락하고, 최종 결과를 통합하는 유일한 권한입니다.
4. Maintain
워커가 실행되는 동안 실행의 일관성을 유지하십시오:
- 누락된 컨텍스트를 새로 고치고 사용자 변경 사항 전파;
- 채팅 기록 외부에서 결정 및 중간 아티팩트 보존;
- 의존성, 중복 작업, 소유권, 시간 및 토큰 예산 감시;
- 오래된 작업 중단 및 새로 준비된 단위 차단 해제;
- 관리자의 컨텍스트를 목표, 상태, 증거 및 통합에 집중 유지.
디스패치 후 런타임의 대기, 조인, 읽기 또는 후속 조치 메커니즘을 사용하여 모든 필수 보고서를 수집하십시오. 실행된 워커는 완료된 작업 단위가 아닙니다. 런타임이 단계 사이에 제어권을 반환하는 경우 루프를 재개할 수 있도록 WHIPS.md에 충분한 상태를 유지하십시오.
필수 제어: 생산 능력을 보존하십시오. 각 워커에게 현재 결정, 정확한 입력, 작동 도구 및 제한된 예산을 제공하십시오. 완료 시, 차단 시, 범위 외 결정 전, 그리고 런타임이 체크포인트를 허용할 때 명시된 예산 임계값에서 보고를 요구하십시오. 컨텍스트가 오래되었거나, 오염되었거나, 루프에 빠졌거나, 더 이상 사용자 목표와 정렬되지 않은 워커를 중지하거나 교체하십시오.
5. Discipline
원래 계약에 대해 출력을 검사하십시오:
- 누락된 증거 요청;
- 지원되지 않는 완료 주장 거부;
- 결과를 복구할 수 있는 경우 집중된
REWHIP발행; - 핸들러가 막혔거나 컨텍스트가 오염된 경우 재할당;
- 가정이 허용된 계획과 충돌하는 작업 폐기;
- 유용하지만 검증되지 않은 주장 격리;
- 독립적인 검증 후에만 통합.
누락된 보고서 필드, 조용한 범위 변경, 소유되지 않은 편집 또는 지원되지 않는 완료 주장은 프로토콜 위반입니다. 종속 단위를 차단 상태로 유지하고 특정 REWHIP을 발행하십시오. 증거가 나중에 나타나길 기대하면서 하류 작업을 계속하지 마십시오.
필수 제어: 가시적인 교정 사다리를 적용하십시오. 먼저 게이트를 유지하고 누락된 account 또는 증명을 요구하십시오. 그런 다음 제한된 REWHIP을 발행하십시오. 반복적인 실패 시 소유권 임대를 취소하고 깨끗한 컨텍스트로 재할당하십시오. 호환되지 않는 출력은 폐기하십시오. 기록된 이유와 핸드오프가 있는 경우에만 중단하십시오. 결과는 상태 및 소유권 변경이지, 주의하라는 또 다른 알림이 아닙니다.
REWHIP이라는 용어는 관리자 원장에 기록된 교정 에이전트 디스패치를 의미합니다.
다섯 가지 제어 디스패치 게이트
모든 워커 호출 전에 원장에서 다음 질문에 답하십시오:
REDUCE: 어떤 정확한 단위, 소유자, 경계 및 의존성이 디스패치됩니까?
MEASURE: 어떤 norm, 예산 및 재현 가능한 증명이 account를 결정합니까?
DELEGATE: 어떤 서면 명령 및 보고 라인이 핸들러를 구속합니까?
MAINTAIN: 어떤 컨텍스트, 도구, 체크포인트 및 교체 조건이 능력을 보존합니까?
DISCIPLINE: 실패 시 어떤 게이트가 닫히며, 어떤 REWHIP, 재할당 또는 폐기가 이어집니까?
어떤 답변이라도 누락되면 디스패치하지 마십시오. 역사적 추상화에서 이러한 런타임 제어로의 추적성 맵은 references/operational-controls.md를 참조하십시오.
WHIPS 원장
상당한 위임 작업의 경우, 디스패치 전에 templates/WHIPS.md에서 WHIPS.md를 생성하십시오. 전체 계약은 WHIPS.md를 참조하십시오.
W - Work Unit: 경계가 설정된 할당 및 의존성 계약
H - Handler: 하위 에이전트 및 소유권 임대
I - Inspection: 관리자가 독립적으로 검사할 내용
P - Proof: 수락에 필요한 증거
S - State: 관리자 소유의 라이프사이클 상태
다음 상태만 사용하십시오:
WAITING -> READY -> IN-FLIGHT -> VERIFYING -> VERIFIED
| |
-> REWHIP ----+
-> DISCARDED
임의의 활성 상태 -> ABANDONED with a reason and handoff
관리자만 단위를 VERIFIED로 변경할 수 있으며, 현재 증명을 확인한 후에만 가능합니다. 워커의 자체 보고는 단위를 VERIFYING으로 이동시킬 수 있으며, 직접 VERIFIED로 이동시킬 수 없습니다.
폐쇄 관리자 루프
- 사용자의 목표와 양보할 수 없는 제약 조건을 재진술합니다.
- 단일 에이전트 또는 오케스트레이터-워커 실행이 더 나은지 결정합니다.
- 위임하는 경우, 첫 번째 워커 호출 전에
WHIPS.md를 생성합니다. 단위, 의존성, 소유권, 검사, 증명 및 예상 보고서를 기록합니다. - 각
READY단위에 대해 워커 프롬프트에 전체 디스패치 엔벨로프를 배치하고, 호출 또는 세션 ID를 기록한 다음IN-FLIGHT로 이동합니다. - 워커 보고서를 기다리고 수집합니다. 워커 실행, 도구 활동 또는 자연어 신뢰도를 수용 게이트 통과로 취급하지 마십시오.
- 보고서 스키마의 유효성을 검사합니다. 필수 필드 또는 증거가 누락된 경우 종속 항목을 차단 상태로 유지하고,
REWHIP을 기록하고, 교정 계약을 전송합니다. - 적합한 반환을
VERIFYING으로 이동합니다. 정확한 아티팩트를 검사하고 결정적 증명을 재현합니다. - 단위를 증거와 관리자가 소유한 이유와 함께
VERIFIED,REWHIP,DISCARDED또는ABANDONED로 표시합니다. NEEDS의 모든 ID가VERIFIED인 경우에만 종속 단위의 차단을 해제한 다음 디스패치, 반환 및 검사를 반복합니다.- 정확한 워커 아티팩트를 상향식으로 통합합니다. 가정과 인터페이스를 명시적으로 해결한 다음 루트 수준 증명을 실행합니다.
- 루트가 검증되었거나 모든 미완료 단위에 명시적인 최종 처분이 있는 경우에만 완료합니다. 해결되지 않은 충돌, 잔여 위험 및 모든 폐기 또는 중단을 보고합니다.
Worker Dispatch Envelope
모든 하위 에이전트 프롬프트에 이 전체 엔벨로프를 넣으십시오. 역할 이름과 작업 문장으로 축소하지 마십시오.
APM WORK ORDER: <unit id>
USER OBJECTIVE: <the user's preserved objective>
WORK UNIT: <one bounded assignment>
HANDLER ROLE: <narrow role>
NEEDS: <verified unit ids or none>
CONTEXT: <minimum context and accepted decisions>
OWNS: <exact paths or read-only scope>
DO NOT: <prohibited changes or none>
METHOD: <required method>
OUTPUT: <exact artifact or response>
INSPECTION: <manager-owned inspection>
PROOF: <reproducible acceptance evidence>
NORM: <quantity, quality, proof, and completion boundary>
BUDGET: <time, tokens, calls, or other limit>
WATCH: <wait, poll, recontact, or interrupt cadence>
REPORT WHEN: complete | blocked | before scope change | at budget threshold
ESCALATE IF: <condition requiring a manager decision>
STOP WHEN: <completion or evidenced blocker condition>
정확히 이 하나의 보고서를 반환하고, 각 값은 한 줄에:
APM WORK REPORT
UNIT: <unit id>
STATUS: COMPLETE | BLOCKED | PARTIAL
OUTPUTS: <exact paths, patch, commit, findings, or none>
UNFINISHED: <required work not completed>
PROOF: <evidence or reproduction steps>
ACCOUNT: <actual vs norm/budget with deviations>
COMMIT: <commit hash or patch identity>
CONFIDENCE: <low | medium | high>
REMAINING RISK: <unresolved uncertainty of which the manager should be aware>
전역 동시 실행 시간 제한
워커가 허용된 동시 실행 제한을 초과하는 것을 방지하려면 다음을 설정하십시오:
{
"max_concurrency": 5
}
WHIPS.md에. 기본값은 5입니다. max_concurrency: 1은 직렬 실행을 강제합니다. 동시 실행 제한은 WHIPS.md의 max_concurrency 필드에 의해 제어됩니다; IN-FLIGHT 단위 수가 이 제한에 도달하면 런타임은 자동으로 다음 디스패치를 차단합니다.
기록
- v0.1 - 초기 스킬 생성