dsh-cognition-engine
Lets the AI remember what you said across sessions, and know which facts are still current.
Install
dsh plugin --profile web add dsh-cognition-engine
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
dsh-cognition-engine
让 AI 记得住,而且知道自己什么时候记错了。
关掉对话框,AI 就失忆了。你上周定的规矩、踩过的坑、说过的「别用那个接口」——下一次全部归零,还得重新交代一遍。
这个插件给它装两样东西:
- 🧠 记忆——记住事实,并且分清「现在为真」和「曾经为真」
- 📌 准则本——把记忆蒸馏成一页工作准则,每轮对话都摆到它面前,不靠它自己想起来
同类插件让 AI 记住经验。
我们让 AI 知道经验什么时候该作废。
30 秒看懂
你在三条不同的对话里说过这些话:
什么时候 · 你说了什么
上周 · 发版前必须走完:卸载验证 → 兼容性 → 优化 → README → 安装验证
前天 · npm 发布要加 --registry,本机默认走淘宝镜像
昨天 · 这两周先用旧接口,别切新的
普通 Agent:这三条躺在记忆库里,能不能想起来看运气。
这个插件:
1. 把前两条蒸馏成准则,每轮对话自动摆到 AI 面前——不靠它主动搜
2. 第三条自动带上有效期——两周后过期,停止注入,不再污染判断
3. 蒸馏时它自己发现矛盾:「mem-9 说先跑测试就够,mem-7 要求五步全做」
## 约定 - [ctxt-00001] helpful=2 harmful=0 :: 发版前依次执行五步,不可跳步 - [ctxt-00002] helpful=0 harmful=0 :: 纯文档改动只推 commit,不升版本号 ## 坑 - [ctxt-00005] helpful=0 harmful=0 :: npm 发布必须显式加 --registry 绕开淘宝镜像
每条带 helpful / harmful 计数,没用上的自动退场,误导过人的优先淘汰。
还有什么
- 双时态记忆:同一个问题能有三个都正确的答案——现在怎样 / 十月时怎样 / 那时你以为怎样
- 主题:人定的适用范围键——记忆回答「发生过什么」,准则回答「该怎么做」,主题回答「适用于哪类任务」
- 反思引擎:强制 AI 先反驳自己,再给结论(三段式,可关,可换本地模板)
- 待办挂在主题下:没做完的活记在该主题里,重启还在,开场自动带出来
- 写入可审计:每次变更留一行日志,能查「这条是谁写的、从哪个通道进来的」
- 零依赖:纯 TypeScript,无数据库,默认零外部请求,全部状态就是本地几个 JSON
入口:输入框上方的横条,点开是透明浮层,不挤压对话框。
认知引擎 · 记忆 9 · 主题 3 · 待办 0 · 准则 5
本项目是 DeepSeek V4.1-Flash(1017)许愿式编程 的产物:
需求由人提出,代码、测试、评测与文档由模型在会话中逐轮生成、验证并修正。
安装
需要 DeepSeek Harness,Node.js ≥ 22,Git。
从 npm(推荐,最短路径)
dsh plugin --profile desktop add dsh-cognition-engine
已发布到 npm:dsh-cognition-engine。
网页版把 desktop 换成 web。
一条命令(Windows)
powershell -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/1720198650/dsh-cognition-engine/main/scripts/install.ps1 | iex"
自动完成:克隆到 %USERPROFILE%\dsh-plugins\dsh-cognition-engine → 装依赖 → 构建 → 注册到 desktop profile。
一条命令(Android / dsh-go 本机引擎)
curl -fsSL https://raw.githubusercontent.com/1720198650/dsh-cognition-engine/main/scripts/install-dshgo.sh | sh
手动安装
git clone https://github.com/1720198650/dsh-cognition-engine.git cd dsh-cognition-engine npm install && npm run build dsh plugin --profile desktop add .
安装后重启一次 DSH,输入框上方会出现一行状态条,点开即面板。
默认不上锁,面板与接口不需要口令。
想防同机其他程序读取记忆正文,在设置页开启「记忆读取锁」并自设口令——不存在默认口令,
因为把口令写在数据文件旁边对同机进程毫无意义。
为什么做
普通 Agent 的记忆是一个检索管道:切块 → 向量化 → 取最近的。它解决不了五件事:
1. 现在为真 vs 曾经为真——你说"用 Python",后来改"用 TypeScript",两句话都在,它不知道该信哪句。
2. 新信息该挂在哪——第 20 条偏好和第 3 条是同一个话题,还是该新开一簇?
3. 它对这事什么态度——被连续否定之后,它还是用同样的语气回答。
4. 决定是怎么来的——只给结论,不给推理过程。
5. 经验沉淀不下来——这次想明白了,下次会话照样从零开始。
前四条用双时态记忆 + 主题 + 反思引擎回答;第五条用准则本回答。
特性
记忆:可追溯、会老化、可修正
- 双时态记忆:
validFrom/validTo(世界时间)+recordedAt/supersededAt(事务时间)。
取代不删除,旧版本仍可历史召回。四种检索口径:当前真值 / 那时为真 / 那时已知 / 联想。
- 记忆会老化:长期没被想起的记忆自动归档——不进 strict 召回,但历史与联想仍可查到。
「常用」由召回次数累积的激活量决定,用得越多衰减越慢(对齐 MemoryBank 的遗忘曲线)。
- 记忆可归并:同主题下高度相似的条目可一键合并,被合并的标记
mergedInto而不删除。 - 记忆可手动修正:内容、主题、录入时间、有效状态都能改;改过的条目标「已手动修正」,不伪造历史。
- 记忆体检(准入):写入前先过四道关,每道都能单独关掉——
① 是不是废话(ok / 谢谢 / 收到);② 有没有密钥、卡号;
③ 有没有「忽略之前的指令」这类注入;④ 会不会让低权威信息覆盖高权威。
中英文都覆盖(早期版本只认英文,等于这道闸门没装)。
- 纠正记忆:
kind: 'correction'会自动打标、提升重要度,并在跨会话摘要里置顶。
主题:人定的适用范围键
主题不是自动聚类,是人定的分类。 这一点和绝大多数记忆插件相反,原因是调研结论:
- 自动聚类在 10² 条记忆规模下没有任何论文证据支持收益
- 独立复现(SubtleMemory):结构化记忆最好 70.0%,而原文直灌 85.4%
- 业界只有 Graphiti 做真社区,且是内部结构、不可编辑、重建会删旧社区
- 可编辑的主题几乎都是人定的容器(Memobase slots / Letta blocks / Cognee NodeSets)
所以本项目:
- 主题由人定,有名字、说明、别名;记忆和准则挂上去(多对多)
- 注入按主题分组——模型能先判断当前任务属于哪个主题,只采用相关准则
- 待办挂在主题下——不做独立的跨天台账
- 矛盾可见:
memoryConflicts(同 subject 互斥事实)+ 按主题分组的topicTensions - 顺藤摸瓜:查一条记忆时,把同主题的其他记忆一并带出(
expand)
详细的删与留、为什么这么选,见 [docs/topic-research.md](docs/topic-research.md) 与
[docs/topic-research-oss.md](docs/topic-research-oss.md)。
准则本:让反思引擎有沉淀
- 结构化反思(反思引擎):THESIS → ANTITHESIS(矛盾/证据成对)→ SYNTHESIS,三步严格串行。
默认关闭,开启后可选「本地占位」或「真实模型」,选择持久化。
单独做它,是因为普通对话里 AI 天然顺着你说;反思引擎强制它先反驳自己。
- 准则本(Playbook):把记忆蒸馏成一页常驻上下文的工作准则,注入预算 600 字符。
条目形如 [ctxt-00001] helpful=2 harmful=0 :: 正文,模型可点名引用,计数能回写。
- 半自动蒸馏:反思引擎从记忆里提炼候选,确定性代码做去重 / 长度 / 来源 / 套话 / 私有性校验,
候选进待审队列,人工确认后才生效。
- 超预算不静默丢:注入超过 600 字符时显示「另有 N 条准则因预算省略」,低分条目被截掉时你能看见
- 准则有有效期:阶段性约定可设
validTo,过期自动停止注入并单独分组复核。
这是与同类插件最大的区别:它们让 AI 记住经验,我们让 AI 知道经验什么时候该作废。
- 准则冲突检测:新准则与现有准则疑似矛盾时打
conflictWith标记,不自动合并,交人工裁决。
判定顺序是先判冲突再判去重——否定翻转的准则相似度高达 0.92,先去重会被误当成重复丢掉。
待办:挂在主题下
- 任务不是独立的跨天台账,而是主题下的进行中事项
- 状态:待办 / 进行中 / 已完成,可随时改、可删除
- 太久没更新的会被提醒,但不打断你正在做的事
- 开场自动带出:
cognition_context返回ongoing(按主题分组的未完成事项)
数据安全
- 写入可审计:每次变更追加一行 JSONL(操作、id、主题、内容指纹、来源、通道),按大小轮转。
- 自动快照与回滚:每次覆盖前保留上一版(最多 5 份),设置页可「恢复最近快照」。
- 校验和:落盘后写
.sha256侧车,加载时校验;不匹配则隔离损坏文件而不是静默使用。 - 跨进程写锁:避免两个实例同时写导致内容交错;僵死锁自动清理。
- 写入通道与来源分离:
source是内容声称来自谁,origin是实际写入通道,后者由代码钉死。
Agent 工具通道无法冒充「用户陈述」。
- 数据可导出导入:整库记忆导出为 JSON,也能整体导入替换。
- 三类对象都能删:记忆软删除(可恢复)、待办直接删除、主题停用(已挂的记忆与准则都保留)。
- 记忆读取锁:给读取记忆正文的接口加访问口令。
界面与安装
- 浮层面板:输入框上方横条展开,四个页签——记忆 / 主题 / 准则 / 设置。
- 推理档位可选:设置页可指定反思/蒸馏用哪一档推理(自动最低 / off / low / high / max)。
当前模型会先吐很长的推理过程,而推理 token 与正文共用同一个输出预算——
档位越高越贵,也越容易把正文挤没。默认「自动」= 选模型声明的最低档。
- 巡逻复盘开关:巡视每 3 小时看一次逾期任务。默认不调模型,只写一条「已超期 N 小时」的提示;
想让它自动跑三段式复盘再打开(每次 3 次模型调用)。
- 一键安装:Windows 与 dsh-go 各有一条命令;npm 已发布。
- 数据与代码分开:所有状态写在
~/.dsh/cognition-engine/,不在插件目录里——清理仓库不会误伤用户数据。
可信度治理
记忆插件都在解决「记得住」。这一层解决的是另一个问题:
凭什么信这条?它什么时候该作废?
证据链
准则记录它依赖哪些记忆(sourceIds)。源记忆被取代、删除或归档时,依赖链会自动重算:
状态 · 含义 · 注入
intact · 来源全部有效 · 正常注入
weakened · 部分来源失效 · 注入,标「(证据已部分失效)」
orphaned · 全部来源失效 · 不注入,但也不删除
关键是第三条:它不会消失,前提恢复就自动回来。这是 TMS(Doyle 1979)的做法——撤回信念不是删一行,
而是让下游结论知道自己失去了支撑。
来源分级
等级 · 谁写的 · 强度 · 注入表现
human · 用户手写或确认 · 1.0 · 直接陈述
agent · AI 写入、人确认过 · 0.6 · 标「(AI 记录,待核实)」
auto · 蒸馏自动产出 · 0.4 · 「[仅参考]」
晋升只能一级一级来,AI 永远不能自封为 human。
冲突裁决
两条准则矛盾时,不是简单覆盖:
- 证据强度差 1.2 倍以上 → 强
…(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::6,最后更新 2026-11-04