# Paper Replication Agent Design Specification

**Date**: 2026-03-31
**Status**: Draft
**Author**: OpenCode AI

---

## 1. Overview

### 1.1 Purpose

设计一个基于 OpenCode 平台的论文复现 Agent 系统，专注于机器学习/深度学习论文的自动化复现。该系统能够：

- 解析论文内容和图片
- 自动生成 PyTorch 复现代码
- 运行测试验证代码正确性
- 生成复现报告并对比原论文结果

### 1.2 Scope

- **目标论文类型**: 机器学习/深度学习论文
- **输入格式**: Markdown 文件、纯文本内容
- **输出框架**: PyTorch
- **自动化程度**: 解析后人工核验，之后自动执行（TDD 模式）

### 1.3 Success Criteria

1. 能够准确解析论文结构和关键信息
2. 能够理解论文中的架构图和实验图表
3. 生成可运行的 PyTorch 代码
4. 代码通过单元测试验证
5. 生成复现报告，明确标注与原论文的差异

---

## 2. Architecture

### 2.1 System Architecture

采用 **主 Agent 编排 + 专业化 Subagent** 的架构模式。

```
┌─────────────────────────────────────────────────────────┐
│                   paper-director                         │
│                  (Primary Agent)                         │
│           流程编排 / 质量控制 / 人工核验                  │
└─────────────────────────────────────────────────────────┘
                          │
        ┌─────────────────┼─────────────────┐
        ▼                 ▼                 ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│paper-analyzer │ │paper-image-   │ │ code-writer   │
│   (Subagent)  │ │extractor      │ │  (Subagent)   │
│   论文解析    │ │  (Subagent)   │ │   代码生成    │
└───────────────┘ │  图片理解     │ └───────────────┘
                  └───────────────┘
                                          │
                                          ▼
                                  ┌───────────────┐
                                  │ test-runner   │
                                  │  (Subagent)   │
                                  │   测试验证    │
                                  └───────────────┘
```

### 2.2 File Structure

```
PaperTool/
├── .opencode/
│   ├── agents/                    # Agent 定义
│   │   ├── paper-director.md      # 主 Agent（编排者）
│   │   ├── paper-analyzer.md      # 论文解析 Subagent
│   │   ├── paper-image-extractor.md # 图片理解 Subagent
│   │   ├── code-writer.md         # 代码生成 Subagent
│   │   └── test-runner.md         # 测试验证 Subagent
│   │
│   ├── skills/                    # 项目级 Skills
│   │   ├── paper-parsing/         # 论文解析技能
│   │   │   └── SKILL.md
│   │   ├── code-generation/       # 代码生成技能
│   │   │   └── SKILL.md
│   │   ├── pytorch-patterns/      # PyTorch 最佳实践
│   │   │   └── SKILL.md
│   │   ├── verification/          # 验证与对比技能
│   │   │   └── SKILL.md
│   │   └── environment-management/ # 环境管理技能（Conda + uv）
│   │       └── SKILL.md
│   │
│   └── commands/                  # 快捷命令
│       ├── replicate.md           # /replicate 启动复现流程
│       └── verify.md              # /verify 验证复现结果
│
├── docs/superpowers/specs/        # 设计文档
│
├── workspace/                     # 工作区
│   ├── paper_name.md              # 论文源文件（Markdown）
│   └── {paper_name}/              # 每篇论文一个工作目录
│       ├── .venv/                 # uv 创建的项目虚拟环境
│       ├── pyproject.toml         # 项目依赖配置
│       ├── analysis/              # 解析结果
│       │   ├── paper_structure.md # 论文结构分析
│       │   ├── image_understanding.md # 图片理解
│       │   └── replication_plan.md # 复现计划
│       ├── src/                   # 生成的代码
│       │   ├── models/            # 模型定义
│       │   ├── training/          # 训练脚本
│       │   └── utils/             # 工具函数
│       ├── tests/                 # 单元测试
│       ├── docs/                  # 使用文档
│       │   └── README.md
│       └── reports/               # 复现报告
│           └── replication_report.md
│
└── opencode.json                  # 项目配置
```

### 2.3 Environment Management Strategy

