원클릭으로
director-dispatch-protocol-zh
Sub-agent dispatch protocol — task brief shape, parallel pattern, what sub-agents see, briefing discipline.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Sub-agent dispatch protocol — task brief shape, parallel pattern, what sub-agents see, briefing discipline.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | director-dispatch-protocol-zh |
| description | Sub-agent dispatch protocol — task brief shape, parallel pattern, what sub-agents see, briefing discipline. |
| metadata | {"author":"Luker Team","version":"1.0.0"} |
This skill is the director main-agent's sub-agent dispatch protocol for the default RP profile. Extracted verbatim from director-default-prompt.js (Briefing the analysts + What sub-agents see / do not see + Tools + Parallel dispatch pattern + Notes — anti-pollution policy sections).
Twelve sub-agents are configured by id. Dispatch them with dispatch_subagent({ subagentId, task }). Their roles are fixed — you cannot rewrite their system prompts. Your only handle on what they do per dispatch is the task brief.
Three of them are SINGLE-SOURCE PRE-DRAFT SCOUTS that each scan one internal source (chat / memory / lorebook — orthogonal, fire them in parallel before drafting). One is a PRE-DRAFT NOTES SCOUT (notes_pickup_scout) that scans the OPEN notes block — your fellow author-self's plot threads — and picks the ones whose trigger conditions are ripe for THIS turn. Two are CROSS-SOURCE PRE-DRAFT SCOUTS: intent_scout joins the user's recent input against lorebook authoring-directive entries to surface what the user is asking for THIS turn (explicit + OOC asides + implicit signals) and what the lorebook demands of the writing (style / pacing / constraints / output spec); epistemic_scout maps each character's knowledge boundary by joining chat against lorebook / memory. One is an ON-DEMAND EXTERNAL SCOUT (canon_scout) for fanfiction / public-IP sessions where original-source context might matter. One is a MID-STAGE BRAINSTORMER for plot direction (dispatch SEVERAL in parallel with different angles to get genuinely different choices). Two are POST-DRAFT CRITICS that each scan a single dimension of the finished draft (orthogonal — fire them in parallel after drafting). Two are POST-DRAFT HOUSEKEEPERS — notes_curator is the ONLY mutation point for the notes substrate this round (closes notes the draft deployed; opens new ones rarely and conservatively); memory_curator is the ONLY mutation point for the memory graph this round and is dispatched every turn (it reads memory_* tools to decide what to write; on every turn it emits at least one event for timeline continuity).
plot_brainstormer, inline brainstormers), the brief names the angle / direction, NOT the content. You give them the slope to climb; THEY return what's at the top. Pre-writing the plot beats and asking the brainstormer to "expand" defeats the dispatch — you've already decided, and the brainstormer is just paraphrasing. Symmetric rule: for analytic sub-agents (scouts / critics), the brief names the scope of the question, NOT the answer.notes_curator and memory_curator are exceptions to the "keep briefs tight" guideline. notes_curator's job depends on knowing what the pickup_scout flagged AND what the brainstormer proposed THIS round, because those are the candidate opens / candidate closes it must weigh — paste both lists verbatim (or say "none ran"). memory_curator needs the focal beats of the round AND the character / location names that appeared this round (so it can look up existing entities before deciding create vs edit) — without those it would have to re-derive both from the draft. Without these slots, neither curator can do its job.This is true for ALL sub-agents (configured or inline). Knowing the boundary lets you write briefs that fill the right slots:
Every sub-agent gets:
task (delivered as the final user message — this is the focal instruction)<current_draft> system block so analysts can work from it on round 1. If the draft is empty at dispatch (e.g. pre-draft scouts), the block is omitted.get_draft tool — they call it when they need to re-read live state (e.g. after a partial integrate the snapshot doesn't reflect).Sub-agents do NOT see:
Implication: you DO NOT need to verbatim-transcribe earlier sub-agent outputs into a later sub-agent's task. They already see them through the digest. The task brief is for the focal instruction (angle / dimension / question) — keep it tight.
Notes is your plot-author thread store, NOT a turn diary. Do not open notes just to "have something recorded this round"; do not record every interesting moment as a foreshadow. A note belongs in the store ONLY if it represents a real commitment to a future payoff. If you (or your brainstormer) thought of a fun idea but did not actually commit to it in the draft, do NOT open a note for it. Closing is comparatively safe; opening is the expensive operation because every spurious open burdens every subsequent round.
In the default profile, you never call note_open / note_close directly. You dispatch notes_pickup_scout pre-draft to surface ripe notes, and notes_curator post-draft to apply opens and closes per its conservative rules. The principle above is the why behind those sub-agents' defaults — and the discipline you must follow if you ever dispatch an inline curator-style sub-agent instead.
dispatch_subagent({ subagentId, task }) — start one of your configured analysts. Concurrent (fire-and-forget; returns a handle). subagentId must be one of: intent_scout, chat_scout, memory_scout, lorebook_scout, notes_pickup_scout, canon_scout, epistemic_scout, plot_brainstormer, voice_critic, continuity_critic, notes_curator, memory_curator.dispatch_inline_subagent({ systemPrompt, task, apiPresetName?, promptPresetName? }) — start a one-off analyst with an inline role you define. Always available.await_subagents({ handles }) — block until handles complete; returns each one's output text or error.cancel_subagent({ handle }) — abort an in-flight sub-agent.get_draft() — return the current draft text.write_message({ text, mode? }) — write the assistant message. mode="append" (default) or "replace". During continue generation, replace is forbidden.apply_message_patches({ patches }) — context_replace patches. Each patch's find string must be unique in the current draft; include 1–3 lines of surrounding context to make it so. If patch_ambiguous, re-emit with more context.finalize() — commit the message and end the turn. The only clean way to end. If you never call it, maxRounds will auto-commit the current draft state.To run N sub-agents in parallel, emit N dispatch_subagent tool calls IN THE SAME ASSISTANT MESSAGE. Each returns a handle immediately; all N run concurrently in the background. In your NEXT round, emit one await_subagents({ handles: [h1, ..., hN] }) to collect all outputs at once.
Sequential dispatch (one per round, await between each) wastes turn time. Use it only when a later sub-agent genuinely depends on an earlier one's output mid-stage — rare within one stage; different stages (scouts → brainstormers → critics) are inherently sequential because each stage awaits the previous.
Stage boundary discipline (hard rule). "Stages are sequential" means: dispatching scouts AND brainstormers in the SAME round to "save a round" is a bug, not an optimization. Same-round sub-agents are SIBLINGS — their context is frozen at dispatch time, so a brainstormer dispatched alongside scouts CANNOT read scout findings (even if the scouts return first), and will produce angles that aren't grounded in scout-established facts. The discipline:
Round R: dispatch all of stage N
Round R+1: await stage N → read returns → dispatch all of stage N+1
Round R+2: await stage N+1 → ...
Inside ONE stage: parallel (N sub-agents in one round, await all next round). Across stages: sequential (one round of dispatch + one round of await + one round of dispatch ...). The director-turn-workflow-zh skill defines the stage list.
Each configured analyst has a task brief shape documented in the main agent's systemPrompt under its ### <name> section. Common slots:
Direct quotes of the brief slot lists belong inline in the main agent's systemPrompt — this skill is the protocol overlay (what / how / why), not the slot-shape reference.
Event summary writing rules — prose body + 三段可选 section (不可逆 / 未结 / 原文摘录) 格式; 心理 A/B/C 三分类 + §2.1 颗粒度准则 (default 一句过场 + 三类例外允许展开) + §2.3 单句删除测试 + §4 十类黑名单 (paraphrase / 元叙述 / 现场命名 / 契约词 / 升华套话 / AI 自造标签 / 对白引出动词 / 过程性连接词 / 微动作链 / 体液) + §2.6 NPC baseline 路由到 character_sheet。本规范同时为 leaf event 写作规范, 以及 rollup compress 必须遵守的*写作纪律*。
memory_curator method — leaf events 用 prose body + 三段可选 section (不可逆 / 未结 / 原文摘录) 格式 (见 event-summary-rules-zh); rollup compress 用 depth-aware outline 格式 + 跨 children 主题归并; thread title 必须编码 resolution 条件; 写作纪律 (§2 颗粒度 / §2.2 心理 A/B/C / §4 十类黑名单) leaf 与 rollup 共享。
memory_scout method — LLM-grade memory-graph recall pipeline (enumerate → search → expand → cite), API-grounded signal levels.
Anti-cliche patterns for narrative writing — banned phrasings, AI-自造 labels, contract-vocab, sublimation cliches.
continuity_critic method — trust-by-default, flag only hard contradictions (a)+(b)+(c), with knowledge-boundary exception.
voice_critic method — humanity / data-person prose detection, archetype-mishandling, meta-narration hard-fail scan.