dsh-ai-library
DSH 的本地资料馆:把本机文件与产物索引成可搜索的卡片树,支持 PDF / Office / 图片预览,另带论文检索(arXiv、OpenAlex、Crossref 等)、把网页存成 markdown 快照、插件市场标签页,以及已装插件资源的同步与一键切换(人设、表情包图集、鲸鱼挂件素材)。包含 18 个工具与 22 条宿主路由。
安装
dsh plugin --profile web add dsh-ai-library
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✓ |
| 2 列装 | ✓ |
| 3 挂载 | ✓ |
| 4 启动 | — |
四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-ai-library · 资料馆
仓库:<https://github.com/Instant-KING/dsh-ai-library> · npm:dsh-ai-library
把本地多源资料库渲染成 DeepSeek Harness 的原生面板:左侧三级分类树、中间卡片网格、右侧预览(自带 pdf.js 阅读器),支持条目编辑与拖拽分组。
- 自带 pdf.js 4.10.38,不需要外网 CDN
- Markdown 现场渲染、Office 文件转 PDF 预览
- 拖拽卡片改分组、批量打标签、新建/编辑/删除条目
- 数据全部留在本地;除你主动检索 / 手动同步市场 / 存网页快照外不联网(论文检索请求公开 API,AnySearch 匿名请求,见下文 key 配置;网页正文可交给 DSH 的
read_page抽取,此时本插件自身不发请求)
大肥鱼会替你做这些
- 像妈妈一样的大肥鱼:你把东西弄得到处都是,它会把东西收好 —— 本机产物自动入库、自动分类、随时能搜。
- 要搜好用的插件? 大肥鱼自己去插件市场翻,卡片上直接写清 star、版本、兼不兼容。
- 要写漂亮的前端组件? 把 react-bits 这类仓库丢进来建库,大肥鱼就在馆藏里搜现成组件来做页面 UI —— 不用从零抄。
- 要搜真实存在的论文? 大肥鱼自己调十个源的 API(arXiv / OpenAlex / Crossref / DOAJ / Europe PMC / INSPIRE / Zenodo / HAL / DataCite / OpenAIRE),带 DOI 和 PDF 链接,不会编文献。
安装
三种方式,选一种(装完重启 DSH):
# ① npm(推荐) dsh plugin --profile desktop add dsh-ai-library # ② 直接从 GitHub dsh plugin --profile desktop add github:Instant-KING/dsh-ai-library # ③ 本地目录(开发用,不装包) # clone 后在 profile 的 cordis.patch.yml 里用绝对路径 insert: # - insert: # - id: dsh-ai-library # name: E:/path/to/dsh-ai-library/lib/index.js
装完第一次打开面板会自动建空库;把文件丢进 <下载目录>/ai-library/items/ 就能看到。
论文检索需要配哪些 key
十个学术源(arXiv / OpenAlex / Crossref / DOAJ / Europe PMC / INSPIRE / Zenodo / HAL / DataCite / OpenAIRE)免 key 直接用。
下面几个是可选的付费/受限源,不配只是查不到它的结果,不会报错:
平台 · 配置项 · 去哪申请 · 用途
Sciverse · paperKeys.sciverse(sv- 开头) · <https://sciverse.space/> → 开发者控制台 · 元数据 + 语义检索(RAG) + 读原文
IEEE Xplore · paperKeys.ieee · <https://developer.ieee.org/> · IEEE 论文
ScienceDirect · paperKeys.elsevier · <https://dev.elsevier.com/> · Elsevier 期刊
Springer · paperKeys.springer · <https://dev.springernature.com/> · Springer 论文
AnySearch(可选) · paperKeys.anysearch · <https://www.anysearch.com/console/api-keys> · 网页检索;留空也能用(匿名免费配额)
两种填法(任选)
1. 面板里填:工具栏「论文检索」→ 右上角「配置 key」→ 粘贴 → 保存(立即生效,不用重启)
2. 改文件:插件目录 config.json
{
"paperKeys": {
"sciverse": "sv-你的token",
"ieee": "",
"elsevier": "",
"springer": "",
"anysearch": ""
}
}
⚠️ 语义检索(RAG)只支持 Sciverse:没配 sciverse 时面板提示「需要 sciverse key」,
接口返回 400 并说明原因,不会静默失败。
配置
插件目录下的 config.json(可不建,全部字段都有默认值)。参考 [config.example.json](config.example.json)。
字段 · 默认 · 说明
root · <下载目录>/ai-library · 数据根目录,其余路径从它推出
libraryFile · <root>/library.js · 手写条目
projectFile · <root>/project-items.js · 批量导入条目(可选)
marketFile · <root>/market-items.js · 市场同步产物(可选)
githubFile · <root>/github-items.js · GitHub 项目同步产物(可选)
userItemsFile · <root>/user-items.json · 面板编辑器写入的条目
itemsDir · <root>/items · 文件根目录(只允许读这里)
cacheDir · <root>/.cache · 缓存
translateCache · <cache>/translate · 翻译产物
marketCache · <cache>/market.json · 市场原始目录缓存
vendorDir · <插件>/vendor · 内置 pdf.js / three.js
soffice · 自动探测 · LibreOffice 可执行文件(Office 转 PDF)
motionDir · 空(关闭) · 外部只读挂载的提示词库
translateUrl · http://127.0.0.1:11008 · PDFMathTranslate 服务
workspaceDir · 空 · 自动入库扫描的根目录
watchDirs · [] · 自动入库监听的目录
autoCaptureOnBoot · false · 启动后自动扫一次 watchDirs
autoCaptureProject · 自动入库 · 自动入库的分组名
autoCaptureDepth · 2 · 自动入库递归深度
toolsEnabled · true · 是否注册 14 个 AI 工具
marketUrl · https://api.dshmk.com/ · 插件市场源
marketEnabled · false · 是否自动同步市场(默认关,开了启动后自动拉)
marketLimit · 300 · 市场最多收录条数
marketTtlMs · 6 小时 · 市场缓存有效期
paperKeys · {} · { ieee, elsevier, springer },论文检索用
所有路径字段都支持 ~(会展开成用户主目录)。环境变量(优先级高于 config.json):
AILIB_ROOT AILIB_MOTION_DIR AILIB_WORKSPACE SOFFICE PDFMATHTRANSLATE_URL
论文检索已内置(lib/paper.js,纯 Node),不需要 Python,也不需要外部项目。
🔐 密钥说明:config.json里的paperKeys(Sciverse / IEEE / Elsevier / Springer / AnySearch)
以明文保存在插件目录,同名项目通常都是这样。请确保该目录权限不被他人读取;
如果插件装在共享盘或多用户机器上,建议改用环境变量 SCIVERSE_API_TOKEN 等方式,或只填需要的 key。
主色(主题)
面板的主色(高亮、选中态、极光背景)来自 CSS 变量 --ailib-accent,解析顺序:
config.json 的 accent(或环境变量 AILIB_ACCENT) ↓ 没填 DSH 主题变量 --dsw-alias-brand-primary / --dsw-static-deepseek-500(DSH 若暴露了就用它) ↓ 都没有 插件默认金色 #e6c16f(视觉与旧版完全一致)
想让插件跟 DSH 品牌色一致,在 config.json 里写:
{ "accent": "#4176E6" }
按钮尺寸、圆角、动效都不变,只换主色;极光背景的主色也会跟着变。
表情包图集(与 dsh-meme 联动)
左侧「表情包图集」直接列出 dsh-meme 的图集(内置包 + ~/.dsh/meme-packs 下你导入的):
- 选一个图集 → 主区显示封面、张数、图片网格
- 点「启用这个图集」→ 写
~/.dsh/dsh-expression.json的enabledPacks,表情包插件立即生效 - 「导入图集…」填一个解压好的目录路径(需含
index.db),会复制进~/.dsh/meme-packs/<id> - 「删除」只删用户导入的包,内置包删不掉
数据格式
library.js 是普通 JS:
window.LIBRARY = {
title: '我的资料库',
items: [
{
id: 'k-1', // 唯一,必填
kind: 'paper', // paper / plugin / doc / note …
status: 'available',
title: '一维谐振子',
summary: '升降算符解法',
source: 'arXiv',
tags: ['量子力学'],
notes: ['摘自2026-03讲座'],
files: ['items/papers/harmonic.pdf'], // 相对 items/
preview: {
variants: [
{ label: '原文', src: 'papers/harmonic.pdf' },
{ label: '笔记', src: 'notes/harmonic.md' },
],
},
},
],
groups: {
'k-1': '力学', // id → 子分类,不写就落到「未分类」
},
}
把文件丢进 <root>/items/,条目里写相对路径即可。
合并优先级
多个数据源按顺序合并,后写的覆盖先写的: 外部挂载源 < 批量导入 < 市场同步 < GitHub < library.js < user-items.json
user-items.json 优先级最高,所以编辑器改的东西永远生效,但不会动你的 library.js。
编辑
操作 · 入口
新建 · 面板右上「+ 新建」
编辑 · 卡片右上 ✎
删除 · 卡片右上 🗑(手写条目会被隐藏,源文件不动)
改分组 · 把卡片拖到左栏分组行
多选 · 卡片右上 +,或 Ctrl + 点击卡片
批量 · 选中后顶部出现:改分组 / 加标签 / 删除
删 user-items.json 即可回到「只有 library.js」的原始状态。
系统提示词
装载后本插件会往宿主注册一个 ai-library 提示词片段(ctx.inject(['systemPrompt'], …),order 160),
告诉 AI:本机新建/修改的文件要在回话前入库,并给出各场景该用哪个工具(library_import / library_autocapture / library_repo_build / library_save_url / `library_pape
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:8,最后更新 2026-10-19