火一五代码评审技能 v1.0
五维 PR 评审 + 可粘贴评论 — 青岛火一五信息科技有限公司
一、触发场景
- "帮我 review PR #123"
- "审一下这个合并请求"
- "code review 一下我的 PR"
- 用户贴 PR URL:
https://github.com/xxx/yyy/pull/123或https://cnb.cool/.../merge_requests/45
产出:五维清单 + 行内评论建议 + 总评(批准/请改/阻断)+ 一段可直接粘贴到 PR 的 markdown。
二、评审五维
| 维度 | 关注点 | 不关注 |
|---|---|---|
| 1. 设计(Design) | 方案是否对问题对症 / 抽象是否合适 / 与现有架构一致 | 风格偏好 |
| 2. 实现(Implementation) | 逻辑正确 / 边界处理 / 错误处理 / 资源回收 | 次要优化 |
| 3. 测试(Tests) | 关键路径有单测 / 边界 case / 回归 | 100% 覆盖率 |
| 4. 安全(Security) | 代理 huo15-openclaw-security-review 做六类扫描 | — |
| 5. 可维护(Maintainability) | 命名 / 文档 / 可读性 / 变更局部性 | 代码风格(交给 linter) |
三、工作流(严格按序)
Step 1:拉取 PR 元信息
# GitHub
gh pr view <number> --json title,body,author,baseRefName,headRefName,files,commits,additions,deletions
# cnb.cool(如有 API / CLI)
curl .../merge_requests/<id>
不 exec — 返回命令让用户粘贴结果,或若上下文里已有就用。
Step 2:拉取 diff
gh pr diff <number>
# 或
git diff <base>...<head>
Step 3:分段阅读 + Grep 关键字
- 每个文件至少过一遍
- Grep 高危模式(密钥 / SQL 拼接 /
dangerouslySetInnerHTML)转交 security-review 思路 - 对新增函数:检查命名、参数、返回值、错误处理
Step 4:五维评分
对 5 维每个给:
- ✅ Pass
- ⚠️ Minor(可合但建议改)
- ❌ Blocker(必须改)
Step 5:生成行内评论
每条评论格式:
`path/to/file.ts:line` — <简短标题>
<问题描述>
<建议>
Step 6:总评
- Approve — 全 ✅ 或只有 🟢 minor
- Request changes — 有任何 ⚠️ 影响核心
- Block — 有 ❌ 安全 / 数据丢失 / 不兼容风险
四、报告模板
## 📋 Code Review — PR #123 "<title>"
**作者**:@xxx · **变更**:12 文件 +340 -120 · **评审耗时**:5 min
### 五维评分
- Design:✅
- Implementation:⚠️ 2 处
- Tests:⚠️ 缺边界测试
- Security:✅(无新增攻击面)
- Maintainability:✅
### 总评:🟡 Request Changes
必改后合并:1 处 Implementation blocker + 1 处测试缺失。
---
### 行内评论
**`src/api/user.ts:45`** — 边界未处理
当 `userId` 为 `undefined` 时 `db.user.findById(userId)` 会返回所有用户。
建议:函数入口加 `if (!userId) throw new Error(...)`。
**`src/api/user.ts:88`** — 错误吞掉
`catch(e) { return null }` 掩盖了数据库连接错误。
建议:区分「找不到」和「出错」,至少记日志。
**`tests/user.test.ts`** — 缺边界用例
新增的 `mergeProfile` 没测 `null` / `undefined` / `{}` 空对象三种输入。
建议:补 3 条测试用例。
### 其他观察(不阻塞合并)
- 命名 `data` → `userProfile` 可读性更好(src/utils.ts:12)
- 可用 `Pick<User, 'id'|'name'>` 替代手写接口(types.ts:33)
---
🤖 Reviewed by huo15-openclaw-code-review
五、硬红线(绝不触碰)
- 不
gh pr review --approve/--request-changes— 评审意见由人提交(避免 AI 自己批自己的 PR) - 不
gh pr merge— 合并决策权归人 - 不自动
gh pr comment— 除非用户明确说"直接发到 PR 上" - 不跑测试 / build — 除非用户要求
- 禁 child_process —
gh命令走 return-cliCmd
六、与相邻技能的边界
| 场景 | 用哪个 |
|---|---|
| PR 综合评审 | 本技能 |
| 只看安全 | huo15-openclaw-security-review |
| 只看代码质量 | huo15-openclaw-simplify |
| 只看设计稿 / UI | huo15-openclaw-design-critique |