前言¶
DeepSeek Harness(DSH)里跑 agent 时,会话重置是常见做法:省 token、防跑偏。代价也明确——昨天聊过的事、你纠正过的说话习惯、她答应还没办的事,下一次唤醒都不在上下文里。社区里不少记忆方案把「她是谁、该怎么说话、发生过什么、答应过什么」塞进同一个文件或 storage 键,模型每次重读一长串流水,注意力被摊薄。
下面介绍维护者 Xieddenv 在 GitHub 开源的 dsh-memory-kit(社区目录页:skillhub.cn/plugins/Xieddenv/dsh-memory-kit)。它把记忆拆成五层、各自有注入预算和淘汰规则,落到本地纯文本;装好后注册三个记忆工具,由模型在对话里自行维护。插件要求 DSH >=0.2.0-rc.2、Node >=20,当前 package 版本为 0.1.3,MIT 许可。
这是什么¶
一句话:给 DSH 原生 agent 装「身份 / 规矩 / 情节 / 近期会话 / 未了约定」五层记忆,会话重置后从磁盘再注入 system prompt,不写配置、不配数据库、不联网、零依赖(README 表述)。
数据默认在 <DSH_HOME>/memory-kit/memory/(常见为 ~/.dsh/memory-kit/memory/),全是本机 Markdown,无云端与遥测;日记与会话摘要可能含聊天内容,不宜上传到公开仓库。
五层记忆怎么分工¶
| 层 | 文件 | 解决什么 | 注入规则(默认) |
|---|---|---|---|
| 身份 | persona.md |
她是谁、你怎么叫她、绝对不要做什么 | ≤700 字 |
| 规矩 | style.md |
说话方式(被纠正一次可增一条) | 最后 12 条 |
| 情节 | diary/<日期>.md |
发生过什么 | 最近 7 天索引 |
| 近期 | session-log/ |
上次聊到哪(顶部带「这次聊了什么」要点) | 最近一份 |
| 约定 | open-loops.md |
答应过、还没做完的事 | 最后 5 条 |
启动时会建目录、空白模板、注入记忆段、注册 memory_read / memory_write / memory_search。README 说明:首次对话模型会主动问你怎么称呼,并自行写人设与第一句日记;老记忆可跑 node bin/import.mjs 自动探测旧目录,或用 --from <旧目录>、--scan D:\ 深扫。
三个工具(模型自用)¶
| 工具 | 作用 |
|---|---|
memory_write(what, content) |
写日记、加规则、更新人设、记约定 |
memory_read(what, date?) |
读某一层(日记可指定日期) |
memory_search(query) |
全库关键词检索 |
注入段含【记忆维护】指引;验证时可问「你还记得我们上次聊了什么吗」——应先调 memory_search,搜不到应如实说明而非编造。
安装与启用¶
资料未提供 dsh plugin add github:... 一类命令,安装以仓库 README 为准。
方式一:Windows 双击¶
双击 install.cmd(内部绕过 PowerShell 执行策略跑 install.ps1)。脚本会把包放到 <DSH_HOME>/plugins/、在 profile 建 junction、把 bundle 写进 profile 的 package.json。装完需重启 DSH。指定 profile:install.cmd -Profile <名字>。
方式二:手动¶
- 把本仓库目录复制到
<DSH_HOME>/plugins/dsh-memory-kit - 建链接:
<DSH_HOME>/profiles/<profile>/node_modules/dsh-memory-kit→ 上述目录 - 编辑
<DSH_HOME>/profiles/<profile>/package.json:dependencies增加"dsh-memory-kit-xie": "link:<DSH_HOME>/plugins/dsh-memory-kit",dsh.profile.bundles数组增加"dsh-memory-kit" - 重启 DSH
装好后怎么确认¶
重启后应出现记忆目录与插件日志。日志路径:<DSH_HOME>/memory-kit/memory-kit.log,期望含类似:
memory dir = ...\.dsh\memory-kit\memory
prompt section updated(552 字)
tool registered: memory_read
tool registered: memory_write
tool registered: memory_search
dsh-memory-kit ready
目录结构:
<DSH_HOME>/memory-kit/memory/
├─ persona.md
├─ style.md
├─ open-loops.md
├─ diary/
└─ session-log/
在插件目录执行自检(README 提到 25 项或 26 项表述,以仓库 test/smoke.mjs 为准):
node test/smoke.mjs
全绿表示五层文件、注入、工具与首次引导等检查通过。
装好后建议先做的一件事¶
唯一建议手写的是 persona.md(README 示例,500 字以内为宜):
# 她是谁
- 名字:小满
- 我叫:(填你的名字),她可以叫我「阿x」
- 关系:随口聊天的搭子,不是客服
- 说话风格:懒散、短句、偶尔犯困
- 绝对不要:用感叹号刷屏、叫「主人」
style.md、diary/、open-loops.md 可由模型在对话中逐步写入。插件只提供记忆方法,不带预设人设。
可选配置¶
在 <DSH_HOME>/profiles/<profile>/cordis.patch.yml 中对应 bundle 的 config(或 profile package.json 的 bundle 配置):
- insert:
- id: memory-kit
name: dsh-memory-kit
config:
dir: '' # 留空 = <DSH_HOME>/memory-kit/memory
personaMaxChars: 700
styleTailLines: 12
diaryIndexDays: 7
openLoopsTailLines: 5
refreshSeconds: 60
适用场景与注意¶
适合谁:在本机 DSH 里跑原生 agent、需要「重置会话但不失忆」、愿意用本地 Markdown 管记忆、接受关键词检索而非向量语义搜索的开发者。
已知限制(README):
memory_search为纯关键词,换说法可能搜不到- 对话经摘要、日记再注入会丢细节,需写具体些缓解
- 无内置定时复盘,可自行用定时任务调模型
- 只服务 DSH 原生 agent;qq-bridge 等宿主需自行注入(作者另有
memory-kit配方包可参考)
安全与权限:插件随当前 DSH 进程权限读写本机文件;安装前请阅读 源码与 LICENSE,确认符合你的环境与合规要求。
结尾¶
dsh-memory-kit 把 DSH 会话重置带来的「健忘」拆成五层本地记忆和三个维护工具,装完重启即可从日志与目录验证是否生效。详情与更新以仓库为准。