代码审查 Skill:让每条发现都能核验
给审查写清版本、范围、触发条件和证据;附可下载 Skill、真实代码审查样例与记录表,分清零发现、测试通过和未验证范围。
验证范围文件级审查与工具验证;原生客户端 Skill 调用未验证。
内容核对
收到一份很长的审查报告,先选一条结论核对:它针对哪个版本、什么输入会触发、实际有什么证据?如果只能读到“可能存在风险”,你还不能据此判断该不该改代码。
本篇适合已经有审查规范、希望重复使用它的个人或团队。完成后,你会有一个范围明确的 Skill 示例和一份能逐条追溯的审查记录。35 分钟是练习参考,真实审查时间取决于改动范围。本文提供一次真实代码改动的文件级审查记录与文本核对实例,没有验证 Skill 在不同模型和代码变更上的稳定性。
三个文件分别是规则、已填写样例和空表。下载不会自动安装 Skill;先阅读,再把规则保存到练习仓库的指定位置。浏览器若展示正文,可另存为文件,确认扩展名仍是 .md。
先准备范围、规则和可用证据
选一份你能访问的真实小改动,并准备三件事:待审查的提交或文件、预期行为、已有的验证入口。没有测试环境也可以做静态审查,但应在结果中写出限制。
| 输入 | 写清什么 | 避免什么 |
|---|---|---|
| 版本与范围 | PR/提交 SHA,或基线 SHA 加当前工作区文件快照;限定目录与排除项 | 只写“审查刚才的改动”,把他人修改也归给 Agent |
| 预期行为 | 需求、接口约定或团队规则,以及适用条件 | 将个人风格偏好当作功能缺陷 |
| 可用证据 | 代码路径、现有测试、日志或可操作页面 | 将“有测试文件”写成“测试已运行” |
本地 Git 项目可先只读查看 git status --short、git rev-parse HEAD、git diff --stat、git diff --cached --stat 和 git ls-files --others --exclude-standard。HEAD 不能代表未提交文件的内容;需要审查这些文件时,同时保存对应差异或快照。不要为方便审查而暂存、重置或清理他人的工作。
官方 Code review 建议明确审查对象、预期行为,并把发现对回最新差异与测试。内置 /review 面向 Git checkout;不同入口的范围选项以当前界面为准。下面的 Skill 用于携带团队的审查标准,不能替代范围选择。
把稳定标准写成一个小 Skill
先从已有的有效审查记录中提炼标准。不要把所有项目规范、固定检查次数和完整手册一并塞进去;只有本次类型的审查需要的规则才进入技能。
官方 Build skills 规定 SKILL.md 包含 name 与 description。名称和描述用于发现技能,决定使用后才读取完整正文;描述应说明适用任务。仓库中的本地技能可放在 .agents/skills/,Codex 从当前目录向仓库根目录查找相关位置。
以下是本站编写的教学示例,适用于用户明确要求的变更审查。需要实际使用时,在练习仓库新建 .agents/skills/evidence-review/SKILL.md;若同名文件已存在,先比较内容,不直接覆盖。
---
name: evidence-review
description: 审查指定代码或文档变更,并给出可核验的发现。用于明确的变更审查请求,不用于普通写作或功能实现。
---
先确认待审版本、范围和预期行为。沿相关调用路径或文档依据检查,
只读取与本次变更有关的规则。默认只读;需要修改时另按用户要求处理。
每条确认的发现给出:文件位置、触发条件、预期与实际差异、
影响、证据及其对应版本。严重程度按实际影响判断,不为填满模板凑问题。
无法确认的疑点放入“待核实”,写明缺少什么;不要编造复现或行号。
按改动选择验证:代码逻辑看有关路径和测试,界面行为检查相关操作状态,
文档结论核对原始依据。区分静态推断、实际运行和未验证项。
返回确认发现、待核实项、已检查范围与残余风险。
没有确认发现时如实说明范围和限制,不把零发现写成全面通过。
不因发现问题自行发布评论、修改代码或合并变更。
10-22 已由独立 Agent 实际读取这份文件并审查下方固定代码快照;格式校验通过。原生客户端安装、发现与显式触发仍未验证。若使用 $skill-creator 生成自己的版本,给它团队规范与一个可靠样例,让它保留真正影响判断的规则;格式校验通过也不能证明审查准确率。
显式调用,并要求可追溯输出
在 Codex CLI 或 IDE 扩展中,可以用 /skills 选择技能,或用 $ 提及技能;先确认列表中是自己创建的名称。隐式匹配依赖描述,不能把“文件已保存”当作“本次已经读取”。其他客户端按其技能入口选择,不把某个入口的快捷方式推广到所有客户端。
将占位项换成实际版本与需求,再发送:
使用 $evidence-review,只读审查这次变更。
目标:[提交 SHA / PR 链接 / 基线 SHA 与工作区快照]
范围:[文件或目录];排除:[不属于本次的内容]
预期行为:[需求与关键边界]
可用验证:[已有命令、日志、页面;没有则说明]
先说明读取到的 Skill 相对路径、文件 SHA-256 或可追溯版本,以及实际审查范围。
每条确认发现给出文件位置、触发条件、预期与实际、影响、证据和版本。
疑点未能验证时单列“待核实”;没有发现也不要凑数。
最后列出检查过的内容、实际运行结果和未验证面。
先返回报告,不改代码、不发布评论、不批准或合并。
如果技能未被发现,先核对当前仓库、路径、Frontmatter 和技能列表;官方文档说明未反映的技能更新可以在重启后再看。不要因此连续安装同名副本。若只有文件阅读能力,可以要求直接读取指定 SKILL.md 并按其审查,但记录为“按文件执行”,不称技能自动发现已通过。
跟做一次真实代码审查:零发现也要交代范围
这次选用本站 7efb39e 提交中的小范围改动:让学习助手检索新手章节。只审查 lib/knowledge-base.ts 的索引变化与新增测试,不审查该提交的 Cloud 教程正文或运营记录。预期是保留章节全文和稳定 URL,使指定 Cloud、CLI、VS Code 问句召回相应章节,同时保留原内容类型。
在已有本站 Git 历史的仓库中,可以先只读查看准确差异:
git diff 09a8841eef555de21b5d389d38f02912466608c4 \
7efb39eaaa5f757b571f7167a3aeb97bec856a15 -- \
lib/knowledge-base.ts scripts/tests/knowledge-base.test.mjs
运行测试时使用独立练习副本。 先确认该副本的 HEAD 是上述目标 SHA,依赖已安装,再执行 node --test scripts/tests/knowledge-base.test.mjs。不要在当前主分支跑完测试后,把结果归给历史提交;也不要为练习重置自己的工作区。本次从 Git 导出目标文件到临时快照并复用已安装依赖,没有验证全新环境的依赖安装。
将这些明确输入交给 Agent,并要求它读取下载的 SKILL.md,只读审查与返回报告。本站于 2026-10-22 这样执行了一次,之后由另一位 Agent 对照 Git 原文复核输入和报告边界:
| 记录项 | 本次实际结果 |
|---|---|
| 使用哪份规则 | 下载文件与文中最小示例一致;SHA-256 为 137c1060b821e9a3f1a25fa4ce239cc0e9f61b1a0ccdc5b381524ba2ba5102ee |
| 怎么执行 | 独立 Agent 直接读取文件,审查固定快照;不是客户端技能自动发现或显式触发 |
| 实际运行 | 上述 Node 测试退出 0,4 项通过;输入文件执行前后指纹一致 |
| 覆盖了什么 | 快照中 14 章全文与链接、4 个指定问句、来源/上下文/本地答案,以及 5 类原内容样本 |
| 确认发现 | 本次范围内没有确认缺陷;没有为了填表制造问题 |
| 没覆盖什么 | 线上 API、浏览器交互、上游模型回答、所有问法和检索准确率 |
一个值得复核的细节:测试名写了 “openable source”,但代码只断言链接进入来源数组,没有请求那个网页。报告明确保留这个限制;若你的需求包含“链接打开后可阅读”,还需要对应页面验证,不能由测试名字推断已完成。
下载样例保留实际测试输出、版本、行号、输入指纹与未验证面。你可以先不运行模型,只挑其中一条证据对回固定 Git 文件;完成标准是能解释它证明了什么、还缺什么。本次没有开展误报/漏报对照,也没有验证原生 Skill 调用:本机 codex --version 的一次 15 秒探测未返回,未继续执行 CLI 任务,原因未知。
规则改过,为什么还要核对实际文件
技能名称相同,不代表读取的是相同内容。可以请 Agent 报告实际读取的相对路径,并用文件 SHA-256 或固定提交核对版本;记录动作和时间,不只看技能列表。macOS/Linux 可用 shasum -a 256 <文件>,PowerShell 可用 Get-FileHash <文件> -Algorithm SHA256;本站只实际运行了文件哈希核验,没有测试 Windows 命令。
这也对应一条近期原始反馈:OlivierBourdin 于 2026-10-21 14:04:19 UTC(北京 22:04) 在 #55903 报告 Windows 11、Desktop build 13022 / bundled CLI 0.160.0 的导入同步保留了已有 Skill 的旧正文。本站 10-22 核对时为 open、0 评论;这是作者的特定版本报告,本站未运行该导入流程。不要据此删除技能或覆盖本地修改;先对比实际读取文件,保留差异再判断下一步。
本站实例:撤回一条没有证据支撑的结论
本文 旧版第 36 行 声称同组规则能跨变更重复执行,并保持一致的输出结构。旧文没有给出相应 Skill 文件、输入变更、调用记录或结果对照。10-21 直接读取这个固定版本后,可以确认的是公开正文缺少支撑该结论的证据;不能由此断言历史上从未有人做过实验。
本次审查记录可以这样写:
| 字段 | 实际填写 |
|---|---|
| 范围与版本 | 上述固定提交中的本文,只核对“验证结果”声明 |
| 位置与触发条件 | 第 36 行;读者把该段理解为已完成的跨变更实测 |
| 预期与实际 | 实测结论应有可追溯输入与结果;旧文只有一句概括 |
| 证据与影响 | 固定版本正文可直接复读;读者无法据此核验稳定性 |
| 处理 | 本次删除泛化结论,明确示例与未验证范围 |
| 未验证 | 没有调用该 Skill 审查多份代码;没有测量误报、漏报或收益 |
这是一次真实的文本证据核对,不是客户端故障复现,也不是证明新 Skill 更有效的对照实验。读者可以用同样方法检查自己审查报告中的结论是否有依据。
从报告到验收,还差哪些检查
对每条发现先复核证据,再决定接受、暂缓或驳回,并注明原因。修复后检查新版本,旧版测试结果不能自动覆盖新版。只读审查发现问题后,是否改动和发布仍取决于实际任务要求。
| 常见失败 | 下一步 |
|---|---|
| 报告列满风险,却没有触发条件 | 取一条追问具体输入与相关路径;证据不足转待核实 |
| 通过 Lint/单元测试,就认定界面完成 | 按需求检查相关动态状态,例如多轮输入、空结果、失败提示、取消与保存后的界面 |
| 已修复的旧行号反复出现 | 对齐最新 SHA 或快照,再核对实际文件位置 |
| 未运行检查却写“通过” | 改为未验证,并说明环境缺口与可执行的下一步 |
| 没有发现就写“没有 Bug” | 改为在本次范围和证据下没有确认发现,保留遗漏可能 |
这类区别也出现在近期社区反馈中:tetracoralla 于 2026-10-19 13:22:16 UTC(北京 21:22) 发布 GitHub #55280,报告生成的界面虽然通过脚本流程,却遗漏预览滚出视野、操作含义不清等持续交互问题。作者说明这是单个项目观察,未建立确定性最小复现或模型回归对照;没有公开项目源码与截图。本站 10-22 核对时该 Issue 为 open、0 评论,本站未复现,不能据此给出故障率或修复承诺。
验收本篇练习时,确认你能打开记录中的版本与证据、独立核对至少一条结论,并分清已查范围与尚未验证的内容。若要声称技能可复用,还需保留多份真实输入、实际调用与结果,包括误报和漏报;记录表本身不是效果证明。
来源与本次验证范围
- OpenAI:Build skills 与 Code review:2026-10-22 核对原文,页面未提供发布日期;不作为当日新功能新闻。
- Eric Provencher:Rethinking skills and prompts for GPT-6 Astra:官方发表于 2026-09-11,本站 10-22 核对;支持精简技能描述、按任务读取相关规则的写法,不保证个别技能效果。
- 社区来源与本站旧版均已在上文固定链接;社区自述与本站文本核对分别记录。
- 10-22 交付增加可下载 Skill、真实代码审查样例与文件指纹字段。文件级审查和本地测试已执行;客户端安装、显式/隐式触发、跨模型稳定性及独立读者收益均未验证。页面与下载验证状态见 10-22 公开维护记录。