- Add 2 new team templates: 教育培训团队 (4 roles) and 天工平台工程团队 (5 roles) - Fix orchestrator to support multi-template workflow types (remove hardcoded PM planner) - Add _resolve_planner_role() to auto-detect planner based on team.config.workflow - Add frontend buttons and API clients for new templates - Merge 14 preset roles from 3 template families in get_preset_roles() - Add creation guide and platform engineering usage docs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
324 lines
12 KiB
Markdown
324 lines
12 KiB
Markdown
# 虚拟团队 — 软件公司协作开发
|
||
|
||
> **Virtual Software Company Team** — 基于多 Agent 角色编排的自动化软件开发流水线
|
||
|
||
---
|
||
|
||
## 一、功能概述
|
||
|
||
虚拟团队是天工智能体平台的核心高级功能,将软件公司的五大经典角色(PM / 设计师 / 开发 / 测试 / DevOps)映射为 AI Agent,组成一个可自动协作的虚拟开发团队。用户只需输入项目描述,团队即可自动完成从需求分析到部署上线的全流程,并产出实际代码文件。
|
||
|
||
### 核心能力
|
||
|
||
| 能力 | 说明 |
|
||
|:-----|:-----|
|
||
| **一键创建团队** | 点击"软件公司模板",自动创建 5 个角色 Agent 并组建团队 |
|
||
| **PM 智能规划** | 项目经理 Agent 分析需求,输出包含阶段划分的 JSON 开发计划 |
|
||
| **顺序流水线执行** | 按 PM → Designer → Developer → QA → DevOps 顺序执行各阶段 |
|
||
| **文件产出** | 各 Agent 将代码、文档、配置写入指定项目目录 |
|
||
| **QA 自动审查** | 测试 Agent 审查全部交付物,输出缺陷报告和评分 |
|
||
| **流式进度推送** | SSE 实时推送每个阶段的开始/完成状态 |
|
||
| **项目文件追溯** | 执行完成后展示项目文件路径和完整文件清单 |
|
||
|
||
---
|
||
|
||
## 二、系统架构
|
||
|
||
### 2.1 角色定义
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ 虚拟软件团队 (5 Roles) │
|
||
├──────────┬──────────┬──────────┬──────────┬─────────────────┤
|
||
│ 📋 PM │ 🎨 UI │ 💻 Dev │ 🔍 QA │ 🚀 DevOps │
|
||
│ 项目经理 │ 设计师 │ 全栈开发 │ 测试工程 │ DevOps工程师 │
|
||
│ │ │ │ │ │
|
||
│ 需求分析 │ 交互设计 │ 前后端 │ 审查交付 │ 部署配置 │
|
||
│ 任务分解 │ 视觉规范 │ 代码编写 │ 发现缺陷 │ CI/CD │
|
||
│ 计划制定 │ 组件规划 │ 数据库 │ 验收标准 │ 环境管理 │
|
||
│ │ │ │ │ │
|
||
│ Lead ✅ │ │ │ │ │
|
||
├──────────┴──────────┴──────────┴──────────┴─────────────────┤
|
||
│ 温度: 0.4 0.6 0.3 0.3 0.3 │
|
||
│ 模型: v4-pro flash v4-pro flash flash │
|
||
│ 迭代: 15 12 25 15 12 │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 2.2 执行流程
|
||
|
||
```
|
||
用户输入项目描述
|
||
│
|
||
▼
|
||
┌──────────────────┐
|
||
│ Phase 0: PM 规划 │ ─── 输出 JSON 执行计划(4~7 个阶段)
|
||
└──────┬───────────┘
|
||
│
|
||
▼
|
||
┌──────────────────┐
|
||
│ Phase 1..N │ 按角色顺序执行:
|
||
│ 各阶段 Agent │ Designer → Developer → QA → DevOps
|
||
│ 写入项目文件 │ 每个 Agent 接收上下文 + 项目目录路径
|
||
└──────┬───────────┘
|
||
│
|
||
▼
|
||
┌──────────────────┐
|
||
│ QA 审查 │ 汇总审核全部交付物,给出评分
|
||
└──────┬───────────┘
|
||
│
|
||
▼
|
||
┌──────────────────┐
|
||
│ 最终交付物汇总 │ 项目路径 + 文件清单 + 评审报告
|
||
└──────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 三、数据模型
|
||
|
||
### 3.1 Team(团队)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|:-----|:-----|:-----|
|
||
| `id` | UUID | 团队唯一标识 |
|
||
| `name` | str | 团队名称(默认"软件公司虚拟团队") |
|
||
| `description` | str | 团队描述 |
|
||
| `workspace_id` | UUID? | 所属工作区 |
|
||
| `user_id` | UUID | 创建者 |
|
||
| `is_template` | bool | 是否为模板(模板创建时为 True) |
|
||
| `config` | JSON | 扩展配置(角色列表等) |
|
||
| `status` | str | 状态:active / archived |
|
||
|
||
### 3.2 TeamMember(团队成员)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|:-----|:-----|:-----|
|
||
| `id` | UUID | 记录 ID |
|
||
| `team_id` | UUID FK | 所属团队 |
|
||
| `agent_id` | UUID FK | 关联的 Agent |
|
||
| `role` | str | 角色标识:pm / designer / developer / qa / devops |
|
||
| `position` | int | 排序位置 |
|
||
| `is_lead` | bool | 是否为该角色 Leader |
|
||
|
||
---
|
||
|
||
## 四、API 参考
|
||
|
||
**Base**: `/api/v1/teams`
|
||
|
||
### 4.1 团队 CRUD
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|:-----|:-----|:-----|
|
||
| `GET` | `/teams` | 列出用户的所有团队 |
|
||
| `POST` | `/teams` | 创建团队 |
|
||
| `GET` | `/teams/{id}` | 获取团队详情(含成员列表) |
|
||
| `PUT` | `/teams/{id}` | 更新团队信息 |
|
||
| `DELETE` | `/teams/{id}` | 删除团队 |
|
||
|
||
### 4.2 成员管理
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|:-----|:-----|:-----|
|
||
| `GET` | `/teams/{id}/members` | 列出团队成员 |
|
||
| `POST` | `/teams/{id}/members` | 添加成员(agent_id + role) |
|
||
| `DELETE` | `/teams/{id}/members/{mid}` | 移除成员 |
|
||
|
||
### 4.3 模板工厂
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|:-----|:-----|:-----|
|
||
| `POST` | `/teams/template/software-company` | **一键创建软件公司模板** — 自动创建 5 个角色 Agent + 团队 |
|
||
| `GET` | `/teams/preset-roles` | 获取预置角色定义(名称、图标、描述) |
|
||
|
||
### 4.4 项目执行
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|:-----|:-----|:-----|
|
||
| `POST` | `/teams/{id}/execute` | **同步执行** — 返回完整执行结果(含计划、各阶段产出、文件清单) |
|
||
| `POST` | `/teams/{id}/execute/stream` | **流式执行** — SSE 事件流,实时推送执行进度 |
|
||
|
||
#### 同步执行响应结构
|
||
|
||
```json
|
||
{
|
||
"data": {
|
||
"team_id": "uuid",
|
||
"team_name": "软件公司虚拟团队",
|
||
"project_description": "...",
|
||
"project_path": "D:\\aaa\\aiagent\\team_projects\\{team_id}\\{project}/",
|
||
"files": ["D:\\...\\index.html", "D:\\...\\api.py", ...],
|
||
"plan": { "project_name": "...", "phases": [...] },
|
||
"phases": [
|
||
{
|
||
"phase": 1,
|
||
"name": "需求分析与产品定义",
|
||
"role": "pm",
|
||
"agent_name": "项目经理 (PM)",
|
||
"output": "...",
|
||
"success": true,
|
||
"iterations": 1,
|
||
"tool_calls": 2,
|
||
"files": ["..."]
|
||
}
|
||
],
|
||
"qa_review": { "pass": true, "score": 85, "issues": [...] },
|
||
"final_deliverable": "# 全部交付物汇总 ...",
|
||
"success": true
|
||
}
|
||
}
|
||
```
|
||
|
||
#### SSE 流式事件类型
|
||
|
||
| 事件类型 | 说明 | 关键字段 |
|
||
|:---------|:-----|:---------|
|
||
| `plan_start` | PM 开始规划 | `team_name`, `member_count`, `project_path` |
|
||
| `plan_done` | PM 规划完成 | `plan` (JSON), `success` |
|
||
| `phase_start` | 阶段开始执行 | `phase`, `name`, `role`, `agent` |
|
||
| `phase_done` | 阶段执行完成 | `output`, `success`, `iterations`, `tool_calls`, `files` |
|
||
| `qa_done` | QA 审查完成 | `output`, `review` (JSON) |
|
||
| `final` | 全部完成 | `deliverable`, `project_path`, `files`, `phase_count` |
|
||
| `error` | 错误 | `content` |
|
||
|
||
---
|
||
|
||
## 五、Agent 系统提示词设计
|
||
|
||
每个角色 Agent 在创建时被注入专用的系统提示词,确保执行风格符合角色定位:
|
||
|
||
### PM 系统提示词要点
|
||
- 分析需求 → 用户故事 → 阶段分解(4-7 个)
|
||
- 每个阶段指定 role + 描述 + 期望产出
|
||
- 输出严格 JSON 格式
|
||
|
||
### Designer 系统提示词要点
|
||
- 用户流程 / 线框图 / 组件层级 / 视觉设计 tokens
|
||
- 指定颜色、字体、间距系统
|
||
- 输出结构化 Markdown + HTML/CSS 原型
|
||
|
||
### Developer 系统提示词要点
|
||
- 技术栈:Python/FastAPI + Vue 3/TypeScript + SQLAlchemy + Element Plus
|
||
- 使用 `file_write` 产出完整、可运行的代码文件
|
||
- 包含类型标注、错误处理、输入验证
|
||
|
||
### QA 系统提示词要点
|
||
- 审查验收标准覆盖、边界情况、安全漏洞、API 契约一致性
|
||
- 输出 JSON 评审报告(pass / score / issues / overall_assessment)
|
||
|
||
### DevOps 系统提示词要点
|
||
- Dockerfile + docker-compose + nginx.conf
|
||
- .env.example + 健康检查 + 部署 README
|
||
|
||
---
|
||
|
||
## 六、前后端文件索引
|
||
|
||
### 后端
|
||
|
||
| 文件 | 说明 |
|
||
|:-----|:-----|
|
||
| `backend/app/models/team.py` | Team / TeamMember SQLAlchemy 模型 |
|
||
| `backend/app/api/teams.py` | 12 个 API 端点(CRUD + 模板 + 执行) |
|
||
| `backend/app/services/team_service.py` | TeamService + 模板工厂 + 5 种角色系统提示词 |
|
||
| `backend/app/services/team_orchestrator.py` | TeamOrchestrator 执行引擎(同步 + SSE 流式) |
|
||
|
||
### 前端
|
||
|
||
| 文件 | 说明 |
|
||
|:-----|:-----|
|
||
| `frontend/src/views/TeamBuilder.vue` | 虚拟团队主页面(~850 行),含角色槽位、拖拽、执行结果展示 |
|
||
| `frontend/src/api/teams.ts` | TypeScript API 客户端(接口 + 请求函数) |
|
||
| `frontend/src/router/index.ts` | `/teams` 路由注册 |
|
||
| `frontend/src/components/MainLayout.vue` | 导航栏"虚拟团队"菜单项 |
|
||
|
||
---
|
||
|
||
## 七、使用指南
|
||
|
||
### 7.1 创建虚拟团队
|
||
|
||
1. 访问 `http://localhost:3001/teams`
|
||
2. 点击 **"软件公司模板"** 按钮
|
||
3. 系统自动创建 5 个角色 Agent(如已有同名则复用)并组建团队
|
||
4. 5 个角色槽位自动填充对应 Agent
|
||
|
||
### 7.2 手动分配 Agent
|
||
|
||
1. 左侧面板显示所有可用 Agent
|
||
2. 拖拽 Agent 到中间对应的角色卡片上
|
||
3. 也可从槽位中移除已分配的 Agent
|
||
|
||
### 7.3 执行项目
|
||
|
||
1. 在底部输入框输入项目描述,例如:
|
||
> 做一个支持用户注册登录的个人博客系统,包含文章发布、评论功能
|
||
|
||
2. 点击 **"执行项目"**(同步,有 tab 页展示)或 **"流式执行"**(实时进度推送)
|
||
3. 观察执行过程:
|
||
- PM 需求分析 → 生成开发计划
|
||
- 各阶段按角色顺序执行
|
||
- QA 审查最终交付物
|
||
4. 查看结果:
|
||
- **"项目计划"** tab:PM 的 JSON 规划
|
||
- **各阶段 tab**:Agent 的产出内容(Markdown 渲染)
|
||
- **"QA 审查"** tab:质量报告
|
||
- **"最终交付物"** tab:汇总的全部产出
|
||
- **"项目文件"** tab:保存路径 + 产出文件清单
|
||
|
||
### 7.4 查找交付文件
|
||
|
||
执行完成后,文件保存在:
|
||
```
|
||
<项目根目录>/team_projects/<team_id>/<项目名>/
|
||
```
|
||
|
||
页面上的"项目文件"区域会显示完整路径(可复制)和所有产出文件的列表。
|
||
|
||
---
|
||
|
||
## 八、技术要点
|
||
|
||
### 8.1 项目目录管理
|
||
|
||
- 执行前在 `<workspace_root>/team_projects/<team_id>/<safe_name>/` 创建目录
|
||
- 安全命名:取项目描述前 40 字符,仅保留 ASCII 字母数字和连字符
|
||
- 每个阶段 Agent 通过 prompt 获取该路径,`file_write` 工具将文件写入此目录
|
||
|
||
### 8.2 Agent 配置构建
|
||
|
||
`_build_agent_config()` 从 Agent 的 `workflow_config` JSON 中提取:
|
||
- `nodes[type=llm].data.prompt` → 系统提示词
|
||
- `nodes[type=llm].data.model` → 模型名称
|
||
- `nodes[type=llm].data.temperature` → 温度参数
|
||
- `nodes[type=llm].data.selected_tools` → 工具白名单
|
||
- `nodes[type=llm].data.max_iterations` → 最大 ReAct 迭代次数
|
||
|
||
### 8.3 上下文传递
|
||
|
||
每个阶段 Agent 接收前序阶段产出的摘要(上限 2000 字符),形成渐进式上下文积累,确保后续阶段了解之前的工作。
|
||
|
||
### 8.4 文件追踪(双保险机制)
|
||
|
||
1. **AgentResult.steps 提取**:扫描 `AgentResult.steps` 中的 `file_write` 工具调用记录
|
||
2. **目录扫描**:每个阶段后对比项目目录快照,检测新创建的文件
|
||
3. 最终文件列表以目录扫描为准,同时合并 AgentResult 提取的路径
|
||
|
||
---
|
||
|
||
## 九、与相关功能的对比
|
||
|
||
| 功能 | Agent 编排 | 虚拟团队 |
|
||
|:-----|:----------|:---------|
|
||
| 编排方式 | 可视化 DAG 画布(节点+连线) | 固定角色流水线 |
|
||
| 角色定义 | 无(通用节点) | PM/Designer/Dev/QA/DevOps 五种角色 |
|
||
| 执行模式 | 5 种协作模式(顺序/并行/投票/Swarm/辩论) | 顺序执行 |
|
||
| 适用场景 | 通用多 Agent 协作 | 软件项目开发 |
|
||
| 文件产出 | 依赖节点配置 | 强制写入项目目录 |
|
||
| 项目路径 | 无 | 自动创建并返回 |
|
||
|
||
---
|
||
|
||
> 最后更新:2026 年 6 月 16 日
|