前言¶
在 DSH 裏接 dsh-mnemon 做項目文檔檢索時,Documents Source 的行爲更像一次性快照:導入後不會感知知識庫裏的新增、修改或刪除。你在 Obsidian、Logseq 裏改過的筆記,不會自動反映到 mnemon 的文檔索引裏;刪掉的源文件,存儲裏的副本也會一直留着。社區維護者 Idhanker 的 dsh-mnemon-sync-monitor(分類:記憶)用文件監視與防抖合併,把本地 Markdown 目錄與 mnemon 的 Project Documents 對齊,並可選地把變更蒸餾進 Memory Spaces。下面介紹它的定位、能力與配置方式。
這是什麼¶
dsh-mnemon-sync-monitor 是 DeepSeek Harness 插件,倉庫 Idlehanker/dsh-mnemon-sync-monitor,當前 package 版本 0.2.0,MIT 許可證,要求 Node >= 22。
一句話定位:Real-time file watcher that keeps dsh-mnemon Project Documents in sync with local Markdown knowledge bases。
README 對 dsh-mnemon 0.5.39 的實測說明:Documents Source 沒有 fs.watch / chokidar 一類監視;index.json 是唯一真相源,也不會重掃目錄。本插件補的是「源目錄變了,存儲跟着變」這一環。
核心功能¶
文檔層同步¶
監視配置裏的 roots(絕對路徑目錄),在防抖窗口內合併變更後,在 Documents 索引鎖下原子應用:
| 源側變化 | 插件動作 |
|---|---|
| 新文件 | 創建 document |
| 內容 hash 變化 | 原地更新,revision + 1 |
| 文件刪除 | 僅在 prune: true 時歸檔 document |
| 未變化 | 跳過 |
啓動時會對每個 root 做一次全量 reconcile,之後跟隨文件系統變化。可選 dryRun: true 只檢測並打日誌,不寫存儲。
變更檢測策略¶
有 git 的 root 優先用相對上次記錄 commit 的 diff;非 git 目錄用 mtime 高水位掃描。Git 是優化路徑,不是硬性前提。
可選:蒸餾到 Memory Spaces¶
Documents 層是詞面匹配(含中文二元組),換說法提問可能搜不到剛寫的筆記。Memory Spaces 走向量召回,但 dsh-mnemon 自帶的 idleReview 工具表裏沒有 mnemon_remember 等寫入路徑。插件可在筆記變更後,通過配置的模型命令把結論寫入 Memory Spaces。
蒸餾有獨立主開關 distill.enabled、防抖 distill.debounceMs、每輪文件數與每文件 insight 上限等字段;distill.command 從 stdin 讀 {"messages":[...]},stdout 輸出 completion 文本,以短生命週期子進程調用,憑證與重試留在 Host 外。
設置頁與 Host API¶
插件 bundle 帶 Client:Settings → 知識庫同步,列出每個監視 root 的路徑、是否存在、Markdown 數量;可增刪 root、立即 Rescan、開關蒸餾、選蒸餾模型。增刪 root 與蒸餾開關無需重啓 DSH;改 root 會寫回 profile 的 cordis.patch.yml,且 README 說明只替換 roots: 序列,其餘行(含註釋)按字節保留。
Host 路由前綴 /mnemon-sync-monitor,例如 GET /mnemon-sync-monitor/state、POST /mnemon-sync-monitor/roots、POST /mnemon-sync-monitor/rescan 等;模型列表與主 Composer 輸入框下方共用 ctx.llm 註冊表,身份編碼爲 JSON.stringify([provider, model])。
安裝與啓用¶
安裝命令來自 README,需本地已有插件目錄路徑(不要用未在資料中出現的 github:owner/repo 形式):
dsh plugin --profile <name> add /path/to/dsh-mnemon-sync-monitor
在對應 profile 的 cordis.patch.yml 中配置監視目錄,例如:
- id: mnemon-sync-monitor
name: dsh-mnemon-sync-monitor
config:
enabled: true
roots:
- C:\Users\me\Obsidian\vault
- C:\Users\me\Logseq\pages
debounceMs: 800
minBytes: 200
保存後重啓 DSH。插件會在啓動時對每個 root reconcile 一次,再持續監視變更。
典型配置¶
常用字段¶
| 字段 | 默認 | 含義 |
|---|---|---|
enabled |
true |
總開關 |
roots |
[] |
監視的絕對目錄;空則等效禁用 |
storeDirectory |
~/.mnemon/documents |
寫入的 Documents 存儲路徑 |
debounceMs |
800 |
靜默窗口後再 reconcile |
minBytes |
200 |
小於此大小的文件忽略(Logseq 空頁常小於 200 B) |
prune |
false |
源文件消失時是否歸檔存儲記錄 |
dryRun |
false |
只檢測日誌,不寫 |
limitBytes |
33554432 |
活躍容量上限(32 MiB) |
開啓蒸餾示例¶
- id: mnemon-sync-monitor
name: dsh-mnemon-sync-monitor
config:
enabled: true
roots:
- C:\Users\me\vault
distill:
enabled: true
automatic: true
debounceMs: 30000
maxFilesPerRun: 10
maxInsightsPerFile: 4
command: 'node C:\path\to\distill-gateway.mjs'
distillModel: '["workbuddy","hy4free"]'
未設置 distillModel 時表示跟隨設置頁默認;設爲 null 可清除固定模型。
適用場景與注意¶
適合已經在 DSH 裏使用 dsh-mnemon、且項目文檔來自 Obsidian / Logseq 等本地 Markdown 目錄的開發者:希望改筆記後檢索層能跟上,而不是重新手動導入快照。
幾點事實性限制來自 README:prune: false 時刪除源文件不會自動清存儲;蒸餾依賴你配置的 command 與模型,不是開箱即用的雲端調用;插件 deliberately 不 inject: ['llm'],無 LLM 服務時監視與 root 管理仍可用,模型列表爲空。
DSH 生態是「一切皆插件」;SkillHub 目錄頁 是社區站點,與 DeepSeek / 幻方無官方從屬關係。
安全與權限:插件以當前 DSH 進程權限讀寫你配置的 roots 與 storeDirectory,並可能執行 distill.command。安裝前請閱讀倉庫源碼與 MIT 許可證,確認路徑與 shell 命令符合你的環境策略。
結尾¶
dsh-mnemon-sync-monitor 解決的是 mnemon Documents 快照與本地知識庫脫節的問題:監視、防抖、按 hash 更新,並可選擇把變更蒸餾進 Memory Spaces。進一步瞭解與 issue 見 GitHub 倉庫,目錄介紹見 SkillHub 插件頁。