Skip to content

多Agent编排 ​

精心设置的场景——剑拔弩张的对峙、微妙的政治谈判、慢热的浪漫——仍可能被回复破坏:它跳过你刚铺垫的节奏、忘了两段以前确立的世界规则、出戏做总结、或者把不该这一回合解决的伏笔仓促收尾。这不是模型能力的问题,而是它一次只能关注一件事,而你让它在一次回复里同时处理太多事:守人设、调上下文、守世界观、规划下一步、还要把文笔写好。

编排器的做法是让 agent 团队在主模型动笔之前先完成准备工作:提取最近聊天里的关键状态、确定当前生效的世界规则、起草这一回合应推进的内容、审校方案,最后把产出整合为一份精简的「作业说明」。等到主模型开始写回复,它已收到这份说明(且仅有这份),因此可以把预算用于文笔,而不是繁琐的核对工作。

编排器自带一套可用的默认 Spec 工作流,无需先行设计,启用即可运行。 后续需要不同形态时,各执行模式均有独立编辑器。

它什么时候触发?

编排器在 normal(普通生成)、continue(继续)、regenerate(重新生成)、swipe(滑动切换)和 impersonate(扮演)这些生成类型上触发。它在世界书解析之后、主模型回复之前运行。运行面板只保存在内存中,切换聊天时会清空。

5 分钟跑起来(用默认编排) ​

无需先选模式,也无需先编写工作流——默认 Spec 已经配置好。本节只介绍如何启用它,以便观察它的实际行为。

Step 0 — 你需要先有什么 ​

  • 你的主对话已经能正常用 Chat Completion API 出回复
  • 当前对话至少有数轮聊天记录(没有内容,工作流没什么可规划的)

Step 1 — 启用编排器 ​

打开顶栏的扩展抽屉,找到 多智能体编排 那一节。把 启用 开关打开。

编排器启用开关

Step 2 — 给各 Agent 选模型 ​

在同一面板里继续往下看,找到 LLM 节点 API 预设 和 AI 生成 API 预设。这两个字段告诉编排器各 Agent 用哪个 API、哪个 Chat Completion 预设。

这里能省钱

编排器各节点各调用一次 LLM。如果主对话使用的是 Claude Opus 这类昂贵模型,为编排器选择更便宜的模型——如 Haiku、Gemini Flash——可显著节省成本。如果需要更高的质量,可以为不同节点配置不同模型(每个节点均能单独覆写 API/预设)。

Step 3 — 直接发一条消息 ​

在主对话中发送一条消息,无需调整其他设置。主模型回复之前,默认 Spec 工作流会自动在后台执行。首次运行会比平时慢一些(agent 顺序执行),后续运行会更快。

Step 4 — 看它替你干了什么 ​

运行一开始,运行面板就会从聊天区右侧滑入(窄屏上从底部升起)。面板实时更新:轮次是一张可折叠的卡片,展开后就能看到模型当时怎么想、调用了哪些工具、工具返回了什么。

编排器开始运行时的面板

模型流式输出时,面板在原地实时更新——不闪屏、也不会打乱聊天区:

流式过程:思考、文本与工具分节实时填充

展开任意工具调用,能看到它的入参和返回:

工具调用展开——参数与结果

窄屏下面板变成底部抽屉,可以上拉展开或下滑关闭:

窄屏下的运行面板(抽屉布局)

面板仅保存在内存中。切换聊天或刷新页面会清空;聊天记录里只保留最终回复,且逐字保留——不会被过程信息撑大。还可以执行以下操作:

  • 运行中停止
  • 复制任意分节的原始内容
  • 把整次运行导出为 JSON(便于分享或回报问题)
  • 一键全部收起所有卡片

这就是「AI 在回复前先思考」在实际中的体现。如果回复不理想,打开面板就能定位问题出在哪一步。

至此编排器已启用。接下来根据需求选择方向:

  • 默认 Spec 流程不够用,需要自行或由 AI 协助定制 → Spec 模式
  • 流程需要根据情况动态变化,无法预先写死 DAG → Agenda 模式
  • 希望单一 Agent 反复调用工具(查记忆、查世界书……)直到自行判定完成 → Loop 模式

不管你选哪种模式,定制均从这里开始

AI 迭代工作台 是编排器的核心定制工具——用一句话描述目标,AI 返回方案,逐条审批。Spec / Agenda / Loop / Director 共用同一个工作台,多数定制场景下均优于手动编辑。

选你的执行模式 ​

模式是什么何时用Skill详细文档
Spec(默认)固定的 Stage → Node DAG默认。你要一个可预期的管道每节点注入目录;每节点 skills.visible 覆写Spec 模式
单 Agent只有一个节点的 Spec成本低、速度快。不需要多 Agent 协作在那一个节点上注入目录单 Agent 模式
Agenda一个 Planner Agent 通过工具调用动态调度其他 Agent流程要动态决定运行什么,像 Agent loopPlanner + 每个被派遣 worker 上注入目录Agenda 模式
Loop单 Agent 在同一会话里循环调工具,自己决定何时 finalize速度与效果之间想要平衡;探索性研究、动态决策在 loop agent 上注入目录Loop 模式
Director主代理 + 子代理团队探索上下文信息、创作正文接管模式,用于高质量长篇 RP;出厂自带预绑定 Skill主代理 + 子代理派遣时注入目录Director 模式

