dsh-user-memory:用戶編寫的分級長期記憶注入 DSH 系統提示詞

前言

在 DeepSeek Harness(DSH)裏做長期協作,常見做法是反覆粘貼偏好、規則或項目背景,或依賴對話外的筆記。這類做法要麼占上下文、要麼模型側無法穩定遵守。社區插件 dsh-user-memory(維護者 XinzeQing,GitHub XinzeQing/dsh-user-memory)把用戶本人編寫的分級記憶注入系統提示詞固定段落,並提供中文圖形面板查看與修改;AI 不會自行寫入記憶,寫入只發生在用戶保存或用戶明確讓 AI 改文件之後。

這是什麼

dsh-user-memory 是 DSH 的宿主型插件:profile 加載後每一輪對話都會參與。它在 Harness 身份之後、人格設定之前(order = -500)注入一段系統提示詞,內容由 <DSH_HOME>/memory/ 下若干 Markdown 文件組成;可選的第二段(order = -490)承載臨時記憶,預算與長期記憶分開。插件零依賴,僅使用 Node 內置模塊。當前 package 版本爲 0.7.2,許可證 MIT。

核心功能

兩層記憶與文件佈局

長期記憶回答「用戶是誰、AI 該怎麼幹」,對應目錄結構如下(<DSH_HOME> 默認爲 %USERPROFILE%\.dsh):

<DSH_HOME>\memory\
├── rules-must.md      必須遵守(硬性)   ← 注入
├── agent.md           行爲設定           ← 注入
├── profile.md         用戶畫像           ← 注入
├── rules-should.md    可選遵守(酌情)    ← 注入
└── log.md             變更日誌            ← 不注入

注入順序爲:必須遵守 → 行爲設定 → 用戶畫像 → 可選遵守。<!-- --> 註釋永不注入;僅標題無正文則整節不注入。默認總字符預算 maxChars 爲 6000;記憶不變時系統提示詞逐字節不變,有利於 prompt cache。

臨時記憶(默認關閉,tempMemory: false)存放在 <DSH_HOME>\temp-memory.json,用於跨對話的交接(handoff)、階段目標(stage)、等待項(waiting)。只有用戶明確要求寫入時 AI 才調用 temp_memory;歸檔後調用 temp_memory_done 即停止注入。默認 tempMaxChars 爲 1200,與長期記憶預算互不擠佔。

運行時只讀與待確認閘門

除用戶操作外,插件運行時只讀:無自動採集、自動總結、後臺回寫或網絡訪問。

AI 若需提議長期記憶變更,只能調用 memory_suggest(不寫記憶文件,僅在 <DSH_HOME>\memory-suggest.json 記 pending)。用戶在面板「待確認」分頁點「採納」後,下一輪對話 AI 纔會收到 <MEMORY_SUGGESTION_ACCEPTED> 通知,再整理措辭寫入文件並調用 memory_suggest_done 記賬。點「忽略」則丟棄。採納前可填「補充說明」(最多 1000 字符),與 AI 原文衝突時以補充爲準。

工具 作用 是否寫記憶文件
memory_suggest 提議一條(限上述五個文件名,正文上限 4000 字符) 否
memory_suggest_done 處理完成後記賬 否
temp_memory({kind,title,body}) 寫臨時記憶條目 只寫 temp-memory.json
temp_memory_done({id,note}) 歸檔臨時記憶 同上

圖形面板

重啓 DSH 後,左側欄出現「長期記憶」入口。分頁包括:必須遵守 / 行爲設定 / 用戶畫像 / 可選遵守 / 變更日誌;啓用 tempMemory: true 時另有臨時記憶;待確認固定在最後。改完點「保存這一節」立即生效,無需重啓。頂部有「自動採集記憶」開關,對應 autoCapture(見下文配置);開關寫入 <DSH_HOME>\.autocapture,優先級高於 profile 裏的 config.autoCapture。

安裝與啓用

資料中的安裝方式爲:在 profile 的 package.json 裏用 link: 指向插件目錄(不拷貝),裝好後依賴位於 <DSH_HOME>/profiles/<profile>/node_modules/dsh-user-memory。每個 profile 需單獨安裝一次。

// <DSH_HOME>/profiles/<profile>/package.json
"dsh-user-memory": "link:<插件目錄>"

在 profile 的 bundle patch(cordis.patch.yml)中插入插件並配置:

- insert:
    - id: user-memory
      name: 'dsh-user-memory'
      config:
        enabled: true     # false = 停用注入,不卸載
        dir: ''           # 空 = <DSH_HOME>/memory
        maxChars: 6000    # 注入總預算(含前言與截斷提示)
        autoCapture: false  # true = 打開「記憶採集提醒」
        tempMemory: false   # true = 再掛一段「臨時記憶」
        tempMaxChars: 1200  # 只給臨時記憶段的預算

改 patch 後需重啓 DSH 纔對 composition 生效;只改記憶文件內容則不需要重啓。

注意:profile 裏對 config: 的寫法是整塊替換,不是逐鍵合併。覆蓋時須一次寫全 enabled / dir / maxChars / autoCapture / tempMemory / tempMaxChars,否則未寫的鍵會退回內置默認。

典型用法

  1. 直接編輯:在面板或記事本中改 memory/ 下文件,保存後下一輪對話即帶上新內容。
  2. 口述讓 AI 記住:用戶說「記住…」時,AI 應先展示 diff,用戶確認後再落盤。
  3. 批量整理:用戶說「整理記憶」時,AI 彙總後同樣先審再寫。
  4. 臨時記憶:僅在用戶說出「寫臨時記憶 / 記到臨時記憶 / 交付記憶 / 換會話執行 / 下次對話接着做」等意圖時,AI 才調用 temp_memory;完成後 temp_memory_done 歸檔。
  5. 可選建議流:將 autoCapture 設爲 true(或面板打開開關)後,注入段末尾會追加固定「記憶採集提醒」,提醒 AI 在合適時用 memory_suggest 提議,仍須用戶採納才寫入。

適用場景與注意

適合:希望偏好、硬性規則、用戶畫像與 Agent 行爲設定穩定出現在每輪系統提示詞、且寫入權完全留在用戶側的 DSH 使用者;需要跨會話交接文檔或階段性待辦且不想長期污染主記憶時,可開啓 tempMemory。

務必知曉:

  • 插件在當前 DSH 進程權限下運行;安裝前應自行查看 GitHub 源碼 與 MIT 許可證,確認可接受後再鏈入 profile。
  • 「必須遵守」僅通過提示詞位置與措辭約束模型,不是技術層面的強制保證;規則宜具體、可判定、儘量短。
  • 修改插件 index.js 或 client.js 後須重啓 App;改記憶文件不需要。
  • 卸載 bundle 不會刪除 <DSH_HOME>\memory\;數據與代碼分離。
  • 社區目錄 SkillHub 插件頁 與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本文事實以倉庫 README 與 package 爲準。

結尾

dsh-user-memory 把長期記憶做成用戶可編輯、可預算、可緩存的系統提示詞段落,並用待確認區隔開 AI 提議與實際寫入;臨時記憶可選地承擔跨對話工作集。需要進一步瞭解實現與自測命令,見 GitHub 倉庫 README。

  • 目錄頁:https://www.skillhub.cn/plugins/XinzeQing/dsh-user-memory
  • GitHub:https://github.com/XinzeQing/dsh-user-memory
羽毛球分组比赛记分
小程序二维码

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

小夜