# 代码审查阶段 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"] } } } ```