关于 verify-results
用于核对实验输出与论文所报指标是否一致的协作技能。它引导作者检查实验制品并按容差比较数据;耗时实验由作者自行运行,结果一致不代表独立复现。
主要功能
- 01提取论文指标并建立清单
- 02检查实验制品完整性与测试
- 03指导搭建隔离运行环境
- 04按容差比较实验指标
- 05报告差异及缺失步骤
适用场景
- 01核对代码输出与论文表格
- 02评估前检查实验制品
- 03表格变更后重新核对指标
- 04准备可复现性检查清单
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ shaishavmaisuria/ research-paper-lifecycle-skills --skill verify-results安装后在 Claude Code 中输入/verify-results确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/repro-standards.mdsandbox-and-run.mdscripts/audit_repo.pycompare_metrics.pyextract_claims.pyverifylib.py详细介绍
验证结果
弥合论文 声称 的内容与工件 实际产出 之间的差距。 此技能可帮助作者确认论文报告的数据是否可复现:它会定位实验代码,协助搭建干净/沙盒化的运行环境,运行工件自带的测试,并执行一致性审计——将运行产生的指标与论文中的表格和论断进行比较,误差容限不会改变论文结论。它会报告不匹配之处(论文称为 X,代码产出 Y)和缺失的复现步骤,并根据当前的可复现性徽章要求审计工件。
它是一个副驾驶:负责搭建环境并提供指导,作者则在自己的环境中运行所有高开销任务(训练、耗时评估)。它绝不会捏造数据、执行破坏性命令,也不会声称结果已由独立人员复现——审计通过表示一致,而非已复现。
适用场景
- “我的结果可复现吗?”/“我的代码与论文中的表格一致吗?”
- “检查我的可复现性”/“验证我的实验”/“复现我的数据”。
- 为评估赛道准备工件(ACM AE、USENIX、OSDI、SOSP、 SIGMOD ARI、ETAPS、NeurIPS/ICML/ACL 可复现性)。
- 填写可复现性清单(NeurIPS 论文清单、ACL 负责任 NLP、ML 代码完整性),并希望诚实评估每一项。
- 结果表格有变更后,需要确认代码仍能生成相应结果。
输入
- 工件/实验代码(一个目录;或作者已在本地克隆的仓库 URL——此技能会读取本地文件,不会替你克隆)。
- 正在核对表格/论断的论文
.tex文件(或存放结果表格的特定\input文件)。 - 目标会议的工件赛道(如有)——其当前的工件征集说明决定有哪些徽章,以及对托管方式的要求。
- 可选:先前运行生成的指标文件(JSON/CSV),用于比较而无需重新运行。
流程
此技能遵循计划 → 搭建 → 运行(作者执行)→ 审计的流程;验证步骤以外部、可衡量的信号(测试通过/失败、与运行生成文件之间的数值差异)为依据——绝不依赖模型自行判断数据“看起来是否正确”。
-
定位实验代码和论断。 确认代码所在位置,以及它应当生成哪些论文表格/论断。将论文中报告的数据提取到一份便于审查的论断清单中:
python3 scripts/extract_claims.py paper.tex --ledger claims.json清单只是起点,并非事实标准——请与作者一起逐项检查:删除无关数据(年份、引用数、
\\行中的top-1=1),修正指标标签,并将保留的每项论断标记为confirmed。作者才是作者。 -
审计工件的完整性及徽章就绪情况。
python3 scripts/audit_repo.py path/to/artifact --blind <single|double|none>此步骤会根据 ML 代码完整性清单检查仓库内容(依赖项、训练代码、评估代码、预训练模型,以及包含结果表格和精确复现命令的 README),检查工件是否有自带测试,标记缺失的复现步骤;如果唯一的托管地址是 GitHub/个人 URL,则会发出警告(徽章赛道要求提供存档 DOI——Zenodo/FigShare/Dryad/Software Heritage)。它不会运行任何内容。使用
--blind double时,它还会扫描 README,查找可能泄露身份的邮箱/URL。 这是一个快速预比较门槛,不是深入审查。不要重复兄弟技能负责的工作:让代码达到可运行且具有确定性的状态,以及审查复现必需项,属于test-research-code;打包、徽章分类和归档 DOI 属于prepare-artifacts;深入的双盲审查属于anonymize-paper/refactor-research-code。本技能独有的工作 是一致性审计(步骤 5)——运行输出是否与论文中的表格相符。只使用audit_repo.py确认已有足够内容可供运行,然后将深层问题交给负责的技能。 -
必须根据当前的 Call for Artifacts 重新核实徽章规则。 徽章选项会随会议和年份变化(例如,某一届会议提供全部三种徽章;另一届只提供 Artifacts Available)。ACM 在 2020-05-14 之后调换了 Reproduced 与 Replicated 的含义——2020 年之前的论文使用相反的含义。不要凭记忆说明任何徽章要求、托管规则或截止日期:获取该会议当前的 CFA,并提供来源 URL 和访问日期予以确认。 references/repro-standards.md 中介绍了可复现性标准和徽章分类——应将其视为核实事项的指南,而非当前事实。
-
搭建干净、隔离的运行环境,然后把命令交给作者。 复现必须在固定版本的隔离环境中运行,而不是作者受污染的 shell 环境中。协助编写运行方案(根据依赖规范创建新的 venv/conda/容器;固定随机种子;使用 README 中的确切命令),但所有耗时较长的操作都由作者运行。参见 references/sandbox-and-run.md。先让作者运行工件自带的测试(
pytest、make test或仓库的测试框架)——在比较任何指标之前,先设置明确的通过/失败门槛。绝不要运行破坏性命令;绝不要在作者的基础环境中自动安装依赖。 -
一致性审计:将生成的指标与论文进行比较。 将运行输出(由作者生成的 metrics JSON/CSV)传入已确认的台账:
python3 scripts/compare_metrics.py --ledger claims.json --metrics run.json \ --rel-tol 0.01 --abs-tol 0.005 [--map test_acc=c1 ...]它会针对每项声明报告 MATCH / MISMATCH / MISSING,并采用不会改变论文声明的容差——绝不要求逐位完全一致(ACM、SIGMOD ARI 和 ETAPS 均只要求在容差范围内一致/“行为相似”)。根据指标的量级调整
--rel-tol/--abs-tol,名称不同时使用--map。出现metric/no-produced-value表示缺少复现步骤(论文报告了该指标,但运行未生成该指标)。 -
根据明确的停止条件决定验证结果。 将每项比较过的声明归为:match(在容差范围内一致)、mismatch(论文给出 X,代码生成 Y——需核实原因:表格过时?随机种子错误?数据划分不同?选择性报告?)或 unverified(无法运行/未生成指标——如实说明,绝不可掩盖)。不要无限循环:当所有已确认的声明均一致或已有解释时停止;如果差异需要作出判断(哪个数字正确),则请作者定夺。升级处理是正常流程,不是失败(工作原则 #4)。
-
撰写复现报告,保存至
paper-workspace/review/reproduction-report.md,并在paper-workspace/INDEX.md中追加一行。开头先写结论(N 项声明中有 M 项一致),接着给出差异表(声明、论文值、生成值、|diff|、可能原因)、逐项标明状态的工件完整性检查清单、缺失的复现步骤,以及根据当前 CFA 判断的徽章准备情况。明确说明实际运行了哪些内容,以及哪些内容没有运行。
输出
一份 reproduction-report.md:判定(符合主张的数量 / 总数)→ 不一致之处
表格(论文 vs 产出,附差异和可能原因)→ 制品完整性检查清单(5 项 + 测试 + 托管)→ 缺失的复现步骤
→ 对照实时 CFA 的徽章就绪情况(附来源链接和日期)。此外,还包括机器可读的 claims.json 台账,以及按需提供的 --json 输出。
适配你的学科
这些指标启发式针对 ML/系统论文(准确率、F1、BLEU、延迟、
加速比等)。对于其他领域,台账只需包含 {metric, value} 记录——
手动为任何定量主张(效应量、p 值、运行时间)编写记录,compare_metrics.py 仍会执行支持容差的审计。非代码制品
(数据集、证明)只需使用步骤 2–3。
相关技能(不要重复其工作)
此技能唯一专注的工作是一致性审计:运行产出的结果是否与论文报告的数字相符。所有相关工作都有对应负责人——转交给它们,而不是重复执行。
| 需求 | 负责技能 |
|---|---|
| 让代码可运行且具确定性;复现要点审计 | test-research-code |
| 打包、徽章分类、存档 DOI、制品附录 | prepare-artifacts |
| 研究仓库的发布清理 | refactor-research-code |
| 深入且可逆的双盲审查 | anonymize-paper |
| 每项书面主张均可追溯至证据(不只是数字) | verify-claims |
这里的 audit_repo.py 是轻量级的比较前检查,而不是替代
test-research-code 的 repro_check.py 或 prepare-artifacts 的徽章工作。
防护准则
- 一致性不等于复现。 审计通过仅表示产出的数字 在容差范围内与论文相符——并不意味着结果已被独立复现或重复验证。绝不可声称已获得徽章;是否授予徽章由委员会根据实时 CFA 决定。
- 绝不捏造数字、指标或“通过”的运行结果。 如果没有运行或未输出某项指标,应将其报告为未验证——不要推断。
- 不要相信模型对正确性的自我判断。 验证信号来自外部:测试退出代码,或与作者生成的文件进行数字差异比较。自我反思只会验证幻觉——不得将其用作关卡。
- 不运行任何繁重或破坏性操作。 作者在自己的沙盒中运行训练或长时间评估;此技能负责设置和指导。不得安装到基础环境,不得运行
rm,不得产生网络副作用。 - 注意匿名化。 在双盲评审期间,标出制品中的身份识别信息,并优先使用匿名镜像;绝不暴露作者身份。
- 绝不代替作者向任何系统提交论文或制品。
记忆
使用共享的 .paper-memory/ 约定(完整规范:
paper-memory-convention.md)。
- 开始时: 阅读
.paper-memory/lessons.md(并阅读profile.yml,了解贡献类型——dataset/system论文的评判会更看重制品)。首先说明任何反复出现的复现习惯(例如“不同草稿中的表格与代码不一致”“依赖未固定版本”)。 - 结束时: 将每项值得记住的发现按共享格式追加为一条带日期的记录:
- [YYYY-MM-DD] (verify-results | <scope>) issue -> recommendation(使用reflect-and-improve的reflect_log.py append,它会去重并添加日期)。跨论文的习惯标记为recurring,仅涉及本文的事项标记为this-paper。 - 按需创建
.paper-memory/,并建议将其加入.gitignore。它仅保存在本地;绝不上传,也不复制到此仓库。