DEEPSEEK HARNESS · 长期记忆插件

重启之后,它还记得。

Cairn 是给 DeepSeek Harness 的持久化跨会话记忆——一条命令安装 · 九个记忆工具 + 一个身份工具 · 六种注入模式。事实、偏好、约定与踩坑跨会话存活:每个新会话一开始,智能体就带着上一次的经验。

INSTALL · 安装
$dsh plugin add --profile web @chenhw7/dsh-memory
WHY · 为什么需要它

会话一结束,一切归零

默认情况下,智能体没有跨会话的记忆——你上周说过的、昨天踩过的,今天全部重来。

WITHOUT MEMORY · 没有记忆

每个会话都从零开始

「以后都用 pnpm」说过就忘;同一个构建坑掉进去第二次;上次会验证过的结论,今天全凭印象复述。上下文越堆越长,真正重要的事反而要反复交代。

偏好反复交代踩坑重蹈结论靠记忆
WITH CAIRN · 装上 Cairn

说过一次,就沉淀一次

值得记的信号被自动提取、安全扫描、审计入库;下个会话开场,记忆的类目与主题词摘要已经在场,需要全文时用 memory_search / memory_get 按需召回。使用即保鲜,遗忘有规则。

自动沉淀按需召回衰减有度
CAPABILITIES · 它能做什么

五大能力

01 · 持久存储

双后端 KV 存储,全量审计

JSON(宿主存储域)或 SQLite(node:sqlite,零额外依赖)两种后端,迁移一次完成;跨进程单写者检测防止并发覆盖。entries / audit / suggestions / meta / identity / identity_history 六张表,每次变更都有来源与审计。卸载插件,记忆不丢。

survives restarts单写者检测
02 · 智能检索

零依赖 BM25,中文是一等公民

手写的 Okapi BM25:拉丁词保守词干收敛词形,中文产出单字一元 + 相邻二元——「记忆」不再命中所有含「记」的条目。三层作用域(global / project / user),summary 与正文同入索引,置顶条目优先浮出。

measured, not vibesCJK 分词
03 · 自动学习

提取、整合、冲突取代

三类信号(明确意图 / 用户纠正 / 连续踩坑后成功)触发 LLM 提取;新旧条目先经 IDF 加权预筛,再一次批量整合裁决——重复合并、过期冲突直接取代并留下 supersededBy 标注。可选人审队列:模型只提议,裁决权在你。

提取预算 20 次/会话you stay in control
04 · 上下文注入

六种模式,KV 前缀稳定

会话创建时冻结记忆快照,整个会话复用——前缀不变,KV-cache 全中。六种注入模式(默认 digest 摘要)按需渐进披露,常驻成本随时可见(≈N tokens 标注)。步级自动召回(可选)走消息通道,不碰系统提示。

渐进式披露成本可见
05 · 身份层(可选)

SOUL.md 与 USER.md,助手自己写的身份

SOUL.md 是助手的人格,USER.md 是它对你的工作画像。内容由助手在对话中经 identity_update 整文重写——每版留快照、可回滚;你在「身份」设置区审阅历史,但不直接编辑。默认关闭,开启后注入系统提示。

identity_update版本可回滚
MEASURED · 数字说话

指标经过 CI 守门,不靠体感

9+1个模型工具
9 记忆工具 + identity_update(身份层默认关闭)
100%success@5 · 检索命中率
35×35 中英 golden set · CI 下限 85%
0.902MRR · 排名质量
同 golden set · CI 下限 0.75
≈344tokens · policy-only 常驻注入
与记忆库大小无关
1096个测试用例
1090 通过 + 6 需密钥跳过 · 每次 push 必跑
3层作用域
global · project · user
HOW · 它怎么工作

三步闭环:沉淀 → 存取 → 注入

会话中 · 沉淀

三类信号流过零 LLM 成本的累加器:明确意图(「记住 / 以后都」)、用户纠正(「不对,其实是」)、连续踩坑后的成功。攒够阈值(默认 10),才触发一次 LLM 提取。

落库 · 存取

