面向 Agent 研究工作流的 Zotero 插件:搜索文献、查看元数据与笔记、提取与问题相关的证据段落、打开原文 PDF、生成引用与参考文献表。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-zotero
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Vncntvx/dsh-zotero
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
dsh-zotero
dsh-zotero 是面向 Agent 研究工作流的 Zotero 插件。Agent 可以直接从你的文献库中搜索文献、查看元数据和笔记、提取与问题相关的证据段落、打开原文 PDF,并生成引用和参考文献表。
工具
| 工具 | 用途 |
|---|---|
zotero_search |
按标题/作者/年份搜索(library/collection/savedSearch/publications 作用域),everything 模式连全文索引一起搜 |
zotero_browse |
发现库结构:库、合集树(层级导航)、保存的检索、标签 facet、条目类型及其字段 |
zotero_get |
读取单条文献的元数据,可选返回笔记、批注、附件清单;fields:"all" 保留全部元数据 |
zotero_children |
探索单条文献的子对象图:直连笔记、附件,以及挂在 PDF 下的批注 |
zotero_retrieve |
按查询词返回最相关的证据段落(批注/笔记/摘要/全文),支持多附件检索 |
zotero_changes |
基于本地事务版本的增量感知:哪些条目/合集/全文索引变了、什么被删除 |
zotero_attachment |
将文献 ref 解析为已验证的磁盘路径或链接 URL |
zotero_export |
生成引用、参考文献表、BibTeX/BibLaTeX/RIS/CSL JSON |
安装
dsh plugin --profile <name> add dsh-zotero
从 GitHub 源码安装:
dsh plugin --profile <name> add github:Vncntvx/dsh-zotero
本地 tarball:
cd dsh-zotero && npm pack
dsh plugin --profile <name> add ./dsh-zotero-*.tgz
安装后重启新建会话,Agent 即可使用 Zotero 工具。
插件在 设置 → Zotero 中提供一个配置页(与 General、Models、Plugins 并列的左侧导航项),可调整 API 地址、并发限制、全文检索开关等参数,保存即生效。详见 配置。
前置条件
- Zotero ≥ 7 桌面版支持读取;写入需要 Zotero 10。启用本地 API:设置 → 高级 → "允许其他应用程序与 Zotero 通信"
- Node.js ≥ 22.19(或 ≥ 24)
- 宿主 dsh 0.1.7-rc.2(恰好该版本:
engines.dsh与全部@deepseek-ai/dsh-*peer 均为 exact pin,不兼容其他 dsh 版本) - 本地 API 地址
http://127.0.0.1:23119/api;读取无需认证,Zotero 10 写入使用本地签发的 write key
使用示例
Agent 在对话中根据用户需求逐步调用工具,每次调用的结果作为下一步的上下文。
用户:帮我找 Risk 相关的论文
Agent → zotero_search(query: "Risk", itemTypes: ["journalArticle"])
5 篇匹配结果,用户选择前 3 篇
用户:第一篇的摘要说了什么?
Agent → zotero_get(ref: "zotero://user/0/item/ABCD1234")
返回摘要全文(标准模型已含 abstract)
用户:这篇里关于方法论的讨论,帮我找出来
Agent → zotero_retrieve(ref: "zotero://user/0/item/ABCD1234", query: "methodology",
sources: ["fulltext", "note"])
返回相关段落,带页码和来源
用户:把这三篇导出为 BibTeX
Agent → zotero_export(refs: ["zotero://user/0/item/ABCD1234",
"zotero://user/0/item/EFGH5678",
"zotero://user/0/item/IJKL9012"], format: "bibtex")
生成 BibTeX 条目;界面可下载,模型读到同样的文本
更多示例见 功能概览。
限制
- 默认只读:只有显式开启
writeEnabled后,三个写工具才可创建研究笔记、加标签或加入个人库合集;每次写入都先展示计划卡等待批准(没有关掉它的开关),另加 Zotero 10 本地授权 - 只访问本机:网络请求仅发往
127.0.0.1:23119 - 证据排序是词项相关性:基于 BM25,按查询词与 passage 的词频匹配度排序
- 导出是静态文本:工具以文本形式返回,模型读到的就是它;Zotero 面板可以一键复制或下载文件(
.bib/.ris/.json等),不需要手动誊抄 - 全文证据依赖 Zotero 索引:未索引的 PDF 无法提供全文段落
- 附件深度取决于宿主:
zotero_attachment返回文件位置,继续阅读 PDF 需要宿主具备对应能力
权限与外部副作用
- 网络:只向
http://127.0.0.1:23119/api发起 HTTP 请求(不跟随重定向),resolveConfig强制 loopback 地址 - 文件:只读,
zotero_attachment用异步stat校验 Zotero 返回的附件路径,不写文件系统 - 持久化:设置页保存到
$DSH_HOME/settings.yaml的zotero:用户层;启用“总是允许”时,Zotero write key 还会按签发实例保存到宿主 credentials store - 无 Shell / native / 后台任务:插件不执行 shell 命令、不加载 native 模块、不启动常驻进程
- 重启:安装或卸载插件后需要重启 dsh 并新建会话;配置修改保存即热更新,无需重启
文档
| 文档 | 内容 |
|---|---|
| 快速上手 | 安装、前置条件、首次验证 |
| 功能概览 | 来源面板、对话集成、证据提取、导出 |
| 工具参考 | 全部 11 个工具的参数、返回值、错误码 |
| 配置 | 24 个配置字段、默认值、热更新 |
| 架构 | 数据流、各层职责、设计边界 |
| 开发指南 | 构建、测试、本地开发 |
| 使用情景 | 真实对话验收用例与日常问法 |
| 问题排查 | 12 个常见问题的症状和处理 |
开发
npm install # 本仓库与 ../deepseek-harness 并列;仅嵌套在 harness 内时需加 --no-workspaces
npm test # 单元测试(vitest,mock Zotero 服务器)
npm run typecheck # tsc --noEmit,覆盖 node、test、client 三个项目
npm run build # tsc 编译 node 部分到 lib/,esbuild 编译浏览器部分到 lib/client.js
npm run dev # tsc --watch,host half 热更新
npm run dev:client # esbuild --watch,浏览器部分热更新
lib/ 放 Node 侧代码,lib/client.js 放浏览器侧代码(设置页和 Zotero tab)。你用 dev-lib.cordis.yml overlay 跑完整插件流程,见开发指南。本仓库与 ../deepseek-harness 并列,属本地暂存布局。
许可证
MIT:自由使用、修改和分发。
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 31002
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 3752
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1127
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 498
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 465
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 432
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。