Cairn 是给 DeepSeek Harness 的持久化跨会话记忆——一条命令安装 · 九个记忆工具 + 一个身份工具 · 六种注入模式。事实、偏好、约定与踩坑跨会话存活:每个新会话一开始,智能体就带着上一次的经验。
dsh plugin add --profile web @chenhw7/dsh-memory默认情况下,智能体没有跨会话的记忆——你上周说过的、昨天踩过的,今天全部重来。
「以后都用 pnpm」说过就忘;同一个构建坑掉进去第二次;上次会验证过的结论,今天全凭印象复述。上下文越堆越长,真正重要的事反而要反复交代。
值得记的信号被自动提取、安全扫描、审计入库;下个会话开场,记忆的类目与主题词摘要已经在场,需要全文时用 memory_search / memory_get 按需召回。使用即保鲜,遗忘有规则。
JSON(宿主存储域)或 SQLite(node:sqlite,零额外依赖)两种后端,迁移一次完成;跨进程单写者检测防止并发覆盖。entries / audit / suggestions / meta / identity / identity_history 六张表,每次变更都有来源与审计。卸载插件,记忆不丢。
手写的 Okapi BM25:拉丁词保守词干收敛词形,中文产出单字一元 + 相邻二元——「记忆」不再命中所有含「记」的条目。三层作用域(global / project / user),summary 与正文同入索引,置顶条目优先浮出。
三类信号(明确意图 / 用户纠正 / 连续踩坑后成功)触发 LLM 提取;新旧条目先经 IDF 加权预筛,再一次批量整合裁决——重复合并、过期冲突直接取代并留下 supersededBy 标注。可选人审队列:模型只提议,裁决权在你。
会话创建时冻结记忆快照,整个会话复用——前缀不变,KV-cache 全中。六种注入模式(默认 digest 摘要)按需渐进披露,常驻成本随时可见(≈N tokens 标注)。步级自动召回(可选)走消息通道,不碰系统提示。
SOUL.md 是助手的人格,USER.md 是它对你的工作画像。内容由助手在对话中经 identity_update 整文重写——每版留快照、可回滚;你在「身份」设置区审阅历史,但不直接编辑。默认关闭,开启后注入系统提示。
三类信号流过零 LLM 成本的累加器:明确意图(「记住 / 以后都」)、用户纠正(「不对,其实是」)、连续踩坑后的成功。攒够阈值(默认 10),才触发一次 LLM 提取。
每条写入先过 37 条安全扫描规则,再追加审计;与既有条目去重整合,重复的合并、过时的取代。BM25 索引随写随就绪,命中即刷新保鲜时间戳。
会话创建时冻结快照,首个 step 附上一份类目计数与主题词清单(默认 digest 摘要模式),全文用 memory_search / memory_get 按需取;步级还可自动召回相关记忆,全部带 token 成本标注。
记忆会在未来被重新读进上下文——它本身就是攻击面,所以必须双面设防。
写入时 37 条规则拦截(密钥 16 · 提示词注入 17 含 8 条中文 · 外泄 4),永不落库;读取时每个注入面重新脱敏,漏网内容渲染为 [BLOCKED: …]。原文保留,静默删除只会掩盖攻击。
每次变更追加一条审计:操作、来源(tool / review / flush / ui / janitor)、内容预览,200 条滚动、单调 seq。
memory_forget 需要显式 confirm: true;批量删除有上限、置顶条目豁免并报告、每条删除独立审计。
打开写入前人工确认:所有提取与工具写入降级为提议,被反复观察的提议自动置顶;对既有条目的修改,采纳前绝不触碰原文。
浏览器端管理默认只读,写操作需部署级显式开启——信任的是传输面,不是存储面。
存储内容里的伪造围栏闭合符在渲染时被中和;每个注入面都声明:当前用户请求、仓库文件与工具输出永远优先于记忆。
整个记忆库的状态一览,后台任务的失败遥测也在这里。
人审模式的裁决台:按 hits 降序,被反复提议的排最前。
作用域 + 工作区过滤,BM25 搜索,类别筛选,懒加载列表。
上表为界面示意(数据非真实)。设置中的五张卡——记忆、项目笔记、自动召回、身份、自动提取——改完实时生效,无需重启;界面中英双语。插件不向你的仓库写入任何文件。
跨会话的个人偏好与工作习惯;项目的团队约定与提交规范;调试中验证过的踩坑与解法;长期迭代中沉淀的工程判断。它面向「帮智能体积累经验」,不是通用知识库。
检索是纯词法的:BM25 不做语义向量,换一种说法的查询不会命中(同义改写靠 summary 入索引兜底);提取质量跟随会话模型,不引入额外按键;宿主 DeepSeek Harness 处于 alpha 渠道(0.1.2-alpha.2),插件随之演进;远程管理面仅受信任主机保护,写操作默认关闭。
版本与提交数在页面打开时直接读取 npm registry 与仓库 stats.json(CI 每日刷新);离线时显示上述烘焙的静态快照。