dsh-local-library:本機資料庫,跨會話給 Agent 用

前言

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

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

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

小夜