多Agent编排
多Agent编排(Orchestrator)是 Luker 的核心独有功能之一,提供了一个灵活的多 AI Agent 协作框架。它允许用户定义多个具有不同职责的 Agent——蒸馏器、约束 Agent、规划器、记忆分析器、审查者、合成器等——按照预设的工作流协同处理每一次 AI 回复的生成。编排器在 WorldInfo 解析完成后自动触发,将多个 Agent 的协作结果注入到最终的提示词中,引导主模型生成更高质量的回复。
编排器完全运行在前端,无后端代码。角色卡级别的编排配置会随角色卡一起保存和导出。
编排器支持五种生成类型的触发:normal(普通生成)、continue(继续)、regenerate(重新生成)、swipe(滑动切换)和 impersonate(扮演)。其他生成类型不会触发编排流程。
三种执行模式
编排器提供三种执行模式,适应从简单到复杂的不同场景:
spec → 阶段→节点 DAG,最灵活的静态工作流
single → 单节点简化模式
agenda → Planner 动态调度,最灵活的动态工作流Spec 工作流
Spec 工作流是最灵活的静态模式,采用 阶段(Stage) → 节点(Node) 的 DAG(有向无环图)结构:
- 阶段:工作流的顶层组织单元,阶段之间严格按顺序串行执行
- 节点:阶段内的执行单元,每个节点引用一个 LLM 预设(Preset),负责特定任务
- 执行方式:阶段内的节点支持
serial(串行)和parallel(并行,使用Promise.all)两种执行方式 - 节点类型:
worker(工作节点)和review(审查节点)
每个节点执行时,系统会构建消息列表(系统提示 + 用户提示模板 + 上下文)调用 LLM,并支持节点迭代(受「节点迭代最大轮次」控制)。阶段输出汇总后自动传递给下一阶段。
默认的 Spec 工作流包含以下 5 个阶段结构:
- 蒸馏器(串行执行)
- 知识书读取器 + 约束 Agent(并行执行)
- 规划器 + 记忆分析器(并行执行)
- 审查者(串行执行)
- 合成器(串行执行)
模板变量
节点的用户提示模板支持以下占位变量:
| 变量 | 说明 |
|---|---|
{{recent_chat}} | 最近的聊天消息 |
{{last_user}} | 最后一条用户消息 |
{{previous_outputs}} | 前序阶段的输出 |
{{distiller}} | 蒸馏器输出 |
{{previous_orchestration}} | 上一次编排的结果(自动注入,无需手动编写) |
其中 {{previous_orchestration}} 是自动注入变量,系统会在模板文本之前自动插入上一次编排的结果,无需用户在模板中显式引用。
单 Agent 模式
单 Agent 模式是 Spec 工作流的简化版。系统内部自动构建一个只包含单节点的 Spec,然后走统一的执行流程。适合不需要多 Agent 协作的简单场景,同时保留了 Spec 模式的所有配置能力(如自定义系统提示、API 路由等)。
Agenda 规划器
Agenda 规划器是最动态的模式。一个 Planner Agent 通过工具调用(Function Calling)动态调度其他 Agent:
- Planner 维护一个 todo 列表,根据任务进展动态决定下一步调用哪个 Agent
- 每个 Agent 可以独立配置系统提示、API 路由和 Chat Completion 预设
- 受三个参数限制运行边界:
- Planner 最大轮次:Planner 的最大调度轮次
- 最大并发 Agent 数:同时运行的 Agent 上限
- 最大总执行次数:所有 Agent 的总执行次数上限
Agenda 模式依赖 Luker 的函数调用运行时框架来实现 Planner 的工具调用能力。
Agenda 与 Spec 互转
编排器支持 Agenda 和 Spec 两种模式之间的配置互转:
- 将 Agenda 模式下定义的 Agent 集合尽力转换为 Spec 工作流结构
- 将 Spec 预设复制到 Agenda 编辑器
- 将 Agenda Agent 复制到 Spec 编辑器
注意:互转是尽力而为的(best-effort),不保证完美还原。例如 Agenda 模式的动态调度逻辑无法完全映射到 Spec 的静态 DAG 结构,转换后可能需要手动调整。
工作流编辑器
编排器提供了可视化的工作流编辑器(支持在独立弹窗中打开),用户可以:
- 添加、删除、重排阶段
- 在阶段内添加、删除、重排节点
- 为每个节点配置独立的 LLM 预设和 API 预设
- 设置节点的系统提示词和用户提示模板
- 配置阶段的执行方式(串行 / 并行)
- 标记节点为审查节点
每个预设可以独立配置 API 路由,这意味着不同的 Agent 可以使用不同的 LLM 后端。例如:蒸馏器使用低成本模型降低开销,而合成器使用高质量模型保证输出品质。空值的 API 预设会回退到全局编排 API 预设,空值的 Chat Completion 预设会回退到全局编排预设。
Agenda 模式也有对应的编辑器面板,用于管理 Agent 列表和 Planner 配置。
审查节点
审查节点(Review Node)是 Spec 工作流中的特殊节点类型,用于对前序工作节点的输出进行质量把关。审查节点通过两个专用工具与工作流引擎交互:
| 工具 | 作用 |
|---|---|
luker_orch_review_approve | 批准前序工作节点的输出,工作流继续执行下一阶段 |
luker_orch_request_rerun | 要求重跑指定的前序工作节点,并附带修改建议 |
审查节点的关键约束:
- 只能审查直接相邻的前一个工作阶段的节点
- 重跑时只重跑指定的节点 ID,而非整个阶段
- 重跑次数受「审查重跑最大轮次」限制(默认 0,最大 20)
- 重跑后审查节点会再次运行,形成「执行 → 审查 → 重跑 → 再审查」的循环,直到批准或达到轮次上限
- 审查节点必须输出审查反馈
系统内置了多条审查节点提示工程规则,确保审查行为的一致性和可靠性。这些规则定义了审查节点必须包含的检查门,用于 AI 生成审查节点配置时的约束。
AI 生成配置
编排器提供两种 AI 辅助配置生成方式,降低手动配置的门槛。
AI Quick Build
一键生成完整的编排配置。用户通过自然语言描述需求,AI 自动生成包含阶段、节点、预设分配的完整工作流。生成过程会考虑知识书读取节点和 Anti-Data Guard 节点,确保生成的配置包含必要的保护机制。
AI 迭代工作台
AI 迭代工作台(AI Iteration Studio)提供多轮对话式的精细编辑能力,是比 Quick Build 更强大的 AI 辅助工具:
- 会话持久化:迭代会话保存到角色卡或全局设置,最多支持 24 个会话。会话可以加载、删除和管理
- 模拟测试:在不实际执行编排的情况下模拟工作流运行,验证配置的正确性。例如你可以输入「请使用『我走进了酒馆,环顾四周』模拟当前用户最新输入」来测试编排在特定场景下的表现
- 自动继续:支持 AI 自动推进迭代过程,无需用户手动触发每一步
- Diff 审批:每次 AI 修改都会生成 diff,用户可以逐项审批或拒绝
- 回滚:支持撤销已应用的 AI 修改
- 重新生成:支持重新生成 AI 的回复
<thought>标签剥离:AI 回复中的思考过程(<thought>标签内容)在显示时自动移除- 消息折叠:超过 1200 字符或 18 行的长消息自动折叠,模拟上下文也会自动折叠
AI 迭代工作台的会话历史会持久化到角色卡或全局设置中。这与运行态轨迹(仅保存在内存中)是不同的概念。
Diff 引擎
编排器内置了完整的 Diff 引擎,用于 AI 迭代工作台中的修改可视化:
- LCS 行级 diff:基于最长公共子序列(Longest Common Subsequence)算法的精确差异计算
- 内联视图(Inline Diff):在同一列中以颜色标记显示增删改
- 并排视图(Side-by-Side Diff):左右对比显示修改前后的内容
- 可拖拽分割条:并排视图中可自由调整左右面板宽度
- 展开 Diff:支持展开折叠的 diff 区块查看完整上下文
- 回滚支持:可以撤销已应用的修改,恢复到修改前的状态
该 Diff 引擎与角色卡编辑助手共享。
结果注入与复用
编排结果会自动注入到 SillyTavern 的提示词构建流程中。注入行为可通过以下设置项控制:
| 设置项 | 说明 | 默认值 |
|---|---|---|
| 注入位置 | 编排结果在提示词中的插入位置 | IN_CHAT |
| 注入深度 | 编排结果的注入深度 | 1 |
| 注入角色 | 编排结果以哪个角色身份注入 | SYSTEM(也支持 USER / ASSISTANT) |
| 自定义指令前缀 | 注入文本前的自定义指令前缀 | "Follow the orchestration guidance below and prioritize it when drafting the next in-character reply." |
编排结果绑定到触发编排的用户消息楼层。当用户对同一楼层进行 swipe(滑动切换)时,系统会复用已有的编排结果,避免重复执行整个工作流。当配置变更时,系统会自动重新应用最新的编排结果。
运行态轨迹(每个节点的输入输出、执行时间等)仅保存在内存中,聊天切换时自动清空,不持久化到磁盘。
导入导出
编排配置支持 JSON 文件的导入导出,使用两种格式标识:
| 格式 | 标识 | 适用模式 |
|---|---|---|
| V1 | luker_orchestrator_profile_v1 | Spec 工作流模式 |
| V2 | luker_orchestrator_profile_v2 | Agenda 规划器模式 |
导出文件名格式为 luker-orchestrator-[agenda-][global|character-{name}].json,支持全局导出和角色卡级别导出。
导入时系统会自动检测文件的模式(Spec / Agenda),并要求与当前执行模式匹配。用户可以选择将导入的配置应用到全局或特定角色卡。
配置项列表
以下是编排器的主要配置项:
| 设置项 | 说明 | 默认值 / 范围 |
|---|---|---|
| 执行模式 | Spec / 单 Agent / Agenda | spec |
| 注入位置 | 编排结果在提示词中的插入位置 | IN_CHAT |
| 注入深度 | 编排结果的注入深度 | 1 |
| 注入角色 | 编排结果以哪个角色身份注入 | SYSTEM / USER / ASSISTANT |
| 自定义指令前缀 | 编排结果自定义指令前缀 | 见上文 |
| Planner 最大轮次 | Agenda 模式 Planner 最大调度轮次 | — |
| 最大并发 Agent 数 | Agenda 模式最大并发 Agent 数 | — |
| 最大总执行次数 | Agenda 模式最大总执行次数 | — |
| 每分钟请求限制 | 每分钟请求数限制(并行节点节流) | — |
| Agent 超时时间 | 单个 Agent 的执行超时时间(秒) | — |
| 工具调用重试次数 | LLM 工具调用失败时的重试次数 | — |
| 节点迭代最大轮次 | 单个节点的迭代轮次控制 | — |
| 审查重跑最大轮次 | 审查节点重跑最大轮次 | 0(最大 20) |
| 全局 API 预设 | 全局默认 API 连接预设 | — |
| 全局 Chat Completion 预设 | 全局默认 Chat Completion 预设 | — |
| 包含世界书 | 是否在编排节点中包含世界书信息 | — |
| Anti-Data Guard | 屏蔽特定词汇(如 OOC、meta、system note、author) | 启用 |
<thought> 标签剥离 | 是否从 AI 输出中移除思考标签 | — |
| 消息折叠阈值 | 字符数 1200 / 行数 18 | — |
| 节点 API 预设 | 节点级 API 预设覆盖 | 空(回退到全局) |
| 节点 Chat Completion 预设 | 节点级 Chat Completion 预设覆盖 | 空(回退到全局) |
TIP
编排器的每个节点都可以独立配置 API 预设和 Chat Completion 预设,覆盖全局默认值。这使得你可以为不同的 Agent 分配不同的模型和参数——例如用低成本模型处理蒸馏和约束任务,用高质量模型处理最终合成。
与角色卡的集成
编排配置可以绑定到角色卡,随角色卡一起保存。绑定后:
- 编排配置随角色卡导出,其他用户导入角色卡时自动获得推荐的编排工作流
- 角色卡创作者可以为角色定制最佳的多 Agent 协作方案
- 角色卡可以指定独立的执行模式,切换角色时自动应用
- 角色卡覆盖可以独立启用或禁用
- 支持清除角色卡覆盖(恢复使用全局配置)
- 用户可以在角色卡绑定的配置基础上进行个性化调整
相关页面
- 函数调用运行时 — Agenda 模式的 Planner 依赖此框架进行工具调用
- 角色卡编辑助手 — 与编排器共享 Diff 引擎
- 角色卡绑定预设与人设 — 编排配置的角色卡绑定机制