first commit
This commit is contained in:
338
开发流程指南.md
Normal file
338
开发流程指南.md
Normal file
@ -0,0 +1,338 @@
|
||||
# Deep Research System - 开发流程指南
|
||||
|
||||
**框架:** DeepAgents (LangChain) | **最后更新:** 2025-10-31
|
||||
|
||||
---
|
||||
|
||||
## 🎯 开发优先级
|
||||
|
||||
### Phase 1: 基础架构 (Day 1-2)
|
||||
|
||||
**目标**: 搭建项目基础,配置开发环境
|
||||
|
||||
**环境配置:**
|
||||
- [ ] 激活虚拟环境:`conda activate deep_research_env`
|
||||
- [ ] 创建 `requirements.txt`(见开发文档)
|
||||
- [ ] 安装依赖:`pip install -r requirements.txt`
|
||||
- [ ] 验证DeepAgents安装:`python -c "import deepagents; print('OK')"`
|
||||
|
||||
**项目结构:**
|
||||
- [ ] 创建目录结构(按开发文档 "项目结构" 章节)
|
||||
- [ ] 创建 `.env` 文件(复制 `.env.example`)
|
||||
- [ ] 配置 `.gitignore`(包含 `.env`)
|
||||
|
||||
**核心工具实现:**
|
||||
- [ ] 创建 `src/config.py`(LLM配置和环境变量加载)
|
||||
- [ ] 创建 `src/tools/search_tools.py`(实现 `batch_internet_search`)
|
||||
- [ ] 测试 API 连接(DashScope + Tavily)
|
||||
|
||||
**验收标准**:
|
||||
- ✅ `import deepagents` 成功
|
||||
- ✅ API能成功调用(测试搜索功能)
|
||||
- ✅ 批量搜索工具能真正并行执行(使用ThreadPoolExecutor)
|
||||
|
||||
**代码审查**: 完成后调用 `code-reviewer` 审查工具实现和配置文件
|
||||
|
||||
---
|
||||
|
||||
### Phase 2: SubAgent实现 (Day 3-5)
|
||||
|
||||
**目标**: 实现6个SubAgent的配置和系统提示词
|
||||
|
||||
- [ ] 创建 `src/agents/subagents.py`
|
||||
- [ ] 实现 6个SubAgent配置(intent-analyzer, search-orchestrator, source-validator, content-analyzer, confidence-evaluator, report-generator)
|
||||
- [ ] 编写单元测试验证配置格式
|
||||
|
||||
**验收标准**: 所有SubAgent使用正确字段名(`system_prompt` 不是 `prompt`),system_prompt足够详细,配置格式符合DeepAgents规范
|
||||
|
||||
**代码审查**: ⚠️ **必须审查** - SubAgent配置是核心组件
|
||||
|
||||
---
|
||||
|
||||
### Phase 3: 主Agent (Day 6-7)
|
||||
|
||||
**目标**: 实现ResearchCoordinator主Agent
|
||||
|
||||
- [ ] 创建 `src/agents/coordinator.py`
|
||||
- [ ] 编写ResearchCoordinator系统提示词
|
||||
- [ ] 集成SubAgent配置
|
||||
- [ ] 测试整体流程(单次迭代)
|
||||
- [ ] 调试迭代逻辑(多轮迭代)
|
||||
|
||||
**验收标准**: 主Agent能正确调用所有SubAgent,迭代逻辑正确,虚拟文件系统正常工作
|
||||
|
||||
**代码审查**: ⚠️ **必须审查** - 主Agent是系统核心
|
||||
|
||||
---
|
||||
|
||||
### Phase 4: CLI和打磨 (Day 8-10)
|
||||
|
||||
**目标**: 实现命令行界面和用户体验优化
|
||||
|
||||
- [ ] 实现CLI命令(research, config, history, resume)
|
||||
- [ ] 实现进度显示 (Rich库)
|
||||
- [ ] 完善错误处理和降级策略
|
||||
- [ ] 编写用户文档
|
||||
|
||||
**验收标准**: 所有CLI命令功能正常,进度显示实时更新,错误信息友好
|
||||
|
||||
**代码审查**: 完成后整体审查
|
||||
|
||||
---
|
||||
|
||||
## 🔄 开发工作流与代码审查
|
||||
|
||||
### 开发-审查循环
|
||||
|
||||
```
|
||||
开发阶段性功能 → 代码审查 → 修正问题 → 继续开发下一阶段
|
||||
```
|
||||
|
||||
### 何时触发代码审查
|
||||
|
||||
| 触发时机 | 审查范围 | 优先级 |
|
||||
|---------|---------|--------|
|
||||
| **完成Phase任务** | 整个Phase的所有文件 | 🔴 必须 |
|
||||
| **实现关键组件** | SubAgent配置、主Agent、工具实现 | 🔴 必须 |
|
||||
| **重大重构** | 受影响的所有文件 | 🔴 必须 |
|
||||
| **修复复杂bug** | 修改的文件 | 🟡 建议 |
|
||||
|
||||
### 如何使用代码审查子agent
|
||||
|
||||
#### 调用审查
|
||||
|
||||
```python
|
||||
# 在主Claude Code窗口中
|
||||
/task code-reviewer
|
||||
|
||||
# 然后提供上下文
|
||||
"""
|
||||
我刚完成了 Phase 2 的 SubAgent 配置,请审查以下文件:
|
||||
1. src/agents/subagents.py - 6个SubAgent的配置
|
||||
2. src/tools/search_tools.py - batch_internet_search工具
|
||||
|
||||
请检查是否符合DeepAgents框架规范和开发文档
|
||||
"""
|
||||
```
|
||||
|
||||
#### 审查报告包含
|
||||
|
||||
- ✅ 正确实现的部分
|
||||
- ⚠️ 需要改进的部分(带建议代码)
|
||||
- ❌ 必须修复的错误(带正确写法)
|
||||
- 优先级标识(🔴高 / 🟡中 / 🟢低)
|
||||
|
||||
#### 处理审查结果
|
||||
|
||||
**🔴 高优先级(必须修复)**
|
||||
- 立即修复,这些通常是框架规范错误
|
||||
- 修复后建议再次审查确认
|
||||
|
||||
**🟡 中优先级(建议改进)**
|
||||
- 评估是否影响功能
|
||||
- 如果影响代码质量,建议修复
|
||||
|
||||
**🟢 低优先级(可选优化)**
|
||||
- 记录到TODO列表
|
||||
- 在时间允许时优化
|
||||
|
||||
### 代码审查子agent的能力边界
|
||||
|
||||
#### ✅ 子agent会做的
|
||||
|
||||
1. **详细审查** - 对照DeepAgents源码和开发文档检查
|
||||
2. **提供建议** - 指出问题、提供修改建议和示例
|
||||
3. **有限修正**(需征得同意)- 格式问题、拼写错误、简单API错误
|
||||
|
||||
#### ❌ 子agent不会做的
|
||||
|
||||
1. **大规模重构** - 保持代码所有权
|
||||
2. **改变架构设计** - 架构决策由你主导
|
||||
3. **添加新功能** - 只审查不扩展
|
||||
4. **未经确认的修改** - 尊重开发决策
|
||||
|
||||
---
|
||||
|
||||
## 📊 进度管理(给Claude Code主窗口)
|
||||
|
||||
**重要区分:**
|
||||
- 本节内容是给 **Claude Code 主窗口**看的,用于管理**开发Deep Research System的任务**
|
||||
- 使用 Claude Code 的 `TodoWrite` 工具
|
||||
- **不要与** DeepAgents 框架内部的 `write_todos` 工具混淆(那是给 ResearchCoordinator 主Agent用的)
|
||||
|
||||
### Claude Code 主窗口使用 TodoWrite 工具
|
||||
|
||||
**开发开始时**:
|
||||
```
|
||||
TodoWrite([
|
||||
{"content": "Phase 1: 基础架构", "status": "in_progress", "activeForm": "搭建基础架构"},
|
||||
{"content": "Phase 2: SubAgent实现", "status": "pending", "activeForm": "实现SubAgent"},
|
||||
{"content": "Phase 3: 主Agent", "status": "pending", "activeForm": "实现主Agent"},
|
||||
{"content": "Phase 4: CLI和打磨", "status": "pending", "activeForm": "实现CLI"}
|
||||
])
|
||||
```
|
||||
|
||||
**Phase完成时**:
|
||||
```
|
||||
TodoWrite([
|
||||
{"content": "Phase 1: 基础架构", "status": "completed", "activeForm": "搭建基础架构"},
|
||||
{"content": "Phase 2: SubAgent实现", "status": "in_progress", "activeForm": "实现SubAgent"},
|
||||
...
|
||||
])
|
||||
```
|
||||
|
||||
### 代码审查集成到进度管理
|
||||
|
||||
```
|
||||
TodoWrite([
|
||||
{"content": "实现SubAgent配置", "status": "completed", "activeForm": "实现SubAgent配置"},
|
||||
{"content": "代码审查 - SubAgent配置", "status": "in_progress", "activeForm": "审查SubAgent配置"},
|
||||
{"content": "修复审查发现的问题", "status": "pending", "activeForm": "修复审查问题"},
|
||||
{"content": "实现主Agent", "status": "pending", "activeForm": "实现主Agent"}
|
||||
])
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 关键注意事项
|
||||
|
||||
### 1. DeepAgents框架理解
|
||||
|
||||
**核心原则**:
|
||||
- 主Agent不是传统Python程序流程控制
|
||||
- 通过系统提示词引导LLM自主决策
|
||||
- 通过文件读写实现状态管理
|
||||
|
||||
**错误示例**(Python循环):
|
||||
```python
|
||||
# ❌ 错误:不要这样写
|
||||
while not finished:
|
||||
search_results = search()
|
||||
if validate(search_results):
|
||||
finished = True
|
||||
```
|
||||
|
||||
**正确方式**(系统提示词引导):
|
||||
```python
|
||||
# ✅ 正确:在system_prompt中描述逻辑
|
||||
system_prompt = """
|
||||
读取 /iteration_decision.json:
|
||||
- 如果 decision="FINISH" → 生成报告
|
||||
- 如果 decision="CONTINUE" → 回到搜索步骤
|
||||
"""
|
||||
```
|
||||
|
||||
### 2. 虚拟文件系统
|
||||
|
||||
**关键理解**:
|
||||
- 文件存储在 `state["files"]` 字典中
|
||||
- 主Agent和SubAgent共享同一个files对象
|
||||
- 文件路径必须以 `/` 开头
|
||||
|
||||
**正确使用**:
|
||||
```python
|
||||
# ✅ 正确的文件路径
|
||||
write_file("/search_queries.json", content)
|
||||
read_file("/iteration_1/sources.json")
|
||||
|
||||
# ❌ 错误的文件路径
|
||||
write_file("search_queries.json", content) # 缺少前导 /
|
||||
```
|
||||
|
||||
### 3. 迭代控制
|
||||
|
||||
**关键理解**:
|
||||
- 不使用Python `while`循环
|
||||
- 系统提示词描述"如果...则..."逻辑
|
||||
- LLM读取 `iteration_decision.json` 自主判断下一步
|
||||
|
||||
**实现方式**:
|
||||
```python
|
||||
# SubAgent (confidence-evaluator) 写入决策文件
|
||||
{
|
||||
"decision": "CONTINUE", # 或 "FINISH"
|
||||
"current_iteration": 2,
|
||||
"reason": "置信度未达标,需要继续搜索"
|
||||
}
|
||||
|
||||
# 主Agent在system_prompt中被引导读取这个文件并决策
|
||||
# LangGraph会持续调用主Agent直到它决定结束
|
||||
```
|
||||
|
||||
### 4. 并行搜索
|
||||
|
||||
**关键理解**:
|
||||
- 使用`ThreadPoolExecutor`实现真正的并发
|
||||
- 不是简单的串行循环调用
|
||||
|
||||
**实现要点**:
|
||||
```python
|
||||
# ✅ 正确:使用ThreadPoolExecutor
|
||||
with ThreadPoolExecutor(max_workers=5) as executor:
|
||||
results = executor.map(search_single, queries)
|
||||
|
||||
# ❌ 错误:串行调用
|
||||
for query in queries:
|
||||
result = search(query) # 不是并行
|
||||
```
|
||||
|
||||
### 5. 置信度计算
|
||||
|
||||
**严格遵守公式**:
|
||||
```
|
||||
置信度 = (来源可信度 × 50%) + (交叉验证 × 30%) + (时效性 × 20%)
|
||||
|
||||
来源可信度: Tier1=0.95, Tier2=0.80, Tier3=0.65, Tier4=0.45 (平均值)
|
||||
交叉验证: 1源=0.4, 2-3源=0.7, 4+源=1.0, 有矛盾-0.3
|
||||
时效性: <6月=1.0, 6-12月=0.9, 1-2年=0.7, 2-3年=0.5, >3年=0.3
|
||||
```
|
||||
|
||||
**实现建议**:
|
||||
- 在 `confidence-evaluator` 的 system_prompt 中详细说明公式
|
||||
- 让LLM按步骤计算,而不是创建独立工具
|
||||
|
||||
### 6. 错误处理原则
|
||||
|
||||
**降级运行优先**:
|
||||
- 部分失败不应导致整体失败
|
||||
- 5个查询中2个失败 → 使用3个成功的继续
|
||||
- 单个来源提取失败 → 不影响其他来源
|
||||
|
||||
**重试策略**:
|
||||
- 自动重试2-3次(指数退避)
|
||||
- 超时:降低并行度重试
|
||||
- API限流:等待30秒后重试
|
||||
|
||||
---
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- **开发文档**: `开发文档_V1.md` - 技术实现细节
|
||||
- **需求文档**: `需求文档_V1.md` - 产品需求和业务逻辑
|
||||
- **代码审查agent**: `.claude/agents/code-reviewer.md` - 审查规范
|
||||
|
||||
---
|
||||
|
||||
## 🎯 成功标准
|
||||
|
||||
### 代码质量
|
||||
- [ ] 所有代码通过 `code-reviewer` 审查
|
||||
- [ ] 符合DeepAgents框架规范
|
||||
- [ ] 与开发文档完全一致
|
||||
- [ ] 有适当的错误处理
|
||||
|
||||
### 功能完整性
|
||||
- [ ] 所有Phase完成并测试通过
|
||||
- [ ] 三种深度模式正常工作
|
||||
- [ ] 迭代逻辑正确执行
|
||||
- [ ] 报告生成符合规范
|
||||
|
||||
### 用户体验
|
||||
- [ ] CLI命令响应快速
|
||||
- [ ] 进度显示实时更新
|
||||
- [ ] 错误信息清晰友好
|
||||
- [ ] 配置简单直观
|
||||
|
||||
---
|
||||
|
||||
**文档版本:** 1.0 | **最后更新:** 2025-10-31
|
||||
Reference in New Issue
Block a user