每条写入先过 37 条安全扫描规则,再追加审计;与既有条目去重整合,重复的合并、过时的取代。BM25 索引随写随就绪,命中即刷新保鲜时间戳。

下个会话 · 注入

会话创建时冻结快照,首个 step 附上一份类目计数与主题词清单(默认 digest 摘要模式),全文用 memory_search / memory_get 按需取;步级还可自动召回相关记忆,全部带 token 成本标注。

TRUST · 安全与控制

每一条记忆,都过闸、都留痕

记忆会在未来被重新读进上下文——它本身就是攻击面,所以必须双面设防。

WRITE + READ · 双防线

写入扫描,读取脱敏

写入时 37 条规则拦截(密钥 16 · 提示词注入 17 含 8 条中文 · 外泄 4),永不落库;读取时每个注入面重新脱敏,漏网内容渲染为 [BLOCKED: …]。原文保留,静默删除只会掩盖攻击。

AUDIT · 全量审计

谁写的、何时写的,永远可查

每次变更追加一条审计:操作、来源(tool / review / flush / ui / janitor)、内容预览,200 条滚动、单调 seq。

GUARD · 危险操作有闸

批量遗忘不会失控

memory_forget 需要显式 confirm: true;批量删除有上限、置顶条目豁免并报告、每条删除独立审计。

HUMAN · 人审一票否决

模型提议,人裁决

打开写入前人工确认:所有提取与工具写入降级为提议,被反复观察的提议自动置顶;对既有条目的修改,采纳前绝不触碰原文。

REMOTE · 远程写默认拒绝

宽信任域不放大权限

浏览器端管理默认只读,写操作需部署级显式开启——信任的是传输面,不是存储面。

PROMPT · 提示词防御

记忆是上下文,不是指令

存储内容里的伪造围栏闭合符在渲染时被中和;每个注入面都声明:当前用户请求、仓库文件与工具输出永远优先于记忆。

CONSOLE · 管理中心

不用命令行,也能管理一切

概览 待确认3 管理

概览 · 健康仪表盘

整个记忆库的状态一览,后台任务的失败遥测也在这里。

  • 总量 128 · 置顶 7 · 衰减中 3
  • global 41 / project 62 / user 25
  • 审计 200 条滚动 · 最近提取 昨天 22:41

待确认 · 提议队列

人审模式的裁决台:按 hits 降序,被反复提议的排最前。

  • 采纳 前可编辑 · 拒绝 一键丢弃
  • 角标实时提示待处理数量
  • 对既有条目的修改 绝不自动生效

管理 · 全量操作

作用域 + 工作区过滤,BM25 搜索,类别筛选,懒加载列表。

  • 编辑 · 置顶 / 取消置顶
  • 归档 / 取消归档 · 删除
  • 衰减标记一目了然

上表为界面示意(数据非真实)。设置中的五张卡——记忆、项目笔记、自动召回、身份、自动提取——改完实时生效,无需重启;界面中英双语。插件不向你的仓库写入任何文件。

HONESTY · 适用与边界

它适合什么,不适合什么

FIT · 适合这样用

个人与团队的长期资产

跨会话的个人偏好与工作习惯;项目的团队约定与提交规范;调试中验证过的踩坑与解法;长期迭代中沉淀的工程判断。它面向「帮智能体积累经验」,不是通用知识库。

LIMITS · 已知限制

诚实说在前面

检索是纯词法的:BM25 不做语义向量,换一种说法的查询不会命中(同义改写靠 summary 入索引兜底);提取质量跟随会话模型,不引入额外按键;宿主 DeepSeek Harness 处于 alpha 渠道(0.1.2-alpha.2),插件随之演进;远程管理面仅受信任主机保护,写操作默认关闭。

STATUS · 项目状态

仓库现在怎么样

当前版本
v0.9.3
npm registry · 静态快照
累计提交
241
stats.json · 静态快照
最近更新
2026-09-09
stats.json · 静态快照
测试用例
1096
1090 通过 + 6 需密钥跳过

版本与提交数在页面打开时直接读取 npm registry 与仓库 stats.json(CI 每日刷新);离线时显示上述烘焙的静态快照。

EXPLORE · 去哪深入

四条路径