前言¶
在 deepseek-harness(DSH)的插件體系裏,模型每次會話通常不會自動保留上一輪項目中確認過的信息。dsh-project-memory 是 JasperGuWP 維護的一個記憶類插件,用於把當前項目的穩定知識寫入項目內的 memory/ 目錄,讓後續會話可以讀取。
它把記憶落盤爲普通 Markdown 文件,便於人工查看、修改,也可以用 git 做審計和 diff。下面介紹它的功能、安裝方式和典型用法。
這是什麼¶
dsh-project-memory 是一個零外部依賴的 DSH 插件。它不預置特定業務知識,安裝到哪個項目,就圍繞哪個項目的 memory/ 目錄工作。
插件提供四個工具:
memory_load_contextmemory_upsertmemory_finalizememory_forget
它們分別用於加載相關記憶、寫入或更新記憶、把任務結論沉澱爲 reference 記憶,以及刪除過期或被取代的記憶。
核心功能¶
文件即記憶¶
插件把記憶寫成普通 Markdown 文件:
memory/MEMORY.md作爲純索引memory/*.md保存正文
這種結構適合人工審查,也方便納入版本控制。
工具說明¶
| 工具 | 作用 |
|---|---|
memory_load_context |
會話或任務開始時加載相關記憶,支持關鍵詞檢索與 catalog 清單 |
memory_upsert |
寫入或更新一條記憶 |
memory_finalize |
在任務收尾時沉澱一條 reference 記憶 |
memory_forget |
刪除正文文件和對應索引行,但保護 MEMORY.md 與 reference.md |
敏感信息攔截¶
當寫入內容命中 token、cookie、password、密鑰、JWT、.env 等敏感信息時,插件會拒絕保存,並返回 ok:false。
工作區感知根目錄¶
插件會按以下順序確定記憶根目錄:
- 優先使用
sandboxPolicy.resolve({ session }) - 回退到
config.memoryRoot - 再回退到
process.cwd()
這樣可以儘量跟隨當前會話所在的工作區。
檢索與 reference 控制¶
插件支持關鍵詞檢索和 catalog 清單。對於 reference 類記憶,可以通過 maxReferenceEntries 設置條數上限,並在超出上限時自動裁掉最舊條目。
安裝與啓用¶
插件安裝¶
下面是插件安裝命令:
dsh plugin --profile web add dsh-project-memory
安裝後需要重啓 dsh 進程才能生效。
校驗與移除¶
安裝後可以用下面的命令確認插件配置是否出現:
dsh --profile web --dump-config | grep -A2 project-memory
如果要移除插件,可以使用:
dsh plugin --profile web remove dsh-project-memory
手動本地插件¶
如果不走插件包安裝,也可以把 memory-plugin.ts 放到本機,然後在 profile 的 cordis.patch.yml 中添加一個 insert 項:
- insert:
- id: project-memory
name: '/absolute/path/to/memory-plugin.ts'
保存後重啓 dsh 進程。
Bundle 入口是預編譯的 memory-plugin.js;本地 .ts 方式由 Node 原生 type-stripping 加載,開發環境也可以配合 tsx 使用。
典型用法¶
可以用下面的兩步驗證插件是否按預期工作:
- 會話 A 輸入:
記住:這個項目用 pnpm 打包。
預期插件調用 memory_upsert 併成功寫入。
- 會話 B 輸入:
這個項目怎麼打包?
預期插件調用 memory_load_context,並在回答中複述 pnpm。
適用場景與注意¶
dsh-project-memory 適合希望把項目內穩定信息沉澱爲可審計文本的 DSH 用戶。安裝前建議先閱讀源碼和 MIT 許可證,因爲插件會以當前 dsh 進程的權限運行。
使用前注意:
- 安裝或配置後需要重啓 dsh 進程。
- 插件測試於 deepseek-harness,運行環境爲 Node >= 22。
- 運行期只依賴
node:fs和node:path,沒有外部 npm 運行時依賴。 - 如果通過 pnpm 的 git 依賴方式安裝時遇到
allowBuilds提示,按提示在 profile 的pnpm-workspace.yaml中添加對應配置後重跑。 memory_forget會刪除正文文件和對應索引行,但會保護MEMORY.md與reference.md。- 敏感信息攔截是寫入時的攔截,不能替代完整的安全邊界設計。
鏈接¶
GitHub:
https://github.com/JasperGuWP/dsh-project-memory