37 lines
1.6 KiB
Markdown
37 lines
1.6 KiB
Markdown
|
|
# 门控 AI Review 设计
|
|||
|
|
|
|||
|
|
## 背景与目标
|
|||
|
|
|
|||
|
|
部署前门控已有 changelog、人工审计交叉校验、测试、lint、bandit,但缺少对**本次 commit diff** 的自动化代码审查。用户要求将 AI review 纳入 `pre_deploy_check.sh`,与现有流程一致、可重复、可审计。
|
|||
|
|
|
|||
|
|
## 方案对比
|
|||
|
|
|
|||
|
|
| 方案 | 优点 | 缺点 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| A. 仅检查 `docs/reviews/*.json` 存在 | 快、无 API 成本 | 不自动审查,易遗漏 |
|
|||
|
|
| B. 门控内每次调用 `cursor-agent` | 真正自动 | 慢、需 API、重复跑浪费 |
|
|||
|
|
| C. **缓存 + 自动补跑(选定)** | 同 commit 可复用;无缓存时自动 review | 首次部署前需网络与 Cursor 凭据 |
|
|||
|
|
|
|||
|
|
## 选定方案
|
|||
|
|
|
|||
|
|
**Gate 8:AI Review**
|
|||
|
|
|
|||
|
|
1. 若 `HEAD~1..HEAD` 无待审源码 → **SKIP PASS**
|
|||
|
|
2. 若 `docs/reviews/*.json` 中 `head_sha` 匹配当前 `HEAD` 且无 P0/P1 阻断 → **PASS**
|
|||
|
|
3. 否则在 `NEXUS_AI_REVIEW_MODE=auto`(默认)下调用 `cursor-agent --mode ask --print --output-format json` 审查 diff
|
|||
|
|
4. 写入 `docs/reviews/YYYY-MM-DD-<slug>.json`;存在 P0/P1(confidence≥75)或 `verdict=Not ready` → **BLOCK**
|
|||
|
|
5. 逃生:`NEXUS_SKIP_AI_REVIEW=1` 记 WARN 通过;`NEXUS_AI_REVIEW_MODE=cache` 仅校验缓存
|
|||
|
|
|
|||
|
|
## 安全与性能
|
|||
|
|
|
|||
|
|
- Review 使用 `ask` 模式(只读),不写仓库
|
|||
|
|
- Diff 超 80KB 截断并注明,避免 token 爆炸
|
|||
|
|
- 产物入 git,部署可追溯
|
|||
|
|
|
|||
|
|
## 验收标准
|
|||
|
|
|
|||
|
|
- [ ] `pre_deploy_check.sh` 显示 Gate 8/8
|
|||
|
|
- [ ] 有源码变更且无 review 缓存时自动跑或明确 BLOCK
|
|||
|
|
- [ ] 同 `head_sha` 缓存命中时秒过
|
|||
|
|
- [ ] P0/P1 阻断部署
|