| name | giasip-dispatch |
| version | 1.2.0 |
| description | 多模型调用器 — 把任务或 prompt 派发给其他 AI 模型(Codex / Gemini / Kimi / DeepSeek / 豆包 / Qwen / GLM / MiniMax)执行并取回结果。当你想用某个或某几个其他模型跑任务、需要多模型交叉对比验证、或想用更便宜的模型省钱时触发。提供两类调用通道:API 直调(只需 API key)和 CLI 调用(需本地装对应 CLI)。触发信号:「用 Kimi/Codex/Gemini 跑一下」「交给其他 AI」「换个模型试试」「让几个模型都看看」「这个不用最贵的模型」。 |
| author | GiaSip <https://github.com/GiaSip> |
| license | MIT |
| compatibility | claude-code |
✦ A GiaSip skill · part of the giasip toolkit · github.com/GiaSip
/dispatch — 多模型调用器
把一个任务或 prompt 派发给其他 AI 模型执行,取回结果。这个 skill 只提供调用能力——选哪个模型、单派还是多派,由你(或当前的 Claude)根据任务临场判断,本 skill 不内置选型偏好。
脚本目录(Script Directory)
重要:所有脚本都在本 skill 目录下的 scripts/ 子目录里。
Agent 准备 —— 跑下面任何命令前先做一次:确定包含本 SKILL.md 的目录的绝对路径,export 为 BASE_DIR:
export BASE_DIR="$HOME/.claude/skills/giasip-dispatch"
下文所有命令都用 $BASE_DIR/scripts/<脚本名> 引用脚本。BASE_DIR 是你自己在 session 里设的 shell 变量——运行时不存在 CLAUDE_SKILL_DIR 这个注入变量,所以必须先设 BASE_DIR,否则脚本路径会解析为空。
两类调用通道
| 通道 | 模型 | 前提 |
|---|
| API 直调(curl,最快) | DeepSeek / Qwen / GLM / 豆包 / MiniMax | 只需在 ~/.config/ai-keys/ 放对应 .env(含 API key) |
| CLI 调用 | Codex / Gemini / Kimi | 需本地安装并登录对应 CLI |
| 内部 SubAgent | Claude Haiku / Sonnet | Claude Code 自带,无需外部依赖 |
纯思考/分析类任务(不需要读文件、执行命令、改代码)优先走 API 直调——比 CLI 快约 10 倍。需要 Agent 能力(操作文件系统、执行命令、改代码)才走 CLI。
通用纪律(所有 CLI 调用必读)
- 用 heredoc 传 prompt —— 避免引号 / 特殊字符问题。
- 所有 CLI 调用加
</dev/null —— Claude Code 的 Bash 环境中 stdin 是永不关闭的管道,不加会导致 CLI 卡死在等待 stdin。
- 构造 prompt 时:简洁明确;不要塞入 Claude Code 专有概念(skills / hooks / SubAgent);中文任务用中文 prompt,英文任务用英文 prompt;涉及具体项目时补必要上下文。
复杂度路由
根据任务性质自动选择派遣策略:
视觉任务?(PDF 图册 / 扫描件 / 截图 / 图片解析)
├── 是 → [Gemini CLI] — 原生 PDF + 图片视觉解析
│ 触发:用户提供了图片/PDF 路径 + 任务涉及"读取"内容;
│ 或 markitdown 输出为空/异常小
│ → 不要先试 markitdown——直接路由 Gemini
│
├── 纯思考/分析(商业分析、战略、文本理解、翻译)
│ → [API 直调] — 不需要 Agent 能力,直接 curl
│ 快 10 倍;支持没有 CLI 的模型(DeepSeek/Qwen/GLM 等)
│
├── 简单 + 可逆(装包、格式化、搜索、生成模板)
│ → [单派] — 优先 Claude SubAgent (Haiku) 追求速度
│ 只有需要中文原生或特定 AI 能力时才走外部 CLI
│
├── 代码执行(修 bug、写测试、小重构、生成代码文件)
│ → [Codex 写模式] — sandbox=full,Codex 直接改代码
│ 条件:任务明确、在 git 管理项目中、影响可控
│ 执行后必须提醒用户 `git diff`
│
├── 中等复杂(功能开发、文档分析、代码分析)
│ → [单派] — 发给最合适的 AI
│
├── 复杂 + 不可逆(架构设计、技术选型、大重构)
│ → [多派] — 自动升级,发给 2-3 个 AI 对比
│
└── 用户指定("用 Kimi 跑一下")
→ [直接指派] — 发给指定 AI,跳过匹配
多派触发条件(满足任一自动升级):
- 用户说"重要"、"关键决策"、"不能出错"
- 任务涉及不可逆操作(数据库迁移、生产部署)
- 任务是技术选型或架构设计
- 预估影响面 > 10 文件或 3 模块
- 中文商业/战略分析任务(默认三路并行)
→ 多派阵容推荐见 references/model-roster.md。
调用方式
API 直调(DeepSeek / Qwen / GLM / 豆包 / MiniMax)
不需要 Agent 能力的纯分析任务,直接调 API。通用脚本:
$BASE_DIR/scripts/api-dispatch.sh --model <model> "$(cat <<'EOF'
prompt 内容
EOF
)"
长文本用 stdin:
echo "长文本内容" | $BASE_DIR/scripts/api-dispatch.sh --model <model> --stdin
支持的模型 — 完整阵容及各模型强项见 references/model-roster.md。
| 参数 | 模型 | Key 文件 | 上下文 |
|---|
deepseek | DeepSeek V4-Pro(思考模式默认开) | deepseek.env | 1M |
qwen | 通义千问 Qwen3.6 Plus | dashscope.env | 1M |
glm | 智谱 GLM-5.1(旗舰) | zai.env | 200K |
doubao | 字节豆包 Seed-2.0 Pro | volcengine.env | 256K |
minimax | MiniMax M2.7 | minimax.env | — |
模型名随版本更新——调用前可查各家最新文档。
Codex CLI(OpenAI)— 通过 App Server 协议直连,无冷启动
只读模式(分析 / review / 调研):
node $BASE_DIR/scripts/codex-appserver.mjs --effort xhigh "$(cat <<'EOF'
prompt 内容
EOF
)" </dev/null
写模式(改代码 / 修 bug / 写测试 / 生成文件):
node $BASE_DIR/scripts/codex-appserver.mjs --effort xhigh --sandbox full "$(cat <<'EOF'
prompt 内容
EOF
)" </dev/null
写模式安全规则:
- 仅在 git 管理的项目目录中使用(
--cwd /path/to/project)
- 执行完成后必须提醒用户
git diff 检查变更;不满意 git checkout . 回退
- 涉及生产代码 / 数据库 / 部署脚本时,降级为只读模式 + 输出建议
注意:
--sandbox 默认 read-only;写模式用 full(脚本另支持 workspace-write / danger-full-access 等高级值)
- 脚本已内置非 ASCII 路径自动 symlink 绕行(
--cwd 含中文等字符时自动在 /tmp 建临时 symlink,退出清理)
- 不要加
2>/dev/null——脚本在 stderr 输出结构化进度和错误信息
- 长文本可用 stdin:
echo "长文本" | node $BASE_DIR/scripts/codex-appserver.mjs --stdin --effort xhigh
Gemini CLI(Google)— 推荐走 supervisor 脚本
supervisor 内置智能 retry / fallback chain / circuit breaker / timeout / 日志:
$BASE_DIR/scripts/gemini-supervisor.sh --cwd "/path/to/work/dir" "$(cat <<'PROMPT_END'
prompt 内容
PROMPT_END
)"
Supervisor 默认行为:
- Fallback chain:高配模型 → GA 稳定版 → flash 版(任一不可用自动跳下一个)
- 错误分类:429 短期拥塞 backoff + jitter 重试;日 quota 耗尽立即跳下一个模型;503 走相同 backoff 路径
- 全局 attempt budget 6 次;单模型 hard timeout 600s(可改
GEMINI_MODEL_TIMEOUT)
- Circuit breaker:单模型连续 3 次失败进 30 分钟 cool-down
- 日志
~/.cache/dispatch/gemini.log(JSONL)+ 状态 ~/.cache/dispatch/gemini-state.json
指定单一模型(不走 fallback): $BASE_DIR/scripts/gemini-supervisor.sh --model <model-id> "prompt"
stdin 模式(长 prompt 推荐): cat prompt.txt | $BASE_DIR/scripts/gemini-supervisor.sh --stdin --cwd "/work/dir"
Gemini 视觉 / PDF 解析(Gemini 原生支持 PDF + 图片视觉解析,是处理无文字层 PDF / 截图的标准路径):
$BASE_DIR/scripts/gemini-supervisor.sh \
--cwd "/path/to/files/dir" \
"$(cat <<'PROMPT_END'
请完整解析 xxx.pdf 的所有页面内容,输出 markdown 格式:
- 保留所有数据表格(用 markdown 表格语法)
- 保留所有规格、技术参数、型号
- 标注页码(## Page 1 / ## Page 2 ...)
- 不要省略任何技术细节
PROMPT_END
)" > output.md
适用:PDF 图册(无文字层)、扫描件、产品样本、截图分析、图片 OCR、图表数据提取。输出大文件时建议管道写盘(... > output.md),避免长输出截断 stdout。
Kimi CLI(月之暗面)— 推荐走封装脚本,自动 endpoint 路由
Thinking 模型纪律:Kimi K2.6 是 thinking 模型——复杂 prompt 推理可能耗时数分钟。Bash timeout 必须 ≥600000(10 分钟)。脚本内置 SSE streaming + idle guard(120s 无字节阈值)+ 900s hard cap。不要中途 kill 或用手写 curl 替代。快速模式:前缀 KIMI_NO_THINK=1(注入 {"thinking":{"type":"disabled"}},~4s 响应,但质量下降——仅用于非推理任务)。
$BASE_DIR/scripts/kimi-dispatch.sh "$(cat <<'EOF'
prompt 内容
EOF
)"
KIMI_FOR_CODING=1 $BASE_DIR/scripts/kimi-dispatch.sh "prompt"
KIMI_NO_THINK=1 $BASE_DIR/scripts/kimi-dispatch.sh "简单任务"
| Endpoint | 特点 | 适合 |
|---|
| 默认 Moonshot 通用 | reasoning 可见、保留追问倾向 | 通用分析、综合问答 |
KIMI_FOR_CODING=1 | 输出体量更大、自带 agent harness、reasoning 不可见 | 长篇报告、agent 自主写文件、多步骤代码 |
Claude Code 内部 SubAgent(不走外部 CLI)
简单任务用 Haiku、标准任务用 Sonnet 时,直接用 Agent 工具派 SubAgent(指定 model: haiku 或 model: sonnet)——比 headless CLI 更快更便宜,且无外部依赖。
环境检查
调用前快速确认可用工具:
command -v codex; command -v gemini; command -v kimi
ls ~/.config/ai-keys/*.env 2>/dev/null
只派可用的模型。CLI 不可用时切到 API 直调或换模型;API key 存在即可调用对应模型。
多模型并行(交叉对比 / 多方验证)
需要多个模型对同一问题给出独立视角时,并行发出多个 Bash 调用即可,最后由 Claude 综合对比。典型场景:重要决策、技术选型、不可逆操作前的交叉验证、对单一模型结果不放心。
$BASE_DIR/scripts/kimi-dispatch.sh "分析任务" &
$BASE_DIR/scripts/api-dispatch.sh --model deepseek "分析任务" &
$BASE_DIR/scripts/api-dispatch.sh --model doubao "分析任务" &
wait
选阵原则:认知多样性 > 数量——选训练数据 / 架构差异大的模型,得到的视角才真正不同;始终用各模型最高配置,控成本靠控频率而非降单次质量。
执行参数
- Bash timeout:
- Codex 深度推理(xhigh):
600000(10 分钟,Bash 工具上限,与脚本默认 600s 对齐)
- Gemini 单派:
240000(4 分钟);多派每路 300000(5 分钟)
- Kimi(thinking 模型):单派/多派一律
≥600000(推理尾部长且不可预测);仅 KIMI_NO_THINK=1 快速模式可用 240000
- 单派 = 一个 Bash 调用;多派 = 多个 Bash 调用并行发出
- Codex 走 App Server 协议直连无冷启动,xhigh 深度推理通常 3-8 分钟
- Gemini / Kimi 走 CLI headless 模式,保留
2>/dev/null
Fallback 链
首选通道失败(超时 / 报错)
→ 尝试备选模型(同类能力)
→ 备选也失败
→ 降级为"仅推荐"模式:输出建议方案但不执行,交还用户
输出格式
单派:
## 任务执行结果
**执行者:** [模型名] **任务:** [一句话复述]
### 结果
[模型输出]
### 执行信息
- 耗时:[X 秒] 状态:[成功 / 部分成功 / 失败]
多派:
## 任务执行结果(多派)
**任务:** [一句话复述]
### [模型 1] 的方案
[核心要点 3-5 条]
### [模型 2] 的方案
[核心要点 3-5 条]
### 综合分析
- **共识:** [各方一致的部分]
- **分歧:** [不同点,标注各方立场]
- **我的判断:** [Claude 作为调度员的独立评估]
回答持久化
使用 dispatch-persist.mjs 将完整一手回答持久化到 ~/.cache/dispatch/responses/YYYY/MM/DD/<response_id>.md(YAML frontmatter + prompt + response),并追加到 ~/.cache/dispatch/index.jsonl(消费入口)。将 dispatch 输出 pipe 给此脚本,或将其 hook 进 dispatch 脚本,避免回答随 /tmp 或 session 日志丢失。
多派时设置 DISPATCH_BATCH_ID 将同批回答归组:
batch_id="$(uuidgen)"
DISPATCH_BATCH_ID="$batch_id" $BASE_DIR/scripts/kimi-dispatch.sh "任务" &
DISPATCH_BATCH_ID="$batch_id" $BASE_DIR/scripts/api-dispatch.sh --model deepseek "任务" &
wait
实现细节见 $BASE_DIR/scripts/dispatch-persist.mjs。
脚本清单
| 脚本 | 作用 |
|---|
api-dispatch.sh | API 直调(DeepSeek / Qwen / GLM / 豆包 / MiniMax) |
codex-appserver.mjs | Codex App Server 协议直连(只读 / 写模式) |
gemini-supervisor.sh | Gemini CLI 调用 + retry / fallback / circuit breaker |
kimi-dispatch.sh | Kimi 调用 + endpoint 路由 + thinking 模式控制 |
dispatch-persist.mjs | 回答持久化 — 自动落盘 dispatch 结果 |
stop-review-gate.mjs | Codex stop hook — 停止前门控代码 review |
安装、依赖、API key 配置见 README.md。