4.3 KiB
4.3 KiB
实时文件保存功能
功能说明
现在,AutoGen SDLC 系统支持实时文件保存功能。在 Agent 协作过程中,每个 Agent 生成的内容会立即保存到文件系统中,而不需要等待整个工作流完成。
工作原理
修改前
对话开始 → PM Agent 发言 → QA Agent 发言 → Dev Agent 发言 → ... → 对话结束
↓
遍历所有消息
↓
批量保存文件
修改后
对话开始 → PM Agent 发言 → 立即保存 SRS.md
↓
QA Agent 发言 → 立即保存 test_sample.py
↓
Dev Agent 发言 → 立即保存 src_sample.py (或其他文件)
↓
...
↓
对话结束 (所有文件已实时保存完成)
技术实现
- 回调机制: 使用 AutoGen 的
register_reply方法注册回调函数 - 实时检测: 每次 Agent 发言后立即检测内容并保存文件
- 文件识别: 根据 Agent 名称和内容类型自动判断文件类型
- PM_Agent → SRS.md (需求文档)
- QA_Agent → test_sample.py (测试用例)
- Dev_Agent → src_sample.py 或指定文件名的代码文件
使用方法
方法 1: 运行示例
# 设置 API Key
$env:DASHSCOPE_API_KEY="your_api_key"
# 运行实时文件保存示例
python usage_examples.py
示例会自动演示实时文件保存功能。
方法 2: 直接使用 API
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
-
带文件名的代码块:
# File: my_module.py def my_function(): pass会保存为
my_module.py -
不带文件名的代码块: 保存为
src_sample.py -
触发条件: 内容包含"def "、"class "或"import "
实时性保证
每个文件在以下时机立即保存:
- Agent 生成回复内容
- 回调函数被触发
- 解析内容并提取代码/文档
- 写入文件系统
- 输出日志:
💾 [实时保存] <文件路径>
整个过程在毫秒级完成,用户可以在控制台中实时看到文件保存的提示。
优势
✅ 即时可见: 无需等待整个流程完成,立即可见生成的文件 ✅ 过程追踪: 可以观察每个 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: 回调处理器