前言¶
DeepSeek Harness(DSH)的會話默認是一次性的:關掉再開,模型不會保留上一輪交代過的背景,你往往要重複說明偏好、項目上下文和約定。社區裏常見做法是外掛向量庫、單獨跑記憶服務,或在每輪提示裏硬塞摘要——要麼多依賴、要麼多佔 token,要麼和宿主耦合較深。
下面介紹維護者 KZADEA 發佈的 dsh-her-memory(分類:記憶)。它把「記住用戶、以及對話裏發生過什麼」交給對話中的模型自行判斷:插件提供六個讀寫磁盤明文記憶的工具,插件本身不調模型,按 README 說明爲零額外 token;同時維護可預測的心情、關係、精力狀態,並帶輸入框狀態條與設置頁可視化面板。存儲爲純 Markdown 與 JSON,零 npm 依賴,不 import DSH 官方 @deepseek-ai/* 包。
這是什麼¶
dsh-her-memory 是 DSH 桌面 profile 下的 Cordis 插件(包名 dsh-her-memory,當前 package.json 版本 1.5.6,MIT 許可證,要求 Node >=20)。一句話定位:跨會話全局長期記憶 + 動態心情狀態,工作區可選隔離。
- 目錄頁:https://www.skillhub.cn/plugins/KZADEA/dsh-her-memory
- 源碼與說明:https://github.com/KZADEA/dsh-her-memory
DSH 生態理念是「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
記憶落在哪、怎麼隔離¶
默認根目錄爲 ~/.dsh/memory/,按工作區分庫。結構如下(摘自 README):
~/.dsh/memory/
├─ _shared/ ← 默認所有工作區共用
│ ├─ core.md 長期核心記憶(每輪注入)
│ ├─ inbox.md 零碎待整理(每輪注入)
│ ├─ topics/*.md 專題記憶(只注入文件名清單)
│ ├─ log/<日期>.md 當天日記(只注入文件名清單)
│ └─ state.json 心情 / 關係 / 精力
└─ _sandbox/ ← 被隔離的工作區專用(結構同上)
默認全局共用一份 _shared,換工作區記憶不斷層。若某個工作區需要獨立記憶庫(例如試玩區不應污染長期記憶),在 cordis.patch.yml 的配置裏填寫絕對路徑 sandboxCwd:
config:
sandboxCwd: "D:\\sandbox-zone"
識別依據是會話的工作目錄(cwd),路徑比較不分大小寫、忽略結尾斜槓。工具全局註冊,但能從 exec.agent 讀到調用會話,從而選庫——同一時刻不同工作區可各看各的記憶。
全是明文文件:可隨時打開查看、手工修改,或整目錄刪除;無數據庫、無向量庫。
六個工具¶
記憶的寫入與整理由對話裏的模型調用工具完成,插件不替模型做推理。
| 工具 | 作用 |
|---|---|
remember |
記一件事;默認進收件箱;可指定 topic 進專題、section 進核心記憶 |
recall |
按關鍵詞搜索全部記憶,返回命中行 |
memory_list |
列出記憶庫文件、大小與當前狀態 |
forget |
刪除含關鍵詞的行(默認只動收件箱,scope:"all" 才動核心) |
how_i_feel |
查看當前心情、關係進度、精力 |
feel |
爲當前時刻留一句話(最多 5 條,會出現在心情摘要裏) |
注入、人設與界面¶
每輪注入¶
啓用後(首次需完全重啓 DSH):
- 系統提示中會多一段「你有長期記憶」的固定說明;
- 每輪會插一條獨立注入消息,前綴爲
【her-memory|系統注入,非用戶消息】,用戶自己發送的內容不會被追加修改; - 人設走常駐系統提示段(
systemPrompt.section),重啓後對已在跑的會話也生效,無需新開會話。
可通過 memoryBudget(默認 1800 字符)、moodBudget(默認 260)、injectViaSystemPrompt 控制注入量;設爲 0 則對應部分停止注入。
人設文件¶
插件默認自帶「鯨魚女僕」人設(外貌、性格、日常行爲等,詳見倉庫內 人設文件.txt),默認稱呼爲「主人」(配置 userTitle 留空時同樣爲「主人」)。
改人設不必改 YAML:正文在獨立文件 人設文件.txt:
- 插件目錄內:隨包默認,解壓即可見;
- 記憶目錄內(默認
~/.dsh/memory/人設文件.txt):優先生效,升級插件不覆蓋,推薦改這份;首次運行會從包內複製。
規則:任意換行與條目,無需管縮進;<!-- --> 註釋不會進人設;正文清空則關閉人設注入;刪文件再重啓則恢復默認。改完需完全關閉再打開 DSH 才生效。
狀態條與設置面板¶
客戶端 client.js 佔用兩個插槽:
- 輸入框上方狀態條(
conversation.input.dock):展示心情、關係、精力進度、回合數與記憶條數;收件箱滿 5 條會提示「該整理了」。可雙擊「心情」「關係」觸發特效;雙擊「精力」隨機回血 +1~50 並顯示+NN。 - 設置頁「記憶與心情」(
settings.section):三指標、統計格、專題標籤、最近條目、心情便籤、磁盤路徑;隔離工作區單獨卡片。
數據來自 Host 註冊的 GET /her-memory/snapshot;狀態條約 4 秒、面板約 10 秒刷新一次。配色優先使用 --dsw-* 主題變量。
心情狀態規則(摘要)¶
非隨機數,README 給出的規則包括:
- 用戶每說一句,心情 +1~3(話越長漲越多);
- 間隔 ≤10 分鐘連續聊,關係與心情漲得更快;聊得越密精力掉得越快(10 分鐘內接着說 -2,否則 -1);
- 精力閒置恢復:離開 30 分鐘起每 30 分鐘 +5;超過 8 小時直接回滿;
- 冷落超過 12 小時後,心情按每
moodDecayHours(默認 6)小時回落 1 點,最低statFloor(默認 20); - 離開較久再開新對話,三數值可按
statJitter/statJitterCooldownMinutes做輕微隨機浮動。
也可直接編輯 state.json,或由模型調用 feel。
安裝與卸載¶
README 給出的安裝方式爲本地 link(示例路徑需換成你本機插件目錄):
dsh plugin --profile desktop add link:D:\dsh-her-memory
安裝後重啓 DSH。卸載:
dsh plugin --profile desktop remove dsh-her-memory
再刪除 ~/.dsh/memory/ 可清除全部記憶與人設文件,README 稱無服務、端口等殘留。
典型用法¶
- 按上文命令 link 插件並重啓 DSH。
- 在對話中讓模型使用
remember記下偏好或項目事實;零碎內容先進inbox.md,整理後可寫入core.md或topics/。 - 需要回顧時用
recall搜關鍵詞,或用memory_list看庫內概況。 - 誤記可用
forget刪行(慎用scope:"all"以免動到核心記憶)。 - 在設置頁查看路徑與統計,或編輯
~/.dsh/memory/人設文件.txt調整陪伴人設;費 token 時將memoryBudget調小或關閉injectViaSystemPrompt。
配置要點¶
在 cordis.patch.yml 的 config 段修改,常用鍵如下(默認值見 README):
| 鍵 | 說明 |
|---|---|
memoryRoot |
記憶目錄,默認 ~/.dsh/memory |
memoryBudget / moodBudget |
每輪注入字符上限,0 爲不注入 |
injectViaSystemPrompt |
是否注入記憶(關則保留心情與工具) |
sandboxCwd |
隔離工作區絕對路徑,空爲全局共用 |
statFloor |
心情/關係/精力下限,默認 20 |
personaFile / personaFileAutoWrite |
人設文件名與首次自動複製 |
userTitle |
稱呼,空則「主人」 |
injectFallback |
默認 false;開啓可能在注入失敗時用 agent.inject() 模擬用戶消息,README 警告可能引發多輪自循環、額外 token,除非清楚代價否則保持關閉 |
適用場景與注意¶
適合:希望在 DSH 桌面端用明文、可審計的方式做跨會話記憶;需要輕量「陪伴感」狀態(心情/關係/精力)但不引入向量庫或官方包依賴的開發者。
注意:
- 插件以當前 DSH 進程權限讀寫
memoryRoot;安裝前請自行審閱源碼與 MIT 許可證,確認路徑與隔離策略符合你的安全預期。 - 與 token-saver 同裝時,兩條狀態條在同一列且寬度互相影響;佈局異常時可完全重啓 DSH,或逐個禁用插件排查。未裝 token-saver 時本插件按自身寬度顯示。
- README 標明全量容錯:磁盤或 API 失敗會降級,最壞爲記憶功能靜默失效,不應導致 DSH 加載失敗。
倉庫 README 稱主測試臺 93 項等人設與客戶端相關斷言在發包前跑通;具體行爲以你安裝的版本爲準。
結尾¶
dsh-her-memory 用六個工具、純 Markdown/JSON 和可選工作區隔離,把 DSH 跨會話記憶和心情狀態收進一個零依賴插件;模型決定是否讀寫記憶,插件負責落盤與注入摘要,並附帶狀態條與設置頁便於查看與調參。