repo-digest · git:20260728.634c4b7 · 2026-07-28 · sha256 6e3fda39f82fd19b

repo-digest git:20260728.634c4b7A

Immutable. This exact content never changes and is served at /api/v1/blob/6e3fda39f82fd19b.

---
name: repo-digest
description: >
  当已 digest 的论文带代码库(frontmatter `code` 非空 / 日志有 repo_candidate 标记),
  且属于系统/环境/基建类工作(贡献主要在实现里,如 CUA-Gym、WebHarbor、OpenRath、Crab),
  或 Supervisor 说"把代码库也读了""分析一下这个 repo"时:git clone 代码库、
  并行派发多个 codex subagent 做静态分析,结合论文内容把实现细节写回 Papers/ 笔记。
argument-hint: "<Papers/笔记路径 或 repo URL> [--passes architecture,mechanism,repro,affordance]"
allowed-tools: Read, Write, Edit, Glob, Grep, Bash, Agent
---

# Repo Digest — 论文代码库分析

## Purpose

论文有 paper-digest,代码库没有对应物——但 CUA/AFE 方向的关键工作(环境 runtime、
benchmark、训练基建)贡献主要在系统实现里,论文正文往往只给 high-level 描述。
本 skill 把代码库 clone 下来做一次**静态分析**(不执行代码),将"论文怎么说 ↔ 代码怎么做"
的对照、论文没写的实现细节、复现路径写回对应 Papers/ 笔记,丰富报告细节、
为后续实验设计提供 grounding。

分析是重活,采用 **workflow + 多 codex subagent 并行**编排(复用 backfill 已验证的
`codex exec` 模式):Codex 写各分析 pass,Claude 独立抽查核对后才入笔记
(Codex 写 / Claude 查,同 daily-papers codex digest 的分工纪律)。

## Steps

### Step 1:定位 repo 与论文笔记

- 输入是 `Papers/` 笔记路径 → 读 frontmatter `code` 字段取 repo URL。
- 输入是 repo URL → Grep `Papers/` 找对应笔记;**无笔记则先跑 paper-digest**(本 skill
  不替代论文消化,代码分析必须有论文笔记作对照基准)。
- 读取笔记的 Summary / Method / Key Results / Evidence Ledger,抽出 3-8 个
  「要到代码里核对的点」:核心机制、关键超参、benchmark 生成/评测逻辑、
  论文声称的系统能力。

### Step 2:Clone 到 staging + 规模概览

```bash
mkdir -p Workbench/tmp/repo-digest && cd Workbench/tmp/repo-digest
git clone --depth 1 <repo_url> <repo-name>
cd <repo-name> && git rev-parse HEAD   # 记录 commit sha
find . -name "*.py" -o -name "*.ts" -o -name "*.js" | grep -v test | head -50
```

- **>2GB 或含大量数据/权重文件**:停下向 Supervisor 确认(或用 sparse-checkout 只取代码目录)。
- 记录 commit sha——所有分析结论锚定到这个版本。

### Step 3:生成分析任务清单(pass 划分)

默认 3 个 pass,环境/benchmark 类 repo 加第 4 个:

| Pass | 回答什么 | 输出 |
|:--|:--|:--|
| `architecture` | 目录结构、模块划分、入口、核心抽象、代码规模、外部依赖 | `analysis/architecture.md` |
| `mechanism` | Step 1 的核对点逐条定位到 file:line;论文没写的实现细节(trick、默认超参、fallback、hardcode) | `analysis/mechanism.md` |
| `repro` | 环境依赖、怎么跑起来、训练/评测脚本入口、数据准备、明显的算力/API 要求 | `analysis/repro.md` |
| `affordance`(环境类) | 环境暴露给 agent/trainer 的接口面:obs/action 空间、reset/state/fork、verifier/reward 的实现与精度边界 | `analysis/affordance.md` |

### Step 4:并行派发 codex subagent

对每个 pass 起一个 codex 进程(并行,Bash `run_in_background` 或 `&`;600s 超时轮询):

```bash
codex exec -s workspace-write --add-dir "Workbench/tmp/repo-digest/<repo-name>" \
  "你在分析论文《<title>》的官方代码库(只读分析,不执行任何代码/不安装依赖)。
   任务:<该 pass 的问题清单,含 Step 1 的核对点>。
   要求:每个结论必须给出 file path 与行号区间;不确定就写不确定,禁止编造。
   把结果写入 <staging>/analysis/<pass>.md。"
```

- **codex 不可用时的 fallback**:用 Agent 工具并行派发同等数量的分析 subagent
  (Explore 型,只读),prompt 同上。