采用 **Conda + uv** 混合模式管理 Python 环境：

#### 2.3.1 Architecture

```
┌─────────────────────────────────────────────────────────┐
│                    Conda (系统底座)                      │
│  ├─ ai_base 环境                                        │
│  │   ├─ Python 3.10+                                    │
│  │   ├─ cuda-toolkit                                    │
│  │   └─ 底层 C++ 编译链工具                              │
│  │                                                      │
│  └─ 不安装任何纯 Python 业务包                           │
└─────────────────────────────────────────────────────────┘
                          │
                          │ 提供 Python 解释器
                          ▼
┌─────────────────────────────────────────────────────────┐
│                    uv (项目隔离舱)                       │
│  ├─ workspace/paper_a/.venv/                            │
│  │   └─ torch, transformers, ...                        │
│  │                                                      │
│  ├─ workspace/paper_b/.venv/                            │
│  │   └─ torch, jax, ...                                 │
│  │                                                      │
│  └─ 每个项目独立的轻量级虚拟环境                         │
└─────────────────────────────────────────────────────────┘
```

#### 2.3.2 Environment Setup Flow

```
开始代码生成
    │
    ▼
检查 Conda ai_base 环境是否存在？
    │
    ├─ 否 → 创建 Conda 环境：
    │       conda create -n ai_base python=3.10 cuda-toolkit -y
    │
    ▼
进入项目目录 workspace/{paper_name}/
    │
    ▼
检查 .venv 是否存在？
    │
    ├─ 否 → 创建 uv 虚拟环境：
    │       uv venv --python $(conda run -n ai_base which python)
    │
    ▼
激活环境并安装依赖：
    uv pip install -r requirements.txt
    │
    ▼
继续代码生成/测试
```

#### 2.3.3 Implementation: Skill vs Subagent

**推荐方案：使用 Skill**

**`environment-management` Skill 职责**：

1. 提供 Conda + uv 最佳实践指南
2. 提供环境检测和创建的命令模板
3. 提供 pyproject.toml 模板
4. 提供常见依赖配置（PyTorch + CUDA）

**由 `code-writer` Subagent 负责**：

1. 在生成代码前调用 `environment-management` Skill
2. 执行环境检测和创建命令
3. 生成项目的 pyproject.toml
4. 安装依赖

---

## 3. Workflow

### 3.1 Complete Workflow

```
用户输入论文 (Markdown/Text)
         │
         ▼
┌─────────────────────────────────────────────────────────┐
│ 阶段 1：论文解析                                         │
│ ├─ paper-director 创建工作区目录                         │
│ ├─ 调用 @paper-image-extractor 提取并理解图片            │
│ │   └─ 输出: image_understanding.md                      │
│ ├─ 调用 @paper-analyzer 解析论文结构                     │
│ │   └─ 输入: 论文 + image_understanding.md               │
│ │   └─ 输出: paper_structure.md + replication_plan.md    │
│ └─ 汇总解析结果                                          │
└─────────────────────────────────────────────────────────┘
         │
         ▼
┌─────────────────────────────────────────────────────────┐
│ 🔴 人工核验点                                            │
│ ├─ 展示论文结构分析                                      │
│ ├─ 展示图片理解结果                                      │
│ ├─ 展示复现计划和预期产出                                │
│ ├─ 展示需要复现的实验图表清单                            │
│ └─ 等待用户确认或修正                                    │
└─────────────────────────────────────────────────────────┘
         │
         ▼
┌─────────────────────────────────────────────────────────┐
│ 阶段 2：代码生成（TDD 模式）                             │
│ ├─ paper-director 根据复现计划生成测试用例               │
│ ├─ 调用 @code-writer 生成模型代码                        │
│ │   └─ 输入: 分析文档 + 测试用例                         │
│ │   └─ 输出: src/models/*.py                             │
│ ├─ 运行测试，验证代码正确性                              │
│ ├─ 如果测试失败，迭代修复                                │
│ ├─ 调用 @code-writer 生成训练脚本                        │
│ │   └─ 输出: src/training/*.py                           │
│ └─ 生成使用文档 docs/README.md                           │
└─────────────────────────────────────────────────────────┘
         │
         ▼
┌─────────────────────────────────────────────────────────┐
│ 阶段 3：验证与报告                                       │
│ ├─ 调用 @test-runner 运行完整测试套件                    │
│ ├─ 尝试运行训练脚本（验证可执行性）                      │
│ ├─ 对比论文中的预期结果                                  │
│ ├─ 分析差异并说明原因                                    │
│ └─ 生成 replication_report.md                            │
└─────────────────────────────────────────────────────────┘
         │
         ▼
      最终产出
```

