前言¶
在 DeepSeek Harness(DSH)裏做項目,會話會結束,但結論往往還散落在聊天記錄裏:接口約定、踩坑記錄、團隊約定,下次開新任務又要從頭對齊。把筆記丟進外部文檔可以,但和 Harness 的檢索、工具調用、審批流程通常是兩套系統。
下面介紹社區插件 dsh-memory-hub(維護者 zhiwuli0228,分類:記憶)。它把長期記憶做成用戶目錄下的 Markdown 文件:本地優先、可 git、寫入必須經 DSH 原生審批,模型不能自批。README 將其定位爲「文件原生、用戶掌控、人類批准寫入」的長期記憶中樞;npm 包名 dsh-memory-hub。
這是什麼¶
一條知識是一個帶 YAML frontmatter 的 Markdown 文件,存放在 Hub 目錄(默認 $DSH_HOME/memory-hub,可在插件配置 config.root 覆蓋)。每個用戶回合開始時插件做確定性檢索,向上下文注入緊湊索引;模型按需讀取全文並記錄引用;任務結束時有回寫評估;候選知識進入 pending/,經審批後才成爲 accepted 權威知識。
檢索側不依賴向量庫:關鍵詞 + 類型 + 作用域 + 狀態,並對 CJK 做二元組分詞。V0.1.5 起增加預檢相關性門控(min_score / local_boost)、指令式回寫包尾、Web 面板命中/引用計數、系統級 memory-hub skill,以及夜間確定性維護(只報告 + 生成 pending 提案,不自動提交)。README 記錄已在 DSH Desktop Runtime 0.2.1-rc.5 完成宿主冒煙;package.json 中 engines 要求 dsh >= 0.2.1-rc.5、node >= 20,許可證 MIT。
核心能力¶
回合內的記憶閉環¶
| 環節 | 說明 |
|---|---|
| 自動預檢 | 每個用戶回合第一步檢索 accepted 知識,冪等鍵 (sessionId, turn) |
| 緊湊注入 | 只注入 ID、標題、一句話摘要、作用域;細節通過工具按需讀取 |
| 檢索與讀取 | memory_search / memory_get;區分「檢索命中」與「實際使用」(memory_cite) |
| 候選與提交 | memory_propose 寫 pending/;memory_commit 走 DSH 審批,headless 或審批關閉時提交會被拒絕 |
| 門禁 | 變更類工具需要本回合有效預檢;預檢故障默認放行,可在 policy.gate.on_preflight_error 設爲 deny |
| 收尾 | memory_close_task;未評估的回合自動記 deferred |
| 彙總 | 管理員用 memory_consolidate 將項目知識晉升爲 global 候選,按 promoted_from 冪等 |
Web 面板¶
安裝含面板的版本並重啓 DSH 後,左側邊欄會出現「記憶中樞」圖標。主區域提供總覽、配置(核心/子工作區,實時寫入 config.yaml)、知識瀏覽、待審批列表(只讀,不代替 DSH 審批)、活動與策略、以及 10 個 memory_* 工具說明。數據經 Host 路由 /dsh-memory-hub/api/overview、/knowledge、/config 讀寫,僅允許迴環請求。
系統級 Skill¶
插件在 Host 全局 skills 層註冊 memory-hub,按需加載,不佔每輪上下文正文;覆蓋預檢 → 讀取 → 引用 → 必要時再檢索 → 關任務的固定流程,以及作用域、寫入審批與夜間維護等規範。用戶也可通過 skill 工具顯式加載。
夜間維護¶
policy.maintenance.enabled: true 時,Host 內插件定時器在本地時間每天 03:00 巡檢(錯過則在下次啓動補跑)。維護只寫 <hub>/reports/ 報告並按策略生成 pending 提案,永不調用 memory_commit、不刪不改正文。也可手動 memory_maintenance,apply: "report" 僅看報告。
安裝與啓用¶
插件以 profile bundle 形式發佈,應通過 DSH 插件管理器安裝 npm spec,而不是隻做全局 npm install。
DSH 插件管理器(推薦):
dsh plugin --profile <name> add dsh-memory-hub@0.1.5
查看包內容:
npm pack dsh-memory-hub@0.1.5
DSH Desktop 用戶應在設置裏的插件管理器安裝 dsh-memory-hub@0.1.5;Desktop 的 desktop profile 由 Electron 管理,不要用 CLI 改該 profile。
本地目錄或 GitHub(倉庫已含 dist/index.js 與 client.js,無需再構建):
dsh plugin --profile <name> add <本地目錄或 github:用戶/倉庫>
自託管插件市場索引(在 DSH 插件頁開啓實驗性「自定義插件市場」後添加):
https://cdn.jsdelivr.net/gh/zhiwuli0228/dsh-memory-hub@main/site/index.json
安裝後重啓 DSH,或等待插件管理器熱加載。插件僅在 ~/.dsh/memory-hub(或 $DSH_HOME/memory-hub)下創建配置與目錄,不會拖慢宿主啓動。
配置要點¶
策略與工作區寫在 <root>/config.yaml,修改後 watcher 熱加載,無需重啓。示例結構(字段含義見 README):
version: 1
core_workspaces:
- id: product
name: '產品主倉庫'
workspaces:
- id: backend
core_id: product
root: 'D:/projects/backend'
domains: [backend]
admin: true
enabled: true
policy:
preflight:
mode: per-turn
pack_tokens: 600
max_hits: 6
min_score: 1.0
local_boost: 1.2
inject: compact
gate:
mode: enforce
on_preflight_error: allow
unknown_tools: allow
mutating_tools: [bash, pwsh, write, edit, str_replace_editor]
maintenance:
enabled: true
time: '03:00'
apply: propose
all_cores: true
max_proposals: 10
stale_pending_days: 30
stale_citation_days: 90
只有當前會話工作目錄落在某個 workspace.root 內時,纔會獲得 project:<id> 作用域;否則僅見 global/domain 知識。項目知識不會自動晉升到 global。
典型用法¶
- 安裝插件並配置
workspaces,把常用倉庫root指到本機路徑。 - 正常對話:回合開始自動預檢注入摘要;涉及歷史決策時模型可
memory_get讀全文並memory_cite記用途。 - 任務結束前調用
memory_close_task做回寫評估;值得保留的內容用memory_propose進pending/,在 DSH 審批通過後memory_commit落盤。 - 在側邊欄「記憶中樞」檢索、過濾知識;待審批頁只讀瀏覽候選,批准仍在會話審批流中完成。
- 項目管理員需要跨倉沉澱時,用
memory_consolidate手動晉升;夜間維護或memory_maintenance生成報告與維護類 pending,由人決定是否提交。
工具一覽:memory_search、memory_get、memory_status、memory_preflight、memory_cite、memory_propose、memory_commit、memory_close_task、memory_consolidate、memory_maintenance。
適用場景與注意¶
適合誰:希望在 DSH 內建立可檢索、可追溯、可人工干預的項目記憶庫;接受「文件即數據源」、無默認聯網同步;願意在寫入路徑上走 DSH 審批的開發者與團隊。
安全與邊界(README 摘要):默認本地優先、無網絡請求;路徑經真實化與作用域校驗;卸載插件保留全部記憶文件;V0.1 每個 Hub 根目錄僅一個寫者,第二個寫者會使該根只讀。插件以當前 DSH 進程權限運行,安裝前請閱讀源碼與 MIT 許可證,確認 Hub 目錄與 workspaces[].root 不會指向不應被 Agent 訪問的路徑。
已知限制(節選):審批通過路徑依賴交互式審批;未驗證 PTC run_code 嵌套、外部 CLI、多進程共享 Hub;夜間維護依賴 Host 運行;多 core 維護串行,單 core 失敗當天不重試;維護不出現在官方「自動化任務」欄。
結尾¶
dsh-memory-hub 把 DSH 的長期記憶落在用戶可控的文件與審批流上,而不是黑盒上下文或不可審計的自動寫入。目錄與發現入口見 SkillHub 插件頁;源碼、文檔與兼容說明見 GitHub 倉庫。
- 目錄頁:https://www.skillhub.cn/plugins/zhiwuli0228/dsh-memory-hub
- GitHub:https://github.com/zhiwuli0228/dsh-memory-hub
- npm:https://www.npmjs.com/package/dsh-memory-hub