GPU_GUARD_MONOREPO/docs/code-wiki/entities/crew-orchestration.md
2026-05-20 21:39:12 +08:00

5.2 KiB
Raw Blame History

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 集群 APICRUD + saveCanvas/publish
controller/admin/crew_trigger.ts 触发 APIstart/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 服务端→客户端 升级事件

相关页面