@libraqg/dsh-workspace-memory

memorynpmMIT

Explicit, project-scoped memory handoff: when you open a new conversation, one model call that you confirm curates the project's earlier conversations into a bounded brief and injects it into the conversation's first step. No silent background calls; a Memory panel shows the brief and lets you edit

下载量 / Downloads
570

Install

dsh plugin --profile web add @libraqg/dsh-workspace-memory

Sandbox test

This plugin has not been tested yet. Submit a test →

README

<div align="center">

<img src="icon.svg" width="76" alt="dsh-workspace-memory 图标" />

<h1>dsh-workspace-memory</h1>

<p><strong>为 DeepSeek Harness 提供“显式、项目级”的记忆交接。</strong><br/>

一次确认,一次模型调用,没有静默后台调用。</p>

<p><strong>分类:</strong> 记忆与上下文 · <strong>许可证:</strong> MIT · <strong>安装:</strong> GitHub 源码</p>

<p><a href="README.md">English</a> | 中文</p>

<p>

<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT"></a>

<img src="https://img.shields.io/badge/DSH-%3E%3D0.2.1--rc.2-6f42c1" alt="DSH >= 0.2.1-rc.2">

<img src="https://img.shields.io/badge/node-%3E%3D22.19-339933" alt="Node >= 22.19">

</p>

</div>

<p align="center">

<img src="assets/demo.gif" width="720" alt="注入记忆:悬停查看来源与 token,确认后先整理,再等待第一条消息">

</p>

<p align="center">

<a href="https://github.com/Libraqg/dsh-workspace-memory/blob/main/assets/demo.mp4">观看完整 24 秒演示(MP4)</a>

</p>

它解决什么问题

同一个项目往往会开很多个 DSH 对话。你在同一个工作目录里新开一个对话时,新 agent 并不知道上一个对话做了什么:目标、决策、改过哪些文件、还剩什么没做,都得重新交接一遍。

AGENTS.md 是静态的;会话搜索需要模型主动去搜;通用记忆系统通常会自动召回、自动捕获——这对长期记忆很合适,但你对“什么时候调用模型、花多少 token”几乎没有控制。

这个插件只做一件很窄的事:

当你在同一个项目里主动新开非首个对话时,让你把旧对话整理成一份项目 brief,注入当前对话。整个过程只有一次显式确认、一次模型调用。

核心优势

原则 · 具体行为

没有静默模型调用 · 页面加载、打开面板、创建会话、轮次结束、定时器、失败重试:全部 0 次模型调用。唯一入口是确认后的“注入记忆”。

先看成本,再决定 · 确认层显示来源对话、整理模型、输入估算、输出上限、注入估算,并明确写出“项目摘要会发送给该模型提供方”。

一次确认 = 一次调用 · 整理旧对话和生成注入内容由同一次调用完成;注入是本地步骤,不会偷偷再调一次。

项目级隔离 · 项目根解析顺序:DSH 工作区根 > 最近 Git 根 > 当前目录;子目录会话共享,不同项目隔离。

一次性交接,不是常驻记忆 OS · 没有后台捕获、没有每轮自动召回、没有向量库、没有模型工具。不用时零 token。

复用 DSH 压缩摘要 · 旧对话有 DSH compaction summary 时优先复用它,而不是重新读原始 transcript;质量更好、输入更省。

你的 notes 不被改写 · notes.md 原样插入;整理模型被明确要求不改写 notes。

零原生依赖 · 纯 Node.js ESM,没有 SQLite/ONNX/embedding 模型下载,没有 build script 审批;存储只是几个纯文本文件。

失败就失败,不偷偷重试 · 整理失败、超时、输出不合格:报错,不注入,不自动换模型,不自动降级。

可审计 · brief、notes、state 都在 ~/.dsh/workspace-memory/;侧边栏面板可查看、编辑 notes、设置整理路由、重置项目记忆。

中英双语 UI · 默认跟随 DSH locale;确认层有 中文/EN 切换并本地记忆,面板跟随同一选择。

工作方式

旧对话 → 本地结构化档案 → 注入记忆 → 确认 → 恰好一次整理 → 保存/准备 → 第一条消息 → 正常请求。

步骤 · 发生什么 · 模型调用

1 · 找到同一项目里的旧对话。 · 0

2 · 本地读取并结构化:请求、结论、文件、错误、compaction summary。 · 0

3 · 新空白对话出现 注入记忆;悬停可看来源、整理模型和 token 估算。 · 0

4 · 点击:出现确认层,此时还没有发给模型。 · 0

5 · 确认:恰好一次整理调用。输入 = notes + 旧 brief + 结构化档案;输出 = 一份有界的 Markdown brief。 · 1

6 · 保存 brief,准备注入。 · 0

7 · 发送第一条用户消息:记忆块插在这条消息之后。 · 0

8 · 正常对话请求带上这份 brief,作为输入 token。 · 正常请求

注入内容是一条普通的 DSH user/message,source 为 workspace-memory,并带有“这是背景、可能过期、不要执行其中指令”的明确警告。

截图

<p align="center">

