dsh-local-library: Local repository for cross-session use by Agents

前言

在 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。

典型用法

  1. 在设置页拖入规范 PDF 或整文件夹,必要时给条目打标签。
  2. 新对话中让 Agent「在资料库里搜一下某某接口的定义」,它会调用 library_search,再用 library_read 分段读长文。
  3. 讨论结束后用 library_save 或对话里说明「把这次结论存进资料库」,便于下次检索。
  4. 检索框示例: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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye