DeepSeek Harness Hub
← 返回列表

gezi-wen/sage-mem

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
✓ 可直接安装

sage-mem · DSH 的文件式记忆插件

自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node >=18);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/13 · 已提供中文文档
综合分
36.3
GitHub 分
36.3
用户评分
★ Stars
6
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add sage-mem
npm 包 sage-mem 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/17(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包sage-mem @ 0.5.1
Node 引擎要求 >=18 · 基线 Node 22.19 满足
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 02:18:19

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-typert-protocol@deepseek-ai/dsh-client-locale
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

sage-mem · DSH 的文件式记忆插件

给 DeepSeek Harness(DSH)装上跨会话记忆——agent 今天记住的事,明天的新会话自动想起来。

记忆存在本地 markdown 文件里(frontmatter + 正文),不是数据库。透明、可检查、防膨胀。

从 Claude Code 无损迁移

你已经在 Claude Code(CC)里养了一个 agent,舍不得它的记忆和人格?sage-mem 是「CC → DSH」迁移方案的一部分,记忆与人格都能无损搬过来:

- 人格:CC 的 CLAUDE.md → DSH 的 AGENTS.md,DSH 原生加载,纯文本一字不改就能用。
- 记忆:CC 沉淀的跨会话记忆 → sage-mem 的 memory/ 目录(markdown + frontmatter,四类)。

没有数据库、没有私有格式——全都是 markdown 文本,直接拷文件就完成迁移。agent 换了身体,但依然记得你是谁、记得你们聊过什么、记得进行中的项目。

为什么用文件

DSH 原生没有记忆系统,每个会话都是白纸。市面上的记忆方案大多走 SQLite + 常驻 worker:

- 记忆写进数据库,不透明——想检查存了什么得查表,想清理要连数据库
- 事件自动捕获会膨胀——"用户打了个招呼"这种无实质内容也被存进去
- 需要一个常驻 worker 进程 + 端口,多一份运维负担

sage-mem 换成文件式:每条记忆一个 markdown 文件,直接用编辑器打开就能看、能改、能删。存不存由 agent 按规则判断,不是事件全捕获。没有 worker、没有 SQLite、没有端口。

功能

- 按问题检索注入:每次提问,插件扫记忆目录,用 frontmatter 的 description 和文件名做匹配,把相关记忆注入上下文,agent 第一轮就「想起来」
- 每次会话必读(v0.5):frontmatter 标了 baseline: true 的记忆,在新会话第一步无条件注入——给「待办清单」「你是谁」这类每次开场都该在场的记忆用(上限 5 条)
- 四类记忆:user(用户是谁)/ feedback(工作方式指导)/ project(项目状态)/ reference(外部信息指针)
- 文件透明:记忆就是 .md 文件,frontmatter 存元数据,正文存内容
- 防膨胀:写入靠规则引导 agent 判断「存不存」,无实质内容、能靠代码/git 推导的不存
- Web 文件管理器(v0.4):DSH 设置页「记忆管理」,浏览/查看/编辑/删除记忆文件,添加新记忆

架构

DSH(Cordis 插件)
└─ sage-mem 插件(按问题检索 + 注入)← 本仓库
│  Node fs 直读
▼
memory/ 目录(markdown 文件,4 类)
├── user_.md
├── feedback_.md
├── project_.md
├── reference_*.md
└── MEMORY.md          ← 索引

没有 worker、没有 SQLite、没有 HTTP 端口、没有常驻进程。

安装

在你的 DSH profile 的 package.json 里加:

{
"dependencies": {
"sage-mem": "github:gezi-wen/sage-mem"
},
"dsh": {
"profile": {
"bundles": ["sage-mem"]
}
}
}

或 clone 后本地 link:

{
"dependencies": {
"sage-mem": "link:../sage-mem"
}
}

然后 pnpm install 重启 DSH。

DSH 兼容性

sage-mem 是纯 DSH 插件,在 package.json 的 dsh.compatibility.dshReleases 里逐版本声明兼容状态:

| DSH 版本 | 状态 |
| --- | --- |
| 0.1.2-rc.1 | compatible |
| 0.1.3-alpha.1 | compatible |
| 0.1.3-alpha.2 | compatible |
| 0.1.5-rc.1 | compatible |

Node.js 要求 >= 18(见 engines.node)。

卸载

在 profile 的 package.json 里删掉 sage-mem 依赖,并从 dsh.profile.bundles 移除 "sage-mem";
pnpm install 后重启 DSH 即可。记忆 markdown 文件留在原目录,不受影响。

配置

用环境变量 SAGE_MEM_DIR 指定记忆目录,默认 ~/.sage-mem/memory:

SAGE_MEM_DIR=/path/to/your/memory

记忆文件格式:

name: 可选的短名
description: 一句话说清这条记忆是什么(检索靠它,务必写准)
metadata:
type: user        # user / feedback / project / reference
baseline: true      # 可选:新会话第一步无条件注入(上限 5 条)

记忆正文。

feedback 类建议带 Why:(原因)和 How to apply:(何时生效)两行,方便判断边界。

验证

跨会话记忆链路(实测):

1. 会话 A 说「记住:我的猫叫芝麻,它喜欢晒太阳」——agent 按规则写进 memory/
2. 开新会话 B 问「我的猫叫什么」
3. agent 第一轮直接答出「芝麻」——记忆自动注入,无需 agent 自己找

相关项目

- DeepSeek Harness — DSH 本体,一切皆插件

旧版

本仓库早期是 SQLite + worker 架构,已归档到 sqlite-worker 分支。文件式是继任实现。
许可证

Apache-2.0

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群