Paper-Agent 在 opencode 中的实现

让模型总结论文,最烦的是它说得很顺,追问证据却找不到原文。这套配置多加了一轮独立阅读,再把有分歧的地方交给另一个代理核对。

这套设计参考了 Paper-Agents-OSS 的分阶段阅读和多模型校验思路。在 opencode 里用四个代理和一个 skill 来做,下面是文件放法和调用流程。

核心文件:

总体结构

1
2
3
4
5
paper 主代理:第一分析
├── reader-deep:盲读原文,给出独立的第二分析
├── arbiter:对比分歧,按原文裁决
├── diagnose:分歧过大时指出症结
└── paper-reading skill:提供论文阅读检查表

用户只和 paper 对话,由它决定是否需要独立阅读、仲裁或诊断。四个代理共用 paper-reading 里的阅读检查表。

安装目录

项目级配置建议这样放:

1
2
3
4
5
6
7
8
9
10
11
12
your-project/
├── opencode.json
├── AGENTS.md
└── .opencode/
├── agents/
│ ├── paper.md
│ ├── reader-deep.md
│ ├── arbiter.md
│ └── diagnose.md
└── skills/
└── paper-reading/
└── SKILL.md

如果想全局使用,就放到 ~/.config/opencode/agents/ 和 ~/.config/opencode/skills/。配置、agent、skill 改完后要重启 opencode。

配置重点

opencode.json 把默认代理设为 paper,指定 skill 路径,并配置各代理的权限。文件里的 $schema 可供编辑器检查字段。

完整配置直接下载:opencode-paper-suite.json。

示例允许读文件和搜索;主代理访问网络、写文件、运行命令时需要确认。三个子代理禁止编辑、运行命令和继续派生任务,只能加载 paper-reading。主代理还预留了 mermaid-expert 和 matplotlib 的权限,使用前需要自行安装对应 skill。

简要介绍:四个代理如何分工

paper:主代理

paper 是 primary agent。它负责理解需求、读取原文、组织分析、派出子代理、整合结果。

分析中要标出证据位置,尤其要检查正文、图表与摘要的说法是否一致。

reader-deep:独立阅读子代理

reader-deep 只看原文,不看主代理草稿。它输出独立阅读结果,包括问题、贡献、方法、实验、限制和证据位置。

派任务时只给论文和阅读要求。主代理如果把自己的判断一并发过去,第二份分析很容易顺着它写,独立核查也就白做了。

arbiter:仲裁代理

它比较两份分析,回原文核对分歧,再修正、补全分析文档。比如一方说“全部任务都有提升”,另一方说“只在部分数据集有效”,就需要逐项核对主表和实验设置,并把依据交回主代理。

diagnose:诊断代理

仲裁后仍有疑问,再让 diagnose 查原因:是否看错表格、混淆指标、误解符号,或者论文给出的实验不足以判断。查不清的部分保留为疑问,由主代理在交付时说明。

模型按自己的账户和预算配置。可以给独立阅读换一个模型,但换模型本身不能保证结论正确,原文位置仍要核对。短论文或局部问题也不必每次都调用四个代理。

Skill 放什么

paper-reading 里记录阅读时要查的东西:

  • 主要结论对应哪段原文、哪张图表。
  • 方法的输入、输出、假设和关键步骤。
  • 实验的数据集、对照方法、指标、主表和消融。
  • 作者写明的限制,以及阅读时发现的疑点。

何时派活、由谁收口,写在 agent 配置和项目规则里。

使用流程

如果项目已经有 opencode.json 或 AGENTS.md,把相关配置合进去,别直接覆盖。新项目可以按下面的步骤放文件:

  1. 下载 opencode-paper-suite.json,改名为 opencode.json。
  2. 下载四个 agent 文件,放入 .opencode/agents/,并去掉 .txt 后缀。
  3. 下载 paper-reading.skill.md.txt,放到 .opencode/skills/paper-reading/SKILL.md。
  4. 下载 AGENTS.routing.md.txt,改名为 AGENTS.md。
  5. 重启 opencode。
  6. 扔给它一篇论文。

可以这样问:

1
请用 paper agent 读这篇论文。我要知道它解决什么问题、方法是否站得住、实验支持到什么程度,以及主要漏洞在哪里。

怎么检查它有没有认真读

拿到结果后,抽几个重要判断,顺着它给的页码、图号或表号翻回去看。尤其留意“显著提升”“适用于所有场景”这类概括,确认原文的测试范围是否支持。找不到依据的结论,继续追问或删掉;多一份模型意见也不能替代这一步。

上一篇如何在 opencode 中组织主代理、子代理与 Skill下一篇 岱宗盒子 —— 交兵安卓工具箱发布
DISCUSSION评论与交流以上 · 欢迎留下你的想法
评论区加载中