验牌 - 迭代式代码审查Agent
Goal
迭代式代码审查与修复Agent。在编码任务完成后自动触发,执行多轮"code review → report → bug fix"迭代流程
Trigger
- 用户明确要求"验牌"、"我要验牌"、"审查代码"、"code review"
- 编码任务完成后用户说"检查一下"、"review一下"
- 用户提及"小瘪三"、"赌侠"、"擦皮鞋"等关键词
流程概述
┌─────────────────────────────────────────────────────────┐
│ 验牌流程 │
├─────────────────────────────────────────────────────────┤
│ │
│ 开始 ──► Code Review ──► 生成报告 ──► 判定 │
│ │ │
│ ┌───────────┴───────────┐ │
│ │ │ │
│ 有问题 无问题 │
│ │ │ │
│ ▼ ▼ │
│ "小瘪三" "赌侠" │
│ │ │ │
│ ▼ │ │
│ 擦皮鞋 │ │
│ │ │ │
│ ▼ │ │
│ Bug Fix │ │
│ │ │ │
│ ▼ │ │
│ 迭代次数+1 │ │
│ │ │ │
│ ▼ ▼ │
│ 达到最大迭代? ────► 结束 ◄────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
执行步骤
Step 1: 初始化审查状态
创建审查状态追踪:
## 审查状态
- 迭代次数: 0/{max_iterations}
- 当前状态: 待审查
- 历史报告: []
- 修复记录: []
默认 max_iterations = 2
Step 2: 启动Code Review SubAgent
调用Agent工具,启动code review:
Agent({
subagent_type: "general-purpose",
prompt: """
你是一个专业的代码审查Agent。请对以下代码进行全面审查:
## 审查范围
按以下维度进行检查:
### 1. 代码质量 (Code Quality)
- 代码可读性、命名规范
- 函数复杂度、代码重复
- 注释完整性
### 2. 潜在Bug (Potential Bugs)
- 边界条件处理
- 空值/异常处理
- 并发安全问题
### 3. 性能问题 (Performance)
- 算法复杂度
- 内存泄漏风险
- 不必要的计算
### 4. 安全漏洞 (Security)
- 输入验证
- 注入风险
- 敏感数据处理
### 5. 最佳实践 (Best Practices)
- 设计模式使用
- 错误处理策略
- 测试覆盖
## 输出格式
请按以下JSON格式输出审查报告:
```json
{
"summary": "整体评价",
"score": 0-100,
"issues": [
{
"severity": "critical|high|medium|low",
"category": "代码质量|潜在Bug|性能|安全|最佳实践",
"location": "文件:行号",
"description": "问题描述",
"suggestion": "修复建议"
}
],
"passed": true|false
}
审查目标
[列出需要审查的文件/代码范围] """ })
### Step 3: 解析审查报告
根据报告结果判定:
| 条件 | 判定 | 状态 |
|------|------|------|
| `issues.length > 0` | 小瘪三 | 需要擦皮鞋 |
| `issues.length === 0` 且 `passed: true` | 赌侠 | 任务完成 |
| 迭代次数 >= max_iterations | 赌侠 | 强制结束 |
### Step 4: 擦皮鞋 (Bug Fix)
当判定为"小瘪三"时,执行擦皮鞋流程:
🔧 擦皮鞋 - 第 {iteration} 轮修复
判定:小瘪三 发现问题:{issue_count} 个
修复计划
[按优先级排列问题修复计划]
Agent调度
规划多Agent协作修复:
调用Agent进行修复:
Agent({ subagent_type: "general-purpose", prompt: """ 你是一个Bug修复Agent。请根据以下审查报告修复代码问题:
审查报告
[粘贴审查报告]
修复要求
- 按严重程度从高到低修复
- 每个修复需说明:
- 问题原因
- 修复方案
- 修改文件
- 修复后进行自检
修复过程
使用CoT方式逐步分析和修复每个问题。 """ })
### Step 5: 迭代控制
修复完成后:
迭代次数: {current + 1}/{max_iterations}
[如果未达到最大迭代次数] 状态: 继续审查 → 返回 Step 2
[如果已达到最大迭代次数] 状态: 最终验收 → 执行最终审查
### Step 6: 最终验收
🎰 最终验收
迭代历史
| 轮次 | 发现问题 | 修复问题 | 状态 |
|---|---|---|---|
| 1 | X | Y | 小瘪三 |
| 2 | Z | W | 赌侠 |
最终判定
[如果所有问题已修复] 🎉 恭喜!判定为【赌侠】 代码质量已达标,审查流程结束。
[如果仍有遗留问题] ⚠️ 达到最大迭代次数 遗留问题需人工介入: [列出遗留问题]
## 输出模板
### 审查报告模板
```markdown
## 📋 Code Review Report - 迭代 {n}
**审查时间**: {timestamp}
**审查范围**: {files}
### 总体评分: {score}/100
### 发现问题 ({count})
#### Critical ({n})
[列表]
#### High ({n})
[列表]
#### Medium ({n})
[列表]
#### Low ({n})
[列表]
### 判定结果
{小瘪三 | 赌侠}
修复报告模板
## 🔧 Bug Fix Report - 迭代 {n}
**修复数量**: {count}
### 修复详情
| 问题 | 文件 | 修复方式 | 状态 |
|------|------|----------|------|
| ... | ... | ... | ✅ |
### 修复后验证
[验证结果]
快速使用
# 启动验牌
验牌
# 指定迭代次数
验牌,迭代3次
# 审查特定文件
验牌 src/utils/helper.ts
注意事项
- 迭代限制: 默认2次,最多5次,避免无限循环
- 严重性阈值: 只修复 medium 及以上级别问题
- 人工介入: 连续3轮无法修复的问题标记为需人工处理
- 上下文管理: 大型代码库分批审查,每次不超过10个文件