### 3.2 Human Checkpoint Details

人工核验点需要展示以下内容供用户确认：

1. **论文基本信息**
   
   - 标题、作者、发表年份
   - 核心贡献点摘要

2. **模型架构理解**
   
   - 架构图的文字描述
   - 关键组件清单

3. **实验复现目标**
   
   - 需要复现的图表清单
   - 每个图表的数据来源说明
   - 预期的数值范围

4. **复现计划**
   
   - 代码模块划分
   - 实现顺序
   - 预估工作量

5. **风险点和限制**
   
   - 可能无法复现的部分
   - 需要的外部资源（数据集等）

---

## 4. Agent Specifications

### 4.1 paper-director (Primary Agent)

**Mode**: `primary`

**Description**: 论文复现项目的编排者和质量控制负责人

**Responsibilities**:

- 接收用户的论文复现请求
- 创建和管理工作区目录
- 规划复现流程并创建任务清单
- 调度各个 Subagent 执行具体任务
- 在人工核验点暂停，等待用户确认
- 汇总结果并生成最终复现报告
- 处理异常情况和错误恢复

**Tools**: 全部启用

**Model**: inherit（继承用户配置）

### 4.2 paper-analyzer (Subagent)

**Mode**: `subagent`

**Description**: 解析论文文本内容，提取结构化信息，规划复现任务

**Input**:

- 论文 Markdown 文件或纯文本
- `image_understanding.md`（图片理解结果）

**Output**:

- `paper_structure.md` - 论文结构分析
- `replication_plan.md` - 复现计划

**Output Content**:

- 论文标题、作者、摘要
- 核心贡献点
- 方法论概述
- 模型架构描述（文字）
- 损失函数和优化器
- 实验设置（数据集、超参数）
- 关键公式（LaTeX）
- **实验结果复现目标**（基于图片理解）
  - 需要复现的图表清单
  - 每个图表的数据来源
  - 预期的数值范围
  - 复现优先级
- 待实现的功能清单

**Tools**: read, write, edit

**Model**: inherit

### 4.3 paper-image-extractor (Subagent)

**Mode**: `subagent`

**Description**: 提取并理解论文中的图片内容

**Input**:

- 论文 Markdown 文件（含图片链接/路径）

**Output**:

- `image_understanding.md` - 图片理解文档

**Output Content** (每张图片):

- 图片类型识别（架构图/实验图/算法伪代码/公式）
- 详细文字描述
- 架构图: 数据流向、层结构、连接关系
- 实验图: 数值提取、趋势分析、关键数据点
- 算法伪代码: 文字化描述、步骤拆解
- 关键信息提炼

**Tools**: read, write, edit, bash

**Model**: inherit

### 4.4 code-writer (Subagent)

**Mode**: `subagent`

**Description**: 根据分析结果生成 PyTorch 代码，并管理项目环境

**Input**:

- `paper_structure.md` - 论文结构分析
- `image_understanding.md` - 图片理解
- 测试用例（TDD 模式）

**Output**:

- `.venv/` - uv 创建的项目虚拟环境
- `pyproject.toml` - 项目依赖配置
- `src/models/*.py` - 模型定义
- `src/training/*.py` - 训练脚本
- `src/utils/*.py` - 工具函数
- `docs/README.md` - 使用文档

**Working Mode**: TDD 驱动 + 环境管理

1. **调用 `environment-management` Skill**
2. 检测并创建 Conda 基础环境（如不存在）
3. 创建项目 uv 虚拟环境
4. 生成 pyproject.toml
5. 安装依赖
6. 接收测试用例
7. 编写代码使测试通过
8. 迭代修复直到所有测试通过

