Files
autogen/REALTIME_FILE_SAVING.md
2026-03-12 17:58:15 +08:00

152 lines
4.3 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 系统支持**实时文件保存**功能。在 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`: 回调处理器