dsh-memory:爲 DeepSeek Harness 提供可編輯的跨會話記憶

前言

在 DeepSeek Harness(DSH)裏和智能體協作時,一個常見問題是會話結束後上下文清空:你昨天說過「一律用 pnpm」「用中文回答」,新開一次對話又要從頭交代。項目裏的 AGENTS.md 適合寫倉庫級、由人維護的規範,但不適合存放「只關於你」、跨項目複用的偏好。

dsh-memory 由維護者 AaronWang-cpu 發佈,分類屬於「記憶」類 DSH 插件。它把智能體在對話中認爲值得保留的事實寫入本機 JSONL 文件,並在每次組裝系統提示時注入一段有字節上限的記憶摘要,使新會話從第一個 token 起就能帶上這些信息,無需額外工具調用。


這是什麼

一句話:dsh-memory 是面向 DeepSeek Harness 的持久化、人類可讀可改的記憶插件——智能體在跨會話中記住你。

存儲默認落在 ~/.dsh/memory/memory.jsonl(可通過配置改目錄),不依賴 API Key、不訪問網絡、無後臺服務。記憶寫在倉庫外,作用範圍是「你」而不是單個 Git 倉庫。

與 AGENTS.md 的分工可以這樣理解:

AGENTS.md dsh-memory
撰寫方 人手工維護 智能體在工作過程中寫入
範圍 單個倉庫 跨所有工作區
位置 倉庫內(可提交) ~/.dsh/memory/(本機私有)
增長方式 人工編輯 自動寫入,去重
體量 視內容而定 有字節與條數上限

二者可以並存:規範留在 AGENTS.md,個人偏好與約束交給 memory。


核心功能

下面介紹插件實際提供的能力,均對應其 README 與實現說明。

memory 工具(四個動作)

智能體註冊名爲 memory 的工具,支持 save、search、list、forget。save 會摺疊空白並在忽略大小寫的前提下去重,重複陳述同一事實會更新條目而不是堆疊近似副本。工具描述會引導智能體跳過 transient 任務狀態、以及已從文件中可讀到的內容。

提示詞片段注入

通過 ctx.systemPrompt.section() 在順序 10150 註冊一段系統提示(位於 Web surface 之後、persona 後綴之前)。片段文本是函數,每次組裝都會重新渲染,因此上一回合保存的事實可以在下一回合、甚至全新會話中立刻出現在提示裏。

默認 maxBytes 爲 4096;超出預算時優先保留較新的條目,並說明有多少舊條被省略,而不是靜默關掉整塊功能。

存儲格式與可靠性

每行一個 JSON 對象,例如:

{"id":"4f2a91c8","content":"Prefers pnpm over npm.","tags":["preference","tooling"],"createdAt":"2026-11-09T08:12:44.101Z","updatedAt":"2026-11-09T08:12:44.101Z"}

損壞的行會被跳過,不會拖垮整個插件;寫入先落臨時文件再 rename,降低中途崩潰導致截斷的風險。數據僅保存在本機,無賬號、無遙測。

可選配置

多數用戶無需改配置。若需要,在 profile 的 cordis.patch.yml 中可爲插件 dsh-memory 設置:

- id: dsh-memory
  name: 'dsh-memory'
  config:
    dir: 'C:/Users/me/.dsh/memory'   # default: <DSH home>/memory
    maxBytes: 4096                   # prompt-section budget
    maxEntries: 500                  # oldest evicted beyond this
字段 默認值 含義
dir <DSH home>/memory 存儲目錄;設置了 DSH_HOME 時會尊重該環境變量
maxBytes 4096 注入片段的字節預算
maxEntries 500 條目硬上限,超出後刪最舊

當前版本的邊界

README 明確列出的限制包括:全局一份存儲(暫無按項目隔離);search 僅爲內容與標籤上的大小寫不敏感子串匹配,無向量檢索;無自動從對話裏抽取記憶的 summariser,需智能體顯式 save;無設置頁或面板;注入片段會佔用提示 token(約 4 KB 對應約 1K token,可按需調低 maxBytes)。

運行要求:DeepSeek Harness 0.2.x(Host API 以 0.2.2-rc.1 爲準)、Node >= 20。插件版本 0.1.1,許可證 MIT,除 Node 標準庫外無第三方依賴。


安裝與啓用

先做插件安裝,再重啓 DSH。官方 desktop profile 安裝命令爲:

dsh plugin --profile desktop add github:AaronWang-cpu/dsh-memory

重啓後即生效:無需配置項、無需 API Key、無需聯網。

若從本地目錄加載,可使用絕對路徑:

dsh plugin --profile desktop add /absolute/path/to/dsh-memory

也可手工編輯 ~/.dsh/profiles/desktop/package.json,在 dependencies 與 dsh.profile.bundles 中加入 dsh-memory(具體 JSON 結構見倉庫 README)。

安全說明: 插件以當前 DSH 進程權限讀寫本機 ~/.dsh/memory/ 等路徑。安裝前建議查看 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的環境策略。


典型用法

使用方式是對話驅動,無需單獨學習 CLI。

你說的話 預期行爲
「I always use pnpm.」 保存爲持久偏好
「以後的提交信息都用中文」 保存
「Our staging DB is read-only, never write to it.」 保存約束類事實
「What do I usually prefer?」 智能體在記憶中搜索
「Forget what I said about pnpm.」 列出、定位並刪除相關記憶

README 中的跨會話示例:你先聲明偏好並得到 Saved. (memory 4f2a91c8);次日全新會話問「這個項目裝依賴該用什麼?」,智能體可直接回答 pnpm,而不必再調用工具或複述「正如你之前所說」。

人工維護同樣支持:cat、grep、直接編輯或刪除 memory.jsonl 中的某一行均可。


適用場景與注意

適合: 長期在 DSH 桌面 profile 下工作、希望個人偏好與操作約束跨項目、跨會話生效的開發者;願意用純文本 JSONL 做備份與版本管理的用戶。

不適合或需知悉: 需要按倉庫隔離記憶、或需要語義檢索與排序的場景(當前僅爲子串搜索);對每次請求增加的提示 token 非常敏感時,應調低 maxBytes 或控制寫入量。

DSH 生態採用「一切皆插件」思路;社區目錄 SkillHub 上的 dsh-memory 頁 與 GitHub 倉庫由社區維護,與 DeepSeek / 幻方無官方應用商店從屬關係。


結尾

dsh-memory 用本機 JSONL 與一段有預算的系統提示,把「關於你的事實」從單次會話裏挪出來,和倉庫內的 AGENTS.md 形成互補。若你要安裝或查閱版本與 CI 狀態,可參考:

  • 目錄頁:https://www.skillhub.cn/plugins/AaronWang-cpu/dsh-memory
  • 源碼與文檔:https://github.com/AaronWang-cpu/dsh-memory
羽毛球分组比赛记分
小程序二维码

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

小夜