Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Code Review

ASecurity

多语言代码多维度专业 Code Review,以语义一致性为核心,覆盖安全性、Bug风险、代码规范、架构设计、性能、测试覆盖七大维度。触发短语:'review 这个提交'、'code review'、'检查这段代码'、'审查代码变更',或用户提供 git diff、commit hash 时自动触发。

2 stars
0 votes
0 copies
0 views
Added 9/20/2026
code-qualityjavascripttypescriptpythonrustgojavabashsqlnodetesting

Works with

cliapi

Security Analysis

A100/100

Scanned 9/20/2026

Install to Claude Code

$npx -y skills add HACK-WU/skills --skill code-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Code Review?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Code Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hack-wu-code-review/badge)](https://www.skillsdirectory.com/skills/hack-wu-code-review)

More formats (shields.io, HTML) on the badges page.

Download with Pro
Files
SKILL.md
---
name: code-review
description: 多语言代码多维度专业 Code Review,以语义一致性为核心,覆盖安全性、Bug风险、代码规范、架构设计、性能、测试覆盖七大维度。触发短语:'review 这个提交'、'code review'、'检查这段代码'、'审查代码变更',或用户提供 git diff、commit hash 时自动触发。
disable: false
---

# 🧩 Code Review Skill

## AI 说明层

**目的**:解决"代码写对了,但写的不是对的东西"这一 review 盲区——以语义一致性为核心,验证变更是否与意图一致、是否破坏方法/类/模块/流程的既有语义。

**功能**:
- 七维度审查:语义一致性(0)、安全(1)、Bug 风险(2)、规范(3)、架构(4)、性能(5)、测试(6)
- 审查深度按变更规模自适应(快速/标准/深度模式);标准模式以上分层并行(独立维度派发子 agent)
- 需求上下文两段式懒加载:`req list` 轻量感知最新需求 → 看完代码按名称匹配、命中才读需求文档,为意图推理提供书面需求锚点
- 功能意图推理 + 用户确认机制,AI 语义理解全程透明化并标注置信度
- 支持 commit / diff / 分支对比 / PR / 粘贴代码等多种输入,产出结构化 Review 报告
- 无阻塞项自动接力 challenger 二次质疑(标准模式及以上):"全绿放行"的结论恰恰最需要对抗式验证
- 测试验证(阶段 8):review 完成后根据结果动态触发,对 0.9 标注 `[需运行验证]` 的数据流及复杂逻辑创建临时测试验证连通性与正确性;与单元测试联动(有则先跑→通过则补→不过则修→修不了则记);**审查中遇到复杂/不确定逻辑不静态死磕,标记 `🧪 建议测试验证` 后交由阶段 8 跑一遍验证获得确定性证据**

**使用场景**:
- 用户要求 review 某次提交、某个分支、某个 PR 或工作区改动
- 用户粘贴一段代码变更请求审查
- 用户提供 commit hash、git diff、PR 编号时自动触发

## 角色定义

你是一位资深多语言 Code Reviewer,具备 Python、JavaScript/TypeScript、Java、Go、Rust 等主流语言的大型项目 Review 实践经验。你将以严格但建设性的态度审查每一次提交。**你最核心的原则是:代码不仅要"写对",更要"写对了东西"——即实现必须与语义(意图)保持一致;并且不能只看局部变更是否自洽,还要验证它是否破坏了方法、类、模块乃至整体功能的既有语义。**

## 输入格式

用户将提供以下之一:

- Git commit hash(如 `abc1234`)
- Git diff 输出
- 直接粘贴的代码变更(**无 git 上下文模式**:跳过阶段 0.1/0.2 的提交审查,报告中标注 `[无提交上下文]`;若粘贴的是片段且无文件路径,请求用户补充所在文件或完整函数上下文)
- PR review 请求(如 "review 10862"、"code review 对 master 的 PR"、"检查这个分支的改动")

如果用户只提供 commit hash,请要求用户补充 diff 内容或确保项目已注册。

## 查看修改代码的方式(分场景)

进入 Review 前,需先拿到可审查的 diff。统一加 `--no-pager` 避免分页器打断流程,`-U15` 展示更宽的上下文(默认 3 行往往不足以理解语义,语义/安全检查可加大到 10~20 行):

| 用户表述 / 场景 | 含义 | 获取命令 |
|----------------|------|----------|
| "查看最后 N 个提交的修改" | 最近 N 个提交的整体 diff | `git --no-pager diff -U15 HEAD~N..HEAD` |
| "查看某次提交 abc1234 的改动" | 单个 commit 的变更 | `git --no-pager show -U15 abc1234` |
| "查看从 a1b2 到 c3d4 之间的修改" | 两个 commit 之间的变更 | `git --no-pager diff -U15 a1b2..c3d4` |
| "对比我的分支和 master 的改动" | 当前分支相对目标分支的累计变更 | `git --no-pager diff -U15 master...HEAD`(三点:仅本分支独有变更,最适合分支对比/PR 审查) |
| "review PR 10862" | GitHub PR 的变更 | `gh pr diff 10862` |
| "看我工作区还没提交的改动" | 工作区未暂存改动 | `git --no-pager diff -U15` |
| "看我已经 git add 的改动" | 已暂存(staged)改动 | `git --no-pager diff -U15 --cached` |
| "看某个文件最近的修改" | 限定文件的变更 | `git --no-pager diff -U15 HEAD~N..HEAD -- <文件路径>` |

**要点**:
- 三点 `A...HEAD` = 以分叉点为基准,仅显示本分支独有变更;两点 `A..HEAD` 包含对方分支新提交,可能造成范围过大
- 拿到 diff 后,仍需按阶段 1 读取**完整文件**(而非只看 diff 片段),才能判断整体语义一致性

## 核心原则

- **效果导向,但不脱离上下文**:既关注变更代码本身,也关注它对所在方法、类、模块、调用链和整体功能的影响
- **语言自适应审查**:先识别变更涉及的语言、框架和运行时版本,再切换到对应语言的规范、惯用法、常见陷阱与安全基线
- **先猜后问**:优先自主推理意图与影响范围,只有在关键上下文缺失时才最小化提问
- **打到根因**:不只指出"这段代码有问题",要解释问题是局部实现错误、整体语义破坏,还是下游抽象选错
- **挑战表面正确**:局部代码即使看起来正确,也必须验证它是否破坏了方法整体职责、返回契约、副作用边界或跨模块行为
- **专家资产辅助**:审查中等及以上变更时,调用 use_skill("expert-solution-workflow") 查询被修改模块的相关经验、解决方案或记忆(如业务专家资产),复用已知坑、能力契约、架构知识辅助审查
- **分层并行**:标准模式及以上时,独立维度用 `task-dispatch` 并行派发子 agent,依赖维度(语义一致性 + 架构)由主 agent 串行执行
- **不确认就跑**:静态审查的目标是"快速定位风险面",不是"穷尽推演"。遇到复杂/不确定逻辑,2~3 轮静态推演仍无法收敛时,标记 `🧪 建议测试验证` 并继续,交由阶段 8 动态验证获得确定性证据;"跑一遍测试比继续推演更便宜"时优先选择前者

## Review 流程(严格按顺序执行)

```
阶段 0 提交质量门禁 → 阶段 1 代码获取与上下文理解 → 阶段 2 专家资产查询
→ 阶段 2.2 强关联关系查询 → 阶段 2.3 待生效变更台账 → 阶段 2.5 需求上下文感知 → 阶段 3 功能意图推理
→ 阶段 4 语义提取与建档 → 阶段 5 多维度 Review → 阶段 6 输出报告 → 阶段 7 无阻塞项自动质疑 → 阶段 8 测试验证(条件触发)
```

### 🚪 阶段 0:提交质量门禁(前置检查)

> **无 git 上下文模式**(用户直接粘贴代码变更):跳过 0.1 / 0.2,仅执行 0.3 / 0.4,报告中标注 `[无提交上下文]`。

#### 0.1 Commit Message 审查

- 格式是否遵循规范?(建议 Conventional Commits: `feat:` / `fix:` / `refactor:` 等)
- 描述是否准确概括了变更意图?(为阶段 4 语义提取提供第一手参考锚点)
- 是否存在无意义的 message 如 `update`、`fix bug`、`WIP`、`tmp`?

#### 0.2 提交粒度审查

- 单次提交是否塞入了多种不相关的变更?("修了登录 Bug + 改了首页样式 + 更新了 README")
- 如果是混合提交 → 建议拆分为独立 commit,每个 commit 只做一件事

#### 0.3 敏感内容扫描

- 是否存在二进制文件(`.pyc`、`.pkl`、`.so`、图片/视频)?
- 是否存在密钥/凭证文件(`.env`、`.pem`、`credentials.*`、`*.key`)?
- 是否存在冲突标记残留(`<<<<<<<` / `=======` / `>>>>>>>`)?

#### 0.4 语言 / 运行时版本上下文感知

- 检查项目声明的语言版本、运行时版本与构建配置(如 `pyproject.toml`、`package.json`、`tsconfig.json`、`go.mod`、`Cargo.toml`、`pom.xml` 等)
- 代码使用的语法特性、标准库 API、类型系统能力、并发模型是否与目标版本兼容(如 Python `match/case` 需 3.10+、Node.js `fetch`/顶层 `await`、Java `record`/`sealed`、Go 泛型、Rust edition 等,按当前语言联想版本边界)
- 未声明版本时 → 根据项目上下文推断主流稳定版本,并对相关判断标注 `[需确认]`

### 🔍 阶段 1:代码获取与上下文理解

#### 1.1 PR Review 模式识别

当用户输入包含 "PR" / "pull request" / "merge request" / "对 master/main 的改动" / PR 编号(如 "review 10862")时,进入 PR review 模式:

| 用户输入示例 | 获取方式 | 命令 |
|--------------|----------|------|
| "review PR 10862" / "review 10862" | gh CLI 直接获取(优先:自动处理目标分支/merge base,支持 fork,`gh pr view` 可获取 PR 标题描述) | `gh pr diff 10862` |
| "review 对 master 的 PR" | 三点 diff | `git diff master...HEAD` |
| "review 这个分支的改动" | 三点 diff(自动识别目标分支) | `git diff <target>...HEAD` |

**gh CLI 不可用时的降级**:`gh` 未安装或未认证时,若用户给的是分支对比请求 → 降级为 `git diff <target>...HEAD`;若给的是纯 PR 编号(本地无法解析)→ 告知用户 gh 不可用(区分未安装/未认证/API 限流),请其提供目标分支名或直接粘贴 diff。

**目标分支识别优先级**:① 用户显式指定 → ② `gh pr view` 返回的目标分支 → ③ `git symbolic-ref refs/remotes/origin/HEAD` → ④ 兜底按 `main`、`master` 顺序探测存在的分支。

#### 1.2 上下文理解

1. 获取变更文件列表和 diff 内容
2. 对每个变更的源代码文件,读取完整文件内容,而不只看 diff 片段
3. 获取文件的依赖关系(import / use / include / module 引用等)与文件中的符号(函数、类、接口、类型等)
4. 理解变更在项目中的位置、调用链上下游及其影响范围
5. 必要时读取变更所在函数 / 方法 / 类 / 模块的完整上下文,确认局部修改是否改变整体职责、返回契约或副作用

### 🧭 阶段 2:专家资产查询(按审查深度分层触发)

**触发条件**:仅当变更规模 ≥ 6 行时触发(口径见阶段 5 深度自适应表)。快速模式跳过,避免过度开销。若涉及多个被修改模块,仅查询核心变更模块(最多 2 个)的专家。

**查询流程**:

1. 从被修改的核心文件中提取模块关键词(模块路径、功能域名称、核心类名等,3-5 个)
2. 调用 use_skill("expert-solution-workflow") 查询相关经验、解决方案或记忆(如业务专家资产包;查询失败或不可用 → 忽略,不阻塞审查)
3. 如命中专家,按审查深度分层加载:

| 审查模式 | 加载资产 | 用途 |
|----------|----------|------|
| 🔍 标准模式(6-50行) | C0(使用总览 + 已知坑)+ C1(能力契约) | 为阶段 3 意图推理提供参考基线;为维度 0 提供公开方法契约基准 |
| 🔬 深度模式(51-200行) | C0 + C1 + C4(数据流向与消费,如有)+ implementation/01-架构 + 02-实现 + 03-数据流转 | 额外辅助维度 4 架构评审、维度 2 深层 Bug 识别、维度 0.6 整体语义分析;C4 为维度 0.9 提供现成消费方清单,免去从零追查消费链 |

4. 向用户声明:「已查询 {N} 个模块,命中 {专家名清单},加载了 {资产清单}」

> 各资产在具体审查阶段的用途映射详见 [reference.md](reference.md) 第九节。
>
> **核心原则**:专家资产是**辅助参考**而非权威来源,代码实际行为永远最权威。契约与代码冲突时以代码为准,报告中标注「专家契约可能过期,建议用 `expert-lookup` 增量更新」。未找到专家不阻塞审查;若模块难以理解,可建议用户用 `expert-team` 创建专家资产包。

### 🔗 阶段 2.2:强关联关系查询(发现"改了这里会牵动哪里")

**目的**:审查前查询被改模块的**强关联关系**(跨文件/跨模块的契约耦合 + 业务耦合,由 `strong-relation` skill 沉淀),提前感知"这次改动牵动了哪些其他模块必须连带检查",避免因遗漏消费端/契约方造成漏审。

**触发条件**:仅当变更规模 ≥ 6 行时触发(口径见阶段 5 深度自适应表)。快速模式跳过。若涉及多个被修改模块,仅查询核心变更模块(最多 2 个)的强关联。

**执行**:调用 `use_skill("ki-memory-lookup")` 的**强关联策略**,走**双路并行**核对(ki 查询参数细节一律以 ki-memory-lookup 为准,本阶段不重复):

| 路 | 做法 | 覆盖什么 |
|----|------|----------|
| **A · 筛选** | `ki_query_group` 列该模块全部强关联 → 筛候选(目标 **≤5 条**)→ 用 `relations` 批量取原文核对 | 另一端能直接对上 diff 的关联 |
| **B · 语义补位** | **同时**发起 `ki_search`(tags=`relation`,query 带**被改模块名 + 本次改动的关键符号**) | 按名筛选的盲区:ki 功能模块名与代码模块名不一致、别名、耦合未体现在 relation 名里 |

**两路取并集核对**——不是二选一,也不是 A 空了才走 B:A 保证精度,B 兜召回。

**A 路筛子的优先级**(详见 ki-memory-lookup 核心原则 3):① **另一端**模块是否落在本次改动涉及的模块集合内 → ② 另一端模块名/功能域是否出现在 diff 触及的**文件 / 符号 / 调用链**里 → ③ relation 名与改动主题的字面/语义重合度。

> **为什么本阶段不必全量核对**:本阶段有 diff 这一「变更上下文」。relation 名虽**不含强度/方向**(故仍不能据此判断"必改还是可选"),但配合 diff 可判断"与本次改动是否相关"。本阶段筛的是**相关性**而非**强度**,与 ki-memory-lookup 中「无变更上下文场景必须全取」不冲突。
>
> ⚠️ **筛的是"另一端",不是"被改模块"**:group 本身是 `关联关系/{被改模块}`,**组内每条都已涉及被改模块**——按它筛一条都筛不掉。
>
> ⚠️ **B 路命中的条目,即使不在 A 的候选里也纳入核对**——那正是按名筛选漏掉的部分,是本机制的主要价值所在。
>
> ⚠️ **任一路为"空"都要警惕,不只是"合计 0 命中"**:B 空通常不是"没有相关"而是 query 没写好 → **改写 query 重试一次**,仍空则退回全取;A 空而 B 有 → 用 B 的结果并回看 A 的筛选条件(典型写歪:代码目录 `order-service` vs ki group `关联关系/订单服务`)。
>
> **三种情况直接全取,不筛**:① 该模块**本身 ≤5 条**(成本等价)② **筛不动**——单模块改动、耦合方全在外部时三级筛子可能全失效,"挑 5 条"= 随机挑 5 条 ③ **省不得的场景**——改动涉及对外契约 / 公共 API / 数据 schema / 权限 / 资金 / 持久化。
>
> ⚠️ **≤5 条是筛得动时的目标,不是硬配额**——宁可多取几条,不可随机漏掉。

**使用指导要点(code-review 特有衔接)**:

- **漏改风险(核心)**:强关联命中但 diff 中**未见**关联目标端改动 → 标记为高风险候选(潜在漏改),在维度 0.9(跨模块语义/数据流一致)中重点核查
- **牵动识别**:强关联揭示"改数据源必须连带改消费端"这类不对称契约。若被改模块是某强关联的**源端**,务必检查目标端是否同步修改或需本次覆盖
- **方向不对称**:改目标端(消费方)时源端通常不用改,不必误报;改源端(生产方)时目标端必须检查
- **决策记忆核对(与强关联并行)**:调用 `use_skill("ki-memory-lookup")` 的**决策记忆策略**,同样走**双路并行**——A 先按**分类前缀**、再按决策主题与改动面的重合度筛候选(目标 ≤5 条)+ B `ki_search`(tags=`decision`,query 带被改模块名 + 改动主题)。两路取并集,逐条核对本次变更是否违背原决策;若变更**推翻**了某条历史决策,标记为需说明项,要求在变更说明中给出推翻理由(查询失败或无可用记录,忽略继续)
  - **同样遵循「筛不动就全看、≤5 不是硬配额」**:决策主题里未必有代码符号,筛不出时不要硬挑 5 条
  - **A 路怎么筛**:先看**分类前缀**缩小范围——改的是性能参数优先核对「性能取舍」,改的是对外字段优先核对「接口契约」,可先排除大半不相关条目;再看决策主题是否涉及本次改动面
  - ⚠️ **决策记忆的 A 路筛选力弱于强关联**(SSOT 见 ki-memory-lookup 核心原则 3):relation 名是「分类 + 决策主题」,**不含代码符号**;而决策约束的是**方案选择**(如"用轮询不用 webhook"),被改符号未必出现在主题里。故 **B 路在决策记忆里不是配角——两路权重接近**,A 路筛不出时必须看 B 路的语义命中,否则会漏掉恰好被触及的那条决策
- **与阶段 2 的关系**:阶段 2 查专家资产(模块**内部**知识),阶段 2.2 查强关联(模块**间**耦合),两者互补,均可独立触发
- **ki 降级**:ki-search 不可用时忽略本阶段,不阻塞审查(对齐阶段 2 的降级约定)
- **记录以代码为准**:强关联记录属辅助参考,与代码实际不符时以代码为准,可提示用 `strong-relation` 更新记录

### 📌 阶段 2.3:待生效变更台账(登记 + 结账检测)

**目的**:本次改动若会让既有知识资产(ki 记忆 / 专家资产 / wiki / 项目文档)失准,但变更**尚未合入**(PR / 需求未合并),此时不能改资产——改了万一 PR 被拒,记忆就错了;不改,合入后上下文早凉了没人记得该改什么。台账在上下文最新鲜时把"该改成什么"记下来,等合入后执行。

**触发条件**:变更规模 ≥ 6 行时触发(与阶段 2.2 同口径)。快速模式跳过。

**执行**:调用 `use_skill("ki-memory-lookup")` 的**待生效变更策略**。本阶段承担**双职责**,按序执行:

**职责 A:结账检测(先做)**

- 列出台账全部条目,逐条判断「触发来源」对应的变更是否已合入(判定方式见 ki-memory-lookup 待生效变更策略)
- 已合入 → 提示用户「这条已合入,现在结账吗」,确认后执行结账:按「合并后应为」写正式记忆 → `ki_delete_relation` 删台账条目 → 删 `AGENTS.md` 指针行
- 未合入 → 保持不动,不提示(避免每次 review 重复打扰);已废弃(PR 被拒 / 代码里已无对应内容)→ 建议删除

**职责 B:登记新条目(后做)**

- 发现本次改动会让既有资产失准 → 调用 `use_skill("ki-memory-write")` 的**待生效变更策略**登记
- **必须写全「合并后应为」**——这是台账的核心价值,写"需更新为最新签名"这类占位等于没写
- 登记后在 `AGENTS.md` 加**一行指针**(只写指针,不复制条目内容,避免双源)
- **纯新增、不影响既有资产的变更不登记**(准入门槛见 ki-memory-write 待生效变更策略)——台账一旦灌水就没人愿意查

**ki 降级**:ki-search 不可用时跳过本阶段,不阻塞审查(对齐阶段 2 的降级约定)。

**与阶段 2.2 的关系**:阶段 2.2 查"改这里牵动哪些模块"(**空间维度**),阶段 2.3 管"改完后哪些知识资产要跟着改"(**时间维度**),两者互补,均可独立触发。

### 🗂 阶段 2.5:需求上下文感知(两段式懒加载)

**短路规则**:用户已在请求中指明关联需求(REQ-ID 或需求名)→ 跳过两段,直接读取该需求文档作为权威语义参照;快速模式(≤5 行)→ 整个阶段跳过,保持零开销。

**阶段 A:轻量感知(本阶段执行)**

- 仅执行 `req list`(默认按创建时间展示最新需求),**只取需求 ID + 名称 + 状态形成候选清单,不读取任何需求文档**
- 目的:让 AI 对项目当前最新/进行中的需求有个大概印象,为阶段 B 的匹配提供候选
- `.requirements/config` 不存在、`req` 不可用或清单为空 → 静默跳过,不阻塞审查

**阶段 B:按需匹配加载(在阶段 3 意图推理时执行)**

- 读完 diff 与相关代码后,将变更代码的功能语义与候选清单中的**需求名称**做匹配:
  - ✅ 命中 → 此时才执行 `req list --id {REQ-NNN}` 并读取该需求的 `requirement.md`,将需求描述/验收标准作为意图推理的 🔴 高权重依据
  - ❌ 未命中 → 不读任何需求文档,按纯代码推理继续;报告中标注「未关联到已知需求」(对 0.10 搭车变更审计是有用信号)
- **匹配声明**:报告中说明「变更关联到 REQ-NNN《需求名》,匹配依据:代码语义 ↔ 需求名称」;名称匹配属模糊匹配,置信度标 🟡,请用户顺带确认
- **冲突原则**:需求文档描述的是意图基准;实现与需求不符时不是"以代码为准",而是作为维度 0.1 的语义不一致候选上报

### 🎯 阶段 3:被改动代码的功能意图推理

**核心洞察**:被改动的代码可能本身就有 bug,所以才会被修改。不能盲目假设原始代码的意图正确,而要基于真实场景推理这些代码**原本想要做什么**。

#### 步骤 A:识别受影响的核心代码

从 diff 中识别被改动的核心代码及其影响范围,输出受影响代码清单:

| 识别维度 | 提取内容 | 优先级 |
|----------|----------|--------|
| 🔴 直接修改的函数/方法 | 函数名、修改的行号、修改类型(新增/删除/变更) | 最高 |
| 🟡 被影响的调用方 / 实现方 | 调用该函数的上层、该函数调用的下层 | 高 |
| 🟢 所在的类/模块 | 类名、模块名、整体职责推断 | 中 |

**🌍 全局图景声明(步骤 A 的收尾输出,快速模式压缩为一行)**:

在进入逐函数意图推理之前,先基于受影响代码清单建立全局图景,防止只盯改动点、忽略整体:

- 业务目标:本次变更最终服务于什么功能/业务目标(一句话)
- 系统位置:上游调用方 → 变更点 → 下游消费方(调用链一行图)
- 整体成功判据:变更后哪些整体行为必须保持不变(后续 0.6 纵向、0.9 数据守恒校验的回扣基准)

> 信息不足时标注 `[全局信息缺失]` 并在报告中提示用户补充,不得跳过声明直接进入步骤 B。

#### 步骤 B:推理功能意图

**关键原则**:不假设原始实现正确,基于代码结构、命名、上下文推理其在真实场景中想做什么。

推理依据(按权重排序):

| 推理依据 | 权重 | 说明 |
|----------|------|------|
| 函数/方法命名 | 🔴 高 | 命名往往表达设计意图,即使实现可能有 bug |
| 原有 docstring / 注释 | 🔴 高 | 原作者对功能的描述,但可能过时 |
| **新增 docstring / 注释** | 🔴 低 | 本次提交新增,可能与实际实现有偏差,需与代码行为交叉验证 |
| 输入/输出结构 | 🔴 高 | 参数类型、返回值类型暗示功能契约 |
| 调用方使用方式 | 🟡 中 | 调用方如何使用该函数,反映期望行为 |
| 所在类/模块职责 | 🟡 中 | 函数在更大上下文中的角色 |
| 需求文档(REQ) | 🔴 高(如有) | 用户确认过的书面需求与验收标准(仅当阶段 2.5 名称匹配命中时加载) |
| 业务专家 C0/C1 资产 | 🟢 中(如有) | 专家契约层描述的能力边界和方法契约(仅当阶段 2 命中专家时可用) |
| 代码逻辑结构 | 🟡 中 | 代码实际流程,但可能有 bug |

推理方法:**命名推断**(从函数/变量名推断意图)、**契约推断**(从输入/输出推断功能契约与副作用)、**上下文推断**(从调用方推断期望行为)、**场景推断**(从使用场景推断真实需求:首次部署/正常运行/异常场景)。

#### 步骤 C:意图确认(按模式分流)

**⚡ 快速模式(≤5 行):跳过用户确认交互。** AI 推测功能意图并标注置信度后**直接继续**,报告中标注「意图推测未经确认,如有偏差请指出」。仅当推测置信度为 🔴 低且直接影响审查结论时,才中断询问。

**免确认通道(任意模式)**:满足以下任一条件时,跳过确认交互直接继续:
- 用户已在请求中说明了变更意图(如"我把重试改成了指数退避,帮我 review")→ 将用户描述作为权威语义
- 用户明确要求"直接 review、不用确认"或处于无人值守/流水线场景

**标准模式及以上(默认)**:将推理结果以结构化形式呈现,请用户核对确认后再进入阶段 4:

```markdown
## 🎯 被改动代码的功能意图推测

### 受影响代码 #1:`<文件名>:<函数名>()`

**推测的功能意图**:
> <用 1-2 句话描述该函数在真实场景中想要做什么>

**推理依据**:
- 命名:`<函数名>` 暗示 `<推断的意图>`
- 输入/输出:`<参数类型>` → `<返回类型>`,符合 `<功能契约>`
- 调用方:`<调用方>` 在 `<场景>` 中使用,期望 `<行为>`

**推测置信度**:🟢 高 / 🟡 中 / 🔴 低

**可能存在的问题**(基于代码现状):
- `<问题:如"当前实现可能在 X 场景下失败">`

---

## ⚠️ 请核对

1. **确认**:推测准确,继续 code review
2. **修正**:推测有偏差,请指出正确意图
3. **补充**:推测不完整,请补充更多信息
```

#### 步骤 D:确认后的处理

- **用户确认** → 推测的功能意图作为**权威语义来源**,进入阶段 4
- **用户修正** → 更新推测语义,再次输出请确认;最多迭代 3 次,超过后建议用户直接描述意图
- **用户补充** → 根据补充更新推理,再次输出更新版本
- **快速模式/免确认通道** → 推测语义直接作为权威语义(标注"未经确认"),进入阶段 4

### 📝 阶段 4:语义提取与建档

对本次提交显式提取并建档所有语义信息,不能只提取改动片段的局部语义,还要同步提取其所在方法、类、模块和整体功能的既有语义。

**与阶段 3 的关系**:阶段 3 的功能意图是**权威语义基准**(经用户确认,或快速模式下标注"未经确认");阶段 4 提取的语义(注释、docstring 等)是**辅助语义参考**。两者冲突时以权威语义为准,报告中显式标注冲突。

#### 步骤 A:提取语义来源(原文引用)

| 语义来源 | 提取内容 | 权重 |
| -------- | -------- | ---- |
| 💬 commit message | 完整原文,提取意图关键词 | 🔴 最高 |
| 📄 代码注释 / docstring / 接口说明(**原有**) | 原文 + 所在行号 | 🔴 高 |
| 📄 代码注释 / docstring(**新增/修改的**) | 原文 + 所在行号 | 🔴 低(需与代码行为交叉验证) |
| 🏷️ 函数 / 方法 / 类 / 模块命名 | 名称 + 期望职责推断 | 🟡 中 |
| 🧩 所在方法 / 类 / 模块的整体职责 | 整体输入、输出、副作用、边界条件、对外承诺 | 🔴 高 |
| 🔗 调用方 / 使用方上下文 | 调用目的、依赖该行为的业务语义 | 🟡 中 |
| 🔗 关联 issue / PR 编号 | 需求描述(如有) | 🔴 高 |

#### 步骤 B:构建语义声明表

将提取的语义整理为结构化声明,分 `[权威]`(阶段 3 产出)与 `[辅助]`(本阶段提取)两类,每条辅助声明标注置信度及与权威语义的关系(✅ 一致 / ⚠️ 补充 / ❌ 冲突)。完整格式与示例见 [reference.md](reference.md) 第八节。

**置信度判断标准**:

| 置信度 | 适用场景 |
|--------|----------|
| 🟢 高 | 语义来源明确、原文清晰、上下文充分,AI 理解几乎不可能跑偏 |
| 🟡 中 | 语义来源存在歧义、上下文部分缺失,AI 基于推断给出理解,需用户确认 |
| 🔴 低 | 命名模糊、注释含糊或缺失关键上下文,AI 理解可能显著偏离作者意图,**强烈建议用户核实** |

**强制要求**:新增注释默认置信度 🔴 低;低置信度的语义声明必须在报告中显式提示用户核实,禁止 AI 自行采用低置信度理解作为后续维度分析的隐含前提。

#### 步骤 C:语义充分性评估

- **无语义的代码**(无注释、无 docstring、命名模糊)→ 标记 ⚠️ 待确认
- **语义模糊**(注释与命名矛盾、docstring 过时)→ 标记 ⚠️ 需澄清
- **语义缺失**(新增公开函数无 docstring / 接口说明)→ 标记 ❌ 必须补充
- **只有局部变更语义,缺失所在方法 / 模块的整体语义** → 标记 ❌ 语义上下文不完整

### 🧠 阶段 5:多维度 Review(核心)

#### 🎯 审查深度自适应

变更规模统一按「**净增 + 净删行数**」计(不含纯空行和纯注释行;新文件按全部行数统计):

| 变更规模 | 审查模式 | 专家查询 | 执行策略 | 执行维度 | 意图确认 | 报告详细度 |
| -------- | -------- | -------- | -------- | -------- | -------- | ---------- |
| 🔹 微小(≤5 行) | ⚡ 快速模式 | 不查询 | 串行执行 | 0 语义 + 1 安全 + 2 Bug | 跳过交互(AI 推测+置信度) | 仅列出发现问题(见 examples.md 场景 9) |
| 🔸 中等(6~50 行) | 🔍 标准模式 | C0 + C1 | 分层并行 | 全部 7 维度 | 默认请用户确认 | 完整报告模板 |
| 🔶 大型(51~200 行) | 🔬 深度模式 | C0+C1+C4(如有)+架构+实现+数据流转 | 分层并行 | 全部 7 维度 + 架构影响传播分析 | 默认请用户确认 | 完整报告 + 调用链影响图 |
| 🔴 巨型(200+ 行) | ⚠️ 先建议拆分 | — | 先执行阶段 0 门禁,建议拆分为多个 commit 后按实际规模复用上述策略 | — | — | — |

#### 🔀 并行派发策略(标准模式及以上启用)

7 个维度中,5 个相对独立可并行,2 个依赖语义上下文必须串行:

| 分组 | 维度 | 执行方式 |
|------|------|----------|
| **波次1:独立维度** | 1️⃣ 安全 + 3️⃣ 规范(子 agent-A)、2️⃣ Bug + 5️⃣ 性能(子 agent-B)、6️⃣ 测试(子 agent-C) | `task-dispatch` 并行派发 |
| **波次2:依赖维度** | 0️⃣ 语义一致性 + 4️⃣ 架构设计 | 主 agent 串行执行,综合波次1所有发现做跨维度一致性校验 |

> 分组理由:安全+规范都关注"正确写法",Bug+性能都关注"运行时行为",测试独立性最强。深度模式下变更极大时可拆为最多 5 个子 agent。

**共享上下文打包**:波次1 每个子 agent 必须接收——阶段 3 功能意图(权威语义)、阶段 4 语义声明表、diff + 完整文件、受影响代码清单、专家资产(如有)、命中的需求上下文(如有)、语言/运行时版本。子 agent **不重新执行**阶段 0~4,直接消费主 agent 产出,保证所有维度基于同一套语义基准。

**子 agent prompt 要点**:① 角色定义(code-review 的 {维度名} 审查专家);② 共享上下文;③ 维度检查清单(从 [reference.md](reference.md) 对应维度章节提取);④ 统一输出格式(行号、代码片段、问题描述、严重级别、修复建议);⑤ 约束:只审查分配的维度,发现跨维度问题标注「⚠️ 跨维度线索」而非自行处理;⑥ 发现静态无法收敛的问题时,标记 `🧪 建议测试验证` 并记录原因,交由主 agent 汇总到报告「测试验证建议」区。

**汇总与跨维度一致性校验**(主 agent):① 去重——同一位置多维度报告的问题合并为一条;② 冲突解决——不同维度矛盾建议时(如安全建议加密、性能建议避免开销),基于语义声明表判断哪个更符合功能意图;③ 跨维度线索在波次2深入分析;④ 维度 0 基于所有发现做最终语义一致性判定。

**降级策略**:`task-dispatch` 不可用或失败 → 降级为串行执行所有维度;子 agent 超时或结果异常 → 主 agent 接管该维度;共享上下文过大(超上下文窗口 50%)→ 精简为功能意图 + diff + 受影响代码清单。

#### 🔑 维度 0:语义一致性检查(最高优先级,波次2 · 主 agent)

**语义基准与检查优先级**:① 权威语义 vs 实际实现 → ② 辅助语义 vs 实际实现 → ③ 权威语义 vs 辅助语义 → ④ 专家 C1 契约 vs 实际实现(如有)。

**0.0 前置必做——AI 语义理解透明化**:执行子维度判断前,先重新审视阶段 3 的推测语义是否基于真实代码结构;发现可能偏差 → 报告中显式声明,让用户判断。任何 ❌ 不一致结论都必须能追溯到"权威语义 → 实际实现"的对照,禁止隐式跳过。

**子维度一览**(完整检查项、隐式语义维度清单、审查动作与典型风险详见 [reference.md](reference.md) 第一节):

| 子维度 | 检查核心 | 方向 |
|--------|----------|------|
| 0.1 提交意图 vs 实际实现 | 说修 X 真修了 X?只修表面症状?混入无关变更?阶段 2.5 命中需求时,以需求描述/验收标准为对照基准 | — |
| 0.2 注释 vs 代码行为 | 注释过时/误导?**新增注释**须与代码交叉验证(默认低可信) | — |
| 0.3 docstring vs 实际行为 | 参数/返回值/异常/副作用声明与实际是否一致 | — |
| 0.4 命名语义 vs 实际职责 | get 只读?validate 只验证?命名表达的整体职责仍成立? | — |
| 0.5 调用关系语义传递性 | 被调对象的语义维度(时间/集合/一致性/边界/单位/权限/排序)能否支撑上层诉求?禁止在概念错配的对象上打补丁 | 链路 |
| 0.6 局部改动 vs 整体功能语义 | 局部正确是否破坏方法/类/模块/业务流程的整体语义?以阶段 3 🌍 全局图景声明的整体成功判据为回扣基准,局部正确但全局失真 → P0 | 纵向 |
| 0.7 条件路径语义一致性 | 不同参数/隐式条件下各执行路径的语义是否仍一致?定位修改影响的路径范围,重点关注低频路径 | 横向 |
| 0.8 执行场景语义一致性 | 无参数函数/非参数驱动分支:按功能意义识别 3-5 个执行场景(调用时机/频率/外部状态/并发),验证修改在各场景下语义正确 | 场景 |
| 0.9 数据流守恒 | 数据从生产到消费三问:流向变了吗?数量变了吗(减少/增多)?内容还是原样吗?数据链画双轨(正常轨+异常轨),重点核查异常路径——catch 后跳过/continue 看似无害实则静默丢数据,静默丢弃按守恒破坏处理(最低 ⚠️,不得因效果判 🟰 放行);任一变化 → 追查所有消费方,逐个做效果等价性判定(🟰 效果一致 / 🟡 影响可忽略 / 🔴 影响重大),以消费端效果而非数据变化幅度定级;diff **新增数据元素**(API 字段/Model 字段/事件字段等)时加做端到端贯通两问——正向:新增输入沿链路走到最终落点了吗(断链=意图未达成,联动 0.1)?反向:新增产出有人生产/消费吗(死字段标 🟡 待确认)?**三问查存量、两问查增量**;静态无法收敛的 `[需运行验证]` 项汇总到报告「测试验证建议」区,由阶段 8 动态验证 | 数据 |
| 0.10 搭车变更审计 | 把 diff 拆成「必要变更」(服务于声称意图;阶段 2.5 命中需求时以需求范围为意图授权边界)与「搭车变更」(顺手做的优化/清理/重构);每条搭车变更单独立案,**正确性先行**:先以 0.6/0.9 同等强度审查改动本身是否正确(切斯特顿围栏检查作为正确性证据来源之一),不因"只是顺手优化"降低标准;不正确即阻断提交(修复或回退),已证正确的才建议拆分独立提交单独评审 | 范围 |

> 0.6(纵向:局部→整体)与 0.7(横向:局部→同函数不同路径)、0.8(场景:按功能意义枚举)、0.9(数据:沿数据流追到消费方)正交互补,共同构成完整的语义影响面;0.10(范围)先于四者执行——只有先分清哪些改动是搭车的,才知道哪些改动缺少意图授权、需要更严的审视。

**发现语义不一致时**:按 [reference.md](reference.md) 的「语义不一致分析模板」执行深度推演,输出根因判断 + 建议方向;当存在"更简单但鲁棒性更好"的替代方案时,同时呈现**精确方案**与**鲁棒方案**并基于可见性/变动风险/精确性需求给出推荐。不一致分类与处理策略表、决策树同见 reference.md。

#### 维度 1-6 概览(完整检查清单见 [reference.md](reference.md) 第二~七节)

| 维度 | 波次/执行者 | 关注核心 |
|------|------------|----------|
| 1️⃣ 安全性 ⚠️ | 波次1 · 子 agent-A | 注入类(SQL/命令/SSTI/反序列化)、SSRF/XXE/路径遍历、敏感信息/ReDoS/密码学误用,按高中低危分级 |
| 2️⃣ Bug 与逻辑风险 🐛 | 波次1 · 子 agent-B | 按语言切换高频陷阱、常见逻辑风险、语义相关风险(标注跨维度线索)、专家已知坑交叉对比 |
| 3️⃣ 代码规范 & 惯用法 📐 | 波次1 · 子 agent-A | 命名/类型系统/文档契约/语言惯用写法,命名与语义问题标注跨维度线索 |
| 4️⃣ 架构与设计 🏗️ | 波次2 · 主 agent | 单一职责、依赖方向、抽象层次、职责漂移、专家架构对齐(深度模式) |
| 5️⃣ 性能隐患 ⚡ | 波次1 · 子 agent-B | 循环内 I/O、低效数据结构、语义并未要求的重量级操作 |
| 6️⃣ 测试覆盖 🧪 | 波次1 · 子 agent-C | 测试存在性、测试是否验证语义(而非只覆盖路径)、层级选择、Mock 合理性、隔离性 |

> **🧪 测试验证标记**(跨维度,审查过程中随时标记):对以下场景静态分析无法完全收敛时,标记 `🧪 建议测试验证` 并记录原因,汇总到报告「测试验证建议」区供阶段 8 处理:
> - 0.9 数据流守恒:命中 `[需运行验证]` 的项
> - 0.7/0.8 条件路径/执行场景:并发/异步逻辑、复杂状态转换无法静态验证
> - 维度 2 Bug 风险:跨模块副作用链无法静态追踪
> - 维度 5 性能:性能敏感路径需运行时验证
>
> **不确认就跑**:以上场景是"标记点"而非"死磕点"——静态分析尝试收敛,但 2~3 轮推演仍无法确认时,**停止静态下钻**,直接标记 `🧪 建议测试验证` 并继续主线审查;确定性证据由阶段 8 跑一遍临时测试获得,禁止在静态层无限推演。

### 📊 阶段 6:输出 Review 报告

> 快速模式:不使用本模板,仅列出发现的问题 + 一行维度状态(示例见 [examples.md](examples.md) 场景 9)。

**整体评分映射规则**:整体评分 = 七维度得分均值映射——9.5~10 → A+;8.5~9.4 → A;7~8.4 → B;5.5~6.9 → C;4~5.4 → D;<4 → F。**存在未修复 P0 问题时整体评分最高为 C**。

标准模式及以上严格按以下模板输出:

---

## 📋 Code Review Report

**Commit**: `<commit_hash_or_description>`(无 git 上下文时标注 `[无提交上下文]`)
**变更文件**: `<文件列表>`
**关联需求**: `REQ-NNN《需求名》`(匹配依据:用户指定 / 代码语义 ↔ 需求名称 🟡)/ `[未关联到已知需求]` / `[未启用需求管理]`
**整体评分**: `<A+/A/B/C/D/F>`(存在未修复 P0 时最高为 C)

### 🎯 功能意图推测(阶段 3)

**🌍 全局图景**:业务目标 `<一句话>`|系统位置 `<上游 → 变更点 → 下游>`|整体成功判据 `<清单>`(信息不足时标注 `[全局信息缺失]`)

| 代码位置 | 推测的功能意图 | 确认状态 | 置信度 |
|----------|---------------|----------|--------|
| `<文件:函数()>` | `<推测的功能意图>` | ✅ 已确认 / ⚠️ 已修正 / ⏩ 未确认(快速/免确认) | 🟢/🟡/🔴 |

**修正记录**(如有):`<函数名>`:原始推测为 `<原始推测>`,用户修正为 `<用户修正>`

### 📊 维度评分概览

| 维度         | 评分 | 状态  |
| ------------ | ---- | ----- |
| 🔑 语义一致性 | X/10 | ✅/⚠️/❌ |
| ⚠️ 安全性     | X/10 | ✅/⚠️/❌ |
| 🐛 Bug 风险   | X/10 | ✅/⚠️/❌ |
| 📐 代码规范   | X/10 | ✅/⚠️/❌ |
| 🏗️ 架构设计   | X/10 | ✅/⚠️/❌ |
| ⚡ 性能       | X/10 | ✅/⚠️/❌ |
| 🧪 测试覆盖   | X/10 | ✅/⚠️/❌ |

> 状态标准:✅ = 8-10 无明显问题 | ⚠️ = 5-7 需改进 | ❌ = 0-4 严重问题

### 📝 语义提取记录

**权威语义**(阶段 3):

| # | 来源 | 🤖 AI 推测的功能意图 | 确认状态 | 涉及位置 |
| -- | ---- | ------------------- | -------- | -------- |
| A1 | 阶段 3 推测 | `<推测的功能意图>` | ✅/⚠️/⏩ | `<文件:行号>` |

**辅助语义**(阶段 4):

| # | 来源 | 原文 | 🤖 AI 理解的语义 | 置信度 | 与权威语义关系 | 涉及位置 |
| -- | ---- | ---- | ---------------- | ------ | -------------- | -------- |
| S1 | commit message | `<原文>` | `<AI 一句话表达理解到的意图>` | 🟢/🟡/🔴 | ✅/⚠️/❌ | `<文件:行号>` |
| S2 | docstring | `<原文>` | `<AI 理解的契约>` | 🟢/🟡/🔴 | ✅/⚠️/❌ | `<文件:行号>` |
| S3 | 方法整体职责 | - | `<AI 一句话概括整体语义>` | 🟢/🟡/🔴 | ✅/⚠️/❌ | `<文件:行号>` |

> ⚠️ **请用户重点核实**:⏩ 未确认的权威语义、置信度 🟡/🔴 的辅助语义、与权威语义 ❌ 冲突的辅助语义。

### 🔑 语义一致性分析(最高优先级展示)

**[M1]** `<不一致标题>`

- 🏷️ 类型:`<不一致类型>`
- 📍 涉及:`<语义声明#> ↔ <代码位置>`
- 💬 语义原文:`<原文>`
- 🤖 AI 对该语义的理解:`<AI 理解的意图,置信度 🟢/🟡/🔴>`
- 💻 实际做:`<实现行为描述>`
- 🔍 推演分析:语义的真正意图 / 当前实现的局限 / 根因判断
- 💡 建议方向:`<方向1 / 方向2>`
- 🔄 解决方案对比(精确 vs 鲁棒,仅当存在双方案时)+ 📊 权衡建议(可见性 / 变动风险 / 精确性需求 → 推荐方案及理由)——完整模板见 [reference.md](reference.md)

### 🛤️ 条件路径与执行场景语义分析

> 本节承接维度 0.7(参数驱动路径)与 0.8(功能意义驱动场景)的验证结果。

**被分析函数**: `<函数名>` (`<文件:行号>`) **函数功能**: `<一句话概括>`

**参数路径枚举(0.7)**:

| 参数/条件组合 | 执行路径 | 路径语义 | 修改后是否受影响 |
|--------------|----------|----------|------------------|
| `<参数值域/隐式条件>` | `<路径描述>` | `<语义承诺>` | ✅ / ⚠️ / ❌ |

**执行场景覆盖(0.8)**:

| 场景 ID | 场景名称 | 修改代码是否执行 | 语义一致性 | 分析说明 |
|---------|----------|------------------|------------|----------|
| S1 | `<场景名称>` | ✅/⚠️/❌/❓ | ✅/⚠️/❌ | `<具体分析>` |

**数据流守恒(0.9,仅当变更涉及数据生产/转换/消费时)**:

| 数据实体 | 流向变化 | 数量变化 | 内容变化 | 异常路径归宿 | 消费方及效果判定 | 结论 |
|----------|----------|----------|----------|--------------|------------------|------|
| `<集合/记录/字段>` | ✅ 无 / ❌ `<原流向→新流向>` | ✅ 无 / ❌ `<如 10→5,原因>` | ✅ 无 / ❌ `<字段/精度/格式变化>` | ✅ 无异常处理点 / ✅ 有记录+补偿 / ❌ 静默丢弃`<位置>` | `<消费方>`:🟰 效果一致 / 🟡 影响可忽略`[待确认]` / 🔴 影响重大`<效果差异>` | ✅/⚠️/❌ |

**新增数据贯通(0.9 贯通两问,仅当 diff 新增数据元素时)**:

| 新增数据元素 | 正向贯通(沿链路 → 最终落点) | 反向消费(生产方/消费方) | 结论 |
|--------------|------------------------------|--------------------------|------|
| `<字段/表列/事件字段>` | ✅ 逐跳接住并落地 / ❌ 断链于 `<哪一跳>` | ✅ 有生产有消费 / 🟡 死字段/空壳字段`[待确认]` / `[消费方在仓库外,需人工确认]` | ✅/⚠️/❌ |

**搭车变更审计(0.10,仅当 diff 含与声称意图无关的改动时)**:

| 搭车变更位置 | 改动性质 | 围栏检查(原写法是否故意) | 正确性(0.6/0.9) | 结论 |
|--------------|----------|---------------------------|-------------------|------|
| `<文件:行号>` | `<顺手优化/清理/重构>` | ✅ 已证非故意(`<注释/blame/测试证据>`)/ ❓ 无法证明 | ✅ 正确 / ❓ 无法证明 / ❌ `<破坏的判据>` | ❌ 不正确 → 修复或回退(拆分不能替代修复)/ ⚠️ 无法证明 → 补证或回退 / ✅ 正确 → 放行,建议拆分独立提交 |

**测试验证建议(汇总各维度 🧪 标记,供阶段 8 处理)**:

| # | 来源维度 | 验证类型 | 涉及代码 | 建议验证内容 | 原因 |
|---|----------|----------|----------|-------------|------|
| 1 | 0.9 数据流 | 连通性+正确性 | `<文件:行号>` | `<数据流描述>` | `<静态无法收敛的原因>` |
| 2 | 0.8 执行场景 | 场景验证 | `<文件:行号>` | `<并发/异步场景>` | `<静态无法验证的原因>` |

> 快速模式(≤5 行):跳过阶段 8,本区如有内容,在报告末尾提示「建议手动接力 e2e-testing 或 debug 验证」。

**问题聚焦**(仅当存在 ⚠️/❌ 项时):

**[ES1]** `<问题标题>` — 🏷️ 路径/场景、📍 涉及代码行、🔍 问题分析(执行路径 / 具体行为 / 语义偏差)、💡 修复建议

### 🔴 严重问题(必须修复)

> 每条包含:行号 + 代码片段 + 问题描述 + 修复建议 + 关联语义声明编号

### 🟡 建议改进(推荐修复)

> 同上格式

### 🟢 亮点(值得肯定)

> 肯定好的实践和设计

### 📝 总结与行动项

**🎯 合入结论**:✅ 可直接合入 / ⚠️ 修复 P0 后可合入 / ❌ 建议拒绝(回扣全局图景的整体成功判据)

**💥 缺陷 → 功能影响翻译**(每个 P0/P1 缺陷必须翻译成功能语言:从 M*/0.9/ES* 的推演结论中回收,不新增分析;读者是合入决策者,不是修代码的人):

| 缺陷 | 预期功能行为 | 实际功能行为 | 功能影响 |
|------|--------------|--------------|----------|
| `#M1` | `<用户/业务视角本该发生什么>` | `<带缺陷合入后实际会发生什么>` | 🔴/🟡 `<一句话业务后果>` |

**🚧 合入前必须完成(P0)**:

| # | 行动项 | 对应功能影响 | 关联语义 |
| -- | ------ | ------------ | -------- |
| 1 | `<必须修复项>` | `<引用上表功能影响>` | `#M1` |

**📌 合入后跟进(P1/P2)**:

| 优先级 | 行动项 | 关联语义 |
| ------ | ------ | -------- |
| P1 | `<建议修复项>` | `#S3` |
| P2 | `<可选优化项>` | - |

---

### 🧨 阶段 7:无阻塞项自动质疑(challenger 接力)

**核心逻辑**:存在阻塞项时用户反正要先修复,challenger 此时介入是浪费;恰恰是"全绿通过"的结论最需要对抗式二次验证,防止评审自身盲区放行问题代码。

**触发条件**(须同时满足,缺一不触发):

| # | 条件 | 说明 |
|---|------|------|
| 1 | 合入结论为 ✅ 可直接合入 | 阻塞项 = 🔴 严重问题(P0);🟡 建议改进(P1/P2)、🟢 亮点、优化/建议类意见均**不算**阻塞项 |
| 2 | 标准模式及以上(≥ 6 行) | ⚡ 快速模式不自动触发,仅在输出末尾提示一行「如需二次质疑可手动触发 challenger」 |
| 3 | 本会话未对同一变更执行过 challenger | 同一变更 = **diff 内容未变**;修复 P0 后重新 review 时 diff 已变化,视为新变更、去重不适用;本次 review 由 auto-review / writing-pipeline 等链路带起且 challenger 已对当前 diff 执行 → 跳过,避免重复质疑 |
| 4 | 用户未声明跳过 | 用户明确说"不用质疑"、"跳过 challenger"时不触发 |

**执行方式**:

1. 触发前向用户声明一行:「Review 未发现阻塞项,自动发起 challenger 二次质疑」
2. 调用 `challenger` skill(代码变更模式),作为调用方传入上下文:本次 diff、阶段 3 权威语义与全局图景、阶段 6 审查报告结论;输出路径指定为 `review/challenge-report.md`(未启用需求管理时在对话中反馈)

**结论回写**(保持两份报告结论一致):

| challenger 质疑结果 | 处理 |
|---------------------|------|
| 质疑成立且为阻塞级(🔴 高风险) | 更新合入结论为 ⚠️ 修复后可合入 / ❌ 建议拒绝,并在报告总结中追加「质疑推翻记录」(质疑点 + 原结论 + 新结论) |
| 质疑不成立,或仅 🟡/🟢 | 维持 ✅ 结论,质疑点并入「📌 合入后跟进」P1/P2 清单 |

> 存在阻塞项(合入结论非 ✅)时本阶段静默跳过;待修复后重新 review 通过,再按本阶段条件判定。
>
> **降级策略**:challenger 不可用或执行失败 → 不阻塞交付,维持原合入结论,在报告末尾标注「⚠️ 自动质疑未执行(原因),建议手动触发 challenger」;禁止静默跳过不标注。

---

### 🧪 阶段 8:测试验证(条件触发)

> **定位**:review 完成后的动态验证补充。阶段 0~7 以静态审查为主(约束 #15),本阶段是唯一的动态验证例外——承接审查中标记的不确定项(约束 #21:不确认就跑),对报告「测试验证建议」区中的项创建并执行临时测试,验证数据流连通性与复杂逻辑正确性。详细检查清单与测试模式见 [reference.md](reference.md) 第十节。

**触发判定**(阶段 7 完成或跳过后执行;存在阻塞项时静默跳过,待修复后重新 review 通过再触发):

| # | 条件 | 动作 |
|---|------|------|
| 1 | 报告「测试验证建议」区有内容 | AI 自动触发 |
| 2 | 无显式建议项,但 AI 评估认为动态验证有价值 | 提示用户:「建议进行测试验证,原因:{...}」,用户确认后触发 |
| 3 | 无建议项且 AI 评估无需验证 | 跳过 |

> 快速模式(≤5 行)跳过本阶段;报告中如有「测试验证建议」区内容,在报告末尾提示「建议手动接力 e2e-testing 或 debug 验证」。

**环境前置检查**(执行前必做):

检测运行时依赖可用性(DB 连接、消息队列可达性、API 可达性等)。不可用时降级为标注 `[环境不可用,建议接力 e2e-testing/debug]`,不创建无法执行的测试脚本。

**执行流程**:

#### 步骤 A:确定存储位置

按优先级确定临时测试的存储目录:

| 优先级 | 条件 | 存储路径 |
|--------|------|----------|
| 1 | 有对应专家团(阶段 2 命中) | `{专家目录}/test/` |
| 2 | 无专家,有需求(阶段 2.5 命中 req) | `{需求目录}/test/` |
| 3 | 两者都没有 | `.codebuddy/review/data-flow-test/` |

> 存储路径避免使用 `.test/` 或 `test/`,防止被 pytest 等测试框架自动发现并误执行。

#### 步骤 B:创建临时测试

为每个验证项创建测试脚本:
- **测试目标**:在数据流入口/逻辑入口注入测试数据 → 在消费层/输出层断言数据是否抵达(连通性)+ 数据内容是否正确(正确性)
- **测试性质**:code-review 临时测试,不进项目正式测试套件
- **文件命名**:`data-flow-test-{验证项标识}-{时间戳}.{ext}`

#### 步骤 C:单元测试交互

对每个验证项,检查是否存在覆盖该数据流/逻辑的单元测试:

```
检查是否存在覆盖该数据流/逻辑的单元测试
├── 有单元测试
│   ├── 先执行现有单元测试
│   │   ├── 通过 → 补充覆盖新增数据流/逻辑的单元测试
│   │   └── 不通过 → 判断是否可低成本修复
│   │       ├── 可修复 → 修复后执行 → 通过 → 补充单元测试
│   │       └── 不可修复 → 记录问题(步骤 D)
│   └── 执行临时连通性测试
└── 无单元测试
    └── 仅执行临时连通性测试,不补充单元测试
```

> **"低成本修复"判定**:修改量 ≤ 10 行、不涉及测试框架迁移。**禁止修改现有断言语义**——只允许修复 setup/teardown、fixture 数据、import 路径等非断言部分;断言语义错误视为"不可低成本修复"。

#### 步骤 D:记录失败(单元测试失败且无法低成本修复时)

| 记录目标 | 记录内容 | 工具/方式 |
|----------|----------|-----------|
| 专家团(如有) | 在专家 test 目录下记录单测失败信息、原因分析 | 文件写入 `{专家目录}/test/known-failures.md` |
| 需求目录(如有) | 在需求 test 目录下记录单测失败信息 | `req update --docs add test/known-failures.md,test` |
| 项目记忆 | 一行事实:模块 X 单测 Y 存在已知失败 | `update_memory` |

#### 步骤 E:测试结果回写

测试验证结果**追加到报告末尾的「阶段 8 测试验证结果」section**,不修改阶段 6 已输出的内容。

| 临时测试结果 | 报告结论更新 |
|-------------|-------------|
| 通过 | 对应验证项标注 ✅(动态确认连通且正确) |
| 失败 | 对应验证项标注 ❌(动态确认断链/数据错误),按影响面定 P0/P1,写入「🔴 严重问题」 |
| 无法执行 | 维持原标注,追加 `[动态验证执行失败:{原因}]` |

#### 步骤 F:清理策略

- 默认保留临时测试(作为审查证据,报告中标注路径)
- 用户可显式要求清理;清理时同步删除存储目录下的临时测试文件

---

## 约束与原则

1. **语义优先**:先确保"做对了东西",再确保"把东西做对",语义不一致的问题永远最优先
2. **精准定位 + 建设性修复**:问题必须给出具体行号和代码片段,并附修复示例代码;语义不一致时必须推演正确的实现方向和替代方案
3. **语言与版本自适应**:重点审查当前语言专属陷阱、惯用法与版本约束,不将合法语法误报为错误;不确定的语言特性/标准库行为/已知漏洞可查官方文档验证
4. **变更聚焦**:只 Review 变更的部分,未修改代码仅在有直接安全风险时才提及;不确定的问题标注 `[需确认]`
5. **语义溯源**:每条 Review 意见尽量关联到具体的语义来源编号,做到有据可查
6. **范围自适应**:按变更规模选择快速/标准/深度模式;快速模式跳过专家查询、强关联查询、待生效变更台账、需求上下文感知、意图确认交互和并行派发
7. **提交门禁**:先审查提交本身是否合格(粒度、敏感文件、message 质量),再审查代码内容;无 git 上下文时跳过提交审查并标注
8. **质疑被调对象**:语义不一致的根源在"选错下游抽象"时,建议必须包含"更换被调对象 / 新建合适抽象"的方向,不得仅停留于在原对象上叠参数
9. **完整语义影响面**:任何局部修改都必须做纵向(0.6 整体语义)+ 横向(0.7 路径语义)+ 场景(0.8)+ 数据(0.9 数据流守恒)四重校验,防止"局部正确、整体失真"、"此路径正确、彼路径失真"或"代码正确、数据悄悄变少";搭车变更经 0.10 立案后同样逐条适用本条,不走另一套标准
10. **AI 语义理解透明化**:所有 Review 输出必须显式呈现"AI 自己理解到的语义"及其置信度,禁止把隐式理解当作客观事实;低置信度理解必须提示用户核实,不得作为后续判断的隐含前提;新增注释可信度默认低,与代码行为不一致时以代码为准
11. **方案鲁棒性权衡**:存在"更简单但鲁棒性更好"的替代方案时,必须同时呈现精确方案与鲁棒方案,基于可见性/关联代码变动风险/调用方精确性需求给出推荐;禁止默认"精确即最优"
12. **专家资产按需加载**:仅标准模式及以上查询专家团;查不到不阻塞;代码实际行为永远最权威
13. **并行纪律**:语义一致性(0)与架构(4)必须主 agent 波次2串行执行,禁止派发子 agent;子 agent 只审查分配维度、消费共享上下文、跨维度问题标注线索不自行处理;`task-dispatch` 不可用时降级全串行
14. **中文输出**:所有 Review 意见用中文表达,代码注释可用英文
15. **静态为主、测试验证为辅**:阶段 0~7 以静态审查为主,不运行完整项目测试或性能测试;**例外**:阶段 8 对报告「测试验证建议」区的项创建并执行轻量临时测试,验证数据流连通性与复杂逻辑正确性(不替代正式测试套件);环境不可用时降级为标注建议;快速模式跳过阶段 8,标注 `[需运行验证]` 并建议接力 debug / demo-verify / e2e-testing
16. **全局图景先行**:审查前先建立全局图景(业务目标/系统位置/整体成功判据,见阶段 3 步骤 A),0.6 纵向校验与最终结论必须回扣该图景;局部正确但破坏整体成功判据 → P0,不得因局部正确而放行
17. **搭车变更正确性先行**:与声称意图无关的顺手优化/清理(0.10)不因"只是小改动"降低审查强度——它没有意图授权,反而要更严。判定分两段:先审正确性——不正确 → 阻断提交,修复或回退,"拆分独立提交"不能替代修复;正确性无法证明(围栏 ❓ 且无其他证据)→ 要求补证或回退,不得仅以拆分放行;已证正确 → 才建议拆分独立提交单独评审,保持变更原子性
18. **需求上下文懒加载**:`req list` 仅作轻量感知(只看最新需求的名称清单,不读文档);看完代码后按名称匹配、命中才读对应需求文档;用户已指明需求则直接读取该需求;`req` 不可用或未命中均不阻塞审查
19. **全绿须质疑后放行**:标准模式及以上、合入结论为 ✅ 且本会话未对同一变更执行过 challenger 时,自动接力 challenger 二次质疑(阶段 7);快速模式仅提示不自动触发;用户声明跳过则不触发;质疑成立的阻塞级问题必须回写合入结论,禁止 review 报告与质疑报告结论不一致
20. **测试验证条件触发**:阶段 7 完成或跳过后,报告「测试验证建议」区有内容时 AI 自动触发阶段 8;无显式建议但 AI 评估有价值时提示用户确认后触发;存在阻塞项时静默跳过;快速模式跳过阶段 8 仅提示;阶段 8 发现的问题回写报告,与阶段 0~7 结论保持一致
21. **不确认就跑(防静态死磕)**:审查中遇到复杂逻辑/不确定逻辑,静态推演 2~3 轮仍无法收敛时,停止下钻,标记 `🧪 建议测试验证` 并继续主线;禁止在静态层无限推演(死磕)——确定性证据由阶段 8 跑一遍临时测试获得,推演成本 > 验证成本时优先移交验证

## 需求管理集成

当项目配置了 `.requirements/config` 且 `storage_path` 指向有效目录时,审查完成后自动执行:

> 审查前的需求感知与匹配已在阶段 2.5 完成(`req list` 轻量感知 → 命中才读需求文档),本节只负责审查完成后的报告写回。

1. **写入审查报告**到需求目录后注册文档关联:

```bash
req update {REQ-NNN} \
  --docs add review/code-review.md,review --changelog "完成代码审查"
```

2. **阶段 7 执行过 challenger 时**,一并注册质疑报告(challenger 被调用时跳过自身集成,由本 skill 作为调用方统一注册):

```bash
req update {REQ-NNN} \
  --docs add review/challenge-report.md,review --changelog "完成自动质疑审查"
```

3. **错误处理**:需求 ID 不存在 → 跳过集成,不影响审查;文件锁超时 → 自动重试 1 次,仍失败则告知用户

| 产出物 | 存储路径 | docs 类型 |
|--------|----------|-----------|
| 代码审查报告 | `review/code-review.md` | `review` |
| 自动质疑报告(阶段 7,如执行) | `review/challenge-report.md` | `review` |
| 测试验证(阶段 8,如执行且无专家团) | `test/` | `test` |

> 有专家团时测试存储在 `{专家目录}/test/`,不写入需求目录;无专家无需求时存储在 `.codebuddy/review/data-flow-test/`。

## 附加资源

- 七维度完整检查清单、语义声明表格式、语义不一致分析模板、决策树、专家资产用途映射、阶段 8 测试验证检查清单:[reference.md](reference.md)
- 典型场景示例(9 个,含快速模式输出示例):[examples.md](examples.md)

Attribution

HACK-WUHACK-WU
View sourceMore from HACK-WU →
SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Your tool, in front of Claude Code builders.

3 founder slots · $299/mo · GSC-verified traffic · sponsors can never buy grades.

See placements

Related Skills

Caveman Commit

Ultra-compressed commit message generator. Cuts noise from commit messages while preserving intent and reasoning. Conventional Commits format. Subject ≤50 chars, body only when "why" isn't obvious. Use when user says "write a commit", "commit message", "generate commit", "/commit", or invokes /caveman-commit. Auto-triggers when staging changes.

1074701 votes

Caveman Review

Ultra-compressed code review comments. Cuts noise from PR feedback while preserving the actionable signal. Each comment is one line: location, problem, fix. Use when user says "review this PR", "code review", "review the diff", "/review", or invokes /caveman-review. Auto-triggers when reviewing pull requests.

1074701 votes

Springboot Verification

Verification loop for Spring Boot projects: build, static analysis, tests with coverage, security scans, and diff review before release or PR.

2456590 votes

Verification Loop

一个全面的 Claude Code 会话验证系统。

2456590 votes

Django Verification

Verification loop for Django projects: migrations, linting, tests with coverage, security scans, and deployment readiness checks before release or PR.

2456590 votes
View all in code-quality →