前言¶
在 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 里做有边界、可手改、可进仓库的协作记忆。