前言¶
在 DSH(DeepSeek Harness)里跑智能体,会话上下文会随对话结束而消失。把偏好、项目约定、历史结论写进 prompt 可以续上一点,但每次手动维护成本高,也难以审计变更。云端向量库或托管记忆服务能解决持久化,但数据离开本机,恢复和回滚也不直观。
dsh-memory(GitHub 仓库 seriousz158/dsh-memory,bundle 名 dsh-git-memory)走另一条路:把长期记忆存进本地 Git 仓库,由 DSH 插件在启用时注入摘要,并提供设置页开关、清空确认和可选的空闲会话同步。维护者为 seriousz158,当前版本 v0.8.2,MIT 许可证;截至 2026-08-26,GitHub 约 67 stars、2 forks。
这是什么¶
dsh-memory 是 DeepSeek Harness 的本地、Git 版本控制的长期记忆插件。它不依赖托管记忆服务或云向量库,记忆数据与插件源码仓库分离,默认落在 ~/.dsh/storages/memory(可通过环境变量 DSH_MEMORY_ROOT 指定其他本地绝对路径)。
插件分 host 与 settings UI 两半,以 bundle 形式一次安装;注册 memory 设置命名空间后,memory.enabled 在下次模型调用前即可生效,无需重启 DSH 进程。
核心功能¶
本地 Git 存储¶
记忆以 Markdown 写入独立 Git 仓库,结构大致如下:
summary.md # 短导航与偏好快照
handbook/ # 可复用知识
rollouts/ # 按会话提取的结果
archive/ # 已 supersede 的条目
scripts/ # transcript 过滤辅助
.last-sync # 可选同步器水位
summary.md 面向模型的是有界、显式不信任的快照(上限 12 KiB);细节放在 handbook/、rollouts/、archive/。记录支持 front matter、命名空间 id、来源、过期投影和确定性冲突处理。
读取与检索¶
memory.enabled 为 true 时,host 向模型注入记忆指引。运行时还可调用:
memory.search():本地、有界检索,带引用memory.context():按使用情况的确定性排序返回上下文
读取用量写入 .sync/usage.json 私有元数据;README 说明不会把 transcript、prompt、凭据或记忆正文写入 journal。
设置页与安全清空¶
DSH 设置中出现「长期记忆」行,可查看仓库状态、切换开关、预览与回滚,以及经两步确认的 Delete memory。清空前会在 Git 中保留恢复点:干净仓库复用现有 HEAD,目标路径有未提交变更时先打 checkpoint commit,再记录清空后的状态。插件会拒绝不安全的仓库布局、符号链接逃逸、非仓库根目录及清空过程中的路径竞态。
持久化设置仅一项:
memory:
enabled: true
UI 通过固定 memory 远程服务调用,例如 memory.getSettings()、memory.setEnabled()、memory.status()、memory.clear({ confirmation: "DELETE_MEMORY" }) 等;设置页不暴露文件系统根路径,也不直接执行 Git。
可选空闲会话同步¶
可选的 headless 同步器只处理空闲的本地会话日志,在每次运行的私有工作区中编辑隔离副本,由 host 校验后写入线上 Git 仓库。默认权限为 workspace-write,不会静默安装 DSH,且只转发白名单环境变量。host 侧提供 dry-run / preview / apply、操作锁、健康检查、有界批次、重试退避等;恢复、回滚、备份导入导出与 legacy 迁移可通过 CLI / host API 完成(迁移不在设置 UI 暴露)。
安装与启用¶
项目通过 GitHub 源码安装与 GitHub Releases 分发,未发布到 npm。推荐用 DSH plugin bundle 一条命令安装 host 与 UI:
dsh plugin --profile web add github:seriousz158/dsh-memory
安装后重启所选 DSH profile。bundle 不包含任何记忆数据、会话日志、凭据或本地 .dsh 目录。
本地开发或集成时,可 clone 仓库后使用仓库内安装脚本(需 Node.js ≥ 22,并与 DSH 0.1.0-rc.7 对齐测试):
git clone https://github.com/seriousz158/dsh-memory.git
cd dsh-memory
npm install --global @deepseek-ai/dsh@0.1.0-rc.7
npm ci --ignore-scripts
./integrations/dsh/install.sh
非默认路径示例:
export DSH_HOME="$HOME/.config/dsh"
export DSH_MEMORY_ROOT="$HOME/Documents/dsh-memory-data"
./integrations/dsh/install.sh
安装脚本会在 profile 下链接 dsh-memory 与 dsh-memory-ui,并在记忆根目录缺失时初始化为私有本地 Git 仓库。重启 DSH host 后,在设置中打开「长期记忆」开关,下一次模型调用即可参与召回。
典型用法¶
启用记忆并在设置中查看状态
安装并重启后,保持 memory.enabled: true。在 DSH Settings 的「长期记忆」查看仓库与最近同步状态;需要停用召回时关闭开关即可,不必删仓库。
在智能体逻辑中检索记忆
插件暴露的 host API 支持 bounded 检索(具体调用方式以仓库 README 与 DSH Cordis 文档为准)。典型模式是:会话开始前通过 memory.context() 拉取与当前任务相关的条目,或在工具链中调用 memory.search() 并按返回的 source citation 引用。
清空已学记忆
仅在确认要删除 summary.md、handbook/、rollouts/、archive/ 内容时使用设置页清空,并完成二次确认字符串 DELETE_MEMORY。操作前 Git 会留下可回滚的 commit,便于误操作后恢复。
可选:空闲会话同步
若希望从本地空闲会话日志增量提炼记忆,在配置好同步器与 DSH_MEMORY_ROOT 的环境中按项目文档运行 headless 同步;同步在隔离工作区进行,apply 前可用 preview / dry-run。
兼容性与环境¶
| 组件 | 支持版本 |
|---|---|
| DSH runtime peer | @deepseek-ai/dsh@^0.1.0-rc.6(含 rc.7) |
| 推荐测试 runtime | 0.1.0-rc.7 |
| Node.js | 22.x |
| Python | 3.11.x |
| Git | 本地可执行文件在 PATH |
| 操作系统 | macOS 为官方支持/集成测试目标 |
DSH rc.8 及更高版本尚未经本仓库测试套件验证。DSH_MEMORY_ROOT 须在安装、每次 host 启动、显式初始化及同步器运行时一致设置;一次性安装赋值不会自动作用于后续 LaunchAgent 等任务。
适用场景与注意¶
适合谁
- 希望在单机、可审计的 Git 历史里维护 DSH 长期记忆,而不使用云端记忆服务的开发者。
- 需要设置页开关、清空确认、回滚与可选会话同步的 DSH 用户。
- 已在 macOS 上使用 DSH
0.1.0-rc.6/rc.7图谱的团队(其他平台需自行验证)。
使用前注意
- 插件以当前 DSH 进程权限读写本地仓库与环境;安装前应阅读源码与 MIT 许可证,确认记忆路径与清空行为可接受。
- 记忆仓库与插件源码仓库是两套 Git;备份、迁移请针对
DSH_MEMORY_ROOT指向的目录操作。 - SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;插件列表与星标数会变动,以 GitHub 仓库为准。
结尾¶
dsh-memory 把 DSH 的长期记忆落在本地 Git 里:一条 bundle 安装命令、一个 memory.enabled 开关,加上有界的 summary.md 注入与可选空闲同步,在不用托管服务的前提下提供可审计、可回滚的记忆工作流。
- 社区目录页:https://www.skillhub.cn/plugins/seriousz158/dsh-memory
- GitHub:https://github.com/seriousz158/dsh-memory