前言¶
在 DSH Desktop 里做长对话或换一个新会话时,常见做法是每次重新粘贴同一份 PDF、规范或笔记,或者依赖外部网盘链接。材料不在 Harness 侧统一管理时,模型也不会默认去查你本机已有的文件。下面介绍的 dsh-local-library(维护者 Fucaplos,社区分类为「记忆」)把文件放在本机固定目录,通过设置页管理和四个内置工具,让后续每个对话都能检索、读取、下载,必要时还能把结论写回库里。
这是什么¶
dsh-local-library 是面向 DSH Desktop 的本地资料库插件:一个跨会话共享的「文件柜」。文件只存在本机(默认 $DSH_HOME\local-library,即 %APPDATA%\dsh-desktop\harness\local-library),不上传云端。插件在设置左栏增加「本地资料库」分区,并向系统提示词注册 library_list、library_search、library_read、library_save,新会话里 Agent 会先知道资料库存在,不必每次口头说明「我有一份资料」。许可证为 MIT,当前版本 0.4.1(以仓库 package.json 为准)。
核心功能¶
设置页:上传与管理¶
打开设置(左下角齿轮)→ 左栏「本地资料库」:
- 拖拽上传(含整个文件夹;按顶层文件夹名记一笔,文件夹名会写成标签便于按来源筛选);
- 搜索框与类型过滤(全部 / PDF / Word / 表格 / PPT / 图片 / 文本),支持
kind:、tag:、after:、before:等过滤语法; - 列表支持多选打包下载为 zip、单文件下载、行内编辑标签、删除(二次确认);
- 底部展示文件数、占用、已建索引数,可「重建索引」,存储路径可复制。
重复上传相同内容时会询问覆盖、再存一份或跳过,不会静默 duplicate。
正文可检索¶
.md、.txt、.csv、.json 等文本类、.docx、.xlsx、.pptx、.pdf 会被抽成纯文本参与检索。PDF 优先用本机 PyMuPDF(中文更稳),失败则回退零依赖流级抽取。若在 cordis.patch.yml 中为插件配置了视觉模型,上传的图片会被描述成文字后一并参与检索。
检索基于关键词打分(中文 bigram + 拉丁词),不是向量检索。设置页可开关「严格匹配」,减少 bigram 带来的擦边结果;状态保存在资料库目录下的 settings.json(matchMode: loose | strict)。
四个 Agent 工具¶
| 工具 | 用途 |
|---|---|
library_list |
列出全部条目 |
library_search |
按文件名、正文、标签检索,返回片段与 matchedBy |
library_read |
按 id 或 name 读正文,长文可 offset 分段续读 |
library_save |
把结论或笔记存入资料库 |
对话里可以直接说「看看我资料库里关于 XX 的东西」;若请求看起来需要个人材料,模型也会先查资料库(说明由插件写入系统提示词)。
安装与启用¶
前提:Windows、DSH Desktop、PowerShell 7。安装脚本通过 junction 解析包名,文档说明不需要管理员权限。
从仓库拉到本机后执行:
git clone https://github.com/Fucaplos/dsh-local-library.git
cd dsh-local-library
pwsh -File install.ps1
若 DSH profile 不在默认位置,显式传入 profile 根路径:
pwsh -File install.ps1 -ProfileRoot 'D:\my-dsh\harness\profiles\web'
装完后重启 DSH Desktop(宿主侧启动时加载),再刷新页面 F5(客户端侧由启动清单投递)。设置左栏应出现「本地资料库」。脚本幂等:已安装则自检;改配置前会备份 cordis.patch.yml 为带时间戳的 .bak-dsh-local-library-* 文件。
卸载(默认保留数据;加 -PurgeData 才删除文件):
pwsh -File uninstall.ps1
安装会在 profiles\<name>\node_modules\dsh-local-library 建立指向插件目录的 junction,并在 cordis.patch.yml 的 insert 列表末尾登记 id: dsh-local-library 与同名 name,不修改 package.json / lockfile。
典型用法¶
- 在设置页拖入规范 PDF 或整文件夹,必要时给条目打标签。
- 新对话中让 Agent「在资料库里搜一下某某接口的定义」,它会调用
library_search,再用library_read分段读长文。 - 讨论结束后用
library_save或对话里说明「把这次结论存进资料库」,便于下次检索。 - 检索框示例:
tag:财务部 kind:pdf after:2026-10-01(tag:为整标签精确匹配;日期写错时过滤会被忽略并提示)。
可选:在 profile 的 cordis.patch.yml 为该插件条目增加 config.vision,开启后图片可按内容被搜到(需 OpenAI 兼容的视觉 API,默认模型与 endpoint 见仓库 README)。
适用场景与注意¶
适合:需要在本机沉淀规范、合同、笔记、表格,且希望 DSH 各会话共享、Agent 自动查读的场景;分类上属于 DSH 社区目录里的「记忆」类插件。
注意:
- 插件 HTTP 前缀
/dsh-local-library在 DSH 鉴权层之外,本机能访问 DSH 端口的进程理论上可读写整个库;勿存放密钥等敏感信息。 - 扫描版 PDF 无文本层、未配视觉模型时图片只能按文件名/标签找;大 JSON(如 ComfyUI 工作流)会做结构化抽取,部分字段搜不到。
- 安装前应自行查看 GitHub 仓库 源码与 MIT 许可证;DSH 社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-local-library 把「个人文件柜」放进 Harness:本机存储、设置页可视化管理、四个工具贯穿对话。目录页:skillhub.cn/plugins/Fucaplos/dsh-local-library;源码与完整说明:github.com/Fucaplos/dsh-local-library。