Files
crewai/README.md
2026-03-13 18:12:31 +08:00

7.1 KiB
Raw Blame History

SDLC Agent Demo - 多智能体端到端软件交付协同系统

基于 CrewAI + Qwen3.5-flash + FastAPI(SSE) 构建的企业级研发提效演示系统,模拟从需求分析→测试用例→代码实现的完整 SDLC 流程。

📋 项目特性

  • 多智能体协同PM Agent、QA Agent、Dev Agent 顺序流水线作业
  • 实时进度追踪SSE流式输出各阶段执行状态
  • Qwen3.5-flash:通过 DashScope OpenAI 兼容 API 调用
  • 现代化前端Vue3 + TailwindCSS + 代码高亮
  • 任务持久化:内存级任务状态管理
  • Docker 支持:一键容器化部署

🏗️ 系统架构

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│  PM Agent   │────▶│  QA Agent    │────▶│  Dev Agent  │
│ 需求分析师  │     │ 测试架构师   │     │ 全栈工程师  │
└─────────────┘     └──────────────┘     └─────────────┘
       │                    │                      │
       ▼                    ▼                      ▼
   SRS 文档            测试用例              业务代码

📁 项目结构

sdlc_agent_demo/
├── main.py                 # FastAPI 入口
├── agents/
│   ├── __init__.py
│   ├── pm_agent.py         # PM 智能体定义
│   ├── qa_agent.py         # QA 智能体定义
│   └── dev_agent.py        # Dev 智能体定义
├── crews/
│   └── sdlc_crew.py        # CrewAI 编排逻辑
├── models/
│   └── qwen_config.py      # Qwen3.5-flash 配置
├── static/
│   └── index.html          # 测试页面
├── requirements.txt
├── .env.example            # 环境变量模板
├── Dockerfile
└── README.md

🚀 快速启动

方法一:本地运行

1. 创建虚拟环境

# Windows
python -m venv venv
venv\Scripts\activate

# Linux/Mac
python3 -m venv venv
source venv/bin/activate

2. 安装依赖

pip install -r requirements.txt

3. 配置环境变量

# 复制模板
cp .env.example .env

# 编辑 .env 文件,填入你的 DashScope API Key
# 获取 API Key: https://dashscope.console.aliyun.com/

.env 文件内容:

DASHSCOPE_API_KEY=your_dashscope_api_key_here
QWEN_MODEL=qwen3.5-flash
HOST=0.0.0.0
PORT=8000

4. 启动服务

uvicorn main:app --reload --host 0.0.0.0 --port 8000

5. 访问测试页面

打开浏览器访问:http://localhost:8000/static/index.html

方法二Docker 运行

1. 构建镜像

docker build -t sdlc-agent-demo .

2. 运行容器

docker run -d \
  -p 8000:8000 \
  -e DASHSCOPE_API_KEY=your_api_key \
  --name sdlc-demo \
  sdlc-agent-demo

3. 访问服务

http://localhost:8000/static/index.html

📡 API 接口

1. 启动 SDLC 流程

请求:

POST /api/v1/sdlc/start
Content-Type: application/json

{
  "requirement": "开发一个用户管理系统,支持增删改查功能"
}

响应:

{
  "task_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "processing"
}

2. SSE流式进度

请求:

GET /api/v1/sdlc/stream/{task_id}
Accept: text/event-stream

SSE事件格式

event: pm_start
data: {"stage": "需求分析", "status": "started", "timestamp": "2026-01-15T10:30:00Z"}

event: pm_complete
data: {"stage": "需求分析", "content": "SRS 文档...", "status": "completed", "timestamp": "2026-01-15T10:35:00Z"}

event: final_result
data: {"stage": "交付完成", "status": "success", ...}

3. 查询任务状态

GET /api/v1/sdlc/status/{task_id}

4. 获取任务结果

GET /api/v1/sdlc/result/{task_id}

🤖 智能体角色

PM Agent产品经理

  • 角色:资深产品需求分析师
  • 职责:将用户需求转化为结构化 SRS 文档
  • 输出:功能性需求、非功能性需求、验收标准

QA Agent测试工程师

  • 角色:高级测试架构师
  • 职责:根据 SRS 生成自动化测试用例
  • 输出Pytest 测试脚本、测试场景

Dev Agent开发工程师

  • 角色:全栈软件工程师
  • 职责:根据 SRS 和测试用例实现业务代码
  • 输出:可运行的 Python 代码模块

💡 使用示例

示例需求输入

开发一个在线书签管理系统,需要包含以下功能:
1. 用户注册和登录(支持邮箱验证)
2. 书签的添加、编辑、删除
3. 书签分类和标签管理
4. 书签搜索功能
5. 导出/导入书签HTML 格式)
6. 响应式设计,支持移动端访问

性能要求:
- 页面加载时间 < 2 秒
- 支持并发用户数 > 1000

预期输出

  1. PM Agent → 软件需求规格说明书(包含功能列表、验收标准)
  2. QA Agent → Pytest 测试用例(覆盖所有核心功能)
  3. Dev Agent → 完整的 Python 实现代码FastAPI + SQLite

🔧 配置说明

模型配置

参数 默认值 说明
QWEN_MODEL qwen3.5-flash 模型名称
QWEN_TEMPERATURE 0.7 温度参数 (0-1)
QWEN_MAX_TOKENS 4096 最大生成长度

服务器配置

参数 默认值 说明
HOST 0.0.0.0 监听地址
PORT 8000 监听端口
LOG_LEVEL info 日志级别

🧪 测试与验证

API 测试(使用 curl

# 1. 启动任务
curl -X POST http://localhost:8000/api/v1/sdlc/start \
  -H "Content-Type: application/json" \
  -d '{"requirement": "开发一个简单的待办事项应用"}'

# 2. 查看 SSE流新终端
curl -N http://localhost:8000/api/v1/sdlc/stream/{task_id}

# 3. 健康检查
curl http://localhost:8000/health

⚠️ 注意事项

  1. API Key 安全:不要将 .env 文件提交到版本控制系统
  2. 网络要求:需要访问 DashScope API 服务
  3. 资源消耗:每个任务约消耗 10,000-50,000 tokens
  4. 超时设置SSE 连接默认超时 120 秒,可根据需要调整

🛠️ 故障排查

问题 1无法连接到 DashScope API

解决方案:

  • 检查 API Key 是否正确
  • 确认网络连接正常
  • 验证账户余额充足

问题 2SSE 连接中断

解决方案:

  • 检查防火墙设置
  • 增加超时时间
  • 启用前端自动重连机制

问题 3智能体输出质量不佳

解决方案:

  • 调整 Temperature 参数(降低随机性)
  • 优化 Prompt 描述
  • 增加上下文约束

📝 许可证

本项目仅供学习和演示用途。

🔗 相关链接


Built with ❤️ using CrewAI + Qwen3.5-flash + FastAPI