SuperAPI AI 工具集

capture-environment

编程与开发

查看项目

更新于 10-16 07:57

技能介绍

用途:为复现包(replication package)捕获精确的计算环境,记录语言版本、包版本、随机种子、RNG 类型,可选记录操作系统层,便于审稿人、数据编辑或未来的自己重建环境。适用于发布复现包到 openICPSR、Zenodo、Dataverse 或期刊存档前,投稿前配合 /audit-reproducibility 使用,项目中途增删包后重新快照,以及把项目交给合作者或研究助理时。

主要能力:Phase 0 通过 glob 信号检测分析栈(R 看 scripts/R/.R、DESCRIPTION、renv/、.Rproj;Python 看 scripts/python/.py、.ipynb、pyproject.toml、requirements.txt、environment.yml、uv.lock;Stata 看 scripts/stata/*.do),未检测到则报告并停止。Phase 1 按语言捕获:R 生成 renv.lock(renv::snapshot(),必要时先 renv::init(bare = TRUE))和 sessionInfo.txt;Python 按项目现有工具生成 uv.lock、requirements.txt(pip freeze)或 environment.yml(conda env export --no-builds),并记录解释器版本;Stata 无锁定文件,改为记录 .do 中声明的 version 行、ado 包清单(which、ado dir、about)到 output/sessionInfo_stata.txt,并说明 Stata 版本固定是语义性的、非二进制固定。Phase 1b 抓取主种子与 RNG 类型(R 的 set.seed、RNGkind;Stata 的 set seed、set sortseed;Python 的 numpy.random.default_rng 等),若随机流程缺种子则发出 WARNING。Phase 2 仅在 --docker 时生成 Dockerfile,固定 OS、语言版本与系统库,尽量用镜像 digest。Phase 3 尽力在临时位置验证锁定文件可干净安装,报告 PASS/FAIL,不覆盖工作环境。Phase 4 输出可粘贴的 computational requirements 块并写入 output/computational_requirements.md。

使用方式:/capture-environment [项目目录],默认仓库根目录;--docker 额外生成 Dockerfile;--no-verify 跳过 Phase 3 验证。

限制:不重跑分析或核对数字;不打包或去标识化数据;不升级或“修复”依赖;无法固定 Stata 二进制(许可限制,不可再分发)。验证失败时退出码 1,未检测到栈时退出码 1。