Loading...
Loading...
Compare original and translation side by side
~/.dispatch/config.yaml~/.dispatch/config.yamlwhich agent 2>/dev/null # Cursor CLI
which claude 2>/dev/null # Claude Code
which codex 2>/dev/null # Codex CLI (OpenAI)which agent 2>/dev/null # Cursor CLI
which claude 2>/dev/null # Claude Code
which codex 2>/dev/null # Codex CLI (OpenAI)agent models 2>&1<id> - <Display Name>(current)(default)opussonnethaikumodelsopussonnethaikuopusclaude-opus-4-6codex modelsgpt-5.3-codexgpt-5.3-codex-sparkgpt-5.2gptcodexo1o3o4-minicodexagent modelscodexagent modelsclaudecodexagentclaudecodex~/.dispatch/config.yaml${SKILL_DIR}/references/config-example.yamlagent models 2>&1<id> - <显示名称>(current)(default)opussonnethaikumodelsopussonnethaikuopusclaude-opus-4-6codex modelsgpt-5.3-codexgpt-5.3-codex-sparkgpt-5.2gptcodexo1o3o4-minicodexagent modelscodexagent modelsclaudecodexagentclaudecodex~/.dispatch/config.yaml${SKILL_DIR}/references/config-example.yaml~/.dispatch/config.yaml~/.dispatch/config.yamldefault: <user's chosen default>
backends:
claude:
command: >
env -u CLAUDE_CODE_ENTRYPOINT -u CLAUDECODE
claude -p --dangerously-skip-permissions
cursor:
command: >
agent -p --force --workspace "$(pwd)"
codex:
command: >
codex exec --full-auto -C "$(pwd)"
models:
# Claude
opus: { backend: claude }
sonnet: { backend: claude }
haiku: { backend: claude }
# GPT / OpenAI
gpt-5.3-codex: { backend: codex }
# ... all detected models grouped by provider# Claude# GPT# Geminiopussonnethaikusonnet-4.6opus-4.5-thinkingbackend: claude--modelgptcodexo1o3o4-minibackend: codexcursormkdir -p ~/.dispatchdefault: <用户选择的默认模型>
backends:
claude:
command: >
env -u CLAUDE_CODE_ENTRYPOINT -u CLAUDECODE
claude -p --dangerously-skip-permissions
cursor:
command: >
agent -p --force --workspace "$(pwd)"
codex:
command: >
codex exec --full-auto -C "$(pwd)"
models:
# Claude
opus: { backend: claude }
sonnet: { backend: claude }
haiku: { backend: claude }
# GPT / OpenAI
gpt-5.3-codex: { backend: codex }
# ... 所有检测到的模型按提供商分组# Claude# GPT# Geminiopussonnethaikusonnet-4.6opus-4.5-thinkingbackend: claude--modelgptcodexo1o3o4-minibackend: codexcursormkdir -p ~/.dispatch~/.dispatch/config.yamlbackends:models:aliases:agent modelsmodels:gpt-5.3: { backend: cursor }aliases:aliases:
security-reviewer:
model: opus
prompt: >
You are a security-focused reviewer. Prioritize OWASP Top 10
vulnerabilities, auth flaws, and injection risks.default:models:mkdir -p ~/.dispatch~/.dispatch/config.yaml~/.dispatch/config.yamlbackends:models:aliases:agent modelsmodels:gpt-5.3: { backend: cursor }aliases:aliases:
security-reviewer:
model: opus
prompt: >
你是一名专注于安全的审核人员。优先关注OWASP Top 10
漏洞、认证缺陷和注入风险。default:models:mkdir -p ~/.dispatch~/.dispatch/config.yaml~/.dispatch/config.yaml~/.dispatch/config.yamlagents:models:backends:default:agents.<name>.command/dispatch "migrate my config"agents:models:backends:default:agents.<name>.command/dispatch "migrate my config"models:aliases:backendcommandcursorcodex--model <model-id>claude--model--modelmodelpromptagent modelsclaudecodexcursoropussonnethaikuclaudegptcodexo1o3o4-minicodexagent modelsdefaultopussonnethaikusonnet-4.6opus-4.5-thinkingclaudegptcodexo1o3o4-minicodexcursormodels:aliases:backendcommandcursorcodex--model <model-id>claude--modelmodelpromptagent modelsclaudecodexcursoropussonnethaikuclaudegptcodexo1o3o4-minicodexagent modelsdefaultopussonnethaikusonnet-4.6opus-4.5-thinkingclaudegptcodexo1o3o4-minicodexcursor--model <model-id>gpt-5.3-codexbackend: cursoragent -p --force --workspace "$(pwd)"--model gpt-5.3-codexagent -p --force --workspace "$(pwd)" --model gpt-5.3-codex--modelopusbackend: claudeenv -u ... claude -p --dangerously-skip-permissions--model <model-id>gpt-5.3-codexbackend: codexcodex exec --full-auto -C "$(pwd)"--model gpt-5.3-codexcodex exec --full-auto -C "$(pwd)" --model gpt-5.3-codex--modelopus--modelsecurity-reviewermodel: opusprompt:backend: claudeenv -u ... claude -p --dangerously-skip-permissions--model--model <model-id>gpt-5.3-codexbackend: cursoragent -p --force --workspace "$(pwd)"--model gpt-5.3-codexagent -p --force --workspace "$(pwd)" --model gpt-5.3-codex--modelopusbackend: claudeenv -u ... claude -p --dangerously-skip-permissions--model <model-id>gpt-5.3-codexbackend: codexcodex exec --full-auto -C "$(pwd)"--model gpt-5.3-codexcodex exec --full-auto -C "$(pwd)" --model gpt-5.3-codex--modelopus--modelsecurity-reviewermodel: opusprompt:backend: claudeenv -u ... claude -p --dangerously-skip-permissions--model.dispatch/tasks/<task-id>/plan.mdundefined.dispatch/tasks/<task-id>/plan.mdundefined
Rules for writing plans:
- Each item should be a **concrete, verifiable action** (not vague like "review code").
- 3-8 items is the sweet spot. Too few = no visibility. Too many = micromanagement.
- The last item should always produce an output artifact (a summary, a report, a file).
- Use the Write tool to create the plan file. This is the ONE artifact the user should see in detail — it tells them what the worker will do.
编写计划的规则:
- 每个条目应为**具体、可验证的操作**(不要像"审核代码"这样模糊)。
- 3-8个条目是最佳数量。太少=缺乏可见性,太多=过度管控。
- 最后一个条目应始终生成一个输出产物(摘要、报告、文件等)。
- 使用Write工具创建计划文件。这是用户需要详细查看的唯一产物 — 它告知用户worker将执行的操作。descriptiondescriptionmkdir -p .dispatch/tasks/<task-id>/ipc/tmp/dispatch-<task-id>-prompt.txtprompt/tmp/worker--<task-id>.shcursorcodex--model <model-id>claude--model<command> "$(cat /tmp/dispatch-<task-id>-prompt.txt)" 2>&1/tmp/sentinel--<task-id>.sh.question<task-notification>chmod +x# description: "Set up dispatch scaffolding for security-review"
mkdir -p .dispatch/tasks/security-review/ipc
cat > /tmp/dispatch-security-review-prompt.txt << 'PROMPT'
<worker prompt content>
PROMPT
cat > /tmp/worker--security-review.sh << 'WORKER'
#!/bin/bash
env -u CLAUDE_CODE_ENTRYPOINT -u CLAUDECODE claude -p --dangerously-skip-permissions "$(cat /tmp/dispatch-security-review-prompt.txt)" 2>&1
WORKER
cat > /tmp/sentinel--security-review.sh << 'SENTINEL'
#!/bin/bash
IPC_DIR=".dispatch/tasks/security-review/ipc"
shopt -s nullglob
while true; do
[ -f "$IPC_DIR/.done" ] && exit 0
for q in "$IPC_DIR"/*.question; do
seq=$(basename "$q" .question)
[ ! -f "$IPC_DIR/${seq}.answer" ] && exit 0
done
sleep 3
done
SENTINEL
chmod +x /tmp/worker--security-review.sh /tmp/sentinel--security-review.sh--modelcat > /tmp/worker--code-review.sh << 'WORKER'
#!/bin/bash
agent -p --force --workspace "$(pwd)" --model gpt-5.3-codex "$(cat /tmp/dispatch-code-review-prompt.txt)" 2>&1
WORKER--modelcat > /tmp/worker--code-review.sh << 'WORKER'
#!/bin/bash
codex exec --full-auto -C "$(pwd)" --model gpt-5.3-codex "$(cat /tmp/dispatch-code-review-prompt.txt)" 2>&1
WORKERrun_in_background: true# description: "Run dispatch worker: security-review"
bash /tmp/worker--security-review.sh# description: "Run dispatch sentinel: security-review"
bash /tmp/sentinel--security-review.shmkdir -p .dispatch/tasks/<task-id>/ipc/tmp/dispatch-<task-id>-prompt.txtprompt/tmp/worker--<task-id>.shcursorcodex--model <model-id>claude--model<command> "$(cat /tmp/dispatch-<task-id>-prompt.txt)" 2>&1/tmp/sentinel--<task-id>.sh.question<task-notification>chmod +x# description: "为安全审核设置调度脚手架"
mkdir -p .dispatch/tasks/security-review/ipc
cat > /tmp/dispatch-security-review-prompt.txt << 'PROMPT'
<worker提示词内容>
PROMPT
cat > /tmp/worker--security-review.sh << 'WORKER'
#!/bin/bash
env -u CLAUDE_CODE_ENTRYPOINT -u CLAUDECODE claude -p --dangerously-skip-permissions "$(cat /tmp/dispatch-security-review-prompt.txt)" 2>&1
WORKER
cat > /tmp/sentinel--security-review.sh << 'SENTINEL'
#!/bin/bash
IPC_DIR=".dispatch/tasks/security-review/ipc"
shopt -s nullglob
while true; do
[ -f "$IPC_DIR/.done" ] && exit 0
for q in "$IPC_DIR"/*.question; do
seq=$(basename "$q" .question)
[ ! -f "$IPC_DIR/${seq}.answer" ] && exit 0
done
sleep 3
done
SENTINEL
chmod +x /tmp/worker--security-review.sh /tmp/sentinel--security-review.sh--modelcat > /tmp/worker--code-review.sh << 'WORKER'
#!/bin/bash
agent -p --force --workspace "$(pwd)" --model gpt-5.3-codex "$(cat /tmp/dispatch-code-review-prompt.txt)" 2>&1
WORKER--modelcat > /tmp/worker--code-review.sh << 'WORKER'
#!/bin/bash
codex exec --full-auto -C "$(pwd)" --model gpt-5.3-codex "$(cat /tmp/dispatch-code-review-prompt.txt)" 2>&1
WORKERrun_in_background: true# description: "运行调度worker:安全审核"
bash /tmp/worker--security-review.sh# description: "运行调度哨兵:安全审核"
bash /tmp/sentinel--security-review.sh{task-id}You have a plan file at .dispatch/tasks/{task-id}/plan.md containing a checklist.
Work through it top to bottom. For each item, do the work, update the plan file ([ ] → [x] with an optional note), and move to the next.
If you need to ask the user a question, write it to .dispatch/tasks/{task-id}/ipc/<NNN>.question (atomic write via temp file + mv; sequence from 001). Poll for a matching .answer file. When you receive the answer, write a .done marker and continue. If no answer arrives within 3 minutes, write your context to .dispatch/tasks/{task-id}/context.md, mark the item [?] with the question, and stop.
If you hit an unresolvable error, mark the item [!] with a description and stop.
When all items are checked, write a completion marker: touch .dispatch/tasks/{task-id}/ipc/.done — then your work is done.{task-id}你有一个计划文件位于.dispatch/tasks/{task-id}/plan.md,其中包含一个任务清单。
从上到下逐步执行。对于每个条目,完成工作、更新计划文件(将[ ]改为[x],可添加可选注释),然后继续下一个条目。
如果你需要向用户提问,请将问题写入.dispatch/tasks/{task-id}/ipc/<NNN>.question(通过临时文件+mv实现原子写入;序号从001开始)。轮询匹配的.answer文件。收到答复后,写入.done标记并继续。如果3分钟内未收到答复,将上下文写入.dispatch/tasks/{task-id}/context.md,将条目标记为[?]并附上问题,然后停止。
如果遇到无法解决的错误,将条目标记为[!]并附上描述,然后停止。
当所有条目都已完成时,写入完成标记:touch .dispatch/tasks/{task-id}/ipc/.done — 你的工作即完成。Context:ghgitgrepgh pr merge <number> --mergeContext:ghgitgrepgh pr merge <number> --mergesecurity-reviewadd-authfix-login-bugsecurity-reviewadd-authfix-login-bugsecurity-reviewsecurity-review<task-notification>cat .dispatch/tasks/<task-id>/plan.mdcat .dispatch/tasks/<task-id>/plan.mdls .dispatch/tasks/<task-id>/ipc/*.question 2>/dev/nullTaskOutput(task_id=<worker-task-id>, block=false, timeout=3000)ps aux | grep dispatch<task-notification>cat .dispatch/tasks/<task-id>/plan.mdcat .dispatch/tasks/<task-id>/plan.mdls .dispatch/tasks/<task-id>/ipc/*.question 2>/dev/nullTaskOutput(task_id=<worker-task-id>, block=false, timeout=3000)ps aux | grep dispatch- [x]- [ ]- [?]- [!]- [x]- [ ]- [?]- [!]<task-notification>*.question*.answerls .dispatch/tasks/<task-id>/ipc/.dispatch/tasks/<task-id>/ipc/001.questionecho "<user's answer>" > .dispatch/tasks/<task-id>/ipc/001.answer.tmp
mv .dispatch/tasks/<task-id>/ipc/001.answer.tmp .dispatch/tasks/<task-id>/ipc/001.answer/tmp/sentinel--<task-id>.shrun_in_background: true001.done<task-notification>.answer*.questionls .dispatch/tasks/<task-id>/ipc/.dispatch/tasks/<task-id>/ipc/001.questionecho "<用户的答复>" > .dispatch/tasks/<task-id>/ipc/001.answer.tmp
mv .dispatch/tasks/<task-id>/ipc/001.answer.tmp .dispatch/tasks/<task-id>/ipc/001.answer/tmp/sentinel--<task-id>.shrun_in_background: true001.done[?][?].dispatch/tasks/<task-id>/context.md[?]<task-notification>- [?].dispatch/tasks/<task-id>/context.mdcontext.md.dispatch/tasks/<task-id>/context.md[?]<task-notification>- [?].dispatch/tasks/<task-id>/context.mdcontext.md.dispatch/tasks/<task-id>/ipc/.dispatch/tasks/<task-id>/ipc/001.question001.answer001.done001002003001.question001.answer001.done001002003<filename>.tmpmv <filename>.tmp <filename><filename>.tmpmv <filename>.tmp <filename>*.question*.question.dispatch/tasks/ipc/*.question*.answer.dispatch/tasks/ipc/.answer*.questionwhich agent 2>/dev/null
which claude 2>/dev/null
which codex 2>/dev/nulldefault:agentclaudecodexwhich agent 2>/dev/null
which claude 2>/dev/null
which codex 2>/dev/nulldefault:agentclaudecodex.dispatch/tasks/security-review/plan.md.dispatch/tasks/update-readme/plan.md.dispatch/tasks/security-review/plan.md.dispatch/tasks/update-readme/plan.md- [!]- [!].dispatch/tasks/.dispatch/.dispatch/tasks/.dispatch/User: /dispatch "do a security review of this project"
Dispatcher: [reads ~/.dispatch/config.yaml — default model: opus]
Dispatcher: [writes .dispatch/tasks/security-review/plan.md]
Dispatcher: [single Bash call: creates IPC dir, prompt file, wrapper script, sentinel script]
Dispatcher: [spawns worker and sentinel as background tasks]
Dispatcher: Dispatched `security-review` using opus. Plan:
1. Scan for hardcoded secrets
2. Review auth logic
3. Check dependencies
4. Audit injection risks
5. Write findings report
What else?
[<task-notification> arrives — worker finished]
Dispatcher: [reads plan.md — all items checked]
Dispatcher: `security-review` complete. Found 2 issues:
1. Hardcoded API key in config.ts:14
2. No rate limiting on /api/login endpoint
Full report at .dispatch/tasks/security-review/output.md用户:/dispatch "对这个项目进行安全审核"
调度器:[读取~/.dispatch/config.yaml — 默认模型:opus]
调度器:[写入.dispatch/tasks/security-review/plan.md]
调度器:[单个Bash调用:创建IPC目录、提示文件、包装脚本、哨兵脚本]
调度器:[将worker和哨兵作为后台任务启动]
调度器:已使用opus调度`security-review`任务。计划:
1. 扫描硬编码的敏感信息
2. 审核认证逻辑
3. 检查依赖项
4. 审计注入风险
5. 编写发现报告
还有其他需求吗?
[<task-notification>到达 — worker已完成]
调度器:[读取plan.md — 所有条目已完成]
调度器:`security-review`任务完成。发现2个问题:
1. config.ts:14中存在硬编码的API密钥
2. /api/login端点没有速率限制
完整报告位于.dispatch/tasks/security-review/output.mdUser: /dispatch "implement the feature described in requirements.txt"
Dispatcher: [writes plan, sets up scaffolding, spawns worker + sentinel]
Dispatcher: Dispatched `impl-feature` using opus. Plan: ...
[<task-notification> arrives — sentinel detected a question]
Dispatcher: [reads .dispatch/tasks/impl-feature/ipc/001.question]
Dispatcher: Worker is asking: "requirements.txt doesn't exist. What feature should I implement?"
User: Add a /health endpoint that returns JSON with uptime and version.
Dispatcher: [writes 001.answer atomically, respawns sentinel]
Dispatcher: Answer sent. Worker is continuing.
[<task-notification> arrives — worker finished]
Dispatcher: [reads plan.md — all items checked]
Dispatcher: Done! /health endpoint implemented.用户:/dispatch "实现requirements.txt中描述的功能"
调度器:[写入计划、设置脚手架、启动worker + 哨兵]
调度器:已使用opus调度`impl-feature`任务。计划:...
[<task-notification>到达 — 哨兵检测到问题]
调度器:[读取.dispatch/tasks/impl-feature/ipc/001.question]
调度器:Worker提问:"requirements.txt不存在。我应该实现什么功能?"
用户:添加一个/health端点,返回包含运行时间和版本的JSON。
调度器:[原子性地写入001.answer,重新启动哨兵]
调度器:答复已发送。Worker正在继续执行。
[<task-notification>到达 — worker已完成]
调度器:[读取plan.md — 所有条目已完成]
调度器:完成!/health端点已实现。User: /dispatch "review the auth module"
Dispatcher: [no ~/.dispatch/config.yaml found — running first-run setup]
Dispatcher: [runs `which agent` → found, `which claude` → found]
Dispatcher: [runs `agent models` → 15 models detected]
Dispatcher: Found Cursor CLI (15 models) and Claude Code. Notable models:
- opus (Claude) — best for complex tasks
- sonnet (Claude) — fast and capable
- gpt-5.3-codex (GPT) — strong for code
AskUserQuestion: Which model should be your default?
1. opus (Recommended)
2. sonnet
3. gpt-5.3-codex
User: opus
Dispatcher: [generates ~/.dispatch/config.yaml with all 15 models, default: opus]
Dispatcher: Config created at ~/.dispatch/config.yaml with 15 models. Default: opus.
Dispatcher: [continues with the original task — dispatches security review using opus]用户:/dispatch "审核认证模块"
调度器:[未找到~/.dispatch/config.yaml — 运行首次运行设置]
调度器:[运行`which agent` → 找到,`which claude` → 找到]
调度器:[运行`agent models` → 检测到15个模型]
调度器:已找到Cursor CLI(15个模型)和Claude Code。知名模型包括:
- opus (Claude) — 最适合复杂任务
- sonnet (Claude) — 快速且强大
- gpt-5.3-codex (GPT) — 擅长代码处理
AskUserQuestion:你希望将哪个模型设为默认模型?
1. opus(推荐)
2. sonnet
3. gpt-5.3-codex
用户:opus
调度器:[生成包含15个模型的~/.dispatch/config.yaml,默认模型:opus]
调度器:配置文件已创建于~/.dispatch/config.yaml,包含15个模型。默认模型:opus。
调度器:[继续处理原始任务 — 使用opus调度安全审核]