ZCode 风格持久化项目记忆:设置内完整管理页、索引式注入与 agent 记忆工具。
安装
# npm 包(预构建)
dsh plugin --profile web add @duke-dsh-plugins/dsh-memory-manager
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:MoonlitDropOfBlood/dsh-memory-manager
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
为 DeepSeek Harness(DSH) Web UI 打造的持久化记忆插件,移植自 ZCode 的项目记忆(Memory):按项目(工作区)保存结构化记忆,并在设置里提供完整的记忆管理页面。
记忆以 ZCode 同款 Markdown 格式落盘(<DSH_HOME>/memories/projects/<project>/memory/*.md,含 MEMORY.md 索引与 memory_summary.md 摘要),并支持一键从 ZCode 记忆目录导入,把 ZCode 里积累的用户偏好 / 反馈 / 技术参考直接搬进 DSH。
功能
| 功能 | 说明 |
|---|---|
| 🧠 ZCode 记忆移植 | 沿用 ZCode 的记忆文件格式(YAML frontmatter + 正文)、类型体系(user / feedback / reference / project / other)与按项目分目录的存储布局 |
| ⚙️ 设置中的记忆管理 | 设置面板新增 记忆管理 页:搜索、项目/类型筛选、按项目分组、新建 / 编辑 / 删除(二次确认)/ 查看正文 |
| 🔄 自动加载到对话 | 每次模型调用自动把「当前项目 + 全局」的记忆索引(名称 + 描述)作为系统提示注入给智能体,省上下文;也可切换为附带正文截断的旧模式 |
| 🤖 Agent 记忆工具 | 注册 memory_save / memory_get / memory_list 三个模型工具:agent 可按需读取记忆全文、跨项目搜索,并在发现用户偏好 / 纠正 / 项目约定时自己回写记忆(同名即更新,origin: agent) |
| 📥 从 ZCode 导入 | 一键扫描 ~/.zcode/cli/memories(memory/ + topics/),按项目 + 名称去重,不覆盖已有记忆 |
| 🌐 全局 + 项目记忆 | global 项目存放跨项目记忆;项目 key 取自工作区路径名,自动清洗为安全片段 |
| 📄 自动索引 | 每次变更自动重写 MEMORY.md 索引与 memory_summary.md 摘要 |
| 🌗 主题适配 | 全部使用 DSH 设计 token(按钮为官方 DSH Button 组件),明暗主题自动跟随 |
安装
标准安装(推荐)
本插件是标准 DSH bundle:package.json 声明 dsh.bundle.patch,包内自带 cordis.patch.yml,用官方 dsh plugin 命令安装:
# 本地开发:pnpm 软链到本仓库,改代码即生效(无需重新复制)
dsh plugin --profile web add /path/to/dsh-memory-manager
# 正式发布:从 GitHub Release tarball 安装
dsh plugin --profile web add https://github.com/MoonlitDropOfBlood/dsh-memory-manager/releases/download/v1.2.0/dsh-memory-manager-1.2.0.tgz
重启 DSH 后,打开 设置 → 记忆管理 即可使用。
dsh plugin add把插件装成 profile 的 npm 依赖并追加到dsh.profile.bundles,启动时 DSH 自动应用包内的cordis.patch.yml挂载插件。卸载:dsh plugin --profile web remove dsh-memory-manager。
宿主兼容性
支持 DSH 0.1.0-rc.7 ~ 0.2.0-rc.x(engines.dsh: ^0.1.0-rc.7 || ^0.2.0-rc.1,已在本机 0.2.0-rc.1 宿主端到端验证)。DSH 0.2.0 起宿主会在启动时按 peerDependencies 的 @deepseek-ai/dsh* 声明做兼容预检,范围不满足的 bundle 会被静默跳过——如果升级宿主后插件消失,先确认版本声明覆盖了新宿主,再跑 npm run e2e(对真实安装验证闸门、Host 激活、CRUD、TypertRegistry 与 client bundle)。
使用
- 打开 设置,侧栏出现 记忆管理 页。
- 列表按项目分组、最新优先;顶部可搜索(名称/描述)、按项目和类型筛选;卡片展示类型徽章与更新时间。
- 自动加载记忆到对话上下文:默认开启。每次模型调用,DSH 会把当前会话工作区项目的记忆 + 全局记忆的索引(名称 + 描述,不含正文)作为系统提示注入给智能体,agent 对某条感兴趣时自行用
memory_get工具读取全文——比全量注入省一个量级的上下文。需要旧行为(每条附带 400 字正文截断)可在记忆管理页打开「注入记忆正文」。 - Agent 回写记忆:agent 在对话中发现值得长期保留的用户偏好、纠正/反馈、项目约定时,会自己调用
memory_save写入记忆(origin: agent),之后每轮索引自动带上它。也可在记忆管理页看到、编辑或删除这些记忆。 - 新建记忆:填写名称(建议短横线 slug,可含中文)、类型、项目(
global= 全局,或某个项目名,可参考工作区建议)、描述与 Markdown 正文。 - 编辑 / 查看 / 删除:每行右侧操作;删除需二次确认(永久,不可恢复)。
- 从 ZCode 导入:一键导入
~/.zcode/cli/memories下各项目的记忆,同名自动跳过,结束后展示每个项目的导入/跳过统计。
工作原理
DSH Web UI
└─ client.js (window.__ModuleLoader__.load bundle)
└─ settings.section 注册「记忆管理」页
└─ ctx.remote.memoryManager.{list|get|create|update|delete|importZCode|getConfig|setConfig}
└─ index.js (MemoryService, TypertRemoteService)
├─ systemPrompt.section(order 90)→ 每次模型调用注入「记忆索引」段落
│ └─ context.agent.session.header.cwd → 项目 key → 项目 + 全局记忆索引(同步渲染,进程内缓存)
├─ ctx.tools.register → memory_save / memory_get / memory_list(agent 回写与按需读取)
│ └─ systemPrompt.section(order 100)→ 工具使用指引
└─ memory-core.mjs(node:fs 直接读写)
├─ <DSH_HOME>/memories/projects/<p>/memory/<name>.md
├─ <DSH_HOME>/memories/projects/<p>/MEMORY.md
├─ <DSH_HOME>/memories/projects/<p>/memory_summary.md
└─ <DSH_HOME>/memories/config.json(autoLoad / injectBody 开关)
记忆存储走 node:fs 直接落在 <DSH_HOME>/memories/(与 DSH 核心写 ~/.dsh 的方式一致),无需 shell 沙箱。
目录结构
dsh-memory-manager/
├── index.js # Host 半:MemoryService(Remote 服务)
├── client.js # Client 半:设置「记忆管理」页 UI bundle
├── typert.host.js # Typert Host manifest(Remote 方法描述)
├── memory-core.mjs # 共享记忆核心(frontmatter / 存储 / 索引 / ZCode 导入),零依赖
├── cordis.patch.yml # dsh bundle patch(挂载行)
├── scripts/self-test.mjs # 独立核心自测(无需 DSH 进程)
├── .github/workflows/ # GitHub Actions 发布
├── AGENTS.md # 面向 AI agent 的开发指南(含踩坑)
└── LICENSE # MIT
开发
npm run check # 全文件语法检查
npm test # 独立核心自测(临时目录 CRUD / 索引 / ZCode 导入)
dsh plugin --profile web add /path/to/dsh-memory-manager # 安装/重装到本机 DSH profile
详见 AGENTS.md——记录了 DSH 正式插件(Host/Client/Typert 三件套)的完整机制和踩坑。
License
本项目遵循 MIT License。
本项目是基于 DeepSeek Harness 构建的社区插件,并非 DeepSeek 官方产品。记忆格式移植自 ZCode 的项目记忆设计。
链接
同类插件
vectorize-io/hindsight#coding-agents★ 46361
Hindsight:会学习的 Agent 长期记忆系统,自动召回/保存、知识页、深度反思与按仓库隔离的记忆银行。
volcengine/OpenViking#examples/dsh-memory-plugin★ 39324
面向 DeepSeek Harness 的 OpenViking 记忆与上下文插件:pre-step 自动召回与画像注入、会话捕获、`viking://` URI 防护,以及对接 OpenViking 服务端的 recall/write 记忆工具。
agentscope-ai/ReMe#dsh★ 3555
将 DeepSeek Harness 接入 ReMe 本地优先、自进化的个人知识库:自动把已完成的主 Agent 对话沉淀为用户掌控的 Markdown 记忆,通过 reme_search 结合 BM25、可选向量检索和 wikilink 展开搜索对话与资料,并按日整理长期记忆。
zilliztech/memsearch#MemSearch★ 2722
供 DSH 与其他编程 Agent 共享的 Markdown 记忆,支持自动捕获、步骤前上下文注入、搜索召回,以及通过审阅面板实现 memory-to-skill 自进化。
vshulcz/deja-vu#extensions/dsh★ 1139
读取本机上其他三十三个编程智能体已经写下的会话文件——Claude Code、Codex、Cursor、VS Code Copilot Chat、opencode、OpenClaw、Hermes、Kimi、Cline、Zed 等,包括安装之前的历史:提供 deja_recall、deja_session、deja_blame、deja_fix、deja_how、deja_remember 六个工具与 /deja 命令,并可选地把召回结果加入运行时上下文。本地 BM25 索引,不用大模型,不用向量嵌入,不联网(dsh plugin --profile web add dsh-deja)。
adoresever/graph-memory★ 637
DeepSeek Harness 的可追溯、可检索跨会话记忆:把对话知识沉淀为带类型的图节点(任务/技能/事件)与关系边。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。