| name | delegate-llm |
| description | 외부 LLM(GPT·Gemini) 위임 엔진. 미션 패킷 조립·모델 라우팅·비용 로깅·메타평가·폴백 자동.
P1: 위임, delegate, GPT한테, 제미나이한테, 제미니한테, 지피티, 제미니, 제미나이, 외주, 멀티LLM, 외부LLM, 2종세트, 2종 세트, gpt-5.5, gemini-3.1.
P2: 시켜줘, 맡겨, 던져, 발주해줘, delegate, ask gpt.
P3: LLM delegation, mission packet, multi-llm orchestration, meta-evaluation.
P4: 외부 LLM 비교 필요시, 제2의견 필요시.
P5: 위임결과로, 발주리포트로, .md로.
NOT: Claude 자체(→직접), 리서치(→research-frame), 팩트체크(→fact-checker).
|
Delegate LLM — 외부 LLM 위임 엔진
형이 한 줄 던지면 외부 LLM에 미션 발주 → 결과 회수 → Claude 메타평가 → 형에게 보고. 형의 판단 주권은 항상 Claude가 보호.
절대 규칙
| # | 규칙 | 이유 |
|---|
| 1 | 외부 LLM 결과 = 참고자료 격하 | 외부 LLM이 진실 ✗. Claude가 반드시 메타 코멘트 추가 |
| 2 | API 키 채팅 노출 ✗ | _secrets/.env에서만 읽기. 값 출력 ✗ |
| 3 | 비용 로깅 강제 | 모든 호출은 _logs/llm_usage.md에 자동 기록. 5원 초과시 형에게 알림 |
| 4 | 한국어 강제 | 외부 LLM이 영어로 답해도 Claude가 한국어로 정리 |
| 5 | 에러 침묵 ✗ | API 에러시 명시적 폴백 보고 (재시도·다른모델·중단 중 택1) |
| 6 | 월 한도 80% 도달시 경고 | 100% 초과시 호출 차단 + 형 컨펌 요구 |
라우팅 테이블 (디폴트 + 수동)
| 트리거 | 모델 | 용도 |
|---|
"GPT한테 시켜줘" | gpt-5.5 | 디폴트 |
"GPT 5.5로" / "GPT 직접" | gpt-5.5 | 명시 |
"GPT 미니로" | gpt-5.4-mini | 빠르고 저렴 |
"GPT 나노로" | gpt-5.4-nano | 대량·단순 |
"GPT 프로로" | gpt-5.5-pro | 복잡 추론 |
"GPT 코덱스로" | gpt-5.1-codex | 코드 전용 |
"o3로" | o3 | 깊은 추론 |
"제미나이한테 시켜줘" / "제미니한테" | gemini-3.1-pro-preview ⚠️ | 디폴트 (무료티어 한도시 flash 자동 폴백) |
"제미나이 플래시로" | gemini-3.1-flash-lite-preview | 빠르고 저렴 |
"제미나이 2.5로" | gemini-2.5-pro | 안정 버전 |
전체 가격표: VAULT/_logs/llm_pricing.json 참조.
실행 흐름
① 트리거 파싱 → ② 미션 패킷 조립 → ③ 발주 → ④ 회수 + 비용 로깅 → ⑤ 메타평가 → ⑥ 형에게 보고
① 트리거 파싱
형의 발화에서 추출:
- 벤더: GPT vs Gemini vs 병렬 (둘 다)
- 모델: 명시 ✗ → 디폴트, 명시 ✓ → 라우팅 테이블
- 역할: "코드 리뷰어로", "번역가로" 등 (선택)
- 미션: 형의 지시 원문
② 미션 패킷 조립
TO : {model}
ROLE : {역할 추론 or 명시}
CONTEXT : {현재 대화 맥락 압축}
TASK : {형 지시 원문}
FORMAT : {기대 산출물 형식}
CONSTRAINT: 한국어 답변 강제
CONTEXT는 Claude가 현재 대화에서 핵심만 압축. 외부 LLM은 형의 전체 대화 모름.
③ 발주
python scripts/delegate.py --vendor {gpt|gemini} --model {model} --mission "{packet}"
→ scripts/delegate.py 참조
병렬 발주 시: 2개 호출을 백그라운드 동시 실행 → 둘 다 완료 후 결과 수집.
④ 회수 + 비용 로깅
scripts/delegate.py가 자동으로:
- 응답 텍스트 회수
- 토큰 카운트
cost_logger.log_call() 호출 → VAULT/_logs/llm_usage.md 자동 append
- 알림 (호출당 5원 초과 / 월 50·80·100%) 수집
⑤ 메타평가 (Claude 강제)
외부 LLM 응답을 그대로 패스 ✗. 반드시 4단 평가:
원문 : [LLM 응답 그대로 (한국어 변환 필요시 변환)]
요약 : [Claude의 1줄 요약]
평가 : [Claude의 메타 코멘트 — 정확성·맥락적합·맹점]
다음 : [형이 취할 액션 제안]
평가 차원:
- 정확성: 사실 오류·수치 오류 검출 (의심시 fact-checker 발동 권고)
- 맥락 적합: 형의 의도와 결과의 정합
- 맹점: 외부 LLM이 놓친 관점·반대 증거
⑥ 형에게 보고
🎯 외주 결과 — {vendor} {model}
📋 원문
{LLM 응답}
💡 Claude 메타평가
- 요약: ...
- 평가: ...
- 맹점: ...
📍 다음 액션
{1~3개 제안}
💰 비용: {krw}원 (월 누적 {pct}%)
병렬 발주 패턴 (2종세트)
"GPT랑 제미나이한테 같은 미션 던져", "2종세트로 시켜줘", "2종 세트" 트리거 시 — 지피티·제미니(=제미나이) 동시 발주. 멀티LLM·외부LLM 비교용:
- 미션 패킷 1개 조립 (공통)
- 두 vendor에 동시 발주 (병렬 bash)
- 결과 수집 후 비교표 생성
| 항목 | GPT-5.5 | Gemini-3.1-pro |
|---|---|---|
| 응답 요약 | ... | ... |
| 토큰 | in/out | in/out |
| 비용 | KRW | KRW |
| 강점 | ... | ... |
| 약점 | ... | ... |
Claude 메타평가는 비교표 아래에 별도 섹션.
폴백 처리
| 에러 | 대응 |
|---|
| API 키 누락 | STOP + _secrets/.env 확인 요청 |
| 401 인증 실패 | STOP + 키 폐기·재발급 권고 |
| 429 rate limit | 30초 대기 후 1회 재시도, 2회차 실패 시 STOP |
| 500/503 서버 에러 | 다른 vendor로 폴백 제안 (GPT↔Gemini) |
| 응답 빈값 | 1회 재시도, 2회차 빈값이면 STOP |
| Gemini Pro 무료티어 한도 (429 RESOURCE_EXHAUSTED) | gemini-3.1-flash-lite-preview로 자동 폴백 + 알림 명시 (1회만) |
| 월 한도 100% 초과 | 호출 전 차단 + 형 컨펌 ("그래도 진행할까요?") |
호출 예시
예시 1: 단일 발주
형: "GPT한테 이 함수 코드 리뷰 시켜줘"
Claude:
① 파싱: vendor=gpt, model=gpt-5.5, role=코드리뷰어
② 패킷 조립
③ python scripts/delegate.py --vendor gpt --model gpt-5.5 ...
④ 응답·비용 회수
⑤ 메타평가
⑥ 4블록 보고
예시 2: 모델 명시
형: "GPT 미니로 이 문서 번역"
→ model=gpt-5.4-mini로 라우팅 (비용 절감)
예시 3: 병렬
형: "GPT랑 제미나이한테 같은 미션 던져"
→ 동시 발주 → 비교표 생성
Gotchas
| 함정 | 대응 |
|---|
| API 키를 채팅에 노출 | _secrets/.env만 읽기. 값 출력 절대 ✗ |
| 외부 LLM 답변 그대로 패스 | 메타평가 4블록 강제 (절대규칙 #1) |
| 비용 로깅 누락 | cost_logger.log_call() 호출 강제 |
| 영어 응답 그대로 전달 | Claude가 한국어로 정리 (절대규칙 #4) |
| 모델명 오타 | _logs/llm_pricing.json에 없으면 디폴트 단가 적용 + 경고 |
| 병렬 발주 시 비용 폭증 | 2배 비용 사전 안내 + 컨펌 |
| 월 한도 초과 인지 못함 | 매 호출 후 누적 % 보고 강제 |
| 호스트/컨테이너 경로 혼동 | cost_logger._resolve_vault() 자동 감지 사용 |