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>
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
项目优选
收起
deepin linux kernel
C
33
18
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
528
588
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
906
1.83 K
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.53 K
1.01 K
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
989
508
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.34 K
1.45 K
暂无描述
Markdown
892
5.79 K
openGauss kernel ~ openGauss is an open source relational database management system
C++
213
313