第一次提交
This commit is contained in:
285
README.md
Normal file
285
README.md
Normal file
@@ -0,0 +1,285 @@
|
||||
# AutoGen SDLC 多智能体协同系统
|
||||
|
||||
基于 **Microsoft AutoGen** + **阿里云 Qwen3.5-flash** 的端到端软件交付协同网络。
|
||||
|
||||
## 🎯 项目概述
|
||||
|
||||
本系统实现了多智能体协同的完整 SDLC(软件开发生命周期)流程:
|
||||
|
||||
1. **PM Agent** - 产品经理:需求分析与 SRS 生成
|
||||
2. **QA Agent** - 测试工程师:测试用例设计与 TDD 实践
|
||||
3. **Dev Agent** - 开发工程师:代码实现与修复
|
||||
4. **Orchestrator Agent** - 协调器:流程调度与最终验证
|
||||
|
||||
## 🚀 快速启动
|
||||
|
||||
### 1. 环境准备
|
||||
|
||||
```bash
|
||||
# Python 版本要求
|
||||
Python >= 3.9
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 2. 配置 API Key
|
||||
|
||||
```bash
|
||||
# Windows (PowerShell)
|
||||
$env:DASHSCOPE_API_KEY="your_api_key_here"
|
||||
|
||||
# Linux/Mac
|
||||
export DASHSCOPE_API_KEY="your_api_key_here"
|
||||
```
|
||||
|
||||
获取 API Key: [阿里云 DashScope 控制台](https://dashscope.console.aliyun.com/)
|
||||
|
||||
### 3. 运行演示
|
||||
|
||||
#### 方式 1: 命令行模式
|
||||
|
||||
```bash
|
||||
python autogen_sdls_system.py
|
||||
```
|
||||
|
||||
#### 方式 2: Streamlit 前端界面
|
||||
|
||||
```bash
|
||||
streamlit run frontend/streamlit_app.py
|
||||
```
|
||||
|
||||
#### 方式 3: 自愈功能演示
|
||||
|
||||
```bash
|
||||
python autogen_self_healing_demo.py
|
||||
```
|
||||
|
||||
## 📁 项目结构
|
||||
|
||||
```
|
||||
project/
|
||||
├── agents/ # Agent 模块
|
||||
│ ├── pm_agent.py # 产品经理 Agent
|
||||
│ ├── qa_agent.py # 测试工程师 Agent
|
||||
│ ├── dev_agent.py # 开发工程师 Agent
|
||||
│ └── orchestrator.py # 协调器 Agent
|
||||
├── config/ # 配置文件
|
||||
│ └── llm_config.py # LLM 配置与提示词模板
|
||||
├── frontend/ # 前端界面
|
||||
│ └── streamlit_app.py # Streamlit 实时聊天界面
|
||||
├── utils/ # 工具类
|
||||
│ ├── logger.py # 日志记录
|
||||
│ └── callback_handler.py # 回调处理
|
||||
├── tests/ # 单元测试
|
||||
│ └── test_agents.py
|
||||
├── workspace/ # 工作目录(Agent 输出文件)
|
||||
├── logs/ # 日志目录
|
||||
├── autogen_sdls_system.py # 主程序入口
|
||||
├── autogen_self_healing_demo.py # 自愈演示
|
||||
├── usage_examples.py # 使用示例
|
||||
└── requirements.txt # 依赖包列表
|
||||
```
|
||||
|
||||
## 💡 核心功能
|
||||
|
||||
### 1. 端到端自动化流程
|
||||
|
||||
```
|
||||
用户需求 → PM 分析 → QA 设计测试 → Dev 编码 → 自动测试 → 验证输出
|
||||
```
|
||||
|
||||
### 2. TDD(测试驱动开发)
|
||||
|
||||
- QA Agent 先于代码生成测试用例
|
||||
- Dev Agent 编写代码确保测试通过
|
||||
- 测试失败时触发自动修复循环
|
||||
|
||||
### 3. 自愈能力
|
||||
|
||||
系统检测到测试失败时,自动:
|
||||
1. 分析错误日志
|
||||
2. 定位 bug 原因
|
||||
3. 生成修复代码
|
||||
4. 重新验证测试
|
||||
|
||||
### 4. 人机协同
|
||||
|
||||
关键节点支持人工确认:
|
||||
- SRS 文档审核
|
||||
- 测试用例评审
|
||||
- 最终代码验收
|
||||
|
||||
### 5. 实时可视化
|
||||
|
||||
Streamlit 前端提供:
|
||||
- 实时对话展示
|
||||
- Agent 状态监控
|
||||
- 工作流进度跟踪
|
||||
- 对话历史导出
|
||||
|
||||
## 🔧 配置说明
|
||||
|
||||
### 模型配置
|
||||
|
||||
在 `config/llm_config.py` 中配置:
|
||||
|
||||
```python
|
||||
DASHSCOPE_API_KEY = "your_api_key"
|
||||
DASHSCOPE_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
|
||||
```
|
||||
|
||||
### 支持的模型
|
||||
|
||||
- `qwen3.5-flash` (推荐,速度快)
|
||||
- `qwen-max` (最强性能)
|
||||
- `qwen-plus` (平衡性能和成本)
|
||||
- `qwen-turbo` (最快速度)
|
||||
|
||||
### Agent 系统提示词
|
||||
|
||||
每个 Agent 都有专属的系统提示词,定义在 `config/llm_config.py` 中:
|
||||
|
||||
- `PM_PROMPT` - 产品经理提示词
|
||||
- `QA_PROMPT` - 测试工程师提示词
|
||||
- `DEV_PROMPT` - 开发工程师提示词
|
||||
- `ORCH_PROMPT` - 协调器提示词
|
||||
|
||||
## 📖 使用示例
|
||||
|
||||
### 示例 1: 使用命令行
|
||||
|
||||
```python
|
||||
from autogen_sdls_system import AutoGenSDLCSystem
|
||||
|
||||
system = AutoGenSDLCSystem(api_key="your_key")
|
||||
|
||||
requirement = "开发一个电池健康状态预测 API"
|
||||
result = system.run_workflow(requirement, max_round=15)
|
||||
|
||||
print(result["summary"])
|
||||
```
|
||||
|
||||
### 示例 2: 单独调用 Agent
|
||||
|
||||
```python
|
||||
from agents import ProductManagerAgent
|
||||
|
||||
pm = ProductManagerAgent(api_key="your_key")
|
||||
srs = pm.generate_srs("我需要一个车载蓝牙管理模块")
|
||||
print(srs)
|
||||
```
|
||||
|
||||
### 示例 3: 自定义配置
|
||||
|
||||
```python
|
||||
from config.llm_config import get_llm_config
|
||||
|
||||
llm_config = get_llm_config(
|
||||
model="qwen-max",
|
||||
temperature=0.5,
|
||||
max_tokens=4096
|
||||
)
|
||||
```
|
||||
|
||||
## 🎬 Workshop 演示脚本
|
||||
|
||||
### 场景:电池健康状态 (SOH) 预测 API
|
||||
|
||||
1. **输入模糊需求**
|
||||
```
|
||||
"我需要一个电池健康预测功能"
|
||||
```
|
||||
|
||||
2. **PM Agent 输出** - 完整 SRS 文档
|
||||
- 功能性需求
|
||||
- 非功能性需求
|
||||
- 验收标准
|
||||
|
||||
3. **QA Agent 输出** - Pytest 测试脚本
|
||||
- 测试函数
|
||||
- BDD 场景描述
|
||||
|
||||
4. **Dev Agent 输出** - 可运行的 API 代码
|
||||
- 核心业务逻辑
|
||||
- 错误处理
|
||||
|
||||
5. **自动测试** - 展示测试执行和修复循环
|
||||
|
||||
6. **最终输出** - 可部署的代码包 + 测试报告
|
||||
|
||||
## ✅ 演示亮点
|
||||
|
||||
- ✅ 实时展示 Agent 协作对话
|
||||
- ✅ 人机协同确认节点
|
||||
- ✅ 测试失败→自动修复→通过的闭环
|
||||
- ✅ 符合汽车行业标准(MISRA-C、ISO 26262)
|
||||
|
||||
## 🐛 常见问题
|
||||
|
||||
### Q1: API Key 无效
|
||||
|
||||
**解决**: 检查环境变量是否正确设置
|
||||
|
||||
```bash
|
||||
# 验证环境变量
|
||||
echo $DASHSCOPE_API_KEY # Linux/Mac
|
||||
echo %DASHSCOPE_API_KEY% # Windows CMD
|
||||
```
|
||||
|
||||
### Q2: 模型响应超时
|
||||
|
||||
**解决**: 增加超时时间或降低 `max_tokens`
|
||||
|
||||
```python
|
||||
llm_config = get_llm_config(timeout=180)
|
||||
```
|
||||
|
||||
### Q3: 测试执行失败
|
||||
|
||||
**解决**: 检查工作目录权限和 pytest 安装
|
||||
|
||||
```bash
|
||||
pip install pytest
|
||||
chmod +x workspace/
|
||||
```
|
||||
|
||||
## 📊 日志与导出
|
||||
|
||||
### 对话日志
|
||||
|
||||
所有对话自动保存在 `logs/` 目录:
|
||||
|
||||
- JSONL 格式:`session_YYYYMMDD_HHMMSS.jsonl`
|
||||
- JSON 导出:`conversation_*.json`
|
||||
- Markdown 导出:`conversation_*.md`
|
||||
|
||||
### 导出方法
|
||||
|
||||
```python
|
||||
system.export_conversation("my_conversation.json")
|
||||
system.export_report("my_report.md")
|
||||
```
|
||||
|
||||
## 🔐 安全建议
|
||||
|
||||
1. **不要硬编码 API Key** - 使用环境变量
|
||||
2. **审查生成的代码** - AI 可能产生不安全代码
|
||||
3. **限制执行权限** - 禁用 Docker 或使用沙箱
|
||||
4. **定期清理 workspace** - 避免敏感数据积累
|
||||
|
||||
## 📝 许可证
|
||||
|
||||
MIT License
|
||||
|
||||
## 🤝 贡献
|
||||
|
||||
欢迎提交 Issue 和 Pull Request!
|
||||
|
||||
## 📧 联系方式
|
||||
|
||||
如有问题请提交 Issue 或联系开发团队。
|
||||
|
||||
---
|
||||
|
||||
**🤖 Generated with AutoGen SDLC System**
|
||||
Reference in New Issue
Block a user