切换模式:扩展抽屉里的 执行模式 下拉。Spec 与 Agenda 可以在编辑器中互相转换(尽力而为);Loop 结构差异较大,没有对应的互转入口。

想定制?优先用 AI 迭代工作台

切到任何模式后,AI 迭代工作台 均为优先选择。Spec / Agenda 提供 diff 供审批,Loop 直接 patch profile,两者的面板与工作流程一致。

Skill 这一列

所有模式共用同一套 Skill 策略形状(模式级 skills.visible / skills.deny、每 agent 可选的 + 继承覆写)。完整模型见 编排器集成。Director 是唯一在出厂配置中预绑定默认 Skill 的模式;其它模式起步为 visible: ["*"](所有已安装 Skill 可见)。

通用配置 ​

无论选哪种模式,以下设定均共享。

结果注入 ​

编排器的最终输出(「capsule」)会被注入到主模型 prompt 里。配置:

设置默认说明
注入位置atDepthcapsule 在 prompt 里的位置
注入深度0在该位置的深度
注入角色SYSTEMSYSTEM / USER / ASSISTANT 之一
自定义指令前缀(默认一句话)加在 capsule 文本前面

capsule 绑定到触发编排的用户消息楼层。同一楼层 swipe 时,系统会复用现有 capsule 而不是重跑。配置变更时,系统会重新应用最新结果。

角色卡绑定 ​

编排配置可以绑到角色卡。绑定后:

  • 配置随卡导出。别人导入卡片自动获得推荐工作流
  • 卡作者可以为自己的角色定制最优工作流
  • 切换到这张卡自动应用其工作流
  • 卡可以指定自己的执行模式(Spec / Agenda / Loop / Director 均支持)
  • 从卡的下拉中选择某个预设后,这次聊天会立即切换到它;无论怎么选,卡上的库均会保留
  • 「清除这张卡上的预设」恢复到全局配置
  • 你可以在卡绑定配置上层叠个人调整

卡上预设各模式均支持。

导入导出 ​

Spec 与 Agenda 配置以 JSON 导出。

格式标识适用
V1luker_orchestrator_profile_v1Spec 模式
V2luker_orchestrator_profile_v2Agenda 模式

文件名形如 luker-orchestrator-[agenda-][global|character-{name}].json。导出器同时支持全局和角色卡作用域。

导入时,文件的模式(Spec / Agenda)必须和你当前执行模式一致。你选择应用到全局或某张特定的卡。

Loop 模式的导入导出

Loop 模式目前尚未提供文件级的 Profile 导入导出按钮,可通过 AI 迭代工作台 复用工作流。

通用配置参考 ​

最常用的几项:

设置默认
执行模式spec
注入位置atDepth
注入深度0
注入角色SYSTEM
完整配置参考
设置说明
执行模式Spec / 单 Agent / Agenda / Loop
注入位置capsule 在主 prompt 中的位置
注入深度注入深度
注入角色SYSTEM / USER / ASSISTANT
自定义指令前缀加在 capsule 前的前缀文字
RPM 限制并行节点的速率限制
工具调用重试次数工具调用失败的重试次数
全局 API 预设默认 API 连接预设
全局 Chat Completion 预设默认 Chat Completion 预设
包含世界书节点是否能看到世界书
<thought> 标签剥离从 Agent 输出剥离思考标签
消息折叠阈值1200 字符 / 18 行

模式专属的参数(节点 / 审查 / Planner / Loop 工具开关...)在各自的子页面里详述。

事件 / 二开 API ​

给其他扩展和脚本

编排器在运行结束后会派发一个前端事件,其他代码可以消费编排结果而不必读 UI 内部状态。

  • 事件名: luker.orchestrator.result
  • 通道: getContext().eventSource
  • 触发时机: completed / reused / cancelled / failed 时

事件载荷字段:

字段类型说明
modulestring始终为 orchestrator
eventstring始终为 luker.orchestrator.result
statusstringcompleted / reused / cancelled / failed
generationTypestring触发的生成类型
chatKeystring当前聊天 key
atstringISO 时间戳
anchorPlayableFloornumber绑定的用户回合楼层(不可用时为 0)
anchorHashstring用于校验的 anchor hash
capsuleTextstring最终注入的引导文本
stageOutputsarray紧凑的阶段输出(completed / reused 时存在)
reviewRerunCountnumber审查重跑次数
reasonstring取消 / 失败的机器可读原因
notestring人类可读说明
errorstringfailed 时的错误信息

订阅示例:

js
const context = getContext();
context.eventSource.on('luker.orchestrator.result', (evt) => {
    if (evt.status === 'completed' || evt.status === 'reused') {
        console.log('Orchestrator capsule:', evt.capsuleText);
    }
});

相关页面 ​

基于 SillyTavern 构建