前言¶
用 DeepSeek Harness(DSH)做项目时,会话一关,上下文就散了:上周怎么定的方案、踩过的坑、当时跑过的命令,往往只能靠翻聊天记录或自己记笔记。社区里也有把要点写进 Memory.md、或往 system prompt 里塞摘要的做法,但要么和会话脱节,要么默认就占 token。
下面介绍维护者 reaxlll 发布的 dsh-workspace-recollection(GitHub:reaxlll/dsh-workspace-recollection,社区目录分类为「记忆」)。它按工作区隔离、跨会话共享记忆,默认不向 system prompt 注入任何内容,需要时通过工具分层取回,适合在同一仓库里长期迭代、又希望 Agent 能「想起来」既往决定的场景。
这是什么¶
dsh-workspace-recollection 是 DSH 的跨会话长期记忆插件:记忆按会话 header 的 cwd 分桶,一个工作区一份,该工作区下的所有会话共用同一份记忆库。核心是分层检索——会话开始时什么都不注入,用哪层调哪层工具。
插件只使用官方插件 API(systemPrompt.section、tools.register、webServer.register),前后端走 /api/session-memory/*,不改动 DSH 内核。当前 package 版本为 2.6.0(MIT 许可证);README 写明在 dsh 0.2.0-rc.2 下开发并测试,其他版本如遇问题可向仓库提 issue。
核心功能¶
跨会话与零注入¶
- 记忆持久化在
$DSH_HOME/session-memory/memory.json;工作区侧有镜像索引文件<工作区>/Memory.md,写的是浅层要点。 - 默认不往 system prompt 里塞记忆(旧数据升级时会自动关掉注入);目录、要点、原文全部通过工具按需获取。
- 支持把本工作区历史会话一键导入长期记忆(一条记忆对应当时的用户消息、思考原文、工具调用与结论)。
分层检索(省 token)¶
| 层 | 作用 |
|---|---|
| 浅层 | memory_index 拿目录;memory_recall 做语义检索,只回要点 + id |
| 段级 | 长文先用 memory_locate 按关键词定位段号,再用 memory_detail 的 segments 只取切片 |
| 深层 | 需要完整思考、命令、结论时,才用 memory_detail 取整条原文 |
README 给出的取用顺序:够用就停——先 memory_recall,不够再 memory_locate / 段切片,最后才整条 memory_detail。实测一条约 1.5 万字的记忆,取回两段约 1200 字,相对整条取回可省约 92%~97% 的 token(数据来自仓库 README)。
本地嵌入与检索增强¶
- 语义检索使用本机模型 Xenova/bge-small-zh-v1.5(512 维,ONNX 量化约 23MB)。首次启动会自动从镜像(
hf-mirror.com,失败回退huggingface.co)下载;之后运行时零联网,不调云端 API。 - 嵌入不可用时,
memory_recall会退回关键词检索;面板状态条可重试「加载模型」。 memory_recall带噪音过滤(四路信号:绝对底线、硬特征、相对长尾、平局)和时间通道(如「昨天」「九天前」按首次安装记录的时区筛条目)。- 段级定位在本地用 BM25(
lib/segments.js),按正文##标题切节,纯 CPU、无额外模型。
九个工具与面板¶
工具包括:memory_write、memory_index、memory_recall、memory_locate、memory_detail、memory_search、memory_forget、memory_import、session_read。手工解压 $DSH_HOME/sessions/ 下的 zstd 会话文件在工具层会被拦截;读历史会话应使用 session_read。
安装并重启 DSH 后,在会话头部点「记忆」可打开面板:状态条、记忆列表、新增编辑、预览注入、检索测试,以及 Memory.md 的预览与手记区块。
安装与启用¶
以下命令在终端(PowerShell / CMD / bash 等)中执行。插件以当前 dsh 进程的权限运行,安装前建议自行查看仓库源码与许可证。
# 确认 Node.js 已安装
node -v
# 安装 DSH 启动器与 pnpm(已装可跳过;装完请重新打开终端)
npm install -g @deepseek-ai/dsh pnpm
dsh --version
# 安装插件:--profile 填实际使用的配置(桌面应用用 desktop,dsh web 用 web)
dsh plugin --profile desktop add dsh-workspace-recollection
装完后重开桌面应用(dsh web 用户则重启 dsh web)——运行中的进程仍持有旧插件列表。package.json 要求 Node.js >= 22.12.0。
若要从本地目录挂载(纯 JavaScript、无构建步骤),README 示例为:
dsh plugin --profile desktop add file:/path/to/dsh-workspace-recollection
(需自行将路径替换为 clone 后的目录;本文不展开 clone 步骤。)
典型用法¶
不知道库里有什么¶
先调目录工具,再按需检索:
memory_index → 置顶要点 + 分页列表
memory_recall("…") → 浅层语义检索,只回要点与 id
命中长文条目,只要其中一段¶
memory_recall("那个编码的坑")
memory_locate({ id, query: "zstd" })
memory_detail({ ids, segments: [2, 7] })
写入与导入¶
memory_write:text写完整深层内容,summary可选(省略则后台用 LLM 压成一句话要点)。memory_import:把本工作区历史会话收进长期记忆。
按时间回忆¶
在 memory_recall 的 query 里带自然语言时间(如「10月6日」「昨天」),会按插件首次安装时写入 memory.json 的 timeZone 做日历日筛选,并给出相关会话 id,可再用 session_read 读原文。
适用场景与注意¶
适合:在同一工作区长期开发,需要跨多次 DSH 会话保留「做过什么、怎么决定的、坑在哪」;希望默认不占 prompt,又能在对话中按需拉回细节的团队或个人。
注意:
- 记忆与向量落在
$DSH_HOME/session-memory/(memory.json、vectors.json),工作区内的Memory.md是浅层镜像;备份或迁移 DSH 数据时要一并考虑。 - 首次下载嵌入模型需要网络;内网或离线环境可依赖关键词回退,但语义检索体验会下降。
- 社区目录(skillhub 插件页)与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,选用插件前请自行评估安全与合规。
- 问题与贡献:仓库欢迎 issue 与 PR;报 bug 时建议带上插件版本、
dsh版本、操作系统与复现步骤。
结尾¶
dsh-workspace-recollection 把 DSH 工作区里的决策与踩坑沉淀为可检索的长期记忆,用分层工具控制 token,本地嵌入保证检索不依赖外网 API。若你正在同一仓库里反复开新会话,又不想让每次对话从零解释背景,可以按上文命令安装,从 memory_index 和 memory_recall 试起。