Paper2code Skill:将 ArXiv 论文直接转化为可运行代码的智能复现工具

Paper2code:让 AI 把 ArXiv 论文直接变成可运行代码的 Skill

一个困扰 ML 研究者和工程师多年的问题:读完论文想复现,却发现关键超参数埋在附录或直接省略,文字描述和公式相互矛盾,所谓的”标准配置”根本没有具体值。Paper2code 正是为解决这个痛点而生——它是一个 Agent Skill,接收任意 ArXiv 论文 URL,输出带引用溯源的可运行代码实现,每个决策都锚定到论文原文,而非模型凭空生成。

这个 Skill 的核心差异在于引用锚定(Citation Anchoring):生成的每一行非平凡代码都会标注对应的论文章节和公式编号(如 §3.2、Eq. 4),而不是让模型自由发挥。在写代码之前,Skill 会先对每个实现选择进行审计,分类为”已明确指定””部分指定”或”未指定”,未指定的参数会在代码中标记 [UNSPECIFIED] 并列出常见替代方案,而不是悄悄塞一个默认值。同时,附录、脚注和图表说明都被视为一等公民,不会被忽略。

功能与原则

Paper2code 遵循三条明确的设计原则:

只复现论文核心贡献:不会重新实现标准组件(如”标准 Transformer 编码器”会直接 import 而非从零重写),也不会加入基线对比代码。

不发明细节:如果论文没有指定某个超参数,代码使用常见默认值并明确标记 [UNSPECIFIED],而不是让模型自由填充。

诚实的不确定性:任何模型需要推测的地方,都会在代码注释中注明推测依据,让用户可以逐一验证。

认可度

  • GitHub Star:1,496(截至 2026-08-13)
  • Fork:174
  • 更新时间:2026-08-13(当日最新 commit)
  • 社媒热度:CSDN 2026 年 6 月刊文推荐,入选”35 个 GitHub 热门 Claude Code 技能”盘点,被开发者社区视为论文复现的效率利器

链接

GitHub:https://github.com/PrathamLearnsToCode/paper2code

原作者

PrathamLearnsToCode(GitHub username),项目定位为”让任何人能够将学术论文转化为可验证的代码实现”,作者持续维护中(最近一次 commit 即为今日)。

介绍

Paper2code 解决的是机器学习论文复现中的信息不对称问题。传统方式下,研究者需要花数周时间对照论文找出每个参数的具体值,不同实现之间充满分歧,且没有任何记录说明分歧来源。

该 Skill 的输入是任意 ArXiv 论文 URL,输出是一个完整项目结构:

{paper_slug}/
├── README.md                          # 论文摘要、贡献说明、快速启动
├── REPRODUCTION_NOTES.md              # 歧义审计、所有未指定选择、已知偏差
├── requirements.txt                    # 固定版本依赖
├── src/
│   ├── model.py                      # 模型架构,每层标注对应论文章节
│   ├── loss.py                       # 损失函数,含公式引用
│   ├── train.py                      # 训练循环(如在范围内)
│   ├── data.py                       # 数据集类骨架,附预处理说明
│   ├── evaluate.py                   # 评估指标计算
│   └── utils.py                      # 共享工具函数
├── configs/
│   └── base.yaml                     # 所有超参数,每个标注来源或标记 [UNSPECIFIED]
└── notebooks/
    └── walkthrough.ipynb              # 可在 CPU 上运行的教学 notebook

每一行关键代码都附有论文引用注释,用户能够快速定位到原文对应段落进行验证。

特点

  • 引用锚定:每行代码标注对应论文章节/公式编号,实现可溯源
  • 歧义审计:运行前对所有实现选择分类,输出详细的 REPRODUCTION_NOTES.md
  • 诚实不确定性:未指定参数统一标记 [UNSPECIFIED],不静默填充
  • 附录优先:附录、脚注、图表说明均被视为一等数据源
  • 教学 Notebook:自动生成可在 CPU 上运行的 walkthrough notebook,边跑边对照论文

使用方法

安装(支持 Claude Code、Codex 等主流 Agent):

px skills add PrathamLearnsToCode/paper2code/skills/paper2code

安装过程中会提示选择:全局安装(推荐)或项目级安装、软链接(推荐)或复制。

基本调用

# 标准调用,传入 ArXiv URL 或论文 ID
/paper2code https://arxiv.org/abs/1706.03762

# 指定框架(如 JAX 而非 PyTorch)
/paper2code https://arxiv.org/abs/2006.11239 --framework jax

# 指定输出模式
/paper2code 2106.09685 --mode full
/paper2code 1706.03762 --mode educational

最小示例(Attention is All You Need):

/paper2code https://arxiv.org/abs/1706.03762

输出项目 attention_is_all_you_need/,包含 model.py、loss.py、train.py 等完整文件,每个文件内代码注释引用原文对应段落。

使用场景与人群

适用场景:将 ArXiv 论文转化为可运行代码、快速验证论文方法、搭建基准实现、教学演示

目标用户:ML 研究者与工程师、博士研究生、需要复现前沿模型的高校实验室、想要动手学习新架构的开发者

输入与输出案例

输入

/paper2code https://arxiv.org/abs/1706.03762

(Attention is All You Need,Transformer 原始论文)

输出

项目 attention_is_all_you_need/,关键文件 model.py 片段:

# §3.2 — "We apply layer normalization before each sub-layer" (Pre-LN variant)
class TransformerBlock(nn.Module):
    def forward(self, x):
        # §3.2, Eq. 2 — attention_weights = softmax(QK^T / sqrt(d_k))
        attn_out = self.attention(self.norm1(x))  # (batch, seq_len, d_model)
        x = x + attn_out  # §3.2 — residual connection

        # [UNSPECIFIED] Paper does not state epsilon for LayerNorm — using 1e-6 (common default)
        # Alternatives: 1e-5 (PyTorch default), 1e-8 (some implementations)
        x = self.norm2(x)
        x = x + self.ffn(x)
        return x

同时生成 REPRODUCTION_NOTES.md 列出所有 [UNSPECIFIED] 位置及替代选项,configs/base.yaml 汇总所有超参数并注明来源。

输入 2

/paper2code https://arxiv.org/abs/2006.11239 --framework jax

(GPT-2 论文,指定 JAX 框架)

输出:同样的引用锚定结构,但模型代码使用 JAX 函数式写法,而非 PyTorch。


GitHub: https://github.com/PrathamLearnsToCode/paper2code

评论区

0 条评论

登录后可评论。

Skill超级捕获手 13 阅读