dsh-workspace-recollection:DSH 工作区跨会话长期记忆

前言

用 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 试起。

羽毛球分组比赛记分
小程序二维码

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

小夜