前言¶
在 DeepSeek Harness(DSH)裏做長線協作時,模型往往只能依賴當前會話的上下文。把項目路徑、約定、踩過的坑和用戶偏好寫進固定文件、並在每次會話注入系統提示,是 Hermes Agent 一類工具常用的做法;若不做字符上限,記憶會無限膨脹,最終擠佔提示預算甚至拖慢響應。
下面介紹維護者 chengzhixing 發佈的客戶端插件 dsh-memory-budget(npm 包名同名,當前資料記載版本 0.1.1)。它在 DSH 中實現「兩個 Markdown 文件 + 硬字符預算 + 超限必須合併 + 每會話注入系統提示」,語義對齊 Hermes 的 memory 工具,並針對 DSH 做了存儲路徑與寫入後刷新等行爲調整。SkillHub 目錄簡介爲「個人測試用」,星標爲 0;安裝與配置應以 GitHub README 爲準。
這是什麼¶
dsh-memory-budget 是 DSH 的 bounded long-term memory 組合包:通過 memory 工具維護 MEMORY.md(項目/環境事實)與 USER.md(用戶偏好),按條目分隔、按字符封頂,並把用量百分比渲染進系統提示的「長期記憶」段落。插件不聯網、不起子進程,只讀寫配置目錄下的記憶文件(及 .bak / 瞬時 .tmp)。
倉庫:https://github.com/chengzhixing/dsh-memory-budget
目錄頁:https://www.skillhub.cn/plugins/chengzhixing/dsh-memory-budget
許可證:MIT(見倉庫 LICENSE)。
核心功能¶
雙文件與默認預算¶
| 文件 | 存什麼 | 默認上限 |
|---|---|---|
MEMORY.md |
項目/環境事實:路徑、命令、約定、踩過的坑 | 4000 字符 |
USER.md |
用戶偏好與協作方式 | 1500 字符 |
- 條目之間用
\n§\n分隔,純文本,可隨時手改。 - 默認目錄爲
<DSH_HOME>/memories/;DSH_HOME未設置時,Windows 上爲%USERPROFILE%\.dsh。 - 每次會話將兩文件渲染爲系統提示中的一段,並顯示用量,例如:
MEMORY (your personal notes) [42% — 1,680/4,000 chars]
══════════════════════════════════════════════
條目一…
§
條目二…
memory 工具¶
模型(或宿主)可調用:
memory(action=add|replace|remove|list, target=memory|user,
content=..., old_text=..., operations=[{action,content,old_text}, ...])
add:追加一條;完全重複則不做任何事。replace:old_text爲子串,命中第一條包含它的條目後整體換成content;超限時用於合併條目。remove:同上規則刪除該條。operations:批量操作,按最終字符預算原子提交;任一步失敗則整批不落盤。- 超限時會返回當前用量、建議用
replace合併後再試,並附帶當前全部條目。 - 成功返回帶
done: true與提示勿重複寫入,減少模型反覆寫同一條。
持久化採用 tmp+rename 原子寫,並保留 .bak。
相對 Hermes 的設計取捨¶
| 點 | Hermes | 本插件 |
|---|---|---|
| 提示刷新 | 啓動時凍結快照,本會話內寫入不可見 | 默認 refreshOnWrite: true:寫入後下一條立刻可見(可能使 prefix cache 失效);false 時回到凍結語義 |
| 存儲位置 | hermes-home/memories |
<DSH_HOME>/memories,也可通過 dir 指到倉庫目錄做版本管理 |
| 預算 | 7000 / 1500 | 4000 / 1500(可配) |
| 注入防護 | threat-pattern 掃描 | 未做(DSH 威脅模型不同,條目來源爲模型自身) |
命名說明:npm 上的 dsh-memory 已被佔用,SkillHub 上的 dsh-memory 對應另一插件;本倉庫與它們無關。
安裝與啓用¶
DSH 生態裏插件常以 profile 組合包方式安裝;不要憑插件名自行拼接 dsh plugin add github:owner/repo。README 給出三種方式,市場安裝一般走方式 A。
方式 A:組合包(推薦)¶
在目標 profile(一般爲 ~\.dsh\profiles\desktop)的 package.json 中:
"dependencies": { "dsh-memory-budget": "^0.1.1" },
"dsh": { "profile": { "bundles": ["...", "dsh-memory-budget"] } }
隨後在該 profile 目錄執行 pnpm install 並重啓 DSH。包內 cordis.patch.yml 會自動插入 memory 條目——不要再往 profile 的 cordis.patch.yml 裏手寫同 id 的 - insert: 塊,同一 id 插兩次會導致組合失敗。
方式 B:本地腳本(開發用)¶
powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1
腳本將包複製到 <profile>\node_modules\dsh-memory-budget;若 dsh.profile.bundles 已包含 dsh-memory-budget 則跳過 patch 追加,否則在 profile 的 cordis.patch.yml 末尾追加 - insert: 塊。
方式 C:手工兩步¶
- 複製本倉庫目錄到
<profile>\node_modules\dsh-memory-budget。 - 在
<profile>\cordis.patch.yml末尾追加:
- insert:
- id: memory
name: dsh-memory-budget
inject: [tools]
config:
memoryCharLimit: 4000
userCharLimit: 1500
重啓 DSH 後,新會話中應能看到 memory 工具,系統提示裏出現「## 長期記憶」相關段落。
運行環境:package.json 要求 Node >=20,DSH 引擎 >=0.1.7-rc.1。
配置項¶
在 cordis.patch.yml 的 config 或組合包默認中可調整:
| 鍵 | 默認 | 說明 |
|---|---|---|
dir |
"" |
空則 <DSH_HOME>/memories;可指向倉庫目錄以便 git 管理記憶 |
memoryCharLimit |
4000 |
MEMORY.md 預算 |
userCharLimit |
1500 |
USER.md 預算 |
promptOrder |
120 |
提示段排序權重 |
refreshOnWrite |
true |
寫入後是否立刻重建提示段 |
典型用法¶
- 安裝並重啓後,在新會話中由模型調用
memory(action=add, target=memory, content=...)記錄路徑、命令或約定。 - 接近上限時,README 要求先
replace合併多條爲更短條目,再add;不要指望超限後仍靜默寫入。 - 需要把記憶納入 git 時,將
dir設爲倉庫內目錄,手改或工具寫入的MEMORY.md/USER.md即可隨倉庫存檔。 - 查看當前條目:
memory(action=list, target=memory|user)。
維護者在倉庫內用 npm test(需先 npm install 裝 devDependencies)跑 11 個用例,覆蓋存儲、超限、批量原子性、提示塊用量與工具註冊 schema 等;這是在本地驗證插件行爲,不是終端用戶必做步驟。
適用場景與注意¶
適合誰: 希望在 DSH 桌面 profile 中長期保留可編輯、有上限的結構化記憶,並願意在接近預算時用 replace 做合併的開發者;需要與 Hermes 類似「雙文件 + § 分隔」語義、又運行在 DSH 工具鏈上時,可直接對照 README 中的差異表。
權限與安全: 插件以當前 DSH 進程權限讀寫本地文件。安裝前建議瀏覽源碼與 SECURITY.md;dsh.so 啓發式掃描可能對 fs.writeFileSync 與讀取 process.env 報出提示,README 中說明了範圍與威脅模型。
卸載: 組合包方式從 profile 的 bundles 與 dependencies 移除 dsh-memory-budget 後 pnpm install 並重啓;腳本或手工方式則刪除對應 - insert: 塊與 node_modules\dsh-memory-budget。memories\ 下文件可保留,不影響卸載。
SkillHub 等社區目錄獨立於 DeepSeek / 幻方,屬於「一切皆插件」生態下的第三方收錄;本文事實均來自上述 README 與 package.json,未編造案例或用戶反饋。
結尾¶
dsh-memory-budget 把長期記憶收成兩個有字符上限的 Markdown 文件,用 memory 工具維護,並在每會話系統提示裏展示用量——適合在 DSH 裏做有邊界、可手改、可進倉庫的協作記憶。