[{"data":1,"prerenderedAt":139},["ShallowReactive",2],{"header-counts":3,"footer-counts":6,"prompt-pr-review-first-pass":9},{"tools":4,"reviews":5},65,7,{"tools":4,"reviews":5,"playbooks":7,"news":8},10,8,{"id":10,"title":11,"body":12,"description":124,"extension":125,"meta":126,"navigation":127,"path":128,"seo":129,"stem":130,"tags":131,"targetTools":134,"__hash__":138},"prompts\u002Fprompts\u002Fpr-review-first-pass.md","PR Review Prompt：让 AI 做第一道筛",{"type":13,"value":14,"toc":117},"minimark",[15,19,66,70,74,82,85,101,104,113],[16,17,18],"h2",{"id":18},"用法",[20,21,26],"pre",{"className":22,"code":23,"language":24,"meta":25,"style":25},"language-bash shiki shiki-themes github-light github-dark","git fetch origin main\ngit diff main...HEAD > \u002Ftmp\u002Fpr.diff\n","bash","",[27,28,29,48],"code",{"__ignoreMap":25},[30,31,34,38,42,45],"span",{"class":32,"line":33},"line",1,[30,35,37],{"class":36},"sScJk","git",[30,39,41],{"class":40},"sZZnC"," fetch",[30,43,44],{"class":40}," origin",[30,46,47],{"class":40}," main\n",[30,49,51,53,56,59,63],{"class":32,"line":50},2,[30,52,37],{"class":36},[30,54,55],{"class":40}," diff",[30,57,58],{"class":40}," main...HEAD",[30,60,62],{"class":61},"szBVR"," >",[30,64,65],{"class":40}," \u002Ftmp\u002Fpr.diff\n",[67,68,69],"p",{},"把 diff 粘给 AI 配下面 prompt：",[16,71,73],{"id":72},"prompt","Prompt",[20,75,80],{"className":76,"code":78,"language":79,"meta":25},[77],"language-text","请审视下面的 PR diff，按以下结构输出 review：\n\n## 1. 改动分类\n\n输出一张表，每行一个改动单元：\n\n| 文件 | 类型 | 摘要 |\n|---|---|---|\n| ... | feat \u002F fix \u002F refactor \u002F test \u002F docs \u002F config | 1 句话 |\n\n## 2. 高风险点\n\n逐条列出，每条带文件:行号：\n\n- ⚠️ 业务逻辑改动但**没有对应测试**\n- ⚠️ 看起来是重构但行为可能被**无意改变**\n- 🛑 **secret \u002F API key** 出现在 diff 里\n- 🛑 **不可逆操作**（DB migration \u002F 删字段 \u002F 二进制格式变更）\n- ⚠️ **null deref \u002F 类型转换**等运行时风险\n\n如果某类没问题，明确写\"无\"，不要省略。\n\n## 3. 一致性扫描\n\n- PR 改了某函数签名 → 所有调用方都改了吗？\n- PR 加了新 pattern → 类似地方需要同步吗？\n- PR 改了某常量 → 相关常量同步了吗？\n\n逐条列出\"可能漏改\"的地方，给 文件:行号。\n\n## 4. 测试评估\n\n- 新增\u002F修改的测试**真的覆盖了业务逻辑改动**吗？还是只 happy path？\n- 断言够强吗？有\"修测试让它通过\"的痕迹吗？\n- 哪些 edge case 没被测到？\n\n## 5. 回滚成本\n\n- 单纯 git revert 能回滚吗？\n- 有不可逆改动吗？\n- 客户端\u002F服务端解耦了吗？\n\n## 6. 最终建议\n\n输出三段：\n- ✅ 没问题的部分（简短）\n- ⚠️ 需要 author 回应的问题（每条带 文件:行号）\n- 🛑 阻塞合并的问题（如有）\n\n**不要客套话，不要\"LGTM\"。具体、有依据、可行动。**\n\nPR diff:\n```\n\u003Cpaste here>\n```\n","text",[27,81,78],{"__ignoreMap":25},[16,83,84],{"id":84},"为什么有效",[86,87,88,92,95,98],"ul",{},[89,90,91],"li",{},"结构化输出强制 AI 走完所有维度，不能光说\"看起来还行\"",[89,93,94],{},"\"如果没问题明确写'无'\"防止 AI 偷懒省略",[89,96,97],{},"\"一致性扫描\"是 AI 的杀手锏——人类 review 容易盯着 diff 看，AI 会去看 diff 之外",[89,99,100],{},"\"回滚成本\"维度对 PR author 极有价值",[16,102,103],{"id":103},"配套工作流",[67,105,106,107,112],{},"完整流程见 ",[108,109,111],"a",{"href":110},"\u002Fplaybook\u002Freview\u002Fai-code-review-workflow","AI 做 PR review 工作流","。",[114,115,116],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":25,"searchDepth":118,"depth":118,"links":119},3,[120,121,122,123],{"id":18,"depth":50,"text":18},{"id":72,"depth":50,"text":73},{"id":84,"depth":50,"text":84},{"id":103,"depth":50,"text":103},"把整个 PR diff 丢给 AI，让它先给出结构化 review，人脑只看高价值部分。","md",{},true,"\u002Fprompts\u002Fpr-review-first-pass",{"title":11,"description":124},"prompts\u002Fpr-review-first-pass",[132,133],"code review","PR",[135,136,137],"Claude Code","Cursor","Augment","ZMT1cgA7zYQ9VAf15ld9dbWEE5giC-WrUG-Tn10Fq_U",1782316489339]