- 单 pass 失败/超时:重试一次,仍失败则记录并降级(该 pass 缺失不阻塞其他 pass)。

### Step 5:Claude 独立核查(Codex 写 / Claude 查)

对每个 pass 的输出:

1. 抽查 **3-5 个 file:line 引用**:用 Read 打开对应文件行,确认引用真实且支撑结论。
2. 抽查发现编造/错位 → 该 pass 整体降级为 `unverified`,关键结论不入笔记,或重跑该 pass。
3. 与论文笔记对照:实现与论文描述**不一致**的点(论文说 A 代码做 B)单独列出——
   这是最有信息量的发现,须给出双方证据(paper locator + file:line)。

### Step 6:写回 Papers/ 笔记

用 Edit 在对应笔记**末尾追加**(不动已有章节):

```markdown
## Implementation Analysis

> repo: <url> @ <commit sha 前 7 位>,分析日期 YYYY-MM-DD,静态分析未执行代码

**架构**:<2-4 句:模块划分与核心抽象>

**论文 ↔ 代码对照**:

| 论文 claim | 代码位置 | 一致性 |
|:--|:--|:--|
| <claim> | `path/file.py:L120-145` | 一致 / 论文未提 X / 不一致:<说明> |

**论文没写的实现细节**:<trick、默认超参、fallback、hardcode,各带 file:line>

**复现路径**:<依赖、入口脚本、数据准备、算力要求,2-4 句>

**Affordance 面**(环境类):<接口清单 + verifier 实现方式,各带 file:line>
```

frontmatter 追加 `repo_analyzed: "<commit sha 前 7 位> YYYY-MM-DD"`。
若发现改变对论文判断的重大不一致,在 Strengths & Weaknesses 不改写原文,
而是由 Supervisor 决定是否修订(在会话中明确报告该发现)。

### Step 7:清理 + 记录

```bash
rm -rf Workbench/tmp/repo-digest/<repo-name>
```

追加日志到 `Workbench/logs/YYYY-MM-DD.md`:

```markdown
### [HH:MM] repo-digest
- **input**: [[Papers/YYMM-ShortTitle]] | <repo url> @ <sha>
- **passes**: architecture ✓ / mechanism ✓ / repro ✓ / affordance ✓|skip
- **spot_check**: 抽查 N 处 file:line,M 处属实(M<N 时说明降级处理)
- **findings**: <一句话:最有信息量的发现,尤其论文↔代码不一致点>
- **status**: success / partial
```

## Guard

- **只读静态分析,禁止执行 repo 代码**:不 pip install、不跑训练/评测脚本、不下载数据集/
  权重。执行类复现不在本 skill scope(属实验侧,需 Supervisor 单独授权)。
- **不 clone 私有 repo**、不在任何输出里留 token/凭证;staging 目录已 gitignore,
  **禁止把外部代码 commit 进 vault**。
- **入笔记的每个关键结论必须带 file path(+行号)grounding**;Codex 输出未经 Step 5
  抽查不得入笔记;抽查失败的 pass 降级或重跑,不得带病写入。
- **只追加 `## Implementation Analysis` 节**,不修改笔记其他章节;重跑时替换该节而非重复追加。
- 代码分析结论表述为"该版本实现如此"(锚定 commit sha),不外推为"论文结果由此复现"。
- 论文↔代码不一致点必须双方证据齐全才可写"不一致";单边证据写"待核"。

## Verify

- [ ] 笔记含 `## Implementation Analysis` 节,头部有 repo URL + commit sha + 分析日期
- [ ] 对照表每行有 file:line;抽查记录在日志(N 处抽查、M 处属实)
- [ ] frontmatter `repo_analyzed` 已写入
- [ ] staging 下该 repo 目录已删除;`git status` 无外部代码文件混入
- [ ] 日志 entry 五项齐全;重大不一致发现已在会话中向 Supervisor 明确报告

## Examples

`/repo-digest Papers/2606-CUAGym.md` → frontmatter code 取 GitHub URL → shallow clone
(sha a1b2c3d)→ 4 pass 并行(含 affordance)→ 抽查 12 处 file:line 全属实 →
笔记追加 Implementation Analysis:task/state/reward.py 的 RLVR tuple 生成逻辑定位到
`cua_gym/reward.py:L88-140`,发现论文未提的 reward clip 与 retry fallback;
affordance 面确认 reset/fork 只暴露给 trainer 未暴露给 agent(支撑 AFE gap 判断)→
清理 staging + 日志。