五维 PR 评审 + 可粘贴评论 — 青岛火一五信息科技有限公司
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)
bash
# GitHub
gh pr view <number> --json title,body,author,baseRefName,headRefName,files,commits,additions,deletions
# cnb.cool(如有 API / CLI)
curl .../merge_requests/<id>
不 exec — 返回命令让用户粘贴结果,或若上下文里已有就用。
bash
gh pr diff <number>
# 或
git diff <base>...<head>
dangerouslySetInnerHTML)转交 security-review 思路对 5 维每个给:
每条评论格式:
text
`path/to/file.ts:line` — <简短标题>
<问题描述>
<建议>
markdown
## 📋 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 上"gh 命令走 return-cliCmd场景用哪个PR 综合评审本技能只看安全huo15-openclaw-security-review只看代码质量huo15-openclaw-simplify只看设计稿 / UIhuo15-openclaw-design-critique