dsh-plugin-zotero:把本机 Zotero 文献库接进 DSH

前言

在 DSH 里写论文综述、做文献问答时,常见做法是手动复制题录或把 PDF 丢进对话。Zotero 里已有分类、附件和全文,却和会话草稿脱节;若要让模型检索文库,还要单独配 MCP、担心工具名冲突和权限边界。下面介绍社区插件 dsh-plugin-zotero(维护者 peijiping),它基于 cordis,用「人侧只读面板 + 模型侧自持 MCP 桥接」两条通道,把本机 Zotero 接到 DSH,职责分开、互不依赖。

这是什么

dsh-plugin-zotero 是 DSH 的客户端类插件:在右侧栏提供「Zotero 文献库」面板,通过宿主 web server 自注册的 /dsh-zotero/api/* 只读访问 Zotero 本地 API;同时插件自己连接本机 Zotero 集成 MCP,把工具以 mcp__zotero__* 注册给模型,并支持在插件页按工具逐个开关。MCP 未启动时面板仍可用;Zotero 未运行时模型侧工具自然不可用。当前 npm 包版本为 0.1.2,许可证 MIT,GitHub 约 6 stars。分类与索引见 SkillHub 目录页,源码与说明见 GitHub 仓库。

核心功能

人侧:右侧栏只读面板

面板分三块(仓库 README 有截图说明):

  • 顶部状态栏:显示 Zotero 是否已连接、模型工具是否可用,并提供刷新。
  • 左侧分类树:按 Zotero 分类逐级浏览,支持按标题 / 摘要搜索。
  • 右侧详情:展示条目元数据、附件与全文。

向当前会话草稿插入内容有三种方式,均不自动发送、不抢焦点,文本会携带 itemKey / collectionKey 供模型接续操作:

  1. 单条目引用(「添加条目引用」)。
  2. 全文划词摘录。
  3. 整目录引用。

面板严格只读:不提供新建、改名、删除分类等写操作按钮。

模型侧:集成 MCP 与工具开关

插件通过 mcp-bridge 直连本机 Zotero 集成 MCP(默认 http://127.0.0.1:23120/mcp),按配置中的 disabledMcpTools 过滤后注册工具。README 注明:集成 MCP 实测版本 zotero-integrated-mcp v1.1.0 暴露约 20 个工具,其中 5 个会改变文库结构(如 create_collection、delete_collection 等)。若希望模型侧尽量只读,可在插件页「MCP 工具」区关掉对应工具并保存;面板功能不受影响。

Host 侧对 /dsh-zotero/api/* 有信任栅栏:仅接受 GET、拒绝跨站 sec-fetch-site,且 Host 须为回环地址,用于降低 DNS rebinding 风险。

安装与启用

环境要求

  • dsh 版本满足 >=0.2.0-rc.2 <0.3.0-0(package.json 的 engines.dsh)。
  • Zotero 桌面版已运行,并开启本地 API(见下文「Zotero 本地 API」)。
  • (可选)本机 Zotero 集成 MCP 监听 23120,供模型侧工具使用。

从 npm 安装时包内为预构建产物(lib/ + client/client.js),不运行构建脚本,无需 allowBuilds 授权。

安装命令

# 从 npm(推荐)
dsh plugin --profile <profile> add dsh-plugin-zotero

也可在 dsh 插件页通过市场索引源安装(README 示例索引:https://awesome-dsh-plugin.com/index.json)。

安装后启动对应 profile 的 dsh,在浏览器打开终端打印的 web 地址(profile 默认常为 http://127.0.0.1:3080,以实际配置为准)。

开启 Zotero 本地 API

  1. 打开 Zotero → 设置 → 高级。
  2. 勾选 「允许本机其他应用与 Zotero 通信」(默认端口 23119,仅回环监听)。

验证:

curl http://127.0.0.1:23119/api/

期望输出:Zotero is running。未勾选时读端点可能返回 403,面板会显示「Zotero 未连接」并提示启用步骤。

插件页配置

在 dsh 顶部 「插件」 面板展开 dsh-plugin-zotero,点 「配置 dsh-plugin-zotero」。主要字段如下(保存写入 ~/.dsh/profiles/<profile>/cordis.patch.yml,无需重启即可生效):

API 设置

字段 默认 说明
zoteroBaseUrl http://127.0.0.1:23119 本地 API 探活与请求
requestTimeoutMs 5000 单次请求超时
fulltextMaxBytes 204800 附件全文返回上限(超出截断)
defaultLimit 50 面板列表默认条数

MCP 设置

字段 默认 说明
mcpUrl http://127.0.0.1:23120/mcp 集成 MCP 探活与调用
mcpProbeTimeoutMs 800 TCP 探活超时
disabledMcpTools [] 被停用的 MCP 工具原始名列表

「MCP 工具」区可逐项开关;关闭并保存后,模型侧不再注册该工具。

典型用法

  1. 浏览与引用:右侧栏打开「Zotero 文献库」→ 在分类树中选条目或搜索 → 在详情区使用「添加条目引用」或划词摘录 → 内容进入当前会话草稿,再自行编辑或发送。
  2. 整目录引用:在分类上执行整目录引用,把目录结构相关信息写入草稿,便于让模型按 collectionKey 继续检索或归纳。
  3. 模型检索与精读:确认集成 MCP 已运行且所需 mcp__zotero__* 工具已启用 → 在对话中让模型调用工具检索、读全文或(若未关闭写工具)维护分类;写工具默认全开,按需收紧。

无活跃会话时,仍可通过右侧栏 guide 入口打开「Zotero 文献库」面板。更完整的入口说明、交互与 toast / 错误对照见仓库内 插件使用说明。

适用场景与注意

适合谁:日常用 Zotero 管理文献、又在 DSH 里写长文或做文献向问答的用户;希望面板浏览与模型工具共用同一套本机文库,且能单独关掉危险写工具的场景。

权限与安全:插件以当前 dsh 进程权限运行,会访问本机 127.0.0.1 上的 Zotero API 与 MCP。安装前建议阅读 源码 与 MIT 许可证,确认符合你的安全策略。社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,插件来自社区维护者。

与「只读」相关的边界:UI 面板只读;模型侧是否只读取决于你启用了哪些 MCP 工具。MCP 未起不影响面板只读浏览。

结尾

dsh-plugin-zotero 把 Zotero 本地文库拆成「人侧草稿引用」和「模型侧可开关工具」两条线,减少手工搬运题录,并在插件页集中管理 API 与 MCP 参数。需要索引与简介时可打开 SkillHub 插件页;安装、配置与架构细节以 GitHub README 及 docs/ 下文档为准。

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

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

Xiaoye