✦ GiaSip 스킬 ·
giasip툴킷의 일부 · github.com/GiaSip
/dispatch — 다중 모델 디스패처
작업이나 프롬프트를 다른 AI 모델로 전송하여 실행하고 결과를 검색합니다. 이 스킬은 디스패치 기능만 제공합니다. 어떤 모델을 선택할지, 여러 모델에 분산할지는 현재 작업에 따라 사용자(또는 현재 Claude)가 결정합니다. 내장된 모델 선호도는 없습니다.
스크립트 디렉터리
중요: 모든 스크립트는 이 스킬 폴더의 scripts/ 하위 디렉터리에 있습니다.
에이전트 설정 — 아래 명령어를 실행하기 전에 한 번만 수행: 이 SKILL.md가 포함된 디렉터리의 절대 경로를 확인하고 BASE_DIR로 내보냅니다:
# 글로벌 설치 (가장 일반적); 플러그인으로 설치된 경우 플러그인 캐시 경로를 대신 사용
BASE_DIR="$HOME/.claude/skills/giasip-dispatch"
export BASE_DIR
아래 모든 명령어는 스크립트를 $BASE_DIR/scripts/<script-name>으로 참조합니다. BASE_DIR은 사용자가 세션에서 설정하는 셸 변수입니다. 런타임에서 주입되는 CLAUDE_SKILL_DIR 환경 변수는 없으므로 BASE_DIR을 먼저 설정하지 않으면 스크립트 경로가 아무것도 확인되지 않습니다.
디스패치 채널
| 채널 | 모델 | 전제 조건 |
|---|---|---|
| 종합 API ★ 쉬운 경로 — 키 하나면 OK | 해외: OpenRouter (DeepSeek/Qwen/GLM/Kimi/MiniMax + Claude/GPT/Gemini). 중국: SiliconFlow 硅基流动 (DeepSeek/Qwen/GLM/Kimi/MiniMax) | 하나의 키 파일 — ~/.config/ai-keys/ 디렉터리에 openrouter.env 또는 siliconflow.env; DISPATCH_PROVIDER를 한 번 설정 |
| API 직접 호출 (curl, 벤더별) | DeepSeek / Qwen / GLM / Doubao / MiniMax | ~/.config/ai-keys/에 벤더별로 별도의 .env 파일 (고급) |
| CLI 호출 (에이전트) | Codex / Gemini / Kimi | 각 CLI의 로컬 설치 + 로그인 — 에이전트 기능(코드 작성, 네이티브 비전)에 필요 |
| 내부 서브에이전트 | Claude Haiku / Sonnet | Claude Code에 내장, 외부 종속성 없음 |
쉬운 경로 (대부분의 사용자에게 권장): 하나의 종합 키를 확보하면 선택한 제공자가 지원하는 모든 별칭을 사용할 수 있습니다. 벤더별 가입이 필요 없습니다. 해외 → OpenRouter; 중국 → SiliconFlow. 설정 방법은 README "giasip-dispatch — Dependencies"를 참조하세요.
여전히 벤더별 / CLI 경로가 필요한 경우: 직접 벤더별 키(이미 가지고 있거나 OpenRouter의 약 5.5% 크레딧 충전 수수료를 피하려는 경우); 채팅 API로는 수행할 수 없는 에이전트 작업을 위한 CLI 채널 — Codex 쓰기 모드(파일 편집), Gemini 네이티브 PDF/이미지 비전. 종합 API는 모든 순수 분석 + 다중 디스패치 사용 사례를 다룹니다.
순수 추론/분석 작업(파일 I/O, 명령어 실행, 코드 변경 없음)의 경우 종합 API / API 직접 호출을 선호하십시오. CLI보다 약 10배 빠릅니다. 작업에 에이전트 기능(파일 시스템 접근, 명령어 실행, 코드 변경, 네이티브 비전)이 필요한 경우에만 CLI를 사용하십시오.
일반 규칙 (모든 CLI 호출에 대해 필독)
- 프롬프트에 heredoc 사용 — 인용/특수 문자 문제를 방지합니다.
- 모든 CLI 호출에
</dev/null추가 — Claude Code의 Bash 환경은 닫히지 않는 stdin 파이프를 가지고 있습니다. 이것 없이는 CLI가 입력을 기다리며 멈춥니다. - 프롬프트 구성 시: 간결하고 명확하게 유지하십시오. Claude Code 특정 개념(스킬/훅/서브에이전트)을 주입하지 마십시오. 중국어 작업에는 중국어 프롬프트를, 영어 작업에는 영어 프롬프트를 사용하십시오. 필요한 경우 관련 프로젝트 컨텍스트를 포함하십시오.
복잡도 라우팅
작업 특성에 따라 디스패치 전략을 자동 선택합니다:
시각적 작업? (PDF 카탈로그 / 스캔 문서 / 스크린샷 / 이미지 파싱)
├── 예 → [Gemini CLI] — 네이티브 PDF + 이미지 시각적 분석
│ 트리거: 사용자가 이미지/PDF 경로를 제공하고 작업이 "내용 읽기"를 포함하거나;
│ markitdown 출력이 비어 있거나 비정상적으로 작은 경우
│ → markitdown을 먼저 시도하지 말고 Gemini로 직접 라우팅
│
├── 순수 추론/분석 (비즈니스 분석, 전략, 텍스트 이해, 번역)
│ → [API 직접 호출] — 에이전트 기능 불필요, curl로 API 직접 호출
│ 10배 빠름; CLI가 없는 모델 지원 (DeepSeek/Qwen/GLM 등)
│
├── 단순 + 되돌릴 수 있음 (패키지 설치, 포맷팅, 검색, 템플릿 생성)
│ → [단일 디스패치] — 속도를 위해 Claude 서브에이전트 (Haiku) 선호
│ 작업에 중국어 네이티브 또는 특정 AI 기능이 필요한 경우에만 외부 CLI 사용
│
├── 코드 실행 (버그 수정, 테스트 작성, 작은 리팩터링, 코드 파일 생성)
│ → [Codex 쓰기 모드] — sandbox=full, Codex가 코드를 직접 수정
│ 조건: 명확한 작업, git 관리 프로젝트, 통제 가능한 영향 범위
│ 항상 사용자에게 이후 `git diff`를 확인하도록 알림
│
├── 중간 복잡도 (기능 개발, 문서 분석, 코드 분석)
│ → [단일 디스패치] — 가장 적합한 AI로 전송
│
├── 복잡 + 되돌릴 수 없음 (아키텍처 설계, 기술 선택, 주요 리팩터링)
│ → [다중 디스패치] — 자동 상향, 2-3개 AI로 전송하여 출력 비교
│
└── 사용자가 AI 지정 ("이것을 Kimi로 실행")
→ [직접 할당] — 지정된 AI로 전송, 매칭 생략
다중 디스패치 트리거 (하나라도 해당하면 자동 상향):
- 사용자가 "중요", "결정적인 결정", "틀릴 수 없음"이라고 말한 경우
- 작업에 되돌릴 수 없는 작업 포함 (데이터베이스 마이그레이션, 프로덕션 배포)
- 작업이 기술 선택 또는 아키텍처 설계인 경우
- 예상 영향 범위가 10개 파일 또는 3개 모듈을 초과하는 경우
- 중국어 비즈니스/전략 분석 작업 (기본값: 3방향 병렬)
→ 작업 유형별 다중 디스패치 라인업 권장 사항은 references/model-roster.md 참조.
디스패치 방법
종합 API — ★ 쉬운 경로 (키 하나면 OK, 권장)
동일한 api-dispatch.sh는 제공자 설정 시 종합 API를 통해 라우팅됩니다. 하나의 키로 아래 모든 모델을 사용할 수 있습니다. 벤더별 가입이 필요 없습니다.
# 세션당 한 번 설정 (해외 → openrouter, 중국 → siliconflow), 이후 지원되는 모든 별칭 작동
export DISPATCH_PROVIDER=openrouter # 또는: siliconflow
$BASE_DIR/scripts/api-dispatch.sh --model deepseek "$(cat <<'EOF'
프롬프트 내용
EOF
)"
# 환경 변수 건드리지 않고 호출 시 재정의
$BASE_DIR/scripts/api-dispatch.sh --via siliconflow --model kimi "프롬프트"
# 탈출구 — 모든 종합 API 모델 ID를 그대로 전달 (별칭 테이블이 모든 것을 다룰 수 없음)
$BASE_DIR/scripts/api-dispatch.sh --via openrouter --model-id anthropic/claude-3.7-sonnet "프롬프트"
제공자 해결 순서: --via 플래그 > $DISPATCH_PROVIDER 환경 변수 > direct (기본값).
| 제공자 | 키 파일 (~/.config/ai-keys/) | 별칭 | 참고 |
|---|---|---|---|
openrouter | openrouter.env (OPENROUTER_API_KEY) | deepseek / qwen / glm / kimi / minimax / claude / gpt / gemini | 해외; 중국 본토에서는 VPN 필요 |
siliconflow | siliconflow.env (SILICONFLOW_API_KEY) | deepseek / qwen / glm / kimi / minimax | 중국 직접 연결; 오픈소스/국내 모델 전용 (Claude/GPT/Gemini 없음). 해외 사용자: export SILICONFLOW_BASE_URL=https://api.siliconflow.com/v1 |
종합 API 모델 ID는 변동 가능한 부분입니다. 별칭 → 모델 ID 매핑은
references/model-roster.md에 있습니다. 모델에서 404 오류가 발생하면 벤더의 모델 페이지를 확인하거나--model-id를 통해 올바른 ID를 전달하십시오.
API 직접 호출 — 벤더별 (고급, 종합 API 없음)
이미 벤더별 키를 가지고 있거나(종합 API의 크레딧 충전 수수료를 피하려는 경우) 각 벤더에 직접 호출할 수 있습니다. 벤더별로 별도의 .env 파일이 필요합니다:
$BASE_DIR/scripts/api-dispatch.sh --model <model> "$(cat <<'EOF'
프롬프트 내용
EOF
)"
긴 텍스트는 stdin 사용:
echo "긴 텍스트 내용" | $BASE_DIR/scripts/api-dispatch.sh --model <model> --stdin
지원되는 모델 — 전체 명단과 모델별 강점 및 다중 디스패치 라인업 권장 사항은 references/model-roster.md 참조.
| 매개변수 | 모델 | 키 파일 | 컨텍스트 |
|---|---|---|---|
deepseek | DeepSeek V4-Pro (추론 모드 켜짐) | deepseek.env | 1M |
qwen | Qwen3.6 Plus (Tongyi) | dashscope.env | 1M |
glm | GLM-5.2 (Zhipu 플래그십) | zai.env | 200K |
doubao | Doubao Seed-2.0 Pro (ByteDance) | volcengine.env | 256K |
minimax | MiniMax M3 | minimax.env | — |
모델 이름은 벤더 업데이트에 따라 변경됩니다. 호출 전에 벤더 문서를 확인하십시오.
Codex CLI (OpenAI) — App Server 프로토콜, 콜드 스타트 없음
읽기 전용 모드 (분석/검토/연구):
node $BASE_DIR/scripts/codex-appserver.mjs --effort xhigh "$(cat <<'EOF'
프롬프트 내용
EOF
)" </dev/null
쓰기 모드 (코드 변경/버그 수정/테스트 생성/파일 생성):
node $BASE_DIR/scripts/codex-appserver.mjs --effort xhigh --sandbox full "$(cat <<'EOF'
프롬프트 내용
EOF
)" </dev/null
쓰기 모드 안전 규칙:
- git으로 관리되는 프로젝트 디렉터리에서만 사용 (
--cwd /path/to/project) - 실행 후 항상 사용자에게
git diff로 변경 사항을 검토하도록 알림; 만족스럽지 않으면git checkout .으로 되돌리기 - 프로덕션 코드/데이터베이스/배포 스크립트의 경우 읽기 전용 모드로 다운그레이드하고 권장 사항을 대신 출력
참고:
--sandbox는 기본값이read-only입니다. 쓰기 모드는full을 사용합니다 (스크립트는 고급 사용을 위해workspace-write/danger-full-access도 지원)- 스크립트에는 비ASCII 경로 자동 심볼릭 링크 해결 방법이 내장되어 있습니다 (CJK 문자가 있는
--cwd는/tmp에 임시 심볼릭 링크를 자동 생성하고 종료 시 정리) 2>/dev/null을 추가하지 마십시오. 스크립트는 stderr로 구조화된 진행 상황 및 오류 정보를 출력합니다.- 긴 텍스트는 stdin을 사용할 수 있습니다:
echo "긴 텍스트" | node $BASE_DIR/scripts/codex-appserver.mjs --stdin --effort xhigh
Gemini CLI (Google) — 감독자 스크립트 권장
감독자에는 스마트 재시도/폴백 체인/회로 차단기/시간 초과/로깅이 내장되어 있습니다:
$BASE_DIR/scripts/gemini-supervisor.sh --cwd "/작업/디렉터리/경로" "$(cat <<'PROMPT_END'
프롬프트 내용
PROMPT_END
)"
감독자 기본 동작:
- 폴백 체인: 플래그십 모델 → GA 안정 → flash (사용 불가능 시 자동 건너뛰기)
- 오류 분류: 429 단기 혼잡 → 백오프 + 지터 재시도; 일일 할당량 소진 → 다음 모델로 건너뛰기; 503 → 동일한 백오프 경로
- 전역 시도 예산: 6; 모델당 하드 타임아웃: 600초 (
GEMINI_MODEL_TIMEOUT으로 구성 가능) - 회로 차단기: 모델당 3회 연속 실패 → 30분 냉각
- 로그:
~/.cache/dispatch/gemini.log(JSONL) + 상태:~/.cache/dispatch/gemini-state.json
단일 모델 지정 (폴백 건너뛰기): $BASE_DIR/scripts/gemini-supervisor.sh --model <model-id> "프롬프트"
stdin 모드 (긴 프롬프트에 권장): cat prompt.txt | $BASE_DIR/scripts/gemini-supervisor.sh --stdin --cwd "/작업/디렉터리"
Gemini 비전 / PDF 파싱 (Gemini는 PDF + 이미지 시각적 분석을 기본 지원합니다. 스캔된 PDF/스크린샷의 표준 경로):
$BASE_DIR/scripts/gemini-supervisor.sh \
--cwd "/파일/디렉터리/경로" \
"$(cat <<'PROMPT_END'
xxx.pdf의 모든 페이지를 완전히 파싱하여 마크다운 형식으로 출력하십시오:
- 모든 데이터 테이블 보존 (마크다운 테이블 구문 사용)
- 모든 사양, 기술 매개변수, 모델 번호 보존
- 페이지 번호 주석 달기 (## 페이지 1 / ## 페이지 2 ...)
- 기술적 세부 사항을 생략하지 마십시오
PROMPT_END
)" > output.md
사용 사례: PDF 카탈로그(텍스트 레이어 없음), 스캔, 제품 데이터시트, 스크린샷 분석, 이미지 OCR, 차트 데이터 추출. 대용량 출력의 경우 파일로 파이프(... > output.md)하여 stdout 잘림을 방지하십시오.
Kimi CLI (Moonshot) — 래퍼 스크립트 권장, 자동 엔드포인트 라우팅
추론 모델 규율: Kimi K2.6은 추론 모델입니다. 복잡한 프롬프트의 경우 추론에 몇 분이 걸릴 수 있습니다. 복잡한 작업의 경우 Bash 타임아웃은 ≥600000(10분)이어야 합니다. 스크립트에는 내장 SSE 스트리밍 + 유휴 가드(120초 바이트 없음 임계값) + 900초 하드 캡이 있습니다. 실행 중에 종료하거나 수동 curl로 대체하지 마십시오. 빠른 모드의 경우: 접두사
KIMI_NO_THINK=1({"thinking":{"type":"disabled"}}를 주입, ~4초 응답, 하지만 품질이 떨어짐 — 추론이 필요 없는 작업에만 해당).
# 기본값: Moonshot 일반 엔드포인트 (api.moonshot.cn/v1, MOONSHOT_API_KEY)
$BASE_DIR/scripts/kimi-dispatch.sh "$(cat <<'EOF'
프롬프트 내용
EOF
)"
# 옵트인 코딩 엔드포인트 (Kimi CLI + api.kimi.com/coding/v1, KIMI_API_KEY)
KIMI_FOR_CODING=1 $BASE_DIR/scripts/kimi-dispatch.sh "프롬프트"
# 빠른 모드 (추론 비활성화, ~4초 응답)
KIMI_NO_THINK=1 $BASE_DIR/scripts/kimi-dispatch.sh "간단한 작업"
| 엔드포인트 | 특성 | 최적 사용 사례 |
|---|---|---|
| 기본 Moonshot 일반 | 추론 표시, 후속 질문 성향 유지 | 일반 분석, Q&A |
KIMI_FOR_CODING=1 | 더 큰 출력 볼륨, 내장 에이전트 하네스, 추론 숨김 | 긴 보고서, 에이전트 기반 파일 쓰기, 다단계 코드 |
Claude Code 내부 서브에이전트 (외부 CLI 없음)
간단한 작업에는 Haiku를, 표준 작업에는 Sonnet을 사용하십시오. Agent 도구를 통해 서브에이전트를 생성합니다 (model: haiku 또는 model: sonnet 지정). 헤드리스 CLI보다 빠르고 저렴하며 외부 종속성이 없습니다.
환경 확인
디스패치 전 빠른 가용성 확인:
# CLI 도구
command -v codex; command -v gemini; command -v kimi
# API 키 (API 직접 호출용)
ls ~/.config/ai-keys/*.env 2>/dev/null
사용 가능한 모델에만 디스패치하십시오. CLI를 사용할 수 없으면 API 직접 호출로 폴백하거나 모델을 전환하십시오. API 키 파일이 존재하면 해당 모델을 호출할 수 있음을 의미합니다.
다중 모델 병렬 처리 (교차 검증 / 다중 관점)
동일한 질문에 대해 여러 모델이 독립적인 관점을 제공해야 하는 경우 여러 Bash 호출을 병렬로 실행하고 Claude가 결과를 종합하도록 합니다. 일반적인 시나리오: 중요한 결정, 기술 선택, 되돌릴 수 없는 작업 전 사전 점검, 단일 모델 출력에 대한 신뢰도가 낮은 경우.
# 3방향 병렬 예시 (동일한 프롬프트를 세 모델에 전송)
$BASE_DIR/scripts/kimi-dispatch.sh "분석 작업" &
$BASE_DIR/scripts/api-dispatch.sh --model deepseek "분석 작업" &
$BASE_DIR/scripts/api-dispatch.sh --model doubao "분석 작업" &
wait
선택 원칙: 인지적 다양성 > 수량 — 훈련 데이터/아키텍처가 다른 모델을 선택하여 진정으로 다른 관점을 얻으십시오. 항상 각 모델의 최상위 티어를 사용하십시오. 비용은 병렬 모델 수와 선택한 모델을 기준으로 제어하십시오.
참고 사항
모델 명단
references/model-roster.md— 지원되는 모든 모델, 강점, 다중 디스패치 라인업 권장 사항.
샘플 워크플로우 (samples/ 디렉터리)
samples/dispatch-deepseek.md— DeepSeek API 디스패치 예시samples/dispatch-codex.md— Codex App Server 디스패치 예시samples/dispatch-gemini.md— Gemini supervisor 디스패치 예시samples/dispatch-kimi.md— Kimi 디스패치 예시samples/multi-dispatch.md— 다중 모델 병렬 디스패치 예시samples/aggregator-dispatch.md— 종합 API 디스패치 예시
문제 해결 가이드 (references/troubleshooting.md)
일반적인 문제 및 해결 방법:
- CLI가 멈춤: Bash heredoc 호출 시 항상
</dev/null을 추가하십시오. - 모델 404 오류: 종합 API를 사용하는 경우
--model-id로 올바른 모델 ID를 전달하거나 벤더 모델 페이지를 확인하십시오. - Kimi 시간 초과:
KIMI_NO_THINK=1을 설정하거나 Bash 타임아웃(TIMEOUT)을 늘리십시오. - Gemini 할당량 오류: 감독자는 자동으로 폴백합니다.
gemini-state.json을 확인하십시오. - Codex 쓰기 모드가 작동하지 않음:
--cwd가 git 관리 프로젝트 디렉터리를 가리키는지 확인하십시오.
권장 사항
- 가급적 종합 API 경로를 사용하십시오 (가장 간단하고 비용 효율적).
- 복잡한 작업에는 항상 다중 모델 병렬 처리를 사용하여 정확도와 신뢰도를 높이십시오.
- 다중 디스패치 시 모든 최종 결과를 주의 깊게 검토하고 종합하십시오.
- 정기적으로
references/아래의 문서를 업데이트하여 모델 변경 사항을 반영하십시오.