dsh-paperdesk:在 DSH 里把 arXiv 检索、本地文库与三层精读笔记串成一条工作流

前言

在 DeepSeek Harness(DSH)里做研究或读论文,常见做法是:浏览器里搜 arXiv、PDF 丢进某个文件夹、笔记另开 Markdown 或 Notion。Agent 能帮你搜链接,但题录、PDF、全文和笔记往往不在同一份数据里,对话里说的「精读某篇」也很难和本地状态对齐。

dsh-paperdesk 是社区维护者 shiyan688 发布的 工作流 类插件(SkillHub 分类:工作流)。它把「收集 → 读 → 记住」三段接在一套本地文库上:arXiv 检索入库、题录 / PDF / 全文落盘,并用 L1 / L2 / L3 固定结构写精读笔记。宿主半区与浏览器 UI 同包分发,lib/ 即运行时,无需构建步骤。

这是什么

插件 npm 包名 dsh-paperdesk,仓库 shiyan688/dsh-paperdesk,许可证 MIT。简介与 README 一致:DSH 论文工作台 —— arXiv 检索 → 本地文库(metadata / PDF / full text)→ L1-L2-L3 三层阅读笔记;Host + browser 在同一 package 里,无 build step。

读论文在 README 里被拆成三段,多数工具只覆盖「收集」。本插件额外用表格约束第三段「记住」:

层 回答什么 为什么单独一层
L1 速览 这篇说了什么?一句话贡献? 筛掉不值得往下读的
L2 理解 方法、关键设计、哪张表撑住结论? 区分「看懂摘要」和「看懂工作」
L3 批判 假设成立吗?哪里可疑?能搬回自己课题什么? 很多「读了但没读进去」缺的是这一层

界面与 Agent 工具读写同一份文库,可手点侧栏,也可直接对模型说「精读 1706.03762」。

核心功能

侧栏「论文」界面

装妥并在 web profile 重启后,侧栏底部出现 论文 入口(README 描述为 📚 论文)。主要能力包括:

  • 文库:按未读 / 在读 / 已读、标题、作者、标签筛选;右侧详情与三层笔记编辑。
  • arXiv 检索:关键词或 arXiv 语法(例如 ti:"world model" AND cat:cs.LG);可「入库 + 下载全文」或「仅题录」。
  • 导入 PDF:系统目录选择器或手工填绝对路径扫描;多 PDF 可批量导入;会抽取全文并用首页正文推断标题。

详情里还可改状态、打星、改标签、面板内分段读全文、打开文件所在目录、移出文库。

Agent 工具(7 个)

与界面互通的同一文库:

工具 用途
paper_search arXiv 检索,返回编号 / 标题 / 作者 / 分类 / 摘要片段
paper_add 入库(默认下载 PDF 并抽取全文)
paper_list 列文库,可按状态 / 关键词 / 标签筛
paper_read 读全文(缺 PDF 会下载、缺全文会抽取,分页返回)
paper_note 写 L1 / L2 / L3 笔记,或改状态、评级、标签
paper_pdf 单独下载 PDF 并抽取全文
paper_import 本地已有 PDF 收入文库

README 中的自然语言示例:

找 5 篇 diffusion policy 的论文收进来
精读 1706.03762,写完三层笔记
我读过但没写笔记的有哪些?

数据目录

文库根目录由配置 root 决定;留空时为 <dsh 进程工作目录>/.dsh-paperdesk。典型布局:

<root>/
  state/index.json     题录 + 状态 + 标签 + 三层笔记(唯一事实来源)
  pdf/<id>.pdf
  text/<id>.txt
  notes/<id>.md        人类可读三层笔记
  .tools/extract_pdf.py

arXiv 的 <id> 为不带版本号的编号(如 1706.03762),索引内为相对路径,整目录可拷贝到其他机器。

安装与启用

官方安装命令(README 原文):

dsh plugin --profile web add dsh-paperdesk

dsh plugin 会把包装进 profile 的 node_modules,并在 package.json 的 dsh.profile.bundles 登记;包内 cordis.patch.yml 作为 patch 插入插件行。配置项示例:

- insert:
    - id: dsh-paperdesk
      name: 'dsh-paperdesk'
      config:
        root: ''          # 文库根;留空 = <cwd>/.dsh-paperdesk
        pdfCommand: ''    # pdftotext 兼容 CLI;留空自动探测
        pythonCommand: '' # 留空自动探测 python/python3/py

装完后必须核对 bundles

若包只进了 dependencies 而未进入 dsh.profile.bundles,插件会静默不加载。请运行:

node node_modules/dsh-paperdesk/scripts/check-dsh-compat.mjs --profile web

若提示不在 dsh.profile.bundles 里,可手工把 dsh-paperdesk 追加到 $DSH_HOME/profiles/web/package.json 的 bundles 数组,例如:

"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-paperdesk"] } }

然后重启 profile(dsh web)。启动日志中应出现类似:

[paperdesk] 0.1.0 就绪 · 文库 <root> · 抽取器 <抽取器> · 工具 7 个 · 界面接口 已挂载

(日志里的版本号以你实际安装的包为准;当前仓库 package.json 为 0.1.3。)

健康检查:GET http://127.0.0.1:<端口>/paperdesk/api/health(需带浏览器用的 token)。

卸载:

dsh plugin --profile web remove dsh-paperdesk

典型用法

  1. 在 arXiv 检索 里用语法搜题,选「入库 + 下载全文」。
  2. 在 文库 里把状态改为「在读」,边读面板内全文边填 L1 → L2 → L3。
  3. 对 Agent 说「列出在读且没写 L3 的论文」,再用 paper_note 或界面补笔记。

本地已有 PDF 时:侧栏 导入 PDF 或工具 paper_import;路径须为绝对路径(插件设计如此,相对路径会被拒绝)。

依赖、兼容与注意

  • Node ≥ 20;宿主半区无第三方运行时依赖(除 peer 的 @deepseek-ai/schemastery 等组合配置 schema)。
  • PDF 全文抽取在需要时才依赖外部工具,顺序:pdfCommand → Python + PyMuPDF / pypdf → PATH 上的 pdftotext。都没有时题录、检索、笔记、导入仍可用,抽取失败会在 /paperdesk/api/health 说明。
  • 兼容性策略:软版本门仅提示、能力探测优先、只用 ctx.tools.register / ctx.webServer.register / ctx.get 等稳定面;细节见仓库 COMPATIBILITY.md。
  • 已知限制:UI 为浮层面板而非中央主面板;「打开所在目录」仅宿主与浏览器同机有意义;arXiv 版与会议版不去重;抽取质量受 PDF 排版影响。
  • 安全:API 校验请求来源为本机回环;导入读你显式给出的绝对路径;子进程用 spawn 数组形式,不经 shell。

插件在当前 DSH 进程权限下读写磁盘与调用外部抽取命令。安装前请自行查看 GitHub 源码 与 MIT 许可证;DSH 社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

若你希望 DSH 里论文流程从「搜到 PDF」延伸到「Structured 笔记且 Agent 能接着读同一份库」,dsh-paperdesk 把检索、文库与 L1-L2-L3 笔记绑在一处,并给出侧栏与 7 个工具两套入口。更多说明见 GitHub README,提 issue 时 README 建议附上 /paperdesk/api/health 输出。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