前言¶
在 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