sage-mem
Memory plugin for DeepSeek Harness (DSH) — cross-session memory with Chinese-first full-text search
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:gezi-wen/sage-mem说明文档
阅读完整 README ↗sage-mem · DSH 的记忆系统插件
给 DeepSeek Harness(DSH)装上跨会话记忆——agent 今天记住的事,明天的新会话自动想起来。
为什么需要它
DSH 原生没有记忆系统。每个会话都是白纸:用户说过「我喜欢在深夜写代码」,下个会话再问「我喜欢什么」,agent 只能答不知道。
sage-mem 补上这一块。它监听 DSH 的事件流,把会话内容沉淀到 SQLite,新会话启动时自动检索注入历史记忆。
中文优先。市面上的记忆方案在中文检索上普遍失效(SQLite FTS5 默认分词器对中文全部 0 命中)。sage-mem 的 worker 用 trigram 分词 + 短词兜底,中文实测全命中。
功能
- 自动捕获:工具调用(读写文件、执行命令)自动记录,无需手动整理
- AI 压缩:会话内容由 LLM 压缩成结构化记忆(事实、摘要),中文输出
- 跨会话注入:新会话启动时自动检索并注入历史记忆,agent 不用自己翻
- 中文检索:trigram 分词(≥3 字查询)+ LIKE 兜底(
启动:
```bash
bun src/services/worker-service.ts --daemon
2. 安装插件
在你的 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。
验证
跨会话中文记忆链路(实测):
- 会话 A 说「记住:我的猫叫芝麻,它喜欢晒太阳」
- 开新会话 B 问「我的猫叫什么」
- agent 直接答出「芝麻」——记忆自动注入,无需 agent 自己找
搭配 sage-persona(我是谁)和 sage-meta(我做得对吗)组成 Sage 三件套——这是三道题的第三道:我下次应该怎么想。
已知边界
- trigram 分词对
<3字符查询无效,worker 已加 LIKE 兜底 - worker 不可用时插件静默跳过(不阻塞 DSH),记忆功能暂缺
- MVP 存储统一在
project=sage空间,按工作区分项目是后续计划 - worker 的
/api/memory/save会写入空concepts,导致手动记忆被上下文生成的 concepts 白名单过滤、对新会话不可见 —— v0.2 的保存路径改走/api/import规避(详见 lib/index.js 注释),治本需修 worker - 注入时间线只携带记忆标题(
CLAUDE_MEM_CONTEXT_FULL_COUNT默认 0),v0.2 保存手动记忆时生成「自包含标题」并把事实写进标题,保证新会话直接可见
License
MIT(worker fork 为 Apache-2.0,见 gezi-wen/claude-mem)