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