| name | paper-dialog-reader |
| description | 通过 A/B 双 agent 对话式渐进披露深度解读 arXiv 论文。A 持有全文、给出结构化摘要,B 模拟未读原文的好奇读者、循环追问;用对话桥接作者意图与读者理解的 gap。适用于 '帮我深度读这篇论文'、'对话式阅读 arxiv:xxxx'、'dialog paper reading'、'渐进式论文解读' 等场景。 |
paper-dialog-reader
两个 agent 合作渐进式解读一篇 arXiv 论文。
- Agent A(你):持有论文全文,负责生成结构化摘要、回答所有问题。
- Agent B(spawned minion):只能看到 A 输出的内容,模拟"没读过原文的好奇读者",持续追问直至理解充分。
整个过程是渐进式披露:B 的每轮追问都在桥接"作者实际写了什么"与"摘要覆盖到了什么"之间的 gap。
Step 0:获取论文全文
使用 ph-paper-helper skill 获取论文内容。
alias ph='uv run --project ~/project/ph2 ph'
ph fetch --paper-id arxiv://<ID>
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 个新的、更深入的问题。不要重复已经问过的问题。
"
终止条件
以下任一条件满足时,结束对话循环:
- B 输出
no_more_questions:对话自然结束,将 B 的理解总结呈现给用户
- 用户主动说"可以了" / "stop" / "结束":在当前轮结束后停止
- 已进行 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 通常会问宏观问题(方法细节、实验设计),后几轮会问更深入的问题(某个设计选择的动机、局限性的根源)。这是正常的渐进深入过程。