dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
学术工具,TypeScript 实现,不需要 Python 或 MCP 服务:通过本地 API 或 zotero.org 访问 Zotero 文库(检索、批注、全文、导出引文;开启写入后可按 DOI / arXiv 编号入库、写笔记、改标签),Zotero 没开时自动启动;同时检索 arXiv、OpenAlex、Crossref、Semantic Scholar、PubMed、Europe PMC,并通过浏览器窗口检索知网和 Google Scholar;阅读开放获取全文、从 DOI 注册机构取引文、核验参考文献;内置 11 个学术技能。
DeepSeek Harness 的学术插件,三部分:
全部用 TypeScript 实现,不需要 Python,也不需要另装 MCP 服务。所有检索源都可以不填密钥使用。检索知网和 Google Scholar 需要本机装有 Chrome 或 Edge。

截图中回答里的引用角标由 dsh-better-display 渲染;不装它时引用显示为普通链接。
| 核验参考文献 | 整理 Zotero 里的 PDF 批注 |
|---|---|
![]() | ![]() |
| 输入框里用斜杠调用技能 | 设置页 |
|---|---|
![]() | ![]() |
| 功能 | 说明 |
|---|---|
| 文库检索 | 按标题、作者、年份检索,或在所有字段、笔记和 PDF 全文里检索;可限定分类、标签、条目类型、已存搜索 |
| 条目详情 | 全部元数据、摘要、标签、所在分类,以及子笔记、附件和 PDF 里的高亮与批注(带页码) |
| 阅读全文 | 分段读取正文,带页码标记;或给出问题,返回最相关的若干段落 |
| 导出引文 | BibTeX、BibLaTeX、RIS、CSL JSON,或按引文样式(APA、IEEE、Nature、GB/T 7714 等)生成参考文献和文内引用,均由 Zotero 本身生成 |
| 入库 | 按 DOI 或 arXiv 编号添加文献,元数据取自 DOI 注册机构和 arXiv;已有的不重复添加;arXiv 论文附带 PDF 链接 |
| 笔记 | 在条目下新建笔记、新建独立笔记,或向已有笔记追加内容(用 Markdown 书写) |
| 整理 | 增删标签、移入移出分类、新建分类 |
入库、笔记、整理三项默认关闭。插件不提供删除条目的功能。
文库有两个来源:
| 来源 | 需要 | 能看到的内容 | 写入 |
|---|---|---|---|
| 本机 Zotero | Zotero 7 或更高,开启本地 API | 整个文库,包括尚未同步的内容和本地的 PDF | 需要 Zotero 10 或更高;首次写入时 Zotero 弹窗确认 |
| zotero.org | 在设置里填写 API 密钥 | 已同步的内容;PDF 全文只有存放在 Zotero 云端存储时才能读(WebDAV 同步的读不到) | 密钥有写入权限即可 |
默认为“自动”:先连本机 Zotero;它没有运行时自动启动(窗口立刻最小化到任务栏,不抢焦点);启动不了且填了密钥时,改用 zotero.org,结果里会注明来自已同步的副本。已存搜索只能由本机 Zotero 执行。
| 功能 | 说明 |
|---|---|
| 多源检索 | 一次查询多个数据源,同一篇论文(预印本与正式发表版、不同数据源的记录)合并为一条;可按年份、开放获取、arXiv 分类筛选,按相关度、时间或被引数排序。按时间排序时只在近两年(或指定年份起)的相关论文里排,并剔除出版年份在未来的错误记录 |
| 论文详情 | 按 DOI、arXiv 编号、PMID、PMCID 或标题查一篇论文:完整摘要、作者、期刊、被引数、开放获取链接、是否已撤稿 |
| 引用关系 | 谁引用了它、它引用了谁、相关论文 |
| 阅读全文 | arXiv 论文读 HTML 版(保留章节结构,公式为 LaTeX),PubMed Central 文章读结构化全文,其余读开放获取 PDF;可先看目录再读某一节,或按问题找段落 |
| 获取引文 | 从 DOI 注册机构取 BibTeX、RIS、CSL JSON 或指定样式的参考文献,不由模型凭记忆书写 |
| 核验参考文献 | 逐条检查 DOI 是否存在、是否指向另一篇文章,标题、第一作者、年份是否相符,是否已撤稿;各数据源都查不到的,中文文献再到知网查,其他语言的到 Google Scholar 查 |
| 知网、Google Scholar | 在 paper_search 里点名使用(sources 填 cnki 或 googlescholar),返回题录:标题、作者、年份、刊名、被引数、链接 |
| 下载 PDF | 把开放获取的 PDF 保存到工作区的 papers/ 目录 |
只获取合法开放的全文,不绕过付费墙;读不到时如实告知。
这两个网站不向程序开放接口,无头浏览器和直接请求都会被拦下。插件的做法是在屏幕外打开一个普通的 Chrome 或 Edge 窗口,用它自己的浏览器配置(不读取你平时浏览器里的登录和记录),像人一样打开网站检索:知网从首页的检索框输入,Google Scholar 打开检索页。
| 技能 | 用途 |
|---|---|
academic-literature-review | 文献综述:制定检索策略、多轮检索与引文追溯、筛选、精读、按主题综合、核验引用 |
academic-paper-reading | 论文精读:三遍阅读,输出结构化笔记,区分作者的结论与证据,可存入 Zotero |
academic-related-work | 为自己的论文写“相关工作”:找审稿人期待看到的文献,说明与本文的区别 |
academic-proposal | 开题报告、研究计划、基金申请书的科学部分 |
academic-writing | 论文写作:章节起草、论证重构、首次投稿材料 |
academic-polishing | 论文润色、学术翻译、正文精简、LaTeX 排版问题 |
academic-reviewer | 模拟审稿:投稿前从审稿人角度评估 |
academic-response | 回复审稿意见:逐点回复、返修信、修订稿 |
academic-statistics | 统计报告审查:实验单元、重复、不确定度、检验方法、图注统计 |
academic-data-statement | 数据与代码可用性声明、数据仓库选择、FAIR 元数据 |
academic-ref-verifier | 参考文献逐字段核验 |
后七个改编自 nature-skills(Apache-2.0),只改了技能名称(nature-* 改为 academic-*,避免与你自己安装的 nature-skills 冲突),详见 skills/THIRD_PARTY_NOTICES.md。前四个为本插件编写。技能加载时,插件会附上一段说明,告诉 AI 用本插件的检索和 Zotero 工具来完成技能里提到的文献查询步骤。
DSH 桌面版:插件 → 添加插件,输入 @copylee/dsh-academic,安装后启用。
命令行(web 等其他 profile):
dsh plugin --profile web add @copylee/dsh-academic@latest
要求:DSH 0.2.0-rc.2 或更高。使用本机 Zotero 需要 Zotero 7 或更高(写入需要 Zotero 10),并在 Zotero 的 设置 → 高级 中勾选“允许此计算机上的其他应用程序与 Zotero 通讯”;Zotero 不必事先打开,用到时会自动启动(自动最小化目前只在 Windows 和 macOS 上做)。只用 zotero.org 时不需要安装 Zotero。论文检索需要能访问相应的学术网站;如需代理,使用 DSH 的全局代理设置。
直接说要做什么,例如:
技能也可以在输入框里用斜杠点名,例如 /academic-literature-review。
| 工具 | 作用 |
|---|---|
zotero_search | 检索文库;mode=everything 时同时在笔记和 PDF 全文里找,命中子条目时返回它所属的文献 |
zotero_browse | 列出分类(树形路径)、标签、已存搜索、文库(个人文库与群组) |
zotero_get | 一个条目的全部元数据,以及它的笔记、附件、PDF 批注 |
zotero_read | 读文库中论文的正文:分段读取,或按问题返回最相关的段落 |
zotero_export | 导出 BibTeX / BibLaTeX / RIS / CSL JSON,或格式化的参考文献与文内引用 |
zotero_attachment | 附件在本机的文件路径,或网页链接附件的 URL(路径只有本机 Zotero 能给出) |
zotero_add | 按 DOI / arXiv 编号入库(需开启写入) |
zotero_note | 新建或追加笔记(需开启写入) |
zotero_organize | 增删标签、调整分类、新建分类(需开启写入) |
paper_search | 多源检索论文 |
paper_get | 查一篇论文的完整信息 |
paper_citations | 被引、参考文献、相关论文 |
paper_read | 读开放获取全文:目录、某一节、按问题找段落、分段读取 |
paper_cite | 从 DOI 注册机构取引文 |
reference_verify | 核验参考文献 |
paper_download | 保存开放获取 PDF 到工作区 |
Zotero 条目用 zotero://user/0/item/<KEY>(群组为 zotero://group/<id>/item/<KEY>)标识;论文用 DOI、arXiv:<编号>、PMID:<编号> 标识。
设置 → 学术,每项改动立即保存并生效。
| 设置 | 默认 | 说明 |
|---|---|---|
| 启用 Zotero 工具 | 开 | 关闭后 AI 看不到任何 Zotero 工具 |
| 允许修改文库 | 关 | 开启后提供入库、笔记、整理三个工具 |
| 文库来源 | 自动 | 自动:本机优先,连不上时用 zotero.org;仅本机;仅在线 |
| 自动启动 Zotero | 开 | 用到本机 Zotero 而它没有运行时启动它,窗口最小化到任务栏,用完不关闭 |
| Zotero 程序路径 | 空 | 自动查找失败时才需要填写 |
| zotero.org API 密钥 | 空 | 在 zotero.org/settings/keys 创建;读文库勾选 library access,读云端 PDF 勾选 file access,修改文库勾选 write access。保存在凭据存储里,不在设置文件中 |
| 默认文库 | user | user 为“我的文库”,群组文库填数字 ID |
| 本地服务地址 | http://127.0.0.1:23119 | 只接受本机地址 |
| 启用论文工具 | 开 | 关闭后 AI 看不到 paper_ 和 reference_verify 工具 |
| 默认数据源 | 除 DBLP、知网、Google Scholar 外全部 | 检索时默认查询的数据源 |
| 用浏览器检索知网和 Google Scholar | 开 | 关闭后这两个来源不可用,插件不会启动浏览器 |
| 浏览器程序路径 | 空 | 自动查找 Chrome / Edge 失败时才需要填写 |
| 联系邮箱 | 空 | 发给 Crossref、OpenAlex、NCBI、Europe PMC、Unpaywall;填写后查找开放获取全文时才询问 Unpaywall |
| Semantic Scholar / OpenAlex / NCBI API Key | 空 | 都是可选的,只影响限速。保存在凭据存储里,不在设置文件中 |
| 默认引文样式 | apa | CSL 样式 ID |
| 单次读取全文的长度 | 12000 字符 | 分段阅读时每段的上限 |
| 单次检索条目数上限 | 20 | 一次检索最多返回的条目数 |
| 启用内置技能 | 开 | 可逐个开关 |
设置页顶部显示本机 Zotero 的连接状态、版本、是否支持写入;填了密钥时还显示 zotero.org 的连接状态和密钥权限。
每次修改有两道确认:
通过 zotero.org 修改文库时没有第二道确认,凭密钥的写入权限执行。
修改条目时带上读取时的版本号,文库在此期间被改动过则放弃本次修改。
paper_get、paper_read、paper_cite 进一步处理,除非结果里带有 DOI 或 arXiv 链接。知网默认按发表时间排列结果。连续检索太多会被要求人机验证或暂时拒绝。127.0.0.1)和 DSH 之间传递,随后作为工具结果发给你在 DSH 里配置的模型。api.zotero.org,附件文件从 Zotero 的存储服务下载;密钥只发给 api.zotero.org。文库来源设为“仅本机”时不会访问它。www.cnki.net / kns.cnki.net 或 scholar.google.com;浏览器的配置(含这两个网站的 Cookie)保存在 ~/.dsh/storages/copylee-academic/browser/。export.arxiv.org、arxiv.org、ar5iv.labs.arxiv.org、api.openalex.org、api.crossref.org、api.semanticscholar.org、eutils.ncbi.nlm.nih.gov、www.ebi.ac.uk(Europe PMC)、dblp.org、doi.org、api.unpaywall.org(仅在填写邮箱后),以及这些数据源给出的开放获取 PDF 所在的网站。.credentials.yaml,记录名 copylee-academic/<名称>)里;没有凭据存储的宿主上保存在 ~/.dsh/storages/copylee-academic/keys.json。它们不写进插件设置,所以导出的插件备份和 cordis.patch.yml 里没有密钥,设置页也只知道某个密钥是否已填。0.5.0 及更早版本把密钥写在设置里:升级后首次启动会自动移走。在那之前导出过的备份里仍有密钥,分享前请检查,必要时到对应网站重新生成密钥。~/.dsh/storages/copylee-academic/papers/。~/.dsh/storages/copylee-academic/zotero-key.json,只对签发它的那个 Zotero 实例有效。Zotero 部分通过它的本地 API(http://127.0.0.1:23119/api/,与 Zotero Web API v3 同构)读写文库;引文导出和格式化由 Zotero 完成。全文来自 Zotero 的全文索引或本机 PDF。在线文库走 zotero.org 的 Web API(https://api.zotero.org),路径相同,只是把 users/0 换成密钥所属用户的 ID,所以两边共用同一套工具。本机 Zotero 没有应答时,Windows 上用一段 PowerShell 启动它并在窗口出现的瞬间最小化、把焦点还给原窗口;macOS 上用 open -g -j。
论文检索直接调用各数据源的公开接口,结果统一为同一种记录,按 DOI、arXiv 编号、PMID 和标题合并,再用倒数排名融合排序。每个数据源按其要求限速(arXiv 每 3 秒一次),遇到 429 / 503 按 Retry-After 重试。全文按 arXiv HTML → ar5iv → PubMed Central → 开放获取 PDF 的顺序获取,PDF 用 pdf.js 提取文字。按问题找段落时用 BM25 排序,分词使用 Intl.Segmenter,中文也按词切分。
知网和 Google Scholar 通过 Chrome DevTools 协议驱动浏览器:用 --remote-debugging-port=0 启动(只监听本机),在页面里读取结果列表的文字,不依赖 Playwright 等库。窗口是有界面的普通窗口,不伪装浏览器特征。
技能通过 DSH 的技能注册接口提供,优先级低于你自己安装的同名技能。
来自文库和网络的文本在交给模型时都标记为不可信内容。
pnpm install
pnpm run typecheck
pnpm test
pnpm run build
node scripts/zotero-smoke.mjs "attention" # 只读,需要本机 Zotero 在运行
node scripts/search-smoke.mjs "graph neural networks" # 访问真实的学术接口
node scripts/browser-smoke.mjs # 打开浏览器检索知网和 Google Scholar
node scripts/cloud-smoke.mjs # 只读访问 zotero.org,需要环境变量 ZOTERO_API_KEY
node scripts/import-nature-skills.mjs <nature-skills 的本地克隆> # 重新生成改编的技能
src/ 是源码,lib/ 由构建生成,skills/ 随包发布。测试用内存里的假 Zotero 服务和假网络,不访问外网。
MIT。skills/ 中改编自 nature-skills 的部分为 Apache-2.0,见 skills/THIRD_PARTY_NOTICES.md。