238 lines
5.1 KiB
Markdown
238 lines
5.1 KiB
Markdown
|
|
# SDLC Agent Demo - 快速使用指南
|
|||
|
|
|
|||
|
|
## 项目概述
|
|||
|
|
|
|||
|
|
这是一个基于 **CrewAI + Qwen3.5-flash + FastAPI(SSE)** 的多智能体软件交付协同系统演示项目。
|
|||
|
|
|
|||
|
|
### 核心功能
|
|||
|
|
|
|||
|
|
- ✅ **PM Agent** - 将用户需求转化为结构化 SRS 文档
|
|||
|
|
- ✅ **QA Agent** - 根据 SRS 生成自动化测试用例
|
|||
|
|
- ✅ **Dev Agent** - 根据需求和测试用例实现业务代码
|
|||
|
|
- ✅ **SSE 实时流** - 实时展示各智能体执行进度
|
|||
|
|
- ✅ **现代化 UI** - Vue3 + TailwindCSS 单页面应用
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 快速启动(3 步)
|
|||
|
|
|
|||
|
|
### 步骤 1: 配置 API Key
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 复制环境变量模板
|
|||
|
|
copy .env.example .env
|
|||
|
|
|
|||
|
|
# 编辑 .env 文件,填入你的 DashScope API Key
|
|||
|
|
# 获取地址:https://dashscope.console.aliyun.com/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**.env 文件内容:**
|
|||
|
|
```env
|
|||
|
|
DASHSCOPE_API_KEY=sk-your-api-key-here
|
|||
|
|
QWEN_MODEL=qwen3.5-flash
|
|||
|
|
HOST=0.0.0.0
|
|||
|
|
PORT=8000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤 2: 启动服务
|
|||
|
|
|
|||
|
|
**方式 A: 使用启动脚本(Windows)**
|
|||
|
|
```bash
|
|||
|
|
start.bat
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**方式 B: 手动启动**
|
|||
|
|
```bash
|
|||
|
|
# 激活虚拟环境(如果有)
|
|||
|
|
python -m venv venv
|
|||
|
|
venv\Scripts\activate # Windows
|
|||
|
|
source venv/bin/activate # Linux/Mac
|
|||
|
|
|
|||
|
|
# 启动 FastAPI 服务
|
|||
|
|
uvicorn main:app --reload --host 0.0.0.0 --port 8000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤 3: 访问应用
|
|||
|
|
|
|||
|
|
打开浏览器访问:**http://localhost:8000/static/index.html**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 使用示例
|
|||
|
|
|
|||
|
|
### 输入需求示例
|
|||
|
|
|
|||
|
|
在首页输入框中输入以下需求:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
开发一个在线书签管理系统,需要包含以下功能:
|
|||
|
|
1. 用户注册和登录(支持邮箱验证)
|
|||
|
|
2. 书签的添加、编辑、删除
|
|||
|
|
3. 书签分类和标签管理
|
|||
|
|
4. 书签搜索功能
|
|||
|
|
5. 导出/导入书签(HTML 格式)
|
|||
|
|
6. 响应式设计,支持移动端访问
|
|||
|
|
|
|||
|
|
性能要求:
|
|||
|
|
- 页面加载时间 < 2 秒
|
|||
|
|
- 支持并发用户数 > 1000
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 预期输出
|
|||
|
|
|
|||
|
|
系统将依次执行:
|
|||
|
|
|
|||
|
|
1. **PM Agent** → 生成《软件需求规格说明书 (SRS)》
|
|||
|
|
- 功能性需求清单
|
|||
|
|
- 非功能性需求(性能、安全等)
|
|||
|
|
- 验收标准
|
|||
|
|
|
|||
|
|
2. **QA Agent** → 生成《测试方案与用例》
|
|||
|
|
- Pytest 测试脚本框架
|
|||
|
|
- 测试场景描述
|
|||
|
|
- 测试数据准备
|
|||
|
|
|
|||
|
|
3. **Dev Agent** → 生成《业务代码实现》
|
|||
|
|
- 完整的 Python 代码模块
|
|||
|
|
- 数据模型定义
|
|||
|
|
- API 接口设计
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## API 接口说明
|
|||
|
|
|
|||
|
|
### 1. 启动任务
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -X POST http://localhost:8000/api/v1/sdlc/start \
|
|||
|
|
-H "Content-Type: application/json" \
|
|||
|
|
-d '{"requirement": "开发一个简单的待办事项应用"}'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**响应:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"task_id": "550e8400-e29b-41d4-a716-446655440000",
|
|||
|
|
"status": "processing"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. SSE流式进度
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -N http://localhost:8000/api/v1/sdlc/stream/{task_id}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**事件类型:**
|
|||
|
|
- `pm_start` / `pm_complete` - PM 阶段开始/完成
|
|||
|
|
- `qa_start` / `qa_complete` - QA 阶段开始/完成
|
|||
|
|
- `dev_start` / `dev_complete` - Dev 阶段开始/完成
|
|||
|
|
- `final_result` - 最终结果
|
|||
|
|
- `error` - 错误处理
|
|||
|
|
|
|||
|
|
### 3. 查询状态
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl http://localhost:8000/api/v1/sdlc/status/{task_id}
|
|||
|
|
curl http://localhost:8000/api/v1/sdlc/result/{task_id}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Docker 部署
|
|||
|
|
|
|||
|
|
### 构建镜像
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker build -t sdlc-agent-demo .
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 运行容器
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
docker run -d \
|
|||
|
|
-p 8000:8000 \
|
|||
|
|
-e DASHSCOPE_API_KEY=your_api_key \
|
|||
|
|
--name sdlc-demo \
|
|||
|
|
sdlc-agent-demo
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 访问服务
|
|||
|
|
|
|||
|
|
http://localhost:8000/static/index.html
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### Q1: 如何获取 DashScope API Key?
|
|||
|
|
|
|||
|
|
访问 https://dashscope.console.aliyun.com/ 注册账号并创建 API Key。
|
|||
|
|
|
|||
|
|
### Q2: 支持其他模型吗?
|
|||
|
|
|
|||
|
|
可以修改 `.env` 中的 `QWEN_MODEL` 参数,使用其他 OpenAI 兼容的模型。
|
|||
|
|
|
|||
|
|
### Q3: SSE 连接中断怎么办?
|
|||
|
|
|
|||
|
|
- 检查防火墙设置
|
|||
|
|
- 增加超时时间(修改 `main.py` 中的 timeout 参数)
|
|||
|
|
- 前端已自动实现重连机制
|
|||
|
|
|
|||
|
|
### Q4: 输出质量不佳?
|
|||
|
|
|
|||
|
|
- 调整 Temperature 参数(降低随机性)
|
|||
|
|
- 优化 Prompt 描述
|
|||
|
|
- 增加更详细的上下文约束
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 技术栈
|
|||
|
|
|
|||
|
|
| 组件 | 技术 | 版本 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| AI 框架 | CrewAI | >=0.85.0 |
|
|||
|
|
| 大模型 | Qwen3.5-flash | via DashScope |
|
|||
|
|
| Web 框架 | FastAPI | >=0.109.0 |
|
|||
|
|
| 实时通信 | SSE | sse-starlette |
|
|||
|
|
| 前端 | Vue3 | 3.x |
|
|||
|
|
| UI 框架 | TailwindCSS | 3.x |
|
|||
|
|
| 代码高亮 | Highlight.js | 11.9.0 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 项目结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
sdlc_agent_demo/
|
|||
|
|
├── main.py # FastAPI 入口
|
|||
|
|
├── agents/
|
|||
|
|
│ ├── pm_agent.py # PM 智能体
|
|||
|
|
│ ├── qa_agent.py # QA 智能体
|
|||
|
|
│ └── dev_agent.py # Dev 智能体
|
|||
|
|
├── crews/
|
|||
|
|
│ └── sdlc_crew.py # 编排逻辑
|
|||
|
|
├── models/
|
|||
|
|
│ └── qwen_config.py # 模型配置
|
|||
|
|
├── static/
|
|||
|
|
│ └── index.html # 前端页面
|
|||
|
|
├── .env.example # 环境变量模板
|
|||
|
|
├── Dockerfile # Docker 配置
|
|||
|
|
├── requirements.txt # Python 依赖
|
|||
|
|
└── README.md # 详细文档
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 下一步计划
|
|||
|
|
|
|||
|
|
- [ ] 支持多任务并行处理
|
|||
|
|
- [ ] 添加任务历史记录
|
|||
|
|
- [ ] 集成代码执行沙箱
|
|||
|
|
- [ ] 支持更多模型后端
|
|||
|
|
- [ ] 添加认证授权机制
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Built with ❤️ using CrewAI + Qwen3.5-flash + FastAPI**
|