前言¶
在 DeepSeek Harness(DSH)裏跑 Agent,每次新會話默認都是「失憶」的:上一輪確認過的偏好、環境事實、項目約定,不會自動帶到下一輪。常見做法要麼把記憶整段塞進系統提示詞(要寫、要維護、還要解決注入機制),要麼靠後臺 LLM 從對話裏提煉(每輪多一筆模型調用,內容還可能進第三方向量庫)。
下面介紹社區插件 dsh-memory(維護者 jipika):把長期記憶落成本機純 markdown,走 DSH 原生提示詞 seam 做漸進式注入,寫入由當前會話 Agent 完成,插件本身不額外調用模型。
這是什麼¶
dsh-memory 是給 DSH 用的漸進式長期記憶插件:正文是分片 markdown,進系統提示詞的主要是實時生成的片級地圖(片名 · 關鍵詞 · 條數 · 最新日期);具體條目通過 memory_search 取線索,再按行 read 拉回(精確正則才用 grep)。兩層結構爲全局層(跨項目)+ 項目層(隨工作區切換),另有全局規則文件;可在 DSH 設置裏查看、編輯,寫完即生效(函數式重讀,無需重啓)。
- 分類:記憶
- npm 包:
@jipika/dsh-memory(README 標註當前 npm 版本可通過 badge 查看;倉庫package.json爲 0.9.0) - 許可證:MIT
- 目錄頁:skillhub.cn/plugins/jipika/dsh-memory
- 源碼:github.com/jipika/dsh-memory
DSH 生態是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
核心功能¶
兩層記憶與文件佈局¶
全局層默認寫在 ~/.dsh/memory/topics/*.md,按主題分片(例如用戶偏好、平臺事實等)。項目層在 ~/.dsh/memory/projects/ 下,目錄名由會話 cwd 推導(路徑 / 換 -,兩端加 --,與會話目錄命名一致)。支持目錄分片或單文件兩種形態,可互相遷移而無需改插件配置。
人讀用的導航索引 ~/.dsh/memory.md 不參與注入;全局規則在 ~/.dsh/AGENTS.md,新會話會注入,設置面板裏也可編輯。
漸進式注入與恆定提示詞開銷¶
默認地圖模式:提示詞裏只有片級地圖,條目標題與正文不進系統提示;記憶再長,注入體量仍可控(README 給出分片前後、以及較大真實庫下的字符數對比)。條目 ≤ 12 條的層仍逐條內聯,避免小層多一次檢索。
三檔注入方式(設置 → 記憶 →「注入方式」):
- 地圖模式(默認):片級地圖 + 按需
memory_search/read。 - 索引模式:地圖 + 每片最新 N 條「標題 · 行號」,超「索引預算」(默認 12000 字符,面板可選 6K/12K/18K/24K/不限制)時按
[8,5,3,2,1]逐檔收縮,仍保留片級線索。 - 全文注入:分片正文整篇進提示詞,超上限時自動回退索引模式並說明原因。
注入段頭行刻意不寫動態統計(片數/條數/字符數挪到段尾 HTML 註釋),以降低對 provider KV cache 前綴的擾動;片級統計行作爲路由信息仍保留。
memory_search 與檢索紀律¶
v0.8 起註冊 memory_search:中文 bigram、字段加權、相關度排序,同步掃描文件、無額外索引。紀律塊要求優先 memory_search,跨多片、多條或大片正文時建議委派檢索子代理(存在 subagent_memory 時優先使用);1–2 條可直接 read。
零額外 LLM 成本與寫完即生效¶
插件只讀文件、組裝提示詞;寫記憶依賴當前會話裏已在運行的 Agent。註冊的是函數式 text,每次提示詞組裝都會重讀文件。
設置面板與回合記憶欄¶
DSH 設置中出現「記憶」分欄:全局規則、全局層(按片頁籤)、項目層開關;可就地編輯並保存(保存前自動 .bak)。v0.8 起每條 AI 回覆底部可有「本回合記憶 · 讀取 N · 寫入 M」摺疊條,數據來自 session 持久日誌投影,可在設置中關閉渲染。
寫入守衛與權限邊界¶
插件涉及:~/.dsh/memory/** 讀寫、每輪提示詞注入與索引生成;tools/pre-execute / tools/post-execute 上的記憶寫入守衛與審計日誌。與 trinity-hooks 等同爲 pre-execute 監聽者時,本插件只審記憶路徑。回滾方式:從 dsh.profile.bundles 去掉 @jipika/dsh-memory 並重啓應用。
安裝與啓用¶
推薦從 npm 安裝(已收錄 DSH 1024Store)。安裝命令以 README 爲準:
dsh plugin --profile web add @jipika/dsh-memory
插件自帶 cordis.patch.yml(package.json 聲明 dsh.bundle.patch),安裝時 DSH 會自動掛進 profile 組合樹,無需手工編輯 profile 文件。
若使用 link: 本地源碼開發,README 要求改完鏈接後執行 pnpm install,並建議重啓一次 DSH(host 部分在 boot 時加載);日常改記憶或開關一般不需要重啓。
典型用法¶
在 AGENTS.md 里約定寫入紀律¶
記憶由 Agent 在學到事實的同一回合追加,格式建議 - [YYYY-MM-DD] fact。README 示例(英文,可放在 ~/.dsh/AGENTS.md):
Memory upkeep (long-term memory):
- TWO layers, both injected on every assembly (no restart needed):
· GLOBAL `~/.dsh/memory/topics/*.md` — facts that would bite in ANY repo,
sharded by topic (each file starts with a comment saying what belongs there).
`~/.dsh/memory.md` is only a navigation index — never append memory to it.
· PROJECT `~/.dsh/memory/projects/--<cwd-with-slashes-as-dashes>--.md` — facts
that only hold in this workspace.
- What the prompt shows is an INDEX (shard · count · path), not the full text:
read that shard when you need the detail. Index lines carry line numbers.
- Append one line `- [YYYY-MM-DD] fact` under the matching section, in the SAME
turn you learn it. Do not batch for "later". Keep each shard small (~12k chars)
— when one outgrows that, split it by sub-topic in the same directory.
- Do NOT log narration or anything re-derivable from the repo.
- NEVER put secrets in it — both layers ride every request to the model provider.
- Record what IS true, never a removal: "X was uninstalled" is stale the moment
it is written and taxes every future session.
分片首行註釋 <!-- 片名 · 關鍵詞… --> 中 · 或 : 之後的關鍵詞會進入地圖/索引,便於 Agent 判斷要不要深入讀取。
Agent 側讀取路徑¶
- 看系統提示裏的片級地圖(或索引行號)。
- 調用
memory_search按任務關鍵詞找命中行。 - 用
read按行號取條目;需要精確正則時再grep。
適用場景與注意¶
適合誰:希望長期記憶留在本機、可 git diff、可手改,又不想爲「記憶插件」單獨燒 LLM 調用的 DSH 用戶;全局偏好 + 按倉庫/project 的約定、踩坑記錄較匹配兩層模型。
務必注意:
- 插件以當前 DSH 進程權限運行,會讀寫
~/.dsh/memory/**並在每輪請求中向模型 provider 注入記憶相關片段;安裝前請閱讀源碼與 MIT 許可證,自行評估信任邊界。 - 不要寫入密鑰;兩層內容會隨請求發往模型側。
- 只記錄仍爲真的事實,避免把「已卸載某物」之類瞬時狀態寫進長期記憶。
- 社區目錄與 GitHub 星標(資料抓取時爲 3)僅作發現參考,不代表官方背書。
結尾¶
dsh-memory 的取捨很直接:記憶就是 markdown 文件,注入走 DSH 原生 seam,擴容靠地圖與按需檢索而不是整庫灌進 system prompt。若你在 DSH 裏做跨會話的 Agent 工作,可以從 npm 一條命令裝上,在設置裏打開「記憶」分欄,再用 AGENTS.md 把寫入紀律寫清楚。
- 目錄頁:https://www.skillhub.cn/plugins/jipika/dsh-memory
- GitHub:https://github.com/jipika/dsh-memory