dsh-project-memory:deepseek-harness 的項目級持久記憶插件

前言

在 deepseek-harness(DSH)的插件體系裏,模型每次會話通常不會自動保留上一輪項目中確認過的信息。dsh-project-memory 是 JasperGuWP 維護的一個記憶類插件,用於把當前項目的穩定知識寫入項目內的 memory/ 目錄,讓後續會話可以讀取。

它把記憶落盤爲普通 Markdown 文件,便於人工查看、修改,也可以用 git 做審計和 diff。下面介紹它的功能、安裝方式和典型用法。

這是什麼

dsh-project-memory 是一個零外部依賴的 DSH 插件。它不預置特定業務知識,安裝到哪個項目,就圍繞哪個項目的 memory/ 目錄工作。

插件提供四個工具:

  • memory_load_context
  • memory_upsert
  • memory_finalize
  • memory_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。

工作區感知根目錄

插件會按以下順序確定記憶根目錄:

  1. 優先使用 sandboxPolicy.resolve({ session })
  2. 回退到 config.memoryRoot
  3. 再回退到 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 使用。

典型用法

可以用下面的兩步驗證插件是否按預期工作:

  1. 會話 A 輸入:
   記住:這個項目用 pnpm 打包。

預期插件調用 memory_upsert 併成功寫入。

  1. 會話 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