跳到正文
dsh-market 浏览插件 GitHub EN

jisi71/dsh-memories

双账本跨会话记忆:自动把对话中的长期事实提取进 MEMORY.md,并维护项目进度账本 PROGRESS.md,每个新会话自动召回两本账。

Star 数 ★ 1 分类 记忆 收录于 2026-08-25 npm dsh-memories

安装

在 DeepSeek Harness 里通过 dsh-market 安装

dsh plugin --profile web add dshmarket

或使用命令行

dsh plugin --profile web add dsh-memories

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络。请先审阅源码,并尽量锁定 commit(github:owner/repo#sha)。

README

English

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

内容来自项目 README(GitHub)↗