fix
This commit is contained in:
151
REALTIME_FILE_SAVING.md
Normal file
151
REALTIME_FILE_SAVING.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# 实时文件保存功能
|
||||
|
||||
## 功能说明
|
||||
|
||||
现在,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`: 回调处理器
|
||||
Reference in New Issue
Block a user