前言¶
用 DSH(DeepSeek Harness)做日常開發,一個繞不開的問題是:項目規範、架構決策、踩過的坑都發生在具體會話裏,會話結束就散了。常見的應對是把重要內容手動複製進系統提示,但上下文會越來越臃腫,也談不上檢索範圍和寫入權限的控制。
下面介紹的 dsh-knowledge 把這件事做成一個獨立環節:不修改 DSH Agent Loop,同一個插件既可以使用本地 SQLite,也可以連接遠程中央知識庫,提供按需檢索、受控回寫與 Web 管理臺。本文按功能、安裝、典型用法的順序展開。
插件簡介¶
dsh-knowledge(npm 包 @lemoncat7/dsh-knowledge)由 lemoncat7 維護,MIT 許可證,在 DSH 插件分類中屬於「記憶」。
兼容性:正式版 2.3.4 針對 DeepSeek Harness 0.1.2-rc.1 構建並完成部署驗證,需要 Node.js ^22.19.0 || >=24.0.0。插件是標準 DSH profile bundle(package.json 的 dsh.bundle.patch 指向 cordis.patch.yml),安裝後不需要單獨運行知識庫容器,安裝或更新後重啓對應 DSH profile 即可。
核心功能¶
雙後端:本地 SQLite 與遠程中央服務¶
本地後端基於 SQLite,使用 WAL、FTS5 全文搜索、原子事務、完整版本歷史和冪等提取任務。遠程後端是認證 HTTP API 的中央知識庫,可作爲其他 DSH 客戶端和未來桌面端的接入點。本地與遠程 Provider 使用同一接口。
模式切換在 DSH「設置 → 插件」的「知識庫連接」卡片完成:選擇本地來源,或填寫中央服務地址和只寫客戶端令牌,保存後即時驗證並切換 Provider。
需要明確的是,遠程模式不做隱式雙向同步:創建、修改工具不會自動掛載知識庫,也不會回退、雙寫或同步到另一端,結果會明確返回實際寫入的 local 或 remote。
回寫由獨立提取調用完成¶
主模型不暴露 knowledge_write。每輪迴答完整結束後,插件用一次獨立的提取調用判斷是否產生知識並回寫;回寫結果只作爲 UI 狀態展示,在下一次模型請求前移除,不佔用會話上下文。
回寫策略全局分爲「嚴謹 / 主動」兩種,保存在權威知識庫服務中,遠程客戶端自動跟隨中央設置。
知識庫可以建多個,分別設定說明、默認標籤、提取要求與專用回寫模型;未設定專用模型時跟隨當前會話模型。
掛載只表示「可選」:未掛載知識庫時,不召回、不提取、不回寫;掛載也不代表每次回答都要寫入。
掛載與權限¶
掛載分項目與會話兩級,會話默認繼承項目,可獨立覆蓋或關閉。每個掛載支持三種寫入模式:僅召回、審覈寫入、直接寫入,並可配置包含/排除標籤和額外提取要求。
文檔變更決策分 create / update / conflict / skip 四種。原文修訂使用唯一舊文本錨點與目標版本,由服務端在完整文檔上原子執行。
搜索和讀取由服務端按當前會話掛載、項目範圍及包含/排除標籤強制限權,讀取句柄帶簽名且僅限當前會話。
按需檢索¶
回答前,插件通過 DSH 官方提示組裝接口提供有界的掛載庫地圖,並自動召回最多 3 條達到相關性門檻的摘要,不自動注入完整文檔。需要完整內容時,先做找庫,再做搜索,最後讀文檔:
1、knowledge_base_search:找庫
2、knowledge_search:搜索指定庫
3、knowledge_read:讀取文檔
用戶明確要求時,模型也可以調用 knowledge_base_create / knowledge_base_update 創建或修改知識庫(描述、標籤、回寫策略與專用回寫模型)。
Web 管理臺與筆記工作區¶
插件自帶響應式 Web 管理臺,覆蓋概覽、文檔樹與 Markdown 編輯器、AI 候選審覈、客戶端令牌管理。知識庫管理拆分爲「知識庫」和「項目與會話掛載」兩個工作區,支持按名稱、描述、標籤和模型即時搜索。
文檔界面是筆記軟件式雙欄佈局,配套獨立的筆記工作區:多級目錄樹、Markdown/文本文件編輯、圖片和 PDF 就地瀏覽、頁面歷史與恢復、分享與導入。筆記默認不參與知識檢索、自動召回或 AI 回寫。
知識文檔通過結構化「關聯筆記」列表引用筆記或文件,關係綁定穩定編號;舊 note:// 引用會在升級時安全回填。文檔可標記爲「已解決」或「已收集完成」,強制封存爲只讀,需重新打開才能編輯或回寫。
DSH 瀏覽器端插件會在左側工作區下方顯示「知識庫」,在當前頁面內打開管理面板。界面支持明暗主題、鍵盤操作、窄屏佈局,狀態標籤不依賴顏色。
安裝與啓用¶
從 npm 安裝正式版:
dsh plugin --profile web add @lemoncat7/dsh-knowledge
需要固定版本時,可在包名後追加 @版本號,也可以從 GitHub Releases 下載預構建包後本地安裝。卸載命令如下:
dsh plugin --profile web remove @lemoncat7/dsh-knowledge
插件是標準 DSH profile bundle,安裝後不需要單獨運行知識庫容器。安裝或更新後需要重啓對應的 DSH profile,Web 版的重啓命令:
pnpm dsh web
典型用法¶
本地模式配置¶
默認配置使用 DSH 持久目錄中的 SQLite 文件:
backend: local
databasePath: !!js dshHomePath('knowledge/knowledge.sqlite')
extractionEnabled: true
defaultScope: project
autoRecallLimit: 3
autoRecallMinScore: 0.2
recallMaxChars: 5000
exposeApi: false
exposeWeb: true
這份配置的含義:數據庫位於 DSH 持久目錄的 knowledge/ 下;默認作用域爲項目;自動召回最多 3 條、相關性門檻 0.2、召回最大 5000 字符;認證 API 默認關閉,管理臺默認開啓。
創建與修改知識庫¶
創建知識庫的請求體示例:
{
"draft": {
"name": "DSH 項目規範",
"description": "只匹配 DSH 插件開發、架構決策和部署規範相關對話",
"defaultTags": ["dsh", "project-rule"],
"extractionInstructions": "只收錄已確認且可跨會話複用的結論"
}
}
description 限定該庫覆蓋的主題範圍,extractionInstructions 進一步限定收錄規則,defaultTags 是回寫時的默認標籤。局部修改標籤或描述使用 PATCH /knowledge-bases/:id:
{"patch":{"description":"...","defaultTags":["..."]}}
部署爲中央知識庫¶
作爲中央服務時,通過配置啓用認證 API 與 Web:
exposeApi: true
apiToken: !!js process.env.DSH_KNOWLEDGE_API_TOKEN
apiPrefix: /knowledge-api/v1
exposeWeb: true
webPath: /knowledge
DSH_KNOWLEDGE_API_TOKEN 至少 24 個字符,數據庫只保存摘要。服務端沒有 TLS,非迴環部署必須放在 HTTPS 反向代理之後。
客戶端令牌使用 Bearer Token,僅保存 SHA-256 摘要,支持 read / propose / write / admin 權限及吊銷。經過上面的配置,這臺 DSH 實例的認證 HTTP API 就可以作爲其他 DSH 客戶端的中央知識庫使用。
適用場景與注意事項¶
適合的場景:
- 個人開發者:在本地積累項目規範、架構決策和經驗,跨會話按需召回
- 團隊:部署一臺中央知識庫,多個 DSH 客戶端通過令牌接入,回寫策略跟隨中央設置
使用前需要注意:
1、插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證(本項目爲 MIT)。
2、版本匹配:正式版 2.3.4 針對 DeepSeek Harness 0.1.2-rc.1 構建並完成部署驗證。
3、未掛載知識庫時不會有任何召回、提取、回寫,掛載只表示可選。
4、本地管理臺下,任何能訪問 DSH Web 的用戶都具有本地管理權限;把 DSH 暴露到公網時,應使用反向代理登錄保護整個站點。
5、提取失敗會將冪等任務標爲 failed,失敗任務最多可重新領取兩次,不阻斷下一輪;提取輸出達到模型上限時用雙倍預算重試一次(最高 8192 tokens)。
6、刪除被知識文檔引用的筆記會被拒絕;永久刪除筆記必須在當前消息中明確提出,授權不會從歷史消息延續。
7、分享導入保留 SSRF 防護,可通過 trustedShareOrigins 單獨配置可信 Origin。
小結¶
dsh-knowledge 的思路是不動 Agent Loop,把長期記憶做成可掛載、可限權、可審覈的知識庫:本地單機開箱即用,需要共享時切換到中央服務,權限由服務端強制執行。如果你的 DSH 實例需要跨會話沉澱知識,可以按上面的步驟裝一個試一試。
目錄頁(社區維護的插件目錄,與 DeepSeek 官方無從屬關係):https://www.skillhub.cn/plugins/lemoncat7/dsh-knowledge
GitHub:https://github.com/lemoncat7/dsh-knowledge