前言¶
在 DeepSeek Harness(DSH)里做同一个项目,对话往往会拆成很多条会话。新开一条会话时,新智能体不知道上一条里定了什么目标、改了哪些文件、还有什么没做完,你只能把背景再讲一遍。
有人用静态 AGENTS.md 做说明,但它不会随会话自动更新;有人依赖会话搜索,但模型得先知道要去搜;通用记忆系统常会在后台自动召回与写入,好用归好用,却很难控制「什么时候调模型、交接要花多少 token」。
下面介绍的 @libraqg/dsh-workspace-memory(GitHub:Libraqg/dsh-workspace-memory)只做一件窄事:当你有意在同一项目里开非首条会话时,从更早的对话里整理出一份 handoff,经你确认一次、恰好一次模型调用后,注入到新会话的第一条消息之后。其余时间不占用 token,也没有静默后台调用。
这是什么¶
维护者 Libraqg,分类为记忆;npm 包名 @libraqg/dsh-workspace-memory,当前资料中的版本为 0.1.2,许可证 MIT。简介与 README 一致:Explicit, project-scoped memory handoff for DeepSeek Harness — one confirmed model call, no silent background calls.
项目根目录由当前会话工作目录解析:已注册的 DSH workspace 根、最近的 Git 根、否则即该目录本身。子目录会话共享同一项目;不同项目彼此隔离。这不是全局常驻的「记忆操作系统」,而是一次性的交接工具。
与常见做法的差异¶
| 原则 | 实际含义 |
|---|---|
| 无静默模型调用 | 页面加载、面板打开、建会话、回合结束、定时器、失败重试等路径都不会调模型;唯一路径是确认后的 Inject memory。 |
| 发送前先看清成本 | 确认层展示来源会话、curator 模型、预估输入 token、输出上限、预估注入 token,并说明项目摘要会发给模型提供方。 |
| 每次确认恰好一次调用 | curator 一次调用既整理旧会话又产出 bounded Markdown brief;注入本身在本地完成,无隐藏第二次调用。 |
| 项目范围 | 见上文项目根解析;非全局记忆库。 |
| 一次性交接 | 无后台捕获、无每轮召回、无向量库、无面向模型的 memory tool;不开新会话时 token 成本为零。 |
| 兼容 compaction | 旧会话若已有 DSH compaction 摘要,插件优先复用,而非重读整段 transcript。 |
| 笔记不被改写 | 固定的 notes.md 原文插入;curator 被告知不得改写或替换。 |
| 纯 Node ESM | 无 SQLite、ONNX、embedding 下载等原生依赖;状态为少量纯文本文件。 |
| 失败则关闭 | curator 失败、超时或 brief 无效时报告错误且不注入;不静默重试、不换模型、不 fallback 再调一次。 |
| 可审计 | brief.md、notes.md、state.json 位于 ~/.dsh/workspace-memory/;侧栏可看 brief、笔记、来源、上次模型用量与存储路径,可随时重置项目记忆。 |
| 双语 UI | 默认跟随 DSH locale;确认层可本地持久化切换中文/EN,面板同步。 |
工作流程¶
更早的会话 → 本地 dossier → Inject memory → 确认 → 一次 curator 调用 → 保存/准备 → 首条用户消息 → 正常请求。
- 在同一项目内查找更早的会话(0 次模型调用)。
- 本地读取并结构化:请求、结果、文件、错误、compaction 摘要(0 次)。
- 新的空白会话出现 Inject memory;悬停可看来源、curator 模型与 token 预估(0 次)。
- 点击后出现确认层,此时尚未向模型发送任何内容(0 次)。
- 确认后:恰好一次 curator 调用;输入为 notes + 此前 brief + dossier;输出为一份有上限的 Markdown brief(1 次)。
- 保存 brief 并准备注入(0 次)。
- 发送首条用户消息时,记忆块紧接其后插入(0 次)。
- 随后正常对话请求把 brief 作为输入 token 带上(常规请求)。
注入块是普通 DSH user/message,来源类型为 workspace-memory,并标明为不可信的背景而非指令;结构包含 User notes、Goal、Decisions、Current state、Next steps、Key files、Open questions 等段落(详见 README 中的示例框架)。
安装与要求¶
环境要求(来自 README):
- DeepSeek Harness
0.2.1-rc.2或更新(使用当前 Host API)。 - Node.js
>=22.19.0(DSH 运行时要求)。 - 可用的 DSH 模型路由;默认 curator 使用当前会话模型,可按项目覆盖。
从 npm 安装(资料中的官方命令):
dsh plugin --profile web add @libraqg/dsh-workspace-memory
Desktop profile:
dsh plugin --profile desktop add @libraqg/dsh-workspace-memory
若 dsh 不在 PATH(Desktop 常见),可通过已发布的 CLI:
npx --yes @deepseek-ai/dsh plugin --profile desktop add @libraqg/dsh-workspace-memory
该包在 npm 上发布,可在 DSH Plugin Center 一键安装。若不用 npm,README 亦提供 GitHub 源安装作为备选;Web profile 命令为:
dsh plugin --profile web add github:Libraqg/dsh-workspace-memory
Desktop 的 GitHub 安装命令在资料截断处未完整列出,安装前请以 GitHub README 为准。
典型用法¶
- 在同一工作目录(或同一项目根下的子目录)完成若干轮 DSH 对话。
- 新建一条非首条项目会话;界面出现 Inject memory。
- 悬停核对来源会话与 token 预估;点击后在确认层阅读 curator 模型与发送说明,需要时可切换中文/EN。
- 确认后等待一次 curator 完成;侧栏进入 prepared 状态,等待你发首条消息。
- 发送首条消息后,记忆块随该消息注入;之后按平常方式继续对话。
- 可在侧栏查看或编辑
notes.md、查看brief.md与来源;需要时在面板重置该项目记忆。
README 提供 demo GIF 与约 24 秒的 MP4(assets/demo.mp4),可对照按钮、确认层与中英文界面截图。
适用场景与注意¶
适合:长期在同一 repo / workspace 上分多条会话推进开发;希望在新会话里一次性带上「目标、决策、现状、待办、关键文件」而不是重讲一遍;又希望自己决定何时花 token、且每次交接只有一次确认的模型调用。
不适合:需要自动每轮召回、向量检索或全局个人记忆 OS 的场景——本插件明确不做这些。
安全与信任:插件以当前 DSH 进程的权限运行;curator 会把项目摘要发往你所配置的模型提供方。安装前请阅读源码与 MIT 许可证,并理解 ~/.dsh/workspace-memory/ 下明文存储的内容。
DSH 生态强调「一切皆插件」;社区目录(如 skillhub、dsh-plugin.org)为独立站点,与 DeepSeek / 幻方无官方从属关系,本文仅作插件能力说明。
结尾¶
dsh-workspace-memory 把「跨会话的项目记忆」收成一条显式路径:确认 → 一次 curator → 本地注入,无静默调用、无隐藏第二次请求。需要安装与细节时,可查阅社区目录页与仓库 README。
- 目录页:https://www.skillhub.cn/plugins/Libraqg/dsh-workspace-memory
- GitHub:https://github.com/Libraqg/dsh-workspace-memory