Files
autogen/REALTIME_FILE_SAVING.md

152 lines
4.3 KiB
Markdown
Raw Permalink Normal View History

2026-03-12 17:58:15 +08:00
# 实时文件保存功能
## 功能说明
现在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`: 回调处理器