跳到主要内容
Agent 实践室CODEX STUDY CLUB

代码审查 Skill:让每条发现都能核验

给审查写清版本、范围、触发条件和证据;附可下载 Skill、真实代码审查样例与记录表,分清零发现、测试通过和未验证范围。

验证范围文件级审查与工具验证;原生客户端 Skill 调用未验证。

内容核对

收到一份很长的审查报告,先选一条结论核对:它针对哪个版本、什么输入会触发、实际有什么证据?如果只能读到“可能存在风险”,你还不能据此判断该不该改代码。

本篇适合已经有审查规范、希望重复使用它的个人或团队。完成后,你会有一个范围明确的 Skill 示例和一份能逐条追溯的审查记录。35 分钟是练习参考,真实审查时间取决于改动范围。本文提供一次真实代码改动的文件级审查记录与文本核对实例,没有验证 Skill 在不同模型和代码变更上的稳定性。

下载最小审查 Skill(SKILL.md)

下载真实审查样例(Markdown)

下载空白审查记录表(Markdown)

三个文件分别是规则、已填写样例和空表。下载不会自动安装 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 公开维护记录。
把方法用到自己的项目从一个可验收的小任务开始