dsh-memory:为 DeepSeek Harness 提供可编辑的跨会话记忆

前言

在 DeepSeek Harness(DSH)里和智能体协作时,一个常见问题是会话结束后上下文清空:你昨天说过「一律用 pnpm」「用中文回答」,新开一次对话又要从头交代。项目里的 AGENTS.md 适合写仓库级、由人维护的规范,但不适合存放「只关于你」、跨项目复用的偏好。

dsh-memory 由维护者 AaronWang-cpu 发布,分类属于「记忆」类 DSH 插件。它把智能体在对话中认为值得保留的事实写入本机 JSONL 文件,并在每次组装系统提示时注入一段有字节上限的记忆摘要,使新会话从第一个 token 起就能带上这些信息,无需额外工具调用。


这是什么

一句话:dsh-memory 是面向 DeepSeek Harness 的持久化、人类可读可改的记忆插件——智能体在跨会话中记住你。

存储默认落在 ~/.dsh/memory/memory.jsonl(可通过配置改目录),不依赖 API Key、不访问网络、无后台服务。记忆写在仓库外,作用范围是「你」而不是单个 Git 仓库。

与 AGENTS.md 的分工可以这样理解:

AGENTS.md dsh-memory
撰写方 人手工维护 智能体在工作过程中写入
范围 单个仓库 跨所有工作区
位置 仓库内(可提交) ~/.dsh/memory/(本机私有)
增长方式 人工编辑 自动写入,去重
体量 视内容而定 有字节与条数上限

二者可以并存:规范留在 AGENTS.md,个人偏好与约束交给 memory。


核心功能

下面介绍插件实际提供的能力,均对应其 README 与实现说明。

memory 工具(四个动作)

智能体注册名为 memory 的工具,支持 save、search、list、forget。save 会折叠空白并在忽略大小写的前提下去重,重复陈述同一事实会更新条目而不是堆叠近似副本。工具描述会引导智能体跳过 transient 任务状态、以及已从文件中可读到的内容。

提示词片段注入

通过 ctx.systemPrompt.section() 在顺序 10150 注册一段系统提示(位于 Web surface 之后、persona 后缀之前)。片段文本是函数,每次组装都会重新渲染,因此上一回合保存的事实可以在下一回合、甚至全新会话中立刻出现在提示里。

默认 maxBytes 为 4096;超出预算时优先保留较新的条目,并说明有多少旧条被省略,而不是静默关掉整块功能。

存储格式与可靠性

每行一个 JSON 对象,例如:

{"id":"4f2a91c8","content":"Prefers pnpm over npm.","tags":["preference","tooling"],"createdAt":"2026-11-09T08:12:44.101Z","updatedAt":"2026-11-09T08:12:44.101Z"}

损坏的行会被跳过,不会拖垮整个插件;写入先落临时文件再 rename,降低中途崩溃导致截断的风险。数据仅保存在本机,无账号、无遥测。

可选配置

多数用户无需改配置。若需要,在 profile 的 cordis.patch.yml 中可为插件 dsh-memory 设置:

- id: dsh-memory
  name: 'dsh-memory'
  config:
    dir: 'C:/Users/me/.dsh/memory'   # default: <DSH home>/memory
    maxBytes: 4096                   # prompt-section budget
    maxEntries: 500                  # oldest evicted beyond this
字段 默认值 含义
dir <DSH home>/memory 存储目录;设置了 DSH_HOME 时会尊重该环境变量
maxBytes 4096 注入片段的字节预算
maxEntries 500 条目硬上限,超出后删最旧

当前版本的边界

README 明确列出的限制包括:全局一份存储(暂无按项目隔离);search 仅为内容与标签上的大小写不敏感子串匹配,无向量检索;无自动从对话里抽取记忆的 summariser,需智能体显式 save;无设置页或面板;注入片段会占用提示 token(约 4 KB 对应约 1K token,可按需调低 maxBytes)。

运行要求:DeepSeek Harness 0.2.x(Host API 以 0.2.2-rc.1 为准)、Node >= 20。插件版本 0.1.1,许可证 MIT,除 Node 标准库外无第三方依赖。


安装与启用

先做插件安装,再重启 DSH。官方 desktop profile 安装命令为:

dsh plugin --profile desktop add github:AaronWang-cpu/dsh-memory

重启后即生效:无需配置项、无需 API Key、无需联网。

若从本地目录加载,可使用绝对路径:

dsh plugin --profile desktop add /absolute/path/to/dsh-memory

也可手工编辑 ~/.dsh/profiles/desktop/package.json,在 dependencies 与 dsh.profile.bundles 中加入 dsh-memory(具体 JSON 结构见仓库 README)。

安全说明: 插件以当前 DSH 进程权限读写本机 ~/.dsh/memory/ 等路径。安装前建议查看 GitHub 仓库 源码与 MIT 许可证,确认符合你的环境策略。


典型用法

使用方式是对话驱动,无需单独学习 CLI。

你说的话 预期行为
「I always use pnpm.」 保存为持久偏好
「以后的提交信息都用中文」 保存
「Our staging DB is read-only, never write to it.」 保存约束类事实
「What do I usually prefer?」 智能体在记忆中搜索
「Forget what I said about pnpm.」 列出、定位并删除相关记忆

README 中的跨会话示例:你先声明偏好并得到 Saved. (memory 4f2a91c8);次日全新会话问「这个项目装依赖该用什么?」,智能体可直接回答 pnpm,而不必再调用工具或复述「正如你之前所说」。

人工维护同样支持:cat、grep、直接编辑或删除 memory.jsonl 中的某一行均可。


适用场景与注意

适合: 长期在 DSH 桌面 profile 下工作、希望个人偏好与操作约束跨项目、跨会话生效的开发者;愿意用纯文本 JSONL 做备份与版本管理的用户。

不适合或需知悉: 需要按仓库隔离记忆、或需要语义检索与排序的场景(当前仅为子串搜索);对每次请求增加的提示 token 非常敏感时,应调低 maxBytes 或控制写入量。

DSH 生态采用「一切皆插件」思路;社区目录 SkillHub 上的 dsh-memory 页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方应用商店从属关系。


结尾

dsh-memory 用本机 JSONL 与一段有预算的系统提示,把「关于你的事实」从单次会话里挪出来,和仓库内的 AGENTS.md 形成互补。若你要安装或查阅版本与 CI 状态,可参考:

  • 目录页:https://www.skillhub.cn/plugins/AaronWang-cpu/dsh-memory
  • 源码与文档:https://github.com/AaronWang-cpu/dsh-memory
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye