dsh-endnote:在 DeepSeek Harness 里先查本地 EndNote,再在侧栏读 PDF

前言

在 DeepSeek Harness(DSH)里做文献调研,常见做法是直接联网搜标题或 DOI,再让模型根据摘要作答。若你平时把文献管在 EndNote 里,且 PDF 已在本地,这套流程容易绕过已有馆藏:重复找链接、摘要对不上手头的全文、回答也难以和「你库里那篇」对齐。

下面介绍的 dsh-endnote(维护者 LHWKHYDO)把顺序反过来:先只读检索本机 EndNote 库,命中后在 DSH 右侧栏打开对应 PDF,再边读边问。插件分类为「记忆」,当前 GitHub 星标为 0;它属于社区插件生态,目录见 SkillHub 插件页,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-endnote 是 DSH 的文献调研插件,定位是「EndNote-first」:提问找文献时,模型在系统提示约束下优先调用 endnote_search,本地有结果就用标题、分组、摘要和本地 PDF 路径继续;需要全文时再经 endnote_open 交给宿主预览。EndNote 库全程只读,索引产物落在插件自己的 .data 目录,不向库目录写入。

核心功能

检索与阅读链路

工作方式可以概括为:

用户提问(找文献)
        │
        ▼
  系统提示(插件注入)──► 先调 endnote_search,不先联网
        │
        ▼
  endnote_search ── 命中 ──► 标题 + 分组 + 摘要 + 本地 PDF 路径
        │
        ▼
  endnote_open(path) ── 校验文件存在 ──► meta {plugin, path, open}
        │
        ▼
  客户端半边 ──► 右侧栏用宿主 PDF 预览打开该文件

要点如下:

  • 只读:不修改 EndNote 库;索引脚本以 SQLite mode=ro&immutable=1 打开 sdb/sdb.eni。
  • 先本地、后联网:本地 0 命中时,才联网拿规范标题/DOI,再回本地二次关联;仍无结果再列网络候选。
  • 命中即读:endnote_open 校验 PDF 真实存在后打开预览;自动打开仅对本次会话里新执行的 endnote_open 生效。
  • 侧栏面板:库概览(统计、最近阅读/最近导入、一键刷新);标题与文件夹链接触发系统文件管理器。

工具一览

工具 作用
endnote_search 多关键词 AND,检索标题/作者/年份/期刊/关键词/DOI 等;支持 group、read=read/unread
endnote_open 校验 PDF 并在侧栏打开(openInSidebar=false 时只回路径)
endnote_recent 最近阅读列表
endnote_status 库路径、索引、条目数、带 PDF 数等
endnote_config 写回配置,保存立即生效
endnote_rebuild 调用 scripts/endnote_index.py 重建索引并对账磁盘 PDF

纯 CLI 环境也可使用上述工具,只是没有右侧栏 PDF 预览。

环境要求

  • DSH 桌面版或 dsh web(需右侧栏与侧栏插件页;纯 CLI 工具仍可用)
  • 本机安装 EndNote,且存在 …Data 库目录
  • Node.js 18+(运行插件与测试);仓库自带 vendor/,无 npm 依赖、不需要 npm install
  • Python 3(仅执行 endnote_rebuild / 手动建索引时需要)

安装与启用

仓库说明:克隆后自带 schemastery 等 vendored 依赖,面向离线或注册表不可达的新机器,避免安装时拉取 @deepseek-ai/schemastery 失败。

先在本地取得插件目录(README 示例为替换 <your-name> 后的 clone 地址,实际仓库为 https://github.com/LHWKHYDO/dsh-endnote)。然后在 DSH 侧栏「插件」页用插件管理器选择该目录安装(等价于 plugin_manager: install_bundle,target 传仓库路径)。装完后强刷浏览器(Ctrl+Shift+R)。侧栏「插件」页应出现 dsh-endnote 卡片,侧栏导航也有同名入口。

插件未声明 engines.dsh,不因 DSH 版本兼容检查被拦;只要宿主具备「插件管理器 + 侧栏」即可。

安全提示:插件以当前 DSH 进程权限访问本机 EndNote 库与 PDF 路径;安装前应阅读源码与 MIT 许可证,确认路径与隐私策略可接受。

首次使用与配置

  1. 侧栏进入 dsh-endnote → 配置页 →「添加」选择你的 My EndNote Library.Data 目录 → 点「切换」。
  2. 执行一次 endnote_rebuild 建索引;也可手动运行:
python scripts/endnote_index.py --lib "<库目录>.Data" --out "<插件目录>/.data/endnote_index.json"
  1. 调用 endnote_rebuild 或 endnote_status 确认条目数、带 PDF 数。

配置写在插件行的 config(cordis.patch.yml),推荐用图形化配置页修改;字段为 volatile,保存后立即生效。

键 默认值 说明
libraryPath ~/Documents/My EndNote Library.Data 当前生效库根目录(只读)
libraries [] 已存库列表 {name, path}
indexFile 空 自定义索引路径;留空则按库自动生成
dataDir <插件目录>/.data 索引、阅读日志与缓存
pythonPath python 索引脚本解释器
openInSidebar true 命中后是否自动在右侧栏打开 PDF
limit 8 单次检索默认条数

多库各自独立索引;某库首次切换若无索引,跑一次 endnote_rebuild 即可。库目录搬家后改 libraryPath,不必一定重建索引(路径按当前库根重新拼接)。

典型用法

在对话中向模型提出文献问题即可;插件注入的系统提示会要求先 endnote_search。例如:

  1. 让模型按关键词检索本地库(多词为 AND)。
  2. 对带 PDF 的命中条目调用 endnote_open,在右侧栏阅读。
  3. 用 endnote_recent 回顾近期读过的文献;侧栏面板可查看统计与最近导入(新导入需先 endnote_rebuild 才进入统计)。

维护者提供的测试命令(开发/自测):

node test/core.test.mjs
node test/tools.test.mjs
node test/client.test.mjs

适用场景与注意

适合:已在 EndNote 中维护个人或课题组库、PDF 与条目已关联,希望在 DSH 里做「馆藏优先」的精读式调研的用户。

隐私(据 README):除正常对话外,插件不向外部发送数据;检索、打开、面板均在本地完成。.data/ 含绝对路径与元数据,已被 .gitignore 排除,勿提交版本库。

已知限制:

  • 无 sidebarRight / sessions 时客户端半边降级,工具仍可用。
  • 同一 PDF 再次打开会聚焦已有标签页。
  • webServer / connection 缺失时面板相关 HTTP 路由降级,六个工具不受影响。

结尾

dsh-endnote 把文献调研默认改成本地 EndNote 优先,并把命中 PDF 接到 DSH 右侧预览,适合「库里有、要先读原文再问」的习惯。进一步了解可看 SkillHub 目录页 与 GitHub 仓库。当前 package.json 版本为 0.1.2。

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

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

Xiaoye