mcpField
V
verify-results

verify-results

github.com/shaishavmaisuria测试与质量57103 次安装4 天前更新
代码仓库

关于 verify-results

用于核对实验输出与论文所报指标是否一致的协作技能。它引导作者检查实验制品并按容差比较数据;耗时实验由作者自行运行,结果一致不代表独立复现。

主要功能

  1. 01提取论文指标并建立清单
  2. 02检查实验制品完整性与测试
  3. 03指导搭建隔离运行环境
  4. 04按容差比较实验指标
  5. 05报告差异及缺失步骤

适用场景

  1. 01核对代码输出与论文表格
  2. 02评估前检查实验制品
  3. 03表格变更后重新核对指标
  4. 04准备可复现性检查清单

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/shaishavmaisuria/research-paper-lifecycle-skills --skill verify-results

安装后在 Claude Code 中输入/verify-results确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
repro-standards.md
sandbox-and-run.md
scripts/
audit_repo.py
compare_metrics.py
extract_claims.py
verifylib.py

详细介绍

验证结果

弥合论文 声称 的内容与工件 实际产出 之间的差距。 此技能可帮助作者确认论文报告的数据是否可复现:它会定位实验代码,协助搭建干净/沙盒化的运行环境,运行工件自带的测试,并执行一致性审计——将运行产生的指标与论文中的表格和论断进行比较,误差容限不会改变论文结论。它会报告不匹配之处(论文称为 X,代码产出 Y)和缺失的复现步骤,并根据当前的可复现性徽章要求审计工件。

它是一个副驾驶:负责搭建环境并提供指导,作者则在自己的环境中运行所有高开销任务(训练、耗时评估)。它绝不会捏造数据、执行破坏性命令,也不会声称结果已由独立人员复现——审计通过表示一致,而非已复现。

适用场景

  • “我的结果可复现吗?”/“我的代码与论文中的表格一致吗?”
  • “检查我的可复现性”/“验证我的实验”/“复现我的数据”。
  • 为评估赛道准备工件(ACM AE、USENIX、OSDI、SOSP、 SIGMOD ARI、ETAPS、NeurIPS/ICML/ACL 可复现性)。
  • 填写可复现性清单(NeurIPS 论文清单、ACL 负责任 NLP、ML 代码完整性),并希望诚实评估每一项。
  • 结果表格有变更后,需要确认代码仍能生成相应结果。

输入

  1. 工件/实验代码(一个目录;或作者已在本地克隆的仓库 URL——此技能会读取本地文件,不会替你克隆)。
  2. 正在核对表格/论断的论文 .tex 文件(或存放结果表格的特定 \input 文件)。
  3. 目标会议的工件赛道(如有)——其当前的工件征集说明决定有哪些徽章,以及对托管方式的要求。
  4. 可选:先前运行生成的指标文件(JSON/CSV),用于比较而无需重新运行。

流程

此技能遵循计划 → 搭建 → 运行(作者执行)→ 审计的流程;验证步骤以外部、可衡量的信号(测试通过/失败、与运行生成文件之间的数值差异)为依据——绝不依赖模型自行判断数据“看起来是否正确”。

  1. 定位实验代码和论断。 确认代码所在位置,以及它应当生成哪些论文表格/论断。将论文中报告的数据提取到一份便于审查的论断清单中:

    python3 scripts/extract_claims.py paper.tex --ledger claims.json
    

    清单只是起点,并非事实标准——请与作者一起逐项检查:删除无关数据(年份、引用数、\\ 行中的 top-1=1),修正指标标签,并将保留的每项论断标记为 confirmed。作者才是作者。

  2. 审计工件的完整性及徽章就绪情况。

    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 确认已有足够内容可供运行,然后将深层问题交给负责的技能。

  3. 必须根据当前的 Call for Artifacts 重新核实徽章规则。 徽章选项会随会议和年份变化(例如,某一届会议提供全部三种徽章;另一届只提供 Artifacts Available)。ACM 在 2020-05-14 之后调换了 Reproduced 与 Replicated 的含义——2020 年之前的论文使用相反的含义。不要凭记忆说明任何徽章要求、托管规则或截止日期:获取该会议当前的 CFA,并提供来源 URL 和访问日期予以确认。 references/repro-standards.md 中介绍了可复现性标准和徽章分类——应将其视为核实事项的指南,而非当前事实。

  4. 搭建干净、隔离的运行环境,然后把命令交给作者。 复现必须在固定版本的隔离环境中运行,而不是作者受污染的 shell 环境中。协助编写运行方案(根据依赖规范创建新的 venv/conda/容器;固定随机种子;使用 README 中的确切命令),但所有耗时较长的操作都由作者运行。参见 references/sandbox-and-run.md。先让作者运行工件自带的测试(pytest、make test 或仓库的测试框架)——在比较任何指标之前,先设置明确的通过/失败门槛。绝不要运行破坏性命令;绝不要在作者的基础环境中自动安装依赖。

  5. 一致性审计:将生成的指标与论文进行比较。 将运行输出(由作者生成的 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 表示缺少复现步骤(论文报告了该指标,但运行未生成该指标)。

  6. 根据明确的停止条件决定验证结果。 将每项比较过的声明归为:match(在容差范围内一致)、mismatch(论文给出 X,代码生成 Y——需核实原因:表格过时?随机种子错误?数据划分不同?选择性报告?)或 unverified(无法运行/未生成指标——如实说明,绝不可掩盖)。不要无限循环:当所有已确认的声明均一致或已有解释时停止;如果差异需要作出判断(哪个数字正确),则请作者定夺。升级处理是正常流程,不是失败(工作原则 #4)。

  7. 撰写复现报告,保存至 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。它仅保存在本地;绝不上传,也不复制到此仓库。

评论

支持 Markdown