前言¶
在 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。