Spec 模式
Spec 是编排器的默认模式,也是其他模式的"基准"。它把工作流拆成一串 阶段(Stage),每个阶段里若干 节点(Node) 串行或并行跑;阶段间严格串行,前一阶段所有节点都收工后才进入下一阶段。每个节点 = 一次 LLM 调用 + 一段 prompt 模板。最后一个阶段产出"作业说明"注入主模型,前面所有阶段都是为它做准备。
你已经在用了
启用编排器时默认就是 Spec,而且自带一套能跑的工作流(distiller、规划、约束、审查、合成器...)。这份文档的目标是:改默认工作流、写新工作流、理解为什么默认这样设计。
99% 的人不该手搓
手搓 stage / node 之前先看一眼 AI 迭代工作台——一句话描述需求,AI 给方案,逐条审。手搓只在工作台搞不定的极致定制场景才用。
概念速览
到这一节,几个术语开始派上用场。简短定义:
- Stage 阶段 — 工作流的横向切片。阶段间严格串行,Stage 2 必须等 Stage 1 跑完才能开始。
- Node 节点 — 阶段内的执行单位。一个节点 = 一次 LLM 调用 + 一段 prompt 模板。
- DAG — 有向无环图。说人话就是「有先后顺序、不会绕回去的流程图」。
每个阶段有一个执行方式:
- 串行 — 阶段内的节点一个接一个跑
- 并行 — 节点用
Promise.all同时跑
每个节点要么是 worker(干活),要么是 review(审查上一阶段的输出)。
默认编排流程
Spec 是一条固定流水线。默认 profile 自带 5 个 stage、7 个 worker —— distiller 读懂场景,接着 lorebook_reader + anti_data_guard 并行锁定硬约束,然后 planner + recall_relevance 并行规划下一拍,critic 评审(并可把上一阶段打回重做),最后 synthesizer 落笔写 capsule。
默认 agent 在编排里各自负责什么:
| Agent | 作用 | 简单示例(RP 场景) |
|---|---|---|
distiller | 紧凑、有据可查的场景状态快照(用户意图、当前张力、可能的走向);下游所有 worker 都读它。 | 返回「林晚自第 12 楼以来第一次问起洛阳;她在判断要不要把家族故事讲给你听」。 |
lorebook_reader | 从激活的世界书里挑出这一回合必须遵守的硬约束(文风禁令、叙事边界、角色 / 禁忌规则、连续性锚点),写成可执行的写作指令。 | 返回「世界书:洛阳本季被围,林晚不可能轻松离开;不得打破围城紧张感」。 |
anti_data_guard | 拦截播报体、观察体、指标体、天气预报体的扁平叙述;违规一律标 BLOCKER 并给出具体改写指令。 | 抓到「林晚焦虑值:7/10」—— BLOCKER,改写指令:「把焦虑写进攥紧的指节里,不要给数字」。 |
planner | 提下一拍进程,讲清因果,保留角色独立性与世界自洽,不默认让世界围着用户转。 | 节拍:「林晚躲闪 → 用户追问 → 她漏出一个细节 → 主回复就停在那个细节」。 |
recall_relevance | 在已召回的记忆线索里挑出本回合真正该用的那些,按即时相关性排序;不无中生有。 | 「第 18 楼外祖母线索:高相关;第 3 楼天气记录:跳过」。 |
critic(review 节点) | 按一整套审查口径(连续性、OOC、世界书合规、anti-data、世界自洽 ……)审上一个 worker stage,通过或点名上游某个 worker 重跑。只下判定,不下笔改写。 | 「grounding 通过;reason 退回 —— planner 让林晚走出被围的洛阳,与世界书冲突。重跑 planner:她还在城里。」 |
synthesizer(finalize 节点) | 把通过的 worker 输出和 critic 的反馈合成成最终注入下一回合主回复的那段编排指引 capsule。 | capsule:「林晚对洛阳话题焦虑;会躲闪,但会漏出一个家族细节。让她留在被围的城里。不要用数据体叙述。」 |
手搓:Spec 工作流编辑器
工作台搞不定的极致定制场景,直接动 stage / node。从编排器面板打开:打开编排编辑器。