**Tools**: read, write, edit, bash

**Model**: inherit

### 4.5 test-runner (Subagent)

**Mode**: `subagent`

**Description**: 运行测试并验证复现结果

**Input**:

- 生成的代码
- 测试用例
- 论文预期结果

**Output**:

- 测试运行结果
- `replication_report.md` - 复现报告

**Report Content**:

- 测试通过率
- 代码可运行性验证
- 与论文结果的对比分析
- 差异说明和原因分析
- 改进建议

**Tools**: read, write, edit, bash

**Model**: inherit

---

## 5. Skills Specifications

### 5.1 paper-parsing

**Purpose**: 指导如何系统性、全面地解析 ML/DL 论文

**Core Philosophy**: 强调**开放性**和**全面性**，避免漏解析和片面理解

**Content**:

1. **开放性提示框架**
   
   - 论文各部分可能包含的信息类型（非固定模板）
   - 每个部分的"可能存在"检查清单
   - 鼓励发现论文独特之处

2. **全面性检查清单**
   
   - Abstract → 是否提取了核心贡献？
   - Introduction → 是否理解了问题背景和动机？
   - Related Work → 是否识别了与现有方法的关键差异？
   - Method → 是否完整理解了方法细节？
   - Experiments → 是否识别了所有需要复现的实验？
   - Appendix → 是否检查了补充材料？

3. **任务分解指南**
   
   - 如何将复杂论文拆分为可执行的子任务
   - 依赖关系识别
   - 优先级排序原则

4. **示例模板**
   
   - 不同类型论文的解析示例
   - 常见遗漏点提醒

### 5.2 code-generation

**Purpose**: 指导如何根据论文生成高质量代码

**Content**:

- 从论文描述到代码的映射规则
- 模块化设计原则
- 代码风格规范
- 常见实现模式

### 5.3 pytorch-patterns

**Purpose**: 提供 PyTorch 代码的最佳实践模板

**Content**:

- 模型定义模板（nn.Module）
- 训练循环模板
- 常见层实现参考
- 性能优化技巧
- 设备管理（CPU/GPU）
- 数据加载最佳实践

### 5.4 verification

**Purpose**: 指导如何验证复现结果

**Content**:

- 测试用例设计指南
- 论文结果对比方法
- 差异分析框架
- 常见差异原因清单

### 5.5 environment-management

**Purpose**: 指导如何使用 Conda + uv 混合模式管理项目环境

**Content**:

1. **环境架构说明**
   
   - Conda 作为系统底座的职责
   - uv 作为项目隔离的职责
   - 两者的协作方式

2. **Conda 基础环境配置**
   
   - ai_base 环境创建命令
   - 必要的系统级依赖（cuda-toolkit 等）
   - 环境检测脚本

3. **uv 项目环境配置**
   
   - .venv 创建命令模板
   - pyproject.toml 模板
   - 常见 ML 依赖配置
   - PyTorch + CUDA 版本对应关系

4. **环境管理命令清单**
   
   ```bash
   # 检查 Conda 环境
   conda env list | grep ai_base
   
   # 创建 Conda 基础环境
   conda create -n ai_base python=3.10 cuda-toolkit -y
   
   # 获取 Conda Python 路径
   conda run -n ai_base which python
   
   # 创建 uv 虚拟环境
   uv venv --python $(conda run -n ai_base which python)
   
   # 激活并安装依赖
   source .venv/bin/activate  # Linux/Mac
   .venv\Scripts\activate     # Windows
   uv pip install -e .
   ```

5. **pyproject.toml 模板**
   
   ```toml
   [project]
   name = "{paper_name}"
   version = "0.1.0"
   requires-python = ">=3.10"
   dependencies = [
       "torch>=2.0.0",
       "numpy>=1.24.0",
       "matplotlib>=3.7.0",
       "pytest>=7.0.0",
   ]
   
   [project.optional-dependencies]
   dev = ["pytest", "black", "ruff"]
   ```

---

## 6. Commands Specifications

### 6.1 /replicate

**Purpose**: 一键启动论文复现流程

**Usage**:

```
/replicate path/to/paper.md
```

