152 lines
4.3 KiB
Markdown
152 lines
4.3 KiB
Markdown
# 实时文件保存功能
|
||
|
||
## 功能说明
|
||
|
||
现在,AutoGen SDLC 系统支持**实时文件保存**功能。在 Agent 协作过程中,每个 Agent 生成的内容会立即保存到文件系统中,而不需要等待整个工作流完成。
|
||
|
||
## 工作原理
|
||
|
||
### 修改前
|
||
```
|
||
对话开始 → PM Agent 发言 → QA Agent 发言 → Dev Agent 发言 → ... → 对话结束
|
||
↓
|
||
遍历所有消息
|
||
↓
|
||
批量保存文件
|
||
```
|
||
|
||
### 修改后
|
||
```
|
||
对话开始 → PM Agent 发言 → 立即保存 SRS.md
|
||
↓
|
||
QA Agent 发言 → 立即保存 test_sample.py
|
||
↓
|
||
Dev Agent 发言 → 立即保存 src_sample.py (或其他文件)
|
||
↓
|
||
...
|
||
↓
|
||
对话结束 (所有文件已实时保存完成)
|
||
```
|
||
|
||
## 技术实现
|
||
|
||
1. **回调机制**: 使用 AutoGen 的 `register_reply` 方法注册回调函数
|
||
2. **实时检测**: 每次 Agent 发言后立即检测内容并保存文件
|
||
3. **文件识别**: 根据 Agent 名称和内容类型自动判断文件类型
|
||
- PM_Agent → SRS.md (需求文档)
|
||
- QA_Agent → test_sample.py (测试用例)
|
||
- Dev_Agent → src_sample.py 或指定文件名的代码文件
|
||
|
||
## 使用方法
|
||
|
||
### 方法 1: 运行示例
|
||
|
||
```bash
|
||
# 设置 API Key
|
||
$env:DASHSCOPE_API_KEY="your_api_key"
|
||
|
||
# 运行实时文件保存示例
|
||
python usage_examples.py
|
||
```
|
||
|
||
示例会自动演示实时文件保存功能。
|
||
|
||
### 方法 2: 直接使用 API
|
||
|
||
```python
|
||
from autogen_sdls_system import AutoGenSDLCSystem
|
||
|
||
system = AutoGenSDLCSystem(
|
||
api_key="your_api_key",
|
||
workspace_dir="workspace" # 指定工作目录
|
||
)
|
||
|
||
result = system.run_workflow(
|
||
"我需要一个电池健康状态预测 API",
|
||
max_round=15
|
||
)
|
||
|
||
# 查看实时保存的文件
|
||
print("生成的文件:", result["saved_files"])
|
||
```
|
||
|
||
## 文件命名规则
|
||
|
||
### PM Agent
|
||
- **文件名**: `SRS.md`
|
||
- **触发条件**: 内容包含"需求"、"SRS"或"软件需求规格说明书"
|
||
- **内容格式**: Markdown 格式的 Software Requirements Specification
|
||
|
||
### QA Agent
|
||
- **文件名**: `test_sample.py`
|
||
- **触发条件**: 内容包含"test"、"测试"或"def test_"
|
||
- **内容格式**: Python 测试代码(Pytest 风格)
|
||
|
||
### Dev Agent
|
||
- **带文件名的代码块**:
|
||
```python
|
||
# File: my_module.py
|
||
def my_function():
|
||
pass
|
||
```
|
||
会保存为 `my_module.py`
|
||
|
||
- **不带文件名的代码块**: 保存为 `src_sample.py`
|
||
- **触发条件**: 内容包含"def "、"class "或"import "
|
||
|
||
## 实时性保证
|
||
|
||
每个文件在以下时机立即保存:
|
||
1. Agent 生成回复内容
|
||
2. 回调函数被触发
|
||
3. 解析内容并提取代码/文档
|
||
4. 写入文件系统
|
||
5. 输出日志:`💾 [实时保存] <文件路径>`
|
||
|
||
整个过程在毫秒级完成,用户可以在控制台中实时看到文件保存的提示。
|
||
|
||
## 优势
|
||
|
||
✅ **即时可见**: 无需等待整个流程完成,立即可见生成的文件
|
||
✅ **过程追踪**: 可以观察每个 Agent 的贡献和输出顺序
|
||
✅ **错误恢复**: 如果中途中断,已生成的文件不会丢失
|
||
✅ **调试方便**: 可以实时检查每个阶段的输出质量
|
||
✅ **人机协同**: 人工可以在流程进行中审查已生成的文件
|
||
|
||
## 注意事项
|
||
|
||
⚠️ **文件覆盖**: 如果同一个 Agent 多次生成同类型文件,后生成的会覆盖先生成的
|
||
⚠️ **工作目录**: 确保工作目录有写权限
|
||
⚠️ **API 响应**: 某些模型响应可能包含多个代码块,只会保存第一个匹配的
|
||
|
||
## 示例输出
|
||
|
||
```
|
||
🚀 开始对话...
|
||
|
||
PM_Agent 正在分析需求...
|
||
💾 [实时保存] workspace\SRS.md
|
||
|
||
QA_Agent 正在设计测试...
|
||
💾 [实时保存] workspace\test_sample.py
|
||
|
||
Dev_Agent 正在编写代码...
|
||
💾 [实时保存] workspace\src_sample.py
|
||
|
||
User_Proxy 正在执行测试...
|
||
|
||
Orchestrator 正在汇总结果...
|
||
|
||
✅ 工作流完成!
|
||
📁 已保存 3 个文件:
|
||
✓ workspace\SRS.md
|
||
✓ workspace\test_sample.py
|
||
✓ workspace\src_sample.py
|
||
```
|
||
|
||
## 相关文件
|
||
|
||
- `autogen_sdls_system.py`: 核心实现文件
|
||
- `usage_examples.py`: 使用示例(包含示例 6)
|
||
- `utils/callback_handler.py`: 回调处理器
|