多代理编排引擎 v8.0 (Multi-Agent Orchestrator)
v8.0 核心变更: Tokens消耗优化(节省25-30%)+ 强约束JSON输出 + 失败边界机制
v8.0 新增功能
🎯 Tokens优化(第一阶段完成)
- 提示词精简: 从 ~800行 → ~80行(减少90%)
- JSON强约束输出: 提升流程遵循性,降低输出不确定性
- 失败边界机制: skip/fallback/partial/retry 四种策略
- 精简版执行引擎:
executorLite.js 可选使用
使用方式
# 精简版(默认JSON输出,节省25-30% tokens)
多代理 run_lite --goal "研究主题"
# 完整版(Markdown输出,向后兼容)
多代理 run --goal "研究主题"
Tokens节省估算
| 输出模式 | 提示词行数 | 预计节省 | 适用场景 |
|---|
| JSON | ~80行 | 25-30% | 结构化研究、数据提取 |
| Markdown | ~400行 | 10-15% | 深度报告、叙事分析 |
环境依赖
| 依赖 | 最低版本 | 说明 |
|---|
| OpenClaw | 2026.3.x+ | 需要 sessions_spawn、subagents、sessions_send API |
| Node.js | 20.x+ | ES Module 支持 |
| 操作系统 | Windows / macOS / Linux | 路径自动适配(USERPROFILE / HOME) |
启动前检查:多代理 check_env — 验证 OpenClaw 版本和工具可用性
第三方部署说明
兼容性保证
- ✅ 路径无关:所有路径通过
process.env.USERPROFILE || process.env.HOME 动态计算
- ✅ 配置驱动:模型池、代理配置、角色映射均从外部 JSON 读取,无硬编码
- ✅ 跨平台:纯 Node.js +
path 模块,Windows/macOS/Linux 兼容
- ✅ 模型自适应:自动扫描
openclaw.json 中的 providers + fallbacks
自定义规则(可选)
在 workspace 根目录创建 .model-selector-rules.json 覆盖启发式推断:
{
"traits": {
"your-provider/special-model": ["analysis", "research"],
"another-provider/code-model": ["coding"]
},
"tiers": {
"your-provider/paid-model": "standard",
"your-provider/free-model": "free"
},
"boost": {
"your-provider/premium-model": 20
}
}
不降级策略
本系统不提供降级方案。如果环境检查失败(check_env 返回错误),说明 OpenClaw 版本过低或缺少必需 API,必须升级 OpenClaw 到 2026.3.x+ 才能使用。
🎯 命令使用
如何调用命令
本技能支持通过以下方式调用命令:
方式 1:通过触发词
用户: 多代理 check_env
用户: 多代理 help
用户: 多代理 plan --goal "研究固态电池"
方式 2:通过技能命令(推荐)
用户: /skill multi-agent-orchestrator check_env
用户: /skill multi-agent-orchestrator help
可用命令列表
| 命令 | 功能 | 示例 |
|---|
help | 显示帮助信息 | 多代理 help |
check_env | 检查环境配置 | 多代理 check_env |
list_profiles | 列出代理配置 | 多代理 list_profiles |
list_workflows | 列出工作流 | 多代理 list_workflows |
validate_config | 验证配置完整性 | 多代理 validate_config |
show_profile | 显示代理详情 | 多代理 show_profile Research_Analyst |
show_workflow | 显示工作流详情 | 多代理 show_workflow default |
archive | 归档工作流产出物 | 多代理 archive |
clean | 清理临时文件 | 多代理 clean |
run | 一键启动工作流 | 多代理 run --goal "研究主题" |
plan | 获取执行计划(JSON) | 多代理 plan --goal "研究主题" |
run_demo | 快速演示 | 多代理 run_demo |
命令参数
--goal "描述" — 任务目标描述
--workflow <名称> — 指定工作流(可选,默认使用 default)
--dry_run — 干运行模式(仅 clean 命令)
完整工作流示例
# 1. 检查环境
多代理 check_env
# 2. 查看可用代理
多代理 list_profiles
# 3. 查看工作流
多代理 list_workflows
# 4. 执行任务
多代理 run --goal "2026年中国固态电池产业发展现状研究"
# 5. 归档清理
多代理 archive_and_clean
概述
目标驱动的深度研究与项目协作系统,通过 sessions_spawn 实现多代理并行执行。
提纲确认 → 复杂度评估 → 路由 → plan → 并行执行 → 收集验证 → 重试/降级 → Critic审核 → 聚合 → 完成
📋 配置检查(首次使用必做)
配置检查流程
多代理引擎在启动前会自动检查以下配置项:
- OpenClaw 版本 ≥ 2026.3.x
- Node.js 版本 ≥ 20.5
- 工作区目录结构(详细检查以下目录)
- 代理配置(至少 1 个代理配置)
- 工作流配置(默认工作流)
- 模型配置(可用的模型池)
📁 工作区目录检查
系统会详细检查以下目录及其作用:
| 目录 | 必需 | 作用说明 | 缺失影响 |
|---|
| 工作区根目录 | ✅ | OpenClaw 工作区根目录,存放所有配置和输出文件 | 系统无法运行 |
| agents/ 代理工作区 | ✅ | 各代理的独立工作区,每个代理有自己的历史研究子目录 | 子代理无法存放过程文件,任务失败 |
| shared/ 共享输出目录 | ✅ | 共享输出根目录,存放所有研究的共享文件 | 研究成果无法共享和保存 |
| shared/researches/ 研究目录 | ✅ | 研究任务目录,按任务名称和时间戳组织研究目录 | 不同研究任务无法隔离 |
| shared/final/ 最终输出目录 | ✅ | 最终报告目录,存放所有研究的最终报告 | 最终报告无法保存和查看 |
| .cache/ 缓存目录 | ⚠️ | 缓存目录,用于存储临时文件和缓存数据 | 性能可能受影响 |
| logs/ 日志目录 | ⚠️ | 日志目录,用于存储系统运行日志 | 调试信息无法保存 |
配置检查结果
- ✅ 全部通过:直接开始执行任务
- ⚠️ 有警告:提示可选配置项,但继续执行
- ❌ 有错误:生成详细配置指南,等待用户确认后自动配置
自动配置说明
如果检测到必需配置缺失,系统会:
- 生成详细配置指南:列出每个缺失目录的路径、作用、缺失影响
- 等待用户确认:用户清楚了解每个目录的作用后同意自动配置
- 自动完成配置:创建所有必需目录和配置文件
- 继续执行:配置完成后自动开始多代理任务
配置检查示例
多代理 run --goal "研究人工智能在医疗领域的应用前景"
📋 多代理编排引擎 - 配置检查报告
══════════════════════════════════════════════════════════════
## 📊 配置概览
- 总检查项: 6
- ✅ 通过: 3
- ⚠️ 警告: 0
- ❌ 错误: 3
## ❌ 需要修复的配置 (3 项)
### 代理配置
- 当前状态: 未配置
- 要求: 必需
- 说明: 配置文件不存在
📋 目录作用: 代理配置文件,定义每个代理的角色、职责和能力
⚠️ 影响说明: 没有配置文件,多代理系统无法识别和启动任何子代理
🔧 需要自动创建此配置文件才能运行多代理系统
### agents/ 代理工作区
- 当前状态: 未配置
- 要求: 必需
- 说明: 目录不存在
📋 目录作用: 各代理的独立工作区,每个代理有自己的历史研究子目录
⚠️ 影响说明: 没有代理工作区,子代理无法存放过程文件,会导致任务失败
🔧 需要自动创建代理工作区才能运行多代理系统
### shared/final/ 最终输出目录
- 当前状态: 未配置
- 要求: 必需
- 说明: 目录不存在
📋 目录作用: 最终报告目录,存放所有研究的最终报告
⚠️ 影响说明: 没有最终输出目录,研究成果无法保存和查看
🔧 需要自动创建最终输出目录才能运行多代理系统
## 🔧 自动配置选项
如果同意自动配置,系统将执行以下操作:
### 1. 创建 代理配置
**路径**: .multi-agent-profiles.json
**作用**: 代理配置文件,定义每个代理的角色、职责和能力
**影响**: 必需文件,用于配置多代理系统中的各个子代理
**操作**: 创建包含 4 个默认代理的配置文件
### 2. 创建 agents/ 代理工作区
**路径**: agents/
**作用**: 各代理的独立工作区,每个代理有自己的历史研究子目录
**影响**: 必需目录,为每个代理创建独立的工作空间
**操作**: 创建 agents/ 目录以及各个代理的子目录
### 3. 创建 shared/final/ 最终输出目录
**路径**: shared/final/
**作用**: 最终报告目录,存放所有研究的最终报告
**影响**: 必需目录,用于存放最终研究成果
**操作**: 创建最终输出目录结构
[等待用户确认...]
🔧 开始自动配置...
→ 代理配置: 创建配置文件
✅ 已完成
→ agents/ 代理工作区: 创建目录结构
✅ 已完成
→ shared/final/ 最终输出目录: 创建目录
✅ 已完成
✅ 配置完成!
✅ 配置完成,开始执行多代理任务...
🤔 用户疑虑解答
Q: 为什么需要这么多目录?
A: 这是多代理系统的架构设计,确保:
- 代理隔离 - 每个代理独立工作,不互相影响
- 文件组织 - 按研究、代理、输出类型分类存储
- 可追溯性 - 历史研究记录可随时查看
Q: 目录创建后会影响现有文件吗?
A: 不会,系统只会创建缺失的目录,不会修改或删除现有文件
Q: 可以手动创建这些目录吗?
A: 可以,但建议使用自动配置功能,确保目录结构完全正确
🔴 铁律(不可违反)
- 质量优先:质量 > 速度。未经用户明确确认,不得以任何理由降低标准、裁剪流程、省略审核
- 流程不可跳跃:6 个 Phase 必须按顺序执行,Critic 审核为强制门禁,不可跳过
- 看板强制输出:每个阶段完成后必须调用看板函数并展示给用户
- 聚合不可省略:即使 100% 成功也必须执行聚合
核心能力
- 📋 提纲确认门(v6 新增)——用户提交目标后,主代理先生成研究提纲,用户确认后才启动协同流程
- 复杂度路由:简单任务直接完成,中等任务主代理+验证,复杂任务完整多代理并行
- 异构模型分配:按角色+复杂度自动选择最优模型,同批次不重复
- 增强重试:区分 6 种错误类型(超时/API错误/空输出/文件缺失/质量不合格/崩溃),针对性重试
- 双看板系统(v6 新增)——计划看板(Plan)+ 执行看板(Execution),含调用模型/Tokens/文件验证
- 降级协议:60%成功→主代理补做,30%→重试,<30%→全接管
- 返工机制:Critic 审核不通过时,自动触发子代理返工循环
- 输出分层(v6 新增)——按「研究任务/版本/交付物」三级目录隔离,不同任务互不干扰
- 归档清理:工作流完成后一键归档产出物 + 清理临时文件
🛡️ 子代理状态监控(v8.1 新增)
子代理完成检查函数
/**
* 检查子代理状态,检测交互消息
* @param {string} childSessionKey - 子代理会话 Key
* @param {number} recentMinutes - 最近多少分钟内的会话
* @returns {Promise<{hasInteraction: boolean, message?: string}>}
*/
async function checkSubagentStatus(childSessionKey, recentMinutes = 120) {
const result = await subagents({
action: "list",
recentMinutes: recentMinutes
});
const childSession = result.recent.find(s => s.sessionKey === childSessionKey);
if (!childSession) {
return { hasInteraction: false };
}
// 检查是否有交互消息
const interactionKeywords = [
"是否需要",
"请确认",
"是否继续",
"是否完成",
"是否承担",
"Do you need",
"Please confirm",
"Should I continue"
];
const messages = childSession.messages || [];
const interactionMessage = messages.find(msg =>
interactionKeywords.some(keyword => msg.body.includes(keyword))
);
if (interactionMessage) {
return {
hasInteraction: true,
message: interactionMessage.body
};
}
return { hasInteraction: false };
}
使用示例
// 在等待完成事件时,定期检查子代理状态
async function waitForCompletionWithInteraction(childSessionKey, timeoutMs = 3600000) {
const startTime = Date.now();
const pollInterval = 30000; // 每 30 秒检查一次
while (Date.now() - startTime < timeoutMs) {
// 检查是否有交互消息
const status = await checkSubagentStatus(childSessionKey, 120);
if (status.hasInteraction) {
// 收到交互消息,立即处理
console.log("收到子代理交互消息:", status.message);
// 立即回复,不要等待完成事件
return { type: "interaction", message: status.message };
}
// 等待 30 秒后再次检查
await new Promise(resolve => setTimeout(resolve, pollInterval));
}
// 超时,返回完成事件
return { type: "completion" };
}
交互消息关键词库
中文关键词:
- "是否需要"
- "请确认"
- "是否继续"
- "是否完成"
- "是否承担"
- "需要我..."
- "我已完成..."
英文关键词:
- "Do you need"
- "Please confirm"
- "Should I continue"
- "Should I complete"
- "Do you want me to"
- "I have completed"
- "Can I continue"
监控规则
- 定期检查:在等待完成事件时,每 30 秒检查一次子代理状态
- 立即处理:如果检测到交互消息,立即回复,不要等待完成事件
- 超时保护:如果 1 小时内未收到完成事件也未收到交互消息,触发超时保护
- 记录日志:记录交互消息内容,便于后续分析
快速开始
一键启动
多代理 run --goal "研究人工智能在医疗领域的应用前景"
模型配置(首次使用必做)
多代理 setup # 查看当前配置
多代理 setup_recommended # 查看基于模型库的推荐配置
多代理 setup_confirm # 确认并保存推荐配置
高级命令
多代理 check_env # 检查 OpenClaw 版本和工具可用性(首次启动必做)
多代理 thinking_capabilities # 查看模型 Thinking 支持矩阵
多代理 check_changes # 检测模型池变更
分步执行
多代理 plan --goal "目标" # 生成 JSON 执行计划
多代理 dashboard # 查看任务看板
多代理 model_pool # 查看可用模型池
多代理 archive --workflow_id X # 归档产出物
执行流程
用户提交目标
↓
Phase 0: 提纲确认 ← 展示研究提纲 → 用户确认/修改/取消
↓
Phase 1: plan → 生成执行计划 + 计划看板
↓
Phase 2: spawn → 并行启动子代理 → 等待完成事件 + 监听交互消息
↓
Phase 3: collect → 检查文件 → 评估 → 降级/继续
↓
Phase 4: critic → Critic 审核 → 通过/返工
↓
Phase 5: aggregate → 融合为 FINAL_REPORT.md
↓
Phase 6: finalize → 输出执行摘要
Phase 2 子代理监控规则(v8.1 修复)
等待完成事件时,必须同时监听交互消息:
- 等待完成事件:子代理任务完成后会推送完成通知
- 监听交互消息:子代理可能发送需要主代理决策的消息
- 立即处理交互消息:如果收到交互消息,立即回复,不要等待完成事件
错误示例(v8.0):
# 等待完成事件到达...
# 忽略子代理发送的交互消息
# 结果:子代理等待回复,主代理不知道
正确示例(v8.1):
# 等待完成事件到达,同时监听交互消息
if (收到交互消息) {
# 立即回复
replyToSubagent("收到,继续完成...");
}
# 所有任务完成后,输出最终答案
系统架构
┌─────────────────────────────────────────────────────────┐
│ 主代理 (Coordinator) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │
│ │ 提纲确认 │ │ 结果验证 │ │ 降级补做 │ │ 聚合 │ │
│ └──────────┘ └──────────┘ └──────────┘ └────────┘ │
└────────┬────────────────────────────────────────────────┘
│ sessions_spawn
┌──────▼──────┐ ┌───────────┐ ┌───────────┐ ┌─────────┐
│ Research │ │ Technical │ │ Strategy │ │ Critic │
│ _Analyst │ │ Specialist│ │ _Analyst │ │ (独立) │
└─────────────┘ └───────────┘ └───────────┘ └─────────┘
│ │ │ │
└──────────────┴──────────────┴──────────────┘
shared/researches/{slug}_{date}/v{n}/
输出目录结构
shared/
├── boards/ # 看板 JSON
│ ├── wf_xxx_plan.json
│ └── wf_xxx_exec.json
├── researches/ # 按研究任务隔离
│ ├── ev-overseas_20260403/ # ← 任务A
│ │ ├── v1/ # 第一轮
│ │ │ ├── Research_Analyst_report.md
│ │ │ ├── Technical_Specialist_report.md
│ │ │ ├── Strategy_Analyst_report.md
│ │ │ └── Critic_report.md
│ │ ├── v2/ # 返工轮
│ │ │ ├── Research_Analyst_report_v2.md
│ │ │ └── ...
│ │ └── final/ # 最终交付物
│ │ └── FINAL_REPORT.md
│ └── ai-healthcare_20260405/ # ← 任务B(完全隔离)
└── archive/ # 归档目录
命令速查
| 命令 | 说明 |
|---|
plan --goal "X" | 生成 JSON 执行计划 + 看板 |
run --goal "X" | 生成执行计划 + 文本指南 |
dashboard [--workflow_id X] | 查看任务看板 |
model_pool | 查看可用模型池 |
diagnose --result "X" | 诊断失败原因 |
archive --workflow_id X | 归档产出物 |
clean [--dry_run true] | 清理临时文件 |
archive_and_clean --workflow_id X | 一键归档+清理 |
代理管理: list / create / template --type research|technical|critical|coordinator|advocate|developer
工作流: workflow_list
验证/聚合/决策: validate / aggregate / decide / generate_prompt / generate_feedback
与 OpenClaw 工具的配合
本技能提供配置、验证、聚合、决策等能力,实际的代理执行使用 OpenClaw 内置工具:
# 创建子代理(主代理的核心调用)
sessions_spawn --task "子任务描述" --runtime subagent --mode run
# 查看子代理状态
subagents --action list
# 向子代理发送消息(向目标会话发送)
sessions_send --sessionKey "目标会话Key" --message "指令"
⚠️ 交互消息处理机制(v8.1 修复)
重要区别:
| 消息类型 | 推送机制 | 处理规则 | 示例 |
|---|
| 完成事件 | push-based | 等待所有完成事件到达后输出最终答案 | "任务完成:02_hermes_analysis_v2.md" |
| 交互消息 | push-based | 立即回复,不要等待完成事件 | "我的部分已完成。关于 X 任务,是否需要我继续完成?" |
交互消息特征:
- 以询问句结尾("是否需要..."、"请确认..."、"是否继续...")
- 需要主代理做出决策或提供指令
- 不是任务完成通知,而是需要主代理介入
处理规则:
- 等待完成事件到达 → 所有任务完成后输出最终答案
- 如果收到交互消息 → 立即回复,不要等待完成事件
- 交互消息通常以询问句结尾,需明确给出决策
交互消息示例:
I'm the Research_Analyst_2 subagent and have already completed my deliverable: `02_hermes_analysis_v2.md`.
My part is done. About `03_metrics_comparison_v2.md` (评分标准重构), that was originally assigned to another subagent (Technical_Specialist). Do you need me to continue with that?
响应示例:
收到,继续完成 Technical_Specialist 的任务:03_metrics_comparison_v2.md
**任务要求**:
1. 读取 `shared/researches/openclaw-hermes-comparison_20260419/v1/01_openclaw_analysis.md`
2. 读取 `memory/2026-04-*.md` 提取真实统计数据
3. 重新制定 8 维度评分标准
4. 输出:`shared/researches/openclaw-hermes-comparison_20260419/v2/03_metrics_comparison_v2.md`
开始执行!
配置存储
- 代理配置:
.multi-agent-profiles.json
- 工作流状态:
.multi-agent-workflows.json
详细文档