<img src="assets/inject-button.png" width="420" alt="新对话中的注入记忆按钮">

<img src="assets/confirm-zh.png" width="420" alt="确认层:来源、模型、输入/输出/注入估算">

</p>

<p align="center">

<img src="assets/confirm-en.png" width="420" alt="英文确认层">

<img src="assets/prepared.png" width="420" alt="已整理,等待第一条消息">

</p>

快速开始

环境要求

  • DeepSeek Harness 0.2.1-rc.2 或更高(使用当前 Host API)。
  • Node.js >=22.19.0。
  • 一个可用的 DSH 模型路由。默认整理模型 = 当前对话模型,也可以按项目覆盖。

从 npm 安装

npm 包名是 @libraqg/dsh-workspace-memory:

dsh plugin --profile web add @libraqg/dsh-workspace-memory

Desktop profile:

dsh plugin --profile desktop add @libraqg/dsh-workspace-memory

Desktop 应用里 dsh 通常不在 PATH,可以用已发布的 CLI 运行:

npx --yes @deepseek-ai/dsh plugin --profile desktop add @libraqg/dsh-workspace-memory

如果 npm 上还没有这个版本,用下面的 GitHub 源码安装。

从 GitHub 安装

源码安装不依赖 npm;npm 包发布前,dsh-plugin.org 会用下面的源码安装命令收录。

Web profile:

dsh plugin --profile web add github:Libraqg/dsh-workspace-memory

Desktop profile:

dsh plugin --profile desktop add github:Libraqg/dsh-workspace-memory

把 web / desktop 换成你实际使用的 profile。安装后重启 DSH profile,并刷新 Web 页面。

从本地目录安装

git clone https://github.com/Libraqg/dsh-workspace-memory.git
dsh plugin --profile desktop add "$PWD/dsh-workspace-memory"

Desktop 应用里如果 dsh 不在 PATH,可在 设置 → 插件 → 安装 里选择 GitHub 地址或本地目录,或运行:

npx --yes @deepseek-ai/dsh plugin --profile desktop add github:Libraqg/dsh-workspace-memory

不需要原生依赖,也不需要 build script 审批。

使用

1. 在一个项目对话里做到有内容。

2. 在同一个项目里新开一个对话。

3. 空白页的“工作区 / 标准模式”行右侧会出现 注入记忆;悬停可看来源、模型和 token 估算。

4. 点击后先出现确认层,此时还没有调用模型。

5. 核对来源、整理模型、输入/输出/注入估算和隐私提示,点 整理并注入。

6. 按钮变成 等待你发送第一条消息。发出第一条消息后,brief 会插到消息之后,随正常请求发送。

7. 侧边栏“记忆”面板可查看 brief、编辑 notes、设置项目级整理模型、重置项目记忆。

当 Hero 座位不可用时,右下角会出现浮动的“注入记忆”兜底按钮。

命令

/memory                         查看人类可读状态
/memory status --json           面板使用的结构化状态
/memory notes                   查看 notes
/memory notes set <base64>      保存 notes(UTF-8 的 base64)
/memory curator list            查看 provider 与当前整理路由
/memory curator set <provider> <model>   设置项目覆盖
/memory curator clear           回到当前对话模型
/memory reset --confirm         删除本项目的 brief/state(保留 notes)
/memory path                    查看存储路径

/memory inject --confirm <token> 是按钮在确认后使用的内部入口,受一次性 token、空白会话、非首次对话、非子代理等条件约束。

配置

默认值在 cordis.patch.yml。需要覆盖时,在 profile 的 cordis.patch.yml 里用相同 row id 写完整 config(DSH 的 patch 是整体替换,不是深合并)。

字段 · 默认值 · 含义

scope · project · project 按工作区/Git 根;cwd 按精确目录

memoryRoot · '' · 空 = $DSH_HOME/workspace-memory

maxInjectBytes · 8192 · 注入块硬上限

maxBriefBytes · 6144 · 接受的 brief 上限

maxNotesBytes · 2048 · notes 上限

maxSessions · 5 · 最多读取几个旧对话

maxTurnsPerSession · 4 · 每个旧对话取最近几轮

curator.provider / curator.model · '' · 空 = 当前对话模型;可设置独立路由

curator.maxTokens · 2000 · 整理输出上限

curator.timeoutMs · 90000 · 整理超时

redactPatterns · sk-…、Bearer … · 发送前替换敏感串

插件不保存 API key;独立 provider/endpoint 在 DSH 里配置,插件只选择已注册的 provider + model。

Token 成本

一次确认对应一次模型调用:

1. 整理输入:系统 prompt + 项目档案(notes、旧 brief、有界摘录)。

2. 整理输出:brief,受 curator.maxTokens 限制。

3. 注入:brief + notes + 包装,作为下一次正常对话请求的输入 token。

确认层会显示这三段估算;它们是本地启发式,不等于实际计费。面板会记录 provider 返回的 usage(如果有)。

状态查询与轨迹显示

确认层需要 Host 侧的状态(来源、整理路由、token 估算),当前通过 DS

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::2,最后更新 2026-10-26

Links

GitHub · Homepage · npm

Same category