左边面板是工作流(阶段及其节点)。右边面板是 Agent 预设库。每个节点引用一个预设,预设携带系统提示、用户提示模板、可选的 API/Chat Completion 预设覆写、执行标志。
模板变量
用户提示模板支持以下占位符:
| 变量 | 含义 |
|---|---|
{{recent_chat}} | 最近的聊天消息 |
{{last_user}} | 最后一条用户消息 |
{{previous_outputs}} | 前序阶段的输出 |
{{distiller}} | 蒸馏器节点的输出 |
{{previous_orchestration}} | 上一回合的编排结果。运行时自动注入,模板里一般不用写。 |
审查节点
审查节点检查上一个工作阶段的输出,通过两个专用工具调用与运行时交互:
| 工具 | 作用 |
|---|---|
luker_orch_review_approve | 工作合格,推进到下一阶段 |
luker_orch_request_rerun | 一个或多个节点需要重做,附带修改建议 |
约束:
- 审查节点只能审 直接相邻的前一个工作阶段 的节点
- 重跑作用于具体节点 ID,不是整个阶段
- 重跑次数受 审查重跑最大轮数 控制(默认 2)。设为 0 时,审查节点只能「通过或失败」,不能重跑
- 重跑后审查节点重新跑,形成「执行 → 审查 → 重跑 → 再审查」的循环,直到通过或达到上限
- 审查节点必须输出审查反馈
常见场景配方
| 我想要 | 这样做 |
|---|---|
| AI 回复前先想清楚情节再写 | AI 迭代工作台描述里加「分两阶段:先规划下一步,再写文」 |
| AI 不要轻易出戏 | 启用 Anti-Data Guard;AI 迭代工作台描述里要求「加一个硬挡 meta 评论的 Constraint Agent」 |
| 同一个工作流跨卡通用 | 应用到全局,不要绑卡 |
| 不同卡用不同工作流 | 在角色卡选中状态打开工作台,应用到角色卡 |
| 太慢 / 太贵 | 见概览 → Step 2;或切到 单 Agent 模式 只跑一个节点 |
| 想反复调试同一个工作流 | 工作台的 session 会话——它会持久化 |
| 换电脑用 | 见概览 → 导入导出 |
| 全部重置 | 编排编辑器有 重置全局 按钮 |
看一次 Spec 跑
运行面板 会实时显示每次 Spec 运行。每个 stage 是一张卡片,展开就能看到该 worker 的思考、流式输出和工具调用。Spec 模式可以重点关注:
- 节点执行次数 —— 整条 DAG 里所有 worker 跑过的总次数。
- REVIEW 重跑次数 —— 审查节点驱动的重跑(默认上限 2 次,可在配置参考里调到 0 关闭或 20 上限)。某 stage 触发重跑时,对应 worker 会在面板里出现两次。
- 各 stage 输出形态 —— 由节点的 prompt 模板决定。比如 distiller 通常输出一段
summary+ 一段xml_guidance(带<story_state>/<location>/<key_items>之类的标签),后续 stage 可以解析它取结构化字段。 - capsule —— 最后一个 stage 的输出会打包注入主模型的上下文,前面所有 stage 都在为它做准备。
面板顶部的导出按钮把整次 run 下载为 JSON(便于回报问题)。
Spec 配置参考
Spec 专属配置
| 设置 | 说明 |
|---|---|
| 节点迭代最大轮数 | 单节点的迭代上限 |
| 审查重跑最大轮数 | 0 禁用审查驱动的重跑 |
| Anti-Data Guard | 默认 Spec 工作流里的一个内置节点,屏蔽数据化 / 报告腔的散文(诸如 观察 / 分析 / 评估 / 监测 / observation / analyze / metric / probability 这种把 RP 写成观察日志或参数表的词)。硬编码约 18 个词的词典。不想要的话直接把这个节点从工作流里删掉。 |
| 节点 API 预设 | 节点级覆写;留空 = 全局 |
| 节点 Chat Completion 预设 | 节点级覆写;留空 = 全局 |
每个节点可以用不同的 API 和 Chat Completion 预设,所以你可以让蒸馏器走便宜模型、合成器走高质量模型。
相关页面
- 编排器概览 — 通用配置 / 触发时机 / 角色卡绑定
- AI 迭代工作台 — AI 帮你改默认 Spec 流程(99% 场景下推荐)
- 单 Agent 模式 — 退化的 Spec,只跑一个节点
- Agenda 模式 — Planner 动态调度版本
- Loop 模式 — 单 Agent 工具循环
- 角色卡编辑器 — 与迭代工作台共用 diff 引擎
- 自定义工具 — Spec Agent 可以调用的扩展 / SillyTavern 桥接 / 手写工具
预设
本模式的配置可以保存为命名预设,并在编辑面板中切换。完整工作流见 编排预设。