| title |
created |
updated |
type |
tags |
sources |
| Multi-Agent Crew 编排系统 |
2026-04-14 |
2026-04-14 |
entity |
| agent |
| architecture |
| websocket |
| runtime |
|
| packages/backend/src/modules/netaclaw/service/crew_orchestrator.ts |
| packages/backend/src/modules/netaclaw/entity/crew.ts |
| packages/frontend/src/modules/agent/views/crew-editor.vue |
|
Multi-Agent Crew 编排系统
多智能体协作框架,支持主 Agent 通过委派、并行执行、升级等机制协调多个子 Agent 完成复杂任务。分为后端编排引擎和前端可视化画布编辑器两部分。
核心概念
- Crew(集群):一组 Agent 的编排单元,包含一个主 Agent 和多个成员 Agent
- 主 Agent:负责任务分解和委派决策,拥有 delegate_task / delegate_parallel / escalate 三个编排工具
- 子 Agent:接收委派任务并独立执行,拥有内置工具和 Skill 工具(不含委派工具)
- 升级(Escalate):主 Agent 遇到无法自主解决的问题时暂停执行,请求人工介入
数据模型(4个表)
| 表名 |
Entity |
用途 |
netaclaw_crew |
entity/crew.ts |
集群定义(画布、触发配置、委派提示) |
netaclaw_crew_agent |
entity/crew_agent.ts |
集群-Agent 关联(角色、画布位置、分组) |
netaclaw_crew_run |
entity/crew_run.ts |
运行记录(状态、token、暂停状态) |
netaclaw_crew_task |
entity/crew_task.ts |
子任务记录(支持嵌套 parentTaskId) |
关键字段
netaclaw_crew: name(唯一) | label | masterAgentId | canvasData(JSON) | triggerConfig(JSON) | delegateHints(文本) | status(0草稿/1发布) | maxConcurrent(默认3) | taskTimeout(默认300秒) | retryPolicy(JSON)
netaclaw_crew_run: crewId | triggerType(manual/cron/webhook/api) | status(pending/running/paused/completed/failed/stopped) | masterSessionId | pausedState(JSON,升级暂停时的对话) | tokenUsage(JSON)
后端关键文件
| 文件 |
职责 |
service/crew_orchestrator.ts |
核心编排器:启动、运行、暂停、恢复 |
service/crew_delegate.ts |
委派执行器:串行和并行子 Agent 执行 |
service/crew_scheduler.ts |
Cron 定时调度(Singleton,启动时恢复) |
service/crew.ts |
集群 CRUD、画布保存、成员同步、发布校验 |
service/crew_types.ts |
类型定义(DelegateResult, CrewCallbacks, CrewRunContext) |
gateway/crew_server.ts |
WebSocket /crew 命名空间 |
controller/admin/crew.ts |
集群 API(CRUD + saveCanvas/publish) |
controller/admin/crew_trigger.ts |
触发 API(start/stop/resume) |
controller/admin/crew_run.ts |
运行记录查询 API |
编排执行流程
触发运行(手动/定时/Webhook/API)
→ CrewOrchestratorService.start()
├─ 加载集群、主Agent、成员Agent
├─ 创建 crew_run 记录
└─ 异步执行(立即返回 runId)
→ runOrchestration()
├─ 构建增强系统提示词(原始 + 团队成员 + 委派提示 + 工具说明)
├─ 构建工具集(内置 + 委派 + Skill)
└─ 执行主Agent的 ReAct 循环
├─ delegate_task → executeSubAgent()(串行)
├─ delegate_parallel → executeParallel()(按 maxConcurrent 分批)
└─ escalate → 暂停,等待人工介入
→ 运行完成,更新状态和 token 统计
升级恢复机制
主Agent 调用 escalate → 持久化 pausedState → 推送 escalation 事件
→ 前端显示升级提示 → 用户输入处理意见
→ POST /crew_trigger/resume → resolver(userMessage)
→ Promise resolve → 主Agent 继续 ReAct 循环
关键实现:escalateResolvers Map 存储 resolve 回调,escalate 工具返回不 resolve 的 Promise。
前端画布编辑器
| 文件 |
职责 |
views/crew-editor.vue |
编辑器主页面(VueFlow 画布 + 侧栏 + 属性面板) |
views/crew-monitor.vue |
运行监控页面(运行列表 + 详情 + 日志) |
hooks/crew-canvas.ts |
画布操作(节点增删、主Agent设置、序列化) |
hooks/crew-monitor.ts |
WebSocket 监控(连接 /crew 命名空间) |
hooks/crew-orchestration.ts |
连线转委派提示词(串行/并行建议) |
store/crew.ts |
Pinia Store(集群列表、详情、成员) |
components/crew/*.vue |
10个子组件(节点、侧栏、属性面板、日志等) |
WebSocket 协议(/crew 命名空间)
| 事件 |
方向 |
说明 |
crew:trigger |
客户端→服务端 |
触发集群运行 |
crew:control |
客户端→服务端 |
控制运行(stop/resume/pause/retry) |
crew:run:status |
服务端→客户端 |
运行状态变化 |
crew:task:status |
服务端→客户端 |
任务状态变化 |
crew:log |
服务端→客户端 |
日志消息 |
crew:escalation |
服务端→客户端 |
升级事件 |
相关页面