Files
autogen/README.md
2026-03-12 13:27:03 +08:00

286 lines
6.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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**