Hongcheng-LI/dsh-zotero
DeepSeek Harness 的 Zotero 工具:通过 Zotero 本地 API 搜索文库、读取元数据/全文、列出附件、下载 PDF、管理笔记。
项目介绍Project Overview
dsh-zotero 是 DeepSeek Harness 的 Zotero 工具插件,通过本地 API(7+)让 agent 直接检索文献库、读取条目元数据与摘要、列出分类与 PDF 附件、读 PDF 全文,零核心改动、无需 Key。适用于写作时调取本地文献、生成读书笔记的场景。注意:笔记写入受本地 API 只读限制通常不可用,写入请手动操作。
dsh-zotero is a DeepSeek Harness plugin that exposes Zotero library operations through the local API. It enables agents to search the library, read item metadata and abstracts, list collections and PDF attachments, read PDF full text, and retrieve attachment paths. Use it when a workflow needs direct access to a locally running Zotero library without API keys. Note: note write operations are generally blocked by the read-only local API and must be done manually.
请帮我了解并安装插件:【dsh-zotero】【https://github.com/Hongcheng-LI/dsh-zotero】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add dsh-zotero
把 Hongcheng-LI/dsh-zotero 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-zotero
DeepSeek Harness 的 Zotero 工具插件:让 agent 直接检索你的 Zotero 文献库、阅读条目元数据与摘要、列出分类和 PDF 附件、读 PDF 全文、代写读书笔记。通过 Zotero 本地 API(7 代及以上可用,实测 9.x;http://127.0.0.1:23119)访问,无需 API Key,纯 Node 实现,零核心改动。
独立仓库:本仓库是 dsh-zotero 的唯一正本(曾作为 dsh-scientific monorepo 的
plugins/zotero,2026-08 拆分独立)。配套的 skills / workflows 仍在 dsh-scientific。
前置条件
- 本机安装并运行 Zotero 7 及以上(本地 API 自 7 代引入;本项目在 Zotero 9.0.6 / Windows 上实测通过);
- 打开 Zotero:设置 → 高级 → 通用 → 勾选「允许本机上的其他应用程序与 Zotero 通信」。
兼容性说明:读取类工具(检索/条目/全文/附件路径/笔记读取)在 Zotero 9 上全部实测通过。笔记写入(create/append/update/delete)受本地 API 只读限制不可用(见工具表说明)。
工具一览
| 工具 | 作用 |
|---|---|
zotero_collections |
列出文献库的所有分类(collectionKey + 条目数),用于限定检索范围 |
zotero_search |
按关键词检索文献库(标题/作者/年份),支持条目类型、分类、标签、年份区间(sinceYear/beforeYear)、排序、分页;mode 控制返回粒度省 token |
zotero_recent |
列出最近添加的条目("我刚导入的文献"场景) |
zotero_item |
按 key 读取条目详情:作者、期刊、DOI、摘要、标签、附件列表 |
zotero_fulltext |
读条目全文纯文本:优先读 Zotero 全文缓存(.zotero-ft-cache,零下载),无缓存时现场解析本地 PDF(pdfjs-dist,约 0.3s)并写缓存;仅远程链接附件才下载到工作区 |
zotero_attachment_path |
返回附件在 storage 的原始绝对路径,让 read 工具零拷贝直读 |
zotero_download |
把条目的 PDF 附件下载到会话工作区(默认),供模型用 read 工具阅读 |
zotero_notes |
列出某条目的子笔记,或全库按关键词搜笔记正文 |
zotero_note |
笔记写入:create 新增 / append 追加 / update 更新 / delete 删除。⚠️ 实测多数版本的本地 API 为只读(POST/PATCH/DELETE 未开放),写操作会返回明确提示并建议手动操作 |
示例对话:
在我的 Zotero 里搜一下 transformer 相关的论文,挑 2020 年以后的,把第一篇的全文读一遍,给我写个摘要存进笔记。
安装
dsh plugin --profile web add dsh-zotero
或从 GitHub 安装:
dsh plugin --profile web add github:<你的账号>/dsh-zotero#<commit>
装好后重启 dsh web。插件自带空配置,不会弄崩启动;Zotero 未运行时工具会返回明确的连接提示。
配置(可选)
默认配置即可用(本地库、端口 23119)。如需自定义,在你的 profile($DSH_HOME/profiles/<name>/)的 cordis.patch.yml 里覆盖 tool-zotero 行,然后重启:
- id: tool-zotero
config:
baseUrl: http://127.0.0.1:23119 # Zotero 本地 API 地址
library: user # user(我的文献库)或 group:<群组ID>
downloadDir: D:/papers # 附件下载目录,缺省存到会话工作区
dataDir: D:/ZoteroData # Zotero 数据目录(含 profiles.ini),默认自动探测
storageDir: .../zotero/storage # 直接指定 storage 目录(zotero_fulltext / attachment_path 用)
maxAttachmentBytes: 67108864 # 单附件下载上限,默认 64MB
maxFulltextChars: 80000 # zotero_fulltext 返回的最大字符数,默认 80000
maxLimit: 50 # 检索结果条数上限,默认 50
timeoutMs: 15000 # 本地 API 超时(毫秒)
全文与附件路径:插件通过本地 API /file 端点的 302 重定向拿到附件的真实磁盘路径(自定义数据目录也能自动识别,无需配置),全文优先读 Zotero 自己维护的 .zotero-ft-cache 缓存(与附件同目录)。dataDir/storageDir 配置仅在重定向不可用时作为兜底。
开发
npm install
npm test # 构建单元测试(离线,不需要 Zotero)
npm run test:smoke # 真实环境冒烟测试:对本机 Zotero 完整跑一遍工具链
冒烟测试覆盖 zotero_recent → zotero_item → zotero_search → zotero_fulltext → zotero_attachment_path → 笔记 create/append/update/delete 全链路,需要 Zotero 7+(实测 9.0.6)在线(不可达时自动 skip,不报错)。笔记测试会创建并清理自己的笔记,附件下载进系统临时目录,不会污染你的文献库和工作区;如果当前 Zotero 版本的本地 API 不支持 PATCH/DELETE 写操作,会以 skip/diagnostic 形式明确报告而不是误报失败。指定 API 地址:ZOTERO_SMOKE=1 ZOTERO_BASE_URL=http://127.0.0.1:23119 node --test test/smoke.mjs。
结构遵循 DSH 插件规范:dsh.plugin.json 元信息、cordis.patch.yml 运行时注入行、src/ 源码、lib/ 构建产物。
Zotero tools for DeepSeek Harness: search your library, read item metadata and abstracts, list collections and PDF attachments, download PDFs into the session workspace, and attach notes — all through the Zotero local API (no API key needed).
Requires Zotero 7+ (tested on 9.0.6 / Windows) running locally with "Allow other applications on this computer" enabled in Settings → Advanced.
| Tool | What it does |
|---|---|
zotero_collections |
List library collections with keys and counts |
zotero_search |
Quick-search items; filters by type, collection, tag, year range; sort/pagination; mode controls verbosity |
zotero_recent |
Recently added items |
zotero_item |
Full metadata of one item plus attachment keys |
zotero_fulltext |
Full text as plain text (Zotero fulltext cache first, PDF download fallback) |
zotero_attachment_path |
On-disk path of a stored attachment (zero-copy read) |
zotero_download |
Download an attachment (PDF) to the workspace |
zotero_notes |
List an item's child notes or search notes library-wide |
zotero_note |
Create / append / update / delete notes |
Install: dsh plugin --profile web add dsh-zotero, then restart dsh web. Optional config (baseUrl, library, downloadDir, maxAttachmentBytes, maxLimit, timeoutMs) goes under the tool-zotero row of your profile's cordis.patch.yml.
License
MIT
ruvnet/ruflo
amruthpillai/reactive-resume
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/colleague-skill
nocobase/nocobase
Tencent/WeKnora