首页
/ PR <N> — <title>

PR <N> — <title>

2026-09-05 23:57:03作者:董宙帆

PR # — </h1> <h2>Walkthrough</h2> <p><2–4 句散文式概述:PR 做了什么、采用了什么方案、总体评价。 像人类向同事转述变更,不用列表。></p> <h2>Changes</h2> <table> <thead> <tr> <th>File</th> <th>Summary</th> </tr> </thead> <tbody> <tr> <td><code>path/to/file1.ts</code></td> <td><该文件一行变更摘要></td> </tr> <tr> <td><code>path/to/file2.rs</code></td> <td><…></td> </tr> </tbody> </table> <h2>Sequence of changes (if useful)</h2> <p><可选:涉及多步流程时给一个 mermaid 时序/流程图;简单 PR 省略。></p> <h2>Actionable comments (<count>)</h2> <h3>🛑 Blockers</h3> <h4>1. <code>path/to/file.rs:42-56</code> — <短标题></h4> <p><2–5 行说明:问题是什么、为什么错、下游影响。></p> <p><strong>Suggested change:</strong></p> <pre><code class="hljs"><span class="hljs-comment">// before</span> <现状代码片段> <span class="hljs-comment">// after</span> <建议代码片段> </code><svg id="copy" class="icon" aria-hidden="true" style="font-size:16px;display: inline-block;color:#fff;position:absolute;right:8px;top:6px;cursor:pointer;" data-copy="2f2f206265666f72650a3ce78eb0e78ab6e4bba3e7a081e78987e6aeb53e0a0a2f2f2061667465720a3ce5bbbae8aeaee4bba3e7a081e78987e6aeb53e0a"><use xlink:href="#gt-line-copy"></use></svg></pre> <h3>⚠️ Major</h3> <h4>2. <code>app/src/components/Foo.tsx:110-128</code> — <短标题></h4> <h3>💡 Refactor / suggestion</h3> <h4>3. <code>src/openhuman/bar/ops.rs:200-240</code> — <短标题></h4> <h2>Nitpicks (<count>)</h2> <p><单行条目:file:line,可附一行修法,一般不需要代码块。></p> <h2>Questions for the author (<count>)</h2> <ul> <li><code>path/to/file.ts:88</code> — <diff 中确实无法判断的问题></li> </ul> <h2>Outside the diff</h2> <p><阅读周边代码时注意到、不在 diff 内但相关的事项。可省略。></p> <h2>Verified / looks good</h2> <p><明确检查过且认为正确的点——表明评审是全面的,而非只找茬。></p> <hr> <p><strong>Reply with one of:</strong></p> <ul> <li><code>apply all</code> — 应用全部建议</li> <li><code>apply blockers+major</code> — 只应用高严重度项</li> <li><code>apply 1,3,5</code> — 应用指定编号项</li> <li><code>skip</code> — 只评审,不改代码</li> <li>自由指令(如 “apply 1 and 2, skip the rename in 4”)</li> </ul> <p>I will not change any code until you confirm.</p> <pre><code class="hljs"> 评审内容还受五条硬性规则约束: 1. 每条 actionable 项必须带 **file:line** 或 **file:line-range**; 2. 每条 actionable 项必须包含**具体可执行的修改方案**——能给代码块就给代码块;“Consider refactoring” 不算建议,“把 40–60 行抽成 `fn parse_header(...)` 让重试分支复用它”才算; 3. before/after 代码块保持最小,仅展示变化本身; 4. 优先引用代码中的精确标识符/路径,而不是模糊描述; 5. **不虚构问题**——PR 干净就在 Walkthrough 里明说、各节保持简短;也不要重复 `cargo clippy` / ESLint 能自动抓的问题(除非 PR 新引入且 CI 尚未捕捉)——聚焦人类评审员才会提出的点。 报告末尾的“Reply with one of”交互协议是这个代理的另一个设计要点:把用户的确认收敛为几种可解析的应答格式(`apply all` / `apply blockers+major` / `apply 1,3,5` / `skip` / 自由指令),保证第 7 步能无歧义地执行。 ### 步骤 7:应用已批准的修改 用户答复之后: - 每次编辑前**重新读取周边代码**(状态可能已漂移); - 尽可能一个逻辑关注点一个提交,提交信息格式: - `fix(<area>): <what changed>` —— bug 修复 - `refactor(<area>): <what changed>` —— 非行为变更 - `test(<area>): <what added>` —— 新增测试 - `docs(<area>): <what changed>` —— 纯文档 - 用户拒绝的项一律跳过,**不扩大范围**。 ### 步骤 8:运行质量套件 独立的部分尽量并行;与 diff 明显无关的套件跳过,但**格式化与 typecheck/lint 永远要跑**: ```bash # Frontend (if app/ changed) cd app && pnpm typecheck cd app && pnpm lint cd app && pnpm format # auto-fix cd app && pnpm test:unit # Rust (if src/ or app/src-tauri changed) cargo fmt --manifest-path Cargo.toml cargo check --manifest-path Cargo.toml cargo check --manifest-path app/src-tauri/Cargo.toml cargo test --manifest-path Cargo.toml </code><svg id="copy" class="icon" aria-hidden="true" style="font-size:16px;display: inline-block;color:#fff;position:absolute;right:8px;top:6px;cursor:pointer;" data-copy="0ae8af84e5aea1e58685e5aeb9e8bf98e58f97e4ba94e69da1e7a1ace680a7e8a784e58899e7baa6e69d9fefbc9a0a0a312e20e6af8fe69da120616374696f6e61626c6520e9a1b9e5bf85e9a1bbe5b8a6202a2a66696c653a6c696e652a2a20e68896202a2a66696c653a6c696e652d72616e67652a2aefbc9b0a322e20e6af8fe69da120616374696f6e61626c6520e9a1b9e5bf85e9a1bbe58c85e590ab2a2ae585b7e4bd93e58fafe689a7e8a18ce79a84e4bfaee694b9e696b9e6a1882a2ae28094e28094e883bde7bb99e4bba3e7a081e59d97e5b0b1e7bb99e4bba3e7a081e59d97efbc9be2809c436f6e7369646572207265666163746f72696e67e2809d20e4b88de7ae97e5bbbae8aeaeefbc8ce2809ce68a8a203430e28093363020e8a18ce68abde688902060666e2070617273655f686561646572282e2e2e296020e8aea9e9878de8af95e58886e694afe5a48de794a8e5ae83e2809de6898de7ae97efbc9b0a332e206265666f72652f616674657220e4bba3e7a081e59d97e4bf9de68c81e69c80e5b08fefbc8ce4bb85e5b195e7a4bae58f98e58c96e69cace8baabefbc9b0a342e20e4bc98e58588e5bc95e794a8e4bba3e7a081e4b8ade79a84e7b2bee7a1aee6a087e8af86e7aca62fe8b7afe5be84efbc8ce8808ce4b88de698afe6a8a1e7b38ae68f8fe8bfb0efbc9b0a352e202a2ae4b88de8999ae69e84e997aee9a2982a2ae28094e28094505220e5b9b2e58780e5b0b1e59ca82057616c6b7468726f75676820e9878ce6988ee8afb4e38081e59084e88a82e4bf9de68c81e7ae80e79fadefbc9be4b99fe4b88de8a681e9878de5a48d2060636172676f20636c6970707960202f2045534c696e7420e883bde887aae58aa8e68a93e79a84e997aee9a298efbc88e999a4e99d9e20505220e696b0e5bc95e585a5e4b89420434920e5b09ae69caae68d95e68d89efbc89e28094e28094e8819ae784a6e4babae7b1bbe8af84e5aea1e59198e6898de4bc9ae68f90e587bae79a84e782b9e380820a0ae68aa5e5918ae69cabe5b0bee79a84e2809c5265706c792077697468206f6e65206f66e2809de4baa4e4ba92e58d8fe8aeaee698afe8bf99e4b8aae4bba3e79086e79a84e58fa6e4b880e4b8aae8aebee8aea1e8a681e782b9efbc9ae68a8ae794a8e688b7e79a84e7a1aee8aea4e694b6e6959be4b8bae587a0e7a78de58fafe8a7a3e69e90e79a84e5ba94e7ad94e6a0bce5bc8fefbc88606170706c7920616c6c60202f20606170706c7920626c6f636b6572732b6d616a6f7260202f20606170706c7920312c332c3560202f2060736b697060202f20e887aae794b1e68c87e4bba4efbc89efbc8ce4bf9de8af81e7acac203720e6ada5e883bde697a0e6ada7e4b989e59cb0e689a7e8a18ce380820a0a23232320e6ada5e9aaa42037efbc9ae5ba94e794a8e5b7b2e689b9e58786e79a84e4bfaee694b90a0ae794a8e688b7e7ad94e5a48de4b98be5908eefbc9a0a0a2d20e6af8fe6aca1e7bc96e8be91e5898d2a2ae9878de696b0e8afbbe58f96e591a8e8beb9e4bba3e7a0812a2aefbc88e78ab6e68081e58fafe883bde5b7b2e6bc82e7a7bbefbc89efbc9b0a2d20e5b0bde58fafe883bde4b880e4b8aae980bbe8be91e585b3e6b3a8e782b9e4b880e4b8aae68f90e4baa4efbc8ce68f90e4baa4e4bfa1e681afe6a0bce5bc8fefbc9a0a20202d2060666978283c617265613e293a203c77686174206368616e6765643e6020e28094e280942062756720e4bfaee5a48d0a20202d20607265666163746f72283c617265613e293a203c77686174206368616e6765643e6020e28094e2809420e99d9ee8a18ce4b8bae58f98e69bb40a20202d206074657374283c617265613e293a203c776861742061646465643e6020e28094e2809420e696b0e5a29ee6b58be8af950a20202d2060646f6373283c617265613e293a203c77686174206368616e6765643e6020e28094e2809420e7baafe69687e6a1a30a2d20e794a8e688b7e68b92e7bb9de79a84e9a1b9e4b880e5be8be8b7b3e8bf87efbc8c2a2ae4b88de689a9e5a4a7e88c83e59bb42a2ae380820a0a23232320e6ada5e9aaa42038efbc9ae8bf90e8a18ce8b4a8e9878fe5a597e4bbb60a0ae78bace7ab8be79a84e983a8e58886e5b0bde9878fe5b9b6e8a18cefbc9be4b88e206469666620e6988ee698bee697a0e585b3e79a84e5a597e4bbb6e8b7b3e8bf87efbc8ce4bd862a2ae6a0bce5bc8fe58c96e4b88e2074797065636865636b2f6c696e7420e6b0b8e8bf9ce8a681e8b7912a2aefbc9a0a0a606060626173680a232046726f6e74656e6420286966206170702f206368616e676564290a63642061707020262620706e706d2074797065636865636b0a63642061707020262620706e706d206c696e740a63642061707020262620706e706d20666f726d61742020202020202023206175746f2d6669780a63642061707020262620706e706d20746573743a756e69740a0a23205275737420286966207372632f206f72206170702f7372632d7461757269206368616e676564290a636172676f20666d74202d2d6d616e69666573742d7061746820436172676f2e746f6d6c0a636172676f20636865636b202d2d6d616e69666573742d7061746820436172676f2e746f6d6c0a636172676f20636865636b202d2d6d616e69666573742d70617468206170702f7372632d74617572692f436172676f2e746f6d6c0a636172676f2074657374202d2d6d616e69666573742d7061746820436172676f2e746f6d6c0a"><use xlink:href="#gt-line-copy"></use></svg></pre> <p>这些命令均可在当前仓库直接验证:<a rel="nofollow" href="https://gitcode.com/GitHub_Trending/op/openhuman/blob/e6e3d60b9090bbdc43c508c00bf1fd1b47878654/app/package.json?utm_source=gitcode_repo_files">app/package.json</a> 定义了 <code>compile</code>(tsc --noEmit,根 package.json 暴露为 <code>typecheck</code>)、<code>lint</code>(ESLint)、<code>format</code>(Prettier + cargo fmt)、<code>test:unit</code>(Vitest);两个 <code>Cargo.toml</code>(根核心 crate 与 Tauri shell)对应 <code>cargo check</code> 的两条 manifest 路径——<a rel="nofollow" href="https://gitcode.com/GitHub_Trending/op/openhuman/blob/e6e3d60b9090bbdc43c508c00bf1fd1b47878654/CLAUDE.md?utm_source=gitcode_repo_files">CLAUDE.md</a> 的 Commands 一节也给出了同样的命令基线。</p> <h3>步骤 9:提交自动修复并推送</h3> <ul> <li>格式化产物 → <code>chore(pr-reviewer): apply formatting</code>;</li> <li>非平凡的 lint 自动修复 → 单独一个提交;</li> <li>推送前 <code>git status --short</code> 必须为空;</li> <li><code>git push</code> 被拒时 <code>git pull --rebase</code> 后再推;</li> <li><strong>禁用</strong> <code>--no-verify</code>、amend、force-push(唯一例外:经用户批准的冲突解决 rebase 后允许 <code>--force-with-lease</code>);</li> <li>无推送权限的 fork PR:明确报告“提交停留在本地”,并给作者操作指引。</li> </ul> <h3>步骤 10:最终报告</h3> <pre><code class="hljs">## PR #<N> — Review applied ### Suggestions raised: <total> - Applied: <n> (blockers: x, major: y, refactor: z, nitpicks: w) - Skipped (per user): <n> - Deferred (questions): <n> ### Commits pushed - <sha> fix(<area>): ... - <sha> chore(pr-reviewer): apply formatting ### Quality suite - typecheck: pass/fail - lint: pass/fail (N autofixes) - unit tests: <passed>/<total> - cargo check (core): pass/fail - cargo check (tauri): pass/fail - cargo test: <passed>/<total> ### Outstanding questions for the author - <list, or "none"> ### PR URL <url></code><svg id="copy" class="icon" aria-hidden="true" style="font-size:16px;display: inline-block;color:#fff;position:absolute;right:8px;top:6px;cursor:pointer;" data-copy="232320505220233c4e3e20e2809420526576696577206170706c6965640a0a2323232053756767657374696f6e73207261697365643a203c746f74616c3e0a2d204170706c6965643a203c6e3e2028626c6f636b6572733a20782c206d616a6f723a20792c207265666163746f723a207a2c206e69747069636b733a2077290a2d20536b697070656420287065722075736572293a203c6e3e0a2d20446566657272656420287175657374696f6e73293a203c6e3e0a0a23232320436f6d6d697473207075736865640a2d203c7368613e20666978283c617265613e293a202e2e2e0a2d203c7368613e2063686f72652870722d7265766965776572293a206170706c7920666f726d617474696e670a0a232323205175616c6974792073756974650a2d2074797065636865636b3a20706173732f6661696c0a2d206c696e743a20706173732f6661696c20284e206175746f6669786573290a2d20756e69742074657374733a203c7061737365643e2f3c746f74616c3e0a2d20636172676f20636865636b2028636f7265293a20706173732f6661696c0a2d20636172676f20636865636b20287461757269293a20706173732f6661696c0a2d20636172676f20746573743a203c7061737365643e2f3c746f74616c3e0a0a232323204f75747374616e64696e67207175657374696f6e7320666f722074686520617574686f720a2d203c6c6973742c206f7220226e6f6e65223e0a0a2323232050522055524c0a3c75726c3e"><use xlink:href="#gt-line-copy"></use></svg></pre>

登录后查看全文
热门项目推荐
相关项目推荐