feat(dev-workflow): Phase 2-9 prompt templates + orchestrator
Phase 2 头脑风暴: - prompts/brainstorming.md - 问答策略和需求收集模板 Phase 3 方案设计: - prompts/solution-design.md - 3个子代理启动配置 Phase 4 方案审核: - prompts/solution-review.md - 交叉审核和综合方案生成 Phase 5 方案汇报: - prompts/solution-report.md - 用户决策处理 Phase 6 Spec编排: - prompts/spec-planning.md - 依赖分析和分波计划 Phase 7 并行开发: - prompts/parallel-development.md - 波次执行逻辑 Phase 8 测试: - prompts/testing.md - 测试框架检测和重试逻辑 Phase 9 代码审查: - prompts/code-review.md - 3个子代理独立审查 Phase 10 修复验证: - prompts/fix-verification.md - 修复循环和最终汇报 主编排器: - orchestrator.py - 9阶段协调逻辑 - 状态管理和恢复机制
This commit is contained in:
@@ -0,0 +1,246 @@
|
||||
# 代码审查阶段 Prompt 模板
|
||||
|
||||
## 目标
|
||||
|
||||
启动3个子代理独立完整审查代码,发现问题并提出改进建议。
|
||||
|
||||
## 审查子代理 Prompt
|
||||
|
||||
```
|
||||
你是一个资深代码审查专家。请对以下代码变更进行完整审查。
|
||||
|
||||
## 项目信息
|
||||
- 项目名称: {project_name}
|
||||
- 审查范围: 本次开发的所有变更
|
||||
|
||||
## 变更文件列表
|
||||
{changed_files_list}
|
||||
|
||||
## 变更详情
|
||||
{changes_diff}
|
||||
|
||||
## 审查要求
|
||||
|
||||
请进行**完整、独立**的代码审查,覆盖以下所有维度:
|
||||
|
||||
### 1. 代码质量
|
||||
- 命名是否清晰、一致
|
||||
- 代码结构是否合理
|
||||
- 是否有重复代码
|
||||
- 是否有过度复杂的设计
|
||||
|
||||
### 2. 功能正确性
|
||||
- 代码是否实现了预期功能
|
||||
- 边界条件是否处理
|
||||
- 错误处理是否完善
|
||||
|
||||
### 3. 性能
|
||||
- 是否有性能问题
|
||||
- 是否有不必要的计算
|
||||
- 是否有内存泄漏风险
|
||||
|
||||
### 4. 安全性
|
||||
- 是否有安全漏洞
|
||||
- 敏感数据处理是否安全
|
||||
- 输入验证是否完善
|
||||
|
||||
### 5. 可维护性
|
||||
- 代码是否易于理解
|
||||
- 是否有足够的注释
|
||||
- 是否符合项目规范
|
||||
|
||||
### 6. 测试覆盖
|
||||
- 测试是否充分
|
||||
- 是否有遗漏的测试场景
|
||||
|
||||
## 输出格式
|
||||
|
||||
```markdown
|
||||
# 代码审查报告
|
||||
|
||||
## 审查信息
|
||||
- 审查者: Agent {A/B/C}
|
||||
- 审查时间: {timestamp}
|
||||
- 审查文件数: {file_count}
|
||||
|
||||
## 发现的问题
|
||||
|
||||
### 严重问题 (必须修复)
|
||||
|
||||
#### ISSUE-001: {issue_title}
|
||||
- **文件**: {file_path}
|
||||
- **行号**: {line_number}
|
||||
- **问题**: {description}
|
||||
- **影响**: {impact}
|
||||
- **建议修复**: {suggestion}
|
||||
|
||||
#### ISSUE-002: ...
|
||||
|
||||
---
|
||||
|
||||
### 一般问题 (建议修复)
|
||||
|
||||
#### ISSUE-003: {issue_title}
|
||||
- **文件**: {file_path}
|
||||
- **问题描述**: {description}
|
||||
- **建议**: {suggestion}
|
||||
|
||||
---
|
||||
|
||||
### 改进建议 (可选)
|
||||
|
||||
#### SUGGEST-001: {suggestion_title}
|
||||
- **当前实现**: {current}
|
||||
- **建议改进**: {improvement}
|
||||
- **收益**: {benefit}
|
||||
|
||||
---
|
||||
|
||||
## 代码亮点
|
||||
|
||||
1. {highlight_1}
|
||||
2. {highlight_2}
|
||||
|
||||
## 总结
|
||||
|
||||
- 严重问题: {critical_count}
|
||||
- 一般问题: {major_count}
|
||||
- 改进建议: {suggestion_count}
|
||||
|
||||
**整体评价**: 优秀/良好/需改进/不合格
|
||||
|
||||
## 审查结论
|
||||
- [ ] 可以合并
|
||||
- [ ] 需要修复后合并
|
||||
- [ ] 需要重大修改
|
||||
```
|
||||
|
||||
请仔细审查每一行代码,不要遗漏任何潜在问题。
|
||||
```
|
||||
|
||||
## 三个审查子代理
|
||||
|
||||
```python
|
||||
def spawn_review_agents(changes: dict) -> list:
|
||||
"""启动3个代码审查子代理"""
|
||||
|
||||
agents = [
|
||||
{"id": "X", "focus": "全面审查"},
|
||||
{"id": "Y", "focus": "全面审查"},
|
||||
{"id": "Z", "focus": "全面审查"}
|
||||
]
|
||||
|
||||
results = []
|
||||
|
||||
for agent in agents:
|
||||
prompt = build_review_prompt(changes, agent)
|
||||
|
||||
result = spawn_subagent(
|
||||
task=f"代码审查 - Agent {agent['id']}",
|
||||
prompt=prompt,
|
||||
output_file=f".planning/dev-workflow/code-review/review-{agent['id']}.md"
|
||||
)
|
||||
|
||||
results.append(result)
|
||||
|
||||
return results
|
||||
```
|
||||
|
||||
## 问题汇总
|
||||
|
||||
主代理收集三个审查结果后,汇总问题:
|
||||
|
||||
```python
|
||||
def consolidate_issues(reviews: list) -> dict:
|
||||
"""汇总三个审查的问题"""
|
||||
|
||||
all_issues = {
|
||||
"critical": [],
|
||||
"major": [],
|
||||
"suggestion": []
|
||||
}
|
||||
|
||||
for review in reviews:
|
||||
for issue in review.get("issues", []):
|
||||
# 检查是否已存在相同问题
|
||||
existing = find_similar_issue(issue, all_issues[issue["severity"]])
|
||||
|
||||
if existing:
|
||||
# 多个审查者发现同一问题,增加权重
|
||||
existing["found_by"].append(review["agent_id"])
|
||||
existing["confidence"] += 1
|
||||
else:
|
||||
issue["found_by"] = [review["agent_id"]]
|
||||
issue["confidence"] = 1
|
||||
all_issues[issue["severity"]].append(issue)
|
||||
|
||||
# 按置信度排序
|
||||
for severity in all_issues:
|
||||
all_issues[severity].sort(key=lambda x: x["confidence"], reverse=True)
|
||||
|
||||
return all_issues
|
||||
```
|
||||
|
||||
## 问题汇总报告
|
||||
|
||||
```markdown
|
||||
# 代码审查汇总
|
||||
|
||||
## 统计
|
||||
|
||||
| 审查者 | 严重 | 一般 | 建议 |
|
||||
|--------|------|------|------|
|
||||
| Agent X | 2 | 3 | 5 |
|
||||
| Agent Y | 1 | 4 | 3 |
|
||||
| Agent Z | 2 | 2 | 6 |
|
||||
|
||||
## 严重问题 (3个,多人确认)
|
||||
|
||||
### ISSUE-CRIT-001: SQL注入风险 (X, Y, Z 都发现)
|
||||
- **文件**: src/db/queries.py:45
|
||||
- **问题**: 用户输入未转义直接拼接到SQL
|
||||
- **建议**: 使用参数化查询
|
||||
|
||||
### ISSUE-CRIT-002: 空指针异常 (X, Z 发现)
|
||||
- **文件**: src/services/user.py:120
|
||||
- **问题**: 未检查返回值是否为None
|
||||
- **建议**: 添加空值检查
|
||||
|
||||
---
|
||||
|
||||
## 一般问题 (5个)
|
||||
|
||||
### ISSUE-MAJ-001: 命名不规范 (Y 发现)
|
||||
...
|
||||
|
||||
---
|
||||
|
||||
## 改进建议 (8个)
|
||||
|
||||
### SUGGEST-001: 可以提取公共函数 (X, Z 发现)
|
||||
...
|
||||
|
||||
---
|
||||
|
||||
## 下一步
|
||||
|
||||
需要修复 **3个严重问题** 和 **5个一般问题**
|
||||
```
|
||||
|
||||
## 状态更新
|
||||
|
||||
```json
|
||||
{
|
||||
"phases": {
|
||||
"8": {
|
||||
"status": "completed",
|
||||
"issues": {
|
||||
"critical": 3,
|
||||
"major": 5,
|
||||
"suggestion": 8
|
||||
},
|
||||
"reviews": ["review-X.md", "review-Y.md", "review-Z.md"]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user