双账本跨会话记忆:自动把对话中的长期事实提取进 MEMORY.md,并维护项目进度账本 PROGRESS.md,每个新会话自动召回两本账。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-memories
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:jisi71/dsh-memories
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。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 的双账本跨会话记忆插件。
设计灵感来自 OpenAI 开源编码代理 Codex 的记忆管线。dsh-memories 让同一项目里的每个新会话都能读到两本自动维护的活账本:
| 账本 | 文件 | 回答的问题 |
|---|---|---|
| 长期事实 | .dsh/memories/MEMORY.md |
这个项目的规矩是什么?用户偏好什么?踩过哪些坑? |
| 项目进度 | .dsh/memories/PROGRESS.md |
做到哪了?已完成什么?正在做什么?接下来做什么? |
两本账都由插件在后台自动维护,并在每个新会话开始时自动注入 AI 视野——不需要你反复交代背景。
功能特性
- 自动提炼 —— 每个新会话触发(30 分钟节流),后台细读同项目近 14 天的旧会话(每轮最多 2 篇),一次 LLM 调用同时产出:
- 稳定事实:偏好 / 项目 / 环境 / 经验 四类
- 进度推进:完成 / 进行中 / 下一步
- 严格空转门控 —— 一次性任务细节、代码正文、机密绝不入账;无可记内容时整篇跳过(输出 NONE)
- LLM 整合 —— 草稿合并重写为干净、去重、分节的正式账本;每次重写前自动留
.bak备份 - 召回注入 —— 账本内容随系统提示进入每个新会话(小账全文内联,大账给摘要 + 文件指针)
- 衰减 —— 整理时清除超过 30 天未再确认且未钉住(pinned)的陈旧条目
- 模型工具 + 斜杠命令 ——
remember/update_progress工具让 AI 主动记账;/remember/progress/memories给人直接控制权 - 失败自愈 —— 模型调用失败不落任何标记,下轮自动重试,不会留下半成品
环境要求
部署需提供标准宿主平面服务:
fs · llm · sessionQuery · systemPrompt · tools · commands · sandboxPolicy
(全部来自默认 dsh-base 组装;已在 dsh 0.1.0-rc.9 实测)
安装
方式 0 —— 一行命令安装(推荐)
dsh plugin --profile web add dsh-memories
插件管理器会读取本仓库自带的 cordis.patch.yml,自动完成接线。需要发布了 bundle manifest 的版本——当前 npm 上的 0.1.2 还没有,下次发布前请先用方式 A。
方式 A —— npm 包装入 profile
cd ~/.dsh/profiles/web # 你实际运行的 profile
npm install <git 地址或 tarball> # 包会进入 ./node_modules
然后在 ~/.dsh/profiles/web/cordis.patch.yml 追加一行。用相对路径指向入口文件——这是 pnpm 管理 profile 下被验证可行的引用方式(patch 行里的裸包名不可靠):
- insert:
- id: dsh-memories
name: './node_modules/dsh-memories/lib/index.js'
也可以走 npm 原生方式:在 profile 的 package.json 里把 "dsh-memories": "*" 加入 dependencies、把 "dsh-memories" 加入 dsh.profile.bundles,然后 pnpm install,无需 patch 行。
方式 B —— 直接拷贝文件夹
把整个仓库文件夹复制到 ~/.dsh/profiles/web/node_modules/dsh-memories,再按上面加同样的 patch 行。
重启 DSH 一次即完成。之后插件随启动加载,全程静默工作。
如果你之前用过本插件的动态版本(cordis_define 创建的 mem-*),重启前请先移除它,避免工具重复注册。
使用
日常无需任何操作。需要直接控制时:
| 命令 / 工具 | 效果 |
|---|---|
/remember <事实> |
向当前项目的长期记忆追加一条并触发整理 |
/memories |
状态总览:已处理数、草稿文件、账本预览、最近错误 |
/memories rescan |
立刻重新扫描最近对话 |
/memories reset |
清空"已处理登记",让近期对话重新被提炼 |
/progress |
查看 PROGRESS.md |
/progress <说明> |
手动补记一条进度 |
模型工具 remember(fact, category?, pinned?) |
AI 在对话中主动沉淀稳定事实 |
模型工具 update_progress(completed?, doing?, next?) |
AI 在里程碑处更新进度账本 |
自然语言也可以:直接说"帮我记住:……",AI 会调用同样的工具。
数据放在哪
<你的项目>/.dsh/memories/
├── MEMORY.md # 整理后的长期事实(四节:偏好/项目/环境/经验)
├── MEMORY.md.bak # 上一次版本备份
├── PROGRESS.md # 项目进度(已完成 / 进行中 / 下一步)
├── PROGRESS.md.bak
└── raw/ # 未整理的草稿(_manual.md、_progress.md、各会话提取笔记)
全部是纯 Markdown——随时打开看、随手改、可以 git diff。
运作原理
新会话 ──▶ 扫描(同工作区、≤14天、每轮≤2篇)
│
▼
提炼(每篇一次 LLM 调用)
├─ facts[] → raw/<会话>.md
└─ progress{} → raw/_progress.md
│
▼
整理(每本账一次 LLM 调用)
├─ MEMORY.md ← 合并去重 + 30天衰减 + 四节归类
└─ PROGRESS.md ← 已完成 / 进行中 / 下一步 + 日期
│
▼
下个会话 ◀── 召回段注入系统提示
提炼 prompt 强制严格 JSON 输出(数组或 NONE)、限制条目长度、禁止机密、跳过不足 400 字的琐碎会话。整理 prompt 强制章节格式与篇幅预算(事实 ≤100 行、进度 ≤60 行)。
已知边界与路线图
- 按项目隔离 —— 每个工作区独立账本。Codex 式全局用户账(
~/.codex/memories那种)规划通过globalDir配置实现 - 提炼只读消息文字,不含工具调用载荷
- 进度整合的 60 行预算是指令约束而非硬性保证
- 提示词目前面向中文场景,欢迎 PR 补充英文变体
License
MIT
链接
同类插件
vectorize-io/hindsight#coding-agents★ 47345
Hindsight:会学习的 Agent 长期记忆系统,自动召回/保存、知识页、深度反思与按仓库隔离的记忆银行。
volcengine/OpenViking#examples/dsh-memory-plugin★ 39446
面向 DeepSeek Harness 的 OpenViking 记忆与上下文插件:pre-step 自动召回与画像注入、会话捕获、`viking://` URI 防护,以及对接 OpenViking 服务端的 recall/write 记忆工具。
agentscope-ai/ReMe#dsh★ 3565
将 DeepSeek Harness 接入 ReMe 本地优先、自进化的个人知识库:自动把已完成的主 Agent 对话沉淀为用户掌控的 Markdown 记忆,通过 reme_search 结合 BM25、可选向量检索和 wikilink 展开搜索对话与资料,并按日整理长期记忆。
zilliztech/memsearch#MemSearch★ 2729
供 DSH 与其他编程 Agent 共享的 Markdown 记忆,支持自动捕获、步骤前上下文注入、搜索召回,以及通过审阅面板实现 memory-to-skill 自进化。
vshulcz/deja-vu#extensions/dsh★ 1154
读取本机上其他三十三个编程智能体已经写下的会话文件——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★ 640
DeepSeek Harness 的可追溯、可检索跨会话记忆:把对话知识沉淀为带类型的图节点(任务/技能/事件)与关系边。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。