first commit

This commit is contained in:
闫旭隆
2025-11-02 18:06:38 +08:00
commit 233e0ff245
40 changed files with 8876 additions and 0 deletions

338
开发流程指南.md Normal file
View 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