多代理系统
模块概述
版本: v0.34.0 状态: ✅ 已实现 IPC处理器: 16个 最后更新: 2026-02-15
多代理系统提供 8 种专业 AI 代理模板,支持任务自动分解、代理分配和结果聚合。基于 Cowork 多代理协作框架构建,通过 AgentCoordinator 实现智能任务编排。
核心特性
- 8种专业代理: CodeSecurity, DevOps, DataAnalysis, Documentation, TestGenerator, Architect, Performance, Compliance
- 任务自动分解: 基于 LLM 的智能任务拆分和代理匹配
- 代理编排: 串行/并行/管道任务执行模式
- 模板管理: 代理模板 CRUD,支持自定义代理
- 5个内置技能: 每个代理携带专业技能集
- 任务历史: 完整的任务执行记录和分析
1. 架构设计
1.1 整体架构图
┌──────────────────────────────────────────────────────────────────┐
│ 前端 (Vue3) │
├──────────────────────────────────────────────────────────────────┤
│ AgentDashboardPage │ AgentTemplateEditor │ TaskHistory │
│ ↓ ↓ ↓ │
│ Pinia Store: agents.ts │
└──────────────────────────────────────────────────────────────────┘
↕ IPC (16个通道)
┌──────────────────────────────────────────────────────────────────┐
│ 主进程 (Electron) │
├──────────────────────────────────────────────────────────────────┤
│ agents-ipc.js (16个处理器) │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ AgentTemplateManager │ AgentCoordinator │ AgentRegistry │ │
│ └────────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ AgentCapabilities │ SkillLoader │ CoworkEngine │ Database │ │
│ └────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘1.2 代理执行流程
用户输入任务
↓
AgentCoordinator.decompose(task) ← LLM分析任务
↓
生成子任务列表 + 代理匹配
↓
AgentRegistry.createAgents(templates)
↓
执行模式选择 (串行/并行/管道)
↓
各代理独立执行子任务
↓
AgentCoordinator.aggregate(results) ← 结果聚合
↓
返回最终结果1.3 核心组件
| 组件 | 文件 | 行数 | 说明 |
|---|---|---|---|
| AgentTemplateManager | agent-template-manager.js | ~400 | 代理模板CRUD |
| AgentCoordinator | agent-coordinator.js | ~450 | 任务分解、分配、聚合 |
| AgentRegistry | agent-registry.js | ~300 | 代理注册、工厂、版本 |
| AgentCapabilities | agent-capabilities.js | ~350 | 能力定义和工具集 |
| AgentsIPC | agents-ipc.js | ~280 | 16个IPC处理器 |
2. 核心模块
2.1 AgentTemplateManager
代理模板管理器,负责 8 种内置模板和自定义模板的生命周期管理。
8种内置代理模板:
| # | 模板名称 | 专长 | 典型任务 |
|---|---|---|---|
| 1 | CodeSecurity | 代码安全审计 | 漏洞扫描、依赖检查、安全最佳实践 |
| 2 | DevOps | CI/CD和运维 | 部署配置、容器编排、监控告警 |
| 3 | DataAnalysis | 数据分析 | 数据清洗、统计分析、可视化建议 |
| 4 | Documentation | 文档生成 | API文档、用户指南、变更日志 |
| 5 | TestGenerator | 测试生成 | 单元测试、集成测试、E2E测试 |
| 6 | Architect | 架构设计 | 系统设计、模块拆分、技术选型 |
| 7 | Performance | 性能优化 | 性能分析、瓶颈定位、优化建议 |
| 8 | Compliance | 合规检查 | 许可证检查、代码规范、安全合规 |
核心方法:
javascript
class AgentTemplateManager {
// 获取所有模板
async getTemplates(filters) { }
// 获取模板详情
async getTemplate(templateId) { }
// 创建自定义模板
async createTemplate(data) { }
// 更新模板
async updateTemplate(templateId, updates) { }
// 删除模板 (仅自定义)
async deleteTemplate(templateId) { }
// 复制模板
async cloneTemplate(templateId, newName) { }
// 导出模板
async exportTemplate(templateId) { }
// 导入模板
async importTemplate(templateData) { }
}模板定义格式:
javascript
{
id: 'code-security',
name: 'CodeSecurity',
displayName: '代码安全审计代理',
description: '专注于代码安全审计和漏洞检测',
version: '1.0.0',
builtin: true,
systemPrompt: '你是一个专业的代码安全审计专家...',
capabilities: ['code_analysis', 'vulnerability_scan', 'dependency_check'],
tools: ['grep', 'read_file', 'search_code'],
skills: ['security-audit'],
config: {
maxTokens: 4096,
temperature: 0.3,
model: 'default'
}
}2.2 AgentCapabilities
代理能力定义系统,将能力映射到具体的工具集和技能。
能力分类:
| 能力 | 描述 | 关联工具 |
|---|---|---|
| code_analysis | 代码分析 | grep, read_file, search_code |
| vulnerability_scan | 漏洞扫描 | grep, read_file, npm_audit |
| dependency_check | 依赖检查 | read_file, package_analysis |
| test_generation | 测试生成 | read_file, write_file, grep |
| doc_generation | 文档生成 | read_file, write_file, template_render |
| performance_profiling | 性能分析 | read_file, metrics_collect |
| architecture_review | 架构评审 | read_file, search_code, diagram_generate |
| ci_cd_config | CI/CD配置 | read_file, write_file, yaml_validate |
核心方法:
javascript
class AgentCapabilities {
// 获取能力定义
getCapability(capabilityId) { }
// 根据能力获取工具集
getToolsForCapabilities(capabilityIds) { }
// 能力匹配评分
matchScore(taskDescription, capabilityIds) { }
// 注册自定义能力
registerCapability(definition) { }
}2.3 AgentCoordinator
任务编排协调器,负责将复杂任务分解为子任务并分配给合适的代理。
执行模式:
串行模式 (Sequential):
Task1 → Agent A → Task2 → Agent B → Task3 → Agent C → 最终结果
并行模式 (Parallel):
Task1 → Agent A ─┐
Task2 → Agent B ─┤→ 聚合 → 最终结果
Task3 → Agent C ─┘
管道模式 (Pipeline):
Input → Agent A → 中间结果 → Agent B → 中间结果 → Agent C → 最终结果核心方法:
javascript
class AgentCoordinator {
// 分解任务
async decompose(task) { }
// 匹配最佳代理
async matchAgents(subtasks) { }
// 执行编排
async orchestrate(task, options = {}) { }
// 聚合结果
async aggregate(results) { }
// 获取任务状态
async getTaskStatus(taskId) { }
// 取消任务
async cancelTask(taskId) { }
// 获取执行历史
async getHistory(filters) { }
}任务分解示例:
javascript
// 输入: "对这个项目进行全面的代码审查"
const subtasks = await coordinator.decompose(task);
// 输出:
// [
// { type: 'security_audit', agent: 'CodeSecurity', priority: 1 },
// { type: 'test_coverage', agent: 'TestGenerator', priority: 2 },
// { type: 'performance_review', agent: 'Performance', priority: 2 },
// { type: 'doc_completeness', agent: 'Documentation', priority: 3 },
// { type: 'architecture_review', agent: 'Architect', priority: 1 }
// ]2.4 AgentRegistry
代理注册表,管理代理类型注册、实例创建和版本控制。
核心方法:
javascript
class AgentRegistry {
// 注册代理类型
register(agentType, factory) { }
// 创建代理实例
create(agentType, config) { }
// 获取已注册类型
getRegisteredTypes() { }
// 注销代理类型
unregister(agentType) { }
// 获取代理版本
getVersion(agentType) { }
}3. 内置技能 (5个)
| # | 技能名称 | 关联代理 | 功能 |
|---|---|---|---|
| 1 | security-audit | CodeSecurity | 安全漏洞扫描、OWASP检查清单 |
| 2 | generate-tests | TestGenerator | 自动生成单元测试和集成测试 |
| 3 | architecture-diagram | Architect | 生成架构图 (Mermaid/PlantUML) |
| 4 | performance-report | Performance | 性能分析报告生成 |
| 5 | compliance-check | Compliance | 许可证和合规性检查 |
4. 数据模型
4.1 agent_templates
| 字段 | 类型 | 说明 |
|---|---|---|
| id | TEXT PK | 模板ID |
| name | TEXT UNIQUE | 模板名称 |
| display_name | TEXT | 显示名称 |
| description | TEXT | 描述 |
| version | TEXT | 版本号 |
| builtin | BOOLEAN | 是否内置 |
| system_prompt | TEXT | 系统提示词 |
| capabilities | TEXT(JSON) | 能力列表 |
| tools | TEXT(JSON) | 工具列表 |
| skills | TEXT(JSON) | 技能列表 |
| config | TEXT(JSON) | 配置 (maxTokens/temperature/model) |
| created_at | INTEGER | 创建时间 |
| updated_at | INTEGER | 更新时间 |
4.2 agent_task_history
| 字段 | 类型 | 说明 |
|---|---|---|
| id | TEXT PK | 任务ID (UUID) |
| task_description | TEXT | 任务描述 |
| execution_mode | TEXT | 执行模式 (sequential/parallel/pipeline) |
| subtasks | TEXT(JSON) | 子任务列表 |
| agents_used | TEXT(JSON) | 使用的代理列表 |
| status | TEXT | 状态 (pending/running/completed/failed/cancelled) |
| result | TEXT(JSON) | 最终结果 |
| total_tokens | INTEGER | 总Token消耗 |
| duration_ms | INTEGER | 执行时长(毫秒) |
| created_at | INTEGER | 创建时间 |
| completed_at | INTEGER | 完成时间 |
5. IPC接口 (16个)
5.1 模板管理 (7个)
| 通道 | 说明 | 参数 |
|---|---|---|
agent:get-templates | 获取模板列表 | filters: |
agent:get-template | 获取模板详情 | templateId: string |
agent:create-template | 创建自定义模板 | data: AgentTemplate |
agent:update-template | 更新模板 | templateId: string, updates: object |
agent:delete-template | 删除模板 | templateId: string |
agent:clone-template | 复制模板 | templateId: string, newName: string |
agent:export-template | 导出模板 | templateId: string |
5.2 任务编排 (5个)
| 通道 | 说明 | 参数 |
|---|---|---|
agent:orchestrate | 执行任务编排 | task: string, options: |
agent:decompose | 分解任务 | task: string |
agent:get-task-status | 获取任务状态 | taskId: string |
agent:cancel-task | 取消任务 | taskId: string |
agent:aggregate-results | 手动聚合结果 | taskId: string |
5.3 历史和注册 (4个)
| 通道 | 说明 | 参数 |
|---|---|---|
agent:get-history | 获取任务历史 | filters: |
agent:get-history-detail | 获取历史详情 | taskId: string |
agent:get-registered-types | 获取已注册类型 | - |
agent:import-template | 导入模板 | templateData: object |
6. 前端页面
6.1 AgentDashboardPage.vue
代理管理仪表板:
- 8种代理卡片展示: 名称、描述、能力标签、状态
- 快速任务提交输入框
- 执行模式选择 (串行/并行/管道)
- 实时任务进度显示
- 任务历史记录列表
- 代理使用统计图表 (ECharts)
6.2 AgentTemplateEditorPage.vue
代理模板编辑器:
- 模板基本信息表单 (名称/描述/版本)
- 系统提示词编辑器 (Markdown 支持)
- 能力选择器 (多选标签)
- 工具配置面板
- 技能关联选择
- 模型参数调节 (temperature/maxTokens 滑块)
- 预览和测试按钮
6.3 Pinia Store: agents.ts
typescript
interface AgentsState {
templates: AgentTemplate[];
currentTemplate: AgentTemplate | null;
runningTasks: TaskInfo[];
taskHistory: TaskHistoryItem[];
registeredTypes: string[];
loading: boolean;
}
interface AgentTemplate {
id: string;
name: string;
displayName: string;
description: string;
version: string;
builtin: boolean;
systemPrompt: string;
capabilities: string[];
tools: string[];
skills: string[];
config: AgentConfig;
}7. 安全设计
7.1 代理权限控制
- 每个代理只能访问其能力声明中的工具
- 文件系统访问通过 FileSandbox 限制在工作区范围
- 敏感操作 (如文件写入) 需要用户确认
7.2 任务执行安全
- 任务执行超时保护 (默认 5 分钟)
- Token 消耗上限控制
- 并行任务并发数限制 (默认最多 3 个)
- 异常代理自动隔离
7.3 模板安全
- 内置模板不可删除或修改
- 自定义模板的 systemPrompt 进行注入检查
- 导入模板时验证格式和权限声明
8. 与 Cowork 系统集成
多代理系统构建在 Cowork 多代理协作框架之上:
- TeammateTool: 代理间通过 TeammateTool 协作通信
- FileSandbox: 共享 FileSandbox 文件访问控制
- 长时任务: 通过 Cowork 的 checkpoint/recovery 机制支持长时任务
- Skills: 复用 Cowork 的 Skills 框架加载代理技能
9. 文件结构
desktop-app-vue/src/main/agents/
├── agent-template-manager.js # 代理模板CRUD
├── agent-coordinator.js # 任务分解、分配、聚合
├── agent-registry.js # 代理注册、工厂、版本
├── agent-capabilities.js # 能力定义和工具集
├── agents-ipc.js # 16个IPC处理器
└── skills/ # 内置代理技能
├── security-audit.md
├── generate-tests.md
├── architecture-diagram.md
├── performance-report.md
└── compliance-check.md
desktop-app-vue/src/renderer/
├── pages/agents/
│ ├── AgentDashboardPage.vue # 代理仪表板
│ └── AgentTemplateEditorPage.vue # 模板编辑器
└── stores/agents.ts # 代理状态管理10. 相关文档
文档版本: 1.0 最后更新: 2026-02-15
