技能包

Repro Lens:给 ML agent 用的可复现性检查

当你改动 ML 代码后想确认实验仍可复现时,最适合用 Repro Lens 做静态风险扫描、实验回放和输出对比;前提是本机需 Python 3.11+ 和 Git,静态检查无需 ML 依赖或 API key,但实验回放需要实验自身依赖且必须显式触发。

官方来源 · Repro Lens

安装

uv tool install 'git+https://github.com/00200200/[email protected]'

Repro Lens 是面向 ML 与编码 agent 的可复现性检查工具:扫描代码中的复现风险、回放实验并对比改动前后的输出。如果你在改动 ML 代码后想确认实验结果没有被破坏,这是它的核心用途;静态检查只需 Python 3.11+ 和 Git,不需要 ML 依赖或 API key,但实验回放需要该实验自身的依赖,且必须由你显式触发。

适合谁

  • 需要在改代码前后验证实验可复现的 ML/科研工程师,以及为 coding agent 配置复现审计流程的团队。
  • 只想做静态扫描的用户:无需 ML 依赖、无需 API key,被扫描的代码不会被导入执行,输出带文件位置的静态发现。
  • 不适合的情况:没有 Git 环境时两条安装路径都不可用;Python 低于 3.11 时静态检查器无法运行。除上述要求外,源材料未说明其他系统前提,是否支持 Windows 等平台官方未说明。
  • 证据未说明的内容不得假设:它未声明支持哪些文本或代码语言,也未声明在哪些 agent 客户端可用。

3 分钟完成第一次尝试

前提:本机已安装 Python 3.11+、Git 和 uv。推荐主路径是用 uv 从官方仓库固定版本安装:

uv tool install 'git+https://github.com/00200200/[email protected]'

替代方式是在虚拟环境中用 pip 安装同一 git URL(同样需要 Git),这只是次要选项,不构成另一条主入口。

安装后先做一次低风险、只读的静态检查:在你的项目里对 agent 或终端发起任务「用 repro-lens check 检查这个文件是否有已知的可复现性风险」。对应核心操作 check:它给出静态发现及文件位置,且被扫描的代码永远不会被导入。成功信号是输出中列出带文件位置的发现(即使结论是「未发现风险」也说明运行成功)。

注意:check 是诊断操作,这只是说明它不导入扫描代码;它是否会读写文件、执行命令或访问网络,源材料没有说明,无法确认。实验回放(verify,要求两次运行的声明输出一致)会实际执行实验,属于有副作用的操作,第一次尝试不要使用;如要使用,先确认实验依赖齐全并在触发前明确确认。

使用案例

案例一:改动训练脚本前的静态审计。向 agent 发起「对训练脚本运行 repro-lens check」。工具执行 check 操作,返回静态发现和文件位置,不导入你的代码。你可以据此判断改动是否引入已知的可复现性风险;若源材料之外的细节(如具体规则列表)未提供,则只能确认到「得到带位置的发现」这一步。

案例二:修复后的输出对比。前提是你已在改动前通过官方工作流保存了报告。向 agent 发起「用 repro-lens 的 verify 回放实验,再用 compare 对比两次保存的报告」。verify 要求两次运行的声明输出完全一致,compare 用于 diff 已保存的报告。预期结果:verify 通过表示输出匹配声明,compare 给出报告差异。回放需要实验自身依赖,且是显式命令——工具不会替你自动回放。

使用边界

  • 文件与命令访问:check 不导入被扫描代码;verify 会执行实验(需依赖),回放始终是显式命令,pre-commit 钩子(仓库 repro-lens,rev v0.3.0,id repro-lens)只筛查代码和项目策略,不自动回放。是否涉及网络访问官方未说明。
  • 确认点:任何会执行实验的操作(verify)都应在触发前确认实验配置和副作用。
  • 安装差异:推荐用 uv 安装固定版本 v0.3.0;虚拟环境中的 pip 安装是官方给出的替代方式。源材料未提及 marketplace 或其他平台安装方式,不要假设。
  • agent 集成:仓库内 skills/reproducibility/SKILL.md 可引导现有 coding agent 完成审计或经授权的修复,其启动器与 CLI 调用同一引擎;完整仓库也是一个 Codex 插件(含 .codex-plugin/plugin.json)。除此之外,具体支持哪些 agent 客户端官方未列明。
  • 未确认的关键信息:网络行为、支持的代码语言范围、check/compare 的读写边界均无官方说明,使用前请以仓库文档为准。