**Behavior**:

1. 验证输入文件存在
2. 从文件名提取论文名称
3. 创建 `workspace/{paper_name}/` 目录结构
4. 切换到 paper-director 主 Agent
5. 启动完整复现流程

### 6.2 /verify

**Purpose**: 验证已生成的复现代码

**Usage**:

```
/verify workspace/paper_name/
```

**Behavior**:

1. 检查工作区目录结构
2. 运行所有测试
3. 对比论文结果
4. 生成/更新验证报告

---

## 7. Data Flow

### 7.1 Analysis Phase Data Flow

```
论文.md
   │
   ├──────────────────────────────────┐
   │                                  │
   ▼                                  ▼
paper-image-extractor          (等待图片理解完成)
   │                                  │
   └─> image_understanding.md ────────┘
                                      │
                                      ▼
                              paper-analyzer
                                      │
                                      ├─> paper_structure.md
                                      └─> replication_plan.md
```

### 7.2 Code Generation Phase Data Flow

```
paper_structure.md + image_understanding.md
                    │
                    ▼
            paper-director
         (生成测试用例)
                    │
                    ▼
             code-writer
                    │
   ┌────────────────┼────────────────┐
   ▼                ▼                ▼
src/models/    src/training/    src/utils/
   │                │                │
   └────────────────┴────────────────┘
                    │
                    ▼
             运行测试 (TDD)
                    │
          ┌────────┴────────┐
          ▼                 ▼
       通过            失败 → 回到 code-writer 修复
          │
          ▼
      docs/README.md
```

### 7.3 Verification Phase Data Flow

```
src/* + tests/* + replication_plan.md
                    │
                    ▼
              test-runner
                    │
   ┌────────────────┼────────────────┐
   ▼                ▼                ▼
运行测试      对比论文结果      分析差异
   │                │                │
   └────────────────┴────────────────┘
                    │
                    ▼
         replication_report.md
```

---

## 8. Error Handling

### 8.1 Analysis Phase Errors

| 错误类型    | 处理方式             |
| ------- | ---------------- |
| 论文文件不存在 | 提示用户检查路径         |
| 图片无法访问  | 标记为无法解析，继续处理其他图片 |
| 解析结果不完整 | 在人工核验点展示，请求用户补充  |

### 8.2 Code Generation Phase Errors

| 错误类型 | 处理方式                             |
| ---- | -------------------------------- |
| 测试失败 | 迭代修复，最多 3 次；如仍失败，标记为需人工干预并继续其他模块 |
| 依赖缺失 | 提示用户安装                           |
| 语法错误 | 自动修复                             |

### 8.3 Verification Phase Errors

| 错误类型   | 处理方式        |
| ------ | ----------- |
| 测试运行失败 | 记录错误，标注在报告中 |
| 结果差异大  | 分析原因，在报告中说明 |

---

## 9. Configuration

### 9.1 opencode.json

```json
{
  "$schema": "https://opencode.ai/config.json",
  "default_agent": "paper-director",
  "agent": {
    "paper-director": {
      "mode": "primary"
    }
  }
}
```

---

## 10. Future Enhancements

1. **支持更多输入格式**: PDF 直接解析、arXiv URL
2. **支持更多框架**: TensorFlow、JAX
3. **数据集自动准备**: 自动下载和预处理常用数据集
4. **结果可视化**: 自动生成对比图表
5. **增量复现**: 支持部分复现和断点续传

---

## Appendix A: Glossary

| 术语            | 说明                        |
| ------------- | ------------------------- |
| Primary Agent | 主 Agent，用户直接交互的 Agent     |
| Subagent      | 子 Agent，由主 Agent 调度执行特定任务 |
| Skill         | 技能，为 Agent 提供特定领域的指导      |
| TDD           | 测试驱动开发，先写测试再写代码           |
| Workspace     | 工作区，存放每篇论文复现结果的目录         |

---

## Appendix B: References

- OpenCode Agents Documentation: https://opencode.ai/docs/zh-cn/agents/
- Superpowers Skills: https://github.com/obra/superpowers
- PyTorch Documentation: https://pytorch.org/docs/
