# Paper Dialog Reader

> 通过 A/B 双 agent 对话式渐进披露深度解读 arXiv 论文。A 持有全文、给出结构化摘要，B 模拟未读原文的好奇读者、循环追问；用对话桥接作者意图与读者理解的 gap。适用于 '帮我深度读这篇论文'、'对话式阅读 arxiv:xxxx'、'dialog paper reading'、'渐进式论文解读' 等场景。

- Skill: `justcyl/paper-dialog-reader` (Agent Skill)
- Install (CLI): `npx skillmds@latest add justcyl/paper-dialog-reader`
- Raw SKILL.md: https://api.skillmd.com/api/skills/justcyl/paper-dialog-reader/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: justcyl (https://skillmd.com/u/justcyl)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/justcyl/paper-dialog-reader

---


# paper-dialog-reader

两个 agent 合作渐进式解读一篇 arXiv 论文。

- **Agent A（你）**：持有论文全文，负责生成结构化摘要、回答所有问题。
- **Agent B（spawned minion）**：只能看到 A 输出的内容，模拟"没读过原文的好奇读者"，持续追问直至理解充分。

整个过程是渐进式披露：B 的每轮追问都在桥接"作者实际写了什么"与"摘要覆盖到了什么"之间的 gap。

---

## Step 0：获取论文全文

使用 `ph-paper-helper` skill 获取论文内容。

```bash
alias ph='uv run --project ~/project/ph2 ph'

# 导入并触发全文提取（MinerU 解析，可能需要数十秒到数分钟）
ph fetch --paper-id arxiv://<ID>

# 轮询直到 fetch_state=done
ph fetch --paper-id arxiv://<ID> --include-content
```

**等待 fetch_state=done 后**，用 `--include-content` 拿到全文 Markdown。

如果用户给的是完整 URL（如 `https://arxiv.org/abs/2310.06825`），提取其中的 arXiv ID（`2310.06825`）。

---

## Step 1：Agent A 生成结构化初始摘要

拿到全文后，你作为 Agent A，按以下 7 个维度生成初始摘要。每个维度都要**扩写而非压缩**——目标不是总结，而是把论文的思路完整呈现出来。

```
## [论文标题]

### 1. 问题提出
这篇论文在解决什么问题？这个问题为什么值得研究？背景是什么？

### 2. 前人工作与当前水平
这个方向上已有哪些方法？各自的思路是什么？目前的 SOTA 是什么？存在哪些不足？

### 3. 本文 Idea 的来源
作者的核心洞察是什么？他们从哪个观察/直觉出发？为什么这个方向有希望？

### 4. 方案详述
作者提出了什么方法？关键设计是什么？架构/算法的核心是什么？与前人最关键的区别在哪里？

### 5. 实验设计
用了哪些数据集和 baselines？评估指标是什么？实验如何验证核心 claim？有哪些消融？

### 6. 结论与主要发现
主要实验结果是什么？核心 claim 是否成立？有哪些意外发现或局限？

### 7. 未来方向
作者提出了哪些开放问题？还有哪些方向值得探索？
```

生成摘要后，**将完整摘要呈现给用户**，然后进入 Step 2。

---

## Step 2：启动 Agent B 开始追问

将 A 的初始摘要作为 B 的唯一输入，使用 `spawn --agent paper-reader-b` 启动 Agent B。

B 是一个专用 minion（`~/.pi/agent/agents/paper-reader-b.md`），它没有任何工具，只会根据 prompt 中提供的内容提问。

**spawn 调用示例（伪代码）：**

```
spawn --agent paper-reader-b --task "
下面是 Agent A 对一篇 AI 论文的结构化摘要。
你没有读过原文，只能基于下面的内容来提问。

---
[Agent A 的完整初始摘要]
---

请识别摘要中最让你感到困惑、或描述不够充分的地方，提出 3-5 个最重要的问题。
"
```

> **信息隔离是关键**：不要在 task prompt 里塞入任何原文内容。B 的上下文只有 A 说过的话。

---

## Step 3：A 回答 B 的问题

你作为 Agent A，基于**论文全文**逐一回答 B 的每个问题。

回答原则：
- 每个回答都要**扩写**——引用论文中的具体内容、公式、实验数据、图表描述
- 如果论文原文有相关的例子或图示，在回答中描述出来
- 如果论文对某个问题没有明确回答，如实说明，并给出你基于上下文的推断

将 B 的问题和 A 的回答整理成对话格式，呈现给用户：

```
---
### 第 N 轮对话

**B 问：** [问题]
**A 答：** [详细回答]

**B 问：** [问题]
**A 答：** [详细回答]
...
---
```

---

## Step 4：继续追问循环

将本轮所有内容（初始摘要 + 所有历史 Q&A）作为新的上下文，再次 `spawn --agent paper-reader-b`，让 B 继续追问。

每次 spawn 都是无状态的新 minion，所以必须把完整历史作为 task prompt 传入。

**后续轮次 spawn 调用示例（伪代码）：**

```
spawn --agent paper-reader-b --task "
下面是你（B）和 Agent A 到目前为止关于一篇 AI 论文的完整对话记录。
你没有读过原文，只能基于下面的内容来提问。

---
[初始摘要]

[第1轮 Q&A]

[第2轮 Q&A]

...
---

基于目前你已经了解的内容，提出 3-5 个新的、更深入的问题。不要重复已经问过的问题。
"
```

---

## 终止条件

以下任一条件满足时，结束对话循环：

1. **B 输出 `no_more_questions`**：对话自然结束，将 B 的理解总结呈现给用户
2. **用户主动说"可以了" / "stop" / "结束"**：在当前轮结束后停止
3. **已进行 5 轮以上**：询问用户是否继续

结束时，输出一份完整的阅读记录，包含：
- 论文基本信息（标题、arXiv ID、年份）
- A 的初始结构化摘要
- 所有轮次的 Q&A 对话
- B 的最终理解总结（如果有）

---

## 注意事项

**关于信息隔离：**
B 每次只能看到 A 说过的内容。你在 spawn B 时，不要在 prompt 里塞入任何原文信息——B 的上下文只有 A 的摘要和历史 Q&A。这个信息隔离是这个工作流的核心机制：B 的困惑 = 真实读者的困惑。

**关于扩写 vs 总结：**
这个 skill 的目标是帮用户理解全文，而不是提炼精华。A 应当尽可能扩写，把论文中的细节铺开，而不是再次压缩。

**关于 ph fetch 的等待：**
MinerU 全文解析可能需要几分钟。在等待期间，可以先用 `ph fetch --metadata-only` 获取论文标题、摘要等基本信息，告知用户正在处理的论文，然后等待全文完成。

**关于 spawn 的正确姿势：**
每次 spawn B 都是一个全新的、无状态的 minion——它没有记忆。这意味着每次 spawn 时都要把完整的历史上下文作为 prompt 的一部分传入。

**关于轮次控制：**
前几轮 B 通常会问宏观问题（方法细节、实验设计），后几轮会问更深入的问题（某个设计选择的动机、局限性的根源）。这是正常的渐进深入过程。

