跳过主要内容
1

dsh-cognition-engine

1720198650/dsh-cognition-engine

让 AI 记住你跨会话说过的事,并且分得清哪些已经过期。

安装

dsh plugin --profile web add github:1720198650/dsh-cognition-engine

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-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 已发布。
  • 持久化:记忆写入 cognition-state.json,重启自动恢复。

准则本是干什么的

记忆是材料,准则是结论。

记忆准则本
内容你说过的原话、事实、决策从这些材料里提炼出的可执行约定
形态一条一整句,可能几十条一页 6–12 条,每条 12–80 字
进入上下文只注入前几条摘要每轮都注入(600 字符预算)
过期有 validTo,但默认长期阶段性准则可设有效期,过期自动停用

举个真实例子。你的记忆库里躺着这些材料:

mem-7  「功能开发完成后必须按顺序执行:①卸载验证 ②兼容性 ③代码优化 ④README ⑤发布」
mem-9  「功能开发完成后必须先跑测试再发版」
mem-16 「npm 发布时本机 registry 指向淘宝镜像,必须显式加 --registry」

蒸馏后变成三条准则,每条都能直接改变下一步动作:

[ctxt-00001] helpful=2 harmful=0 :: 功能发版前依次执行:卸载验证→兼容性检查→代码优化→
  README 覆盖检查→一键安装验证→发布,不可跳步。
[ctxt-00005] helpful=0 harmful=0 :: npm 发布与认证必须显式加 --registry=…,绕开本机淘宝镜像。

好处有三个:

  1. 不用每次重新交代——从「几十条记忆里自己找」变成「一页准则直接看」
  2. 能发现自相矛盾——蒸馏时模型会发现「mem-9 说先跑测试就够,mem-7 要求五步全做」
  3. 会过期——「这两周先用旧接口」这类阶段性约定到期自动停止注入,不会一直误导

怎么用

设置页之外,面板新增了「准则」页签:

  • 重新蒸馏:让反思引擎读记忆,产出候选(需要切到「真实模型」)
  • 手动新增:自己写一条(12–80 字,祈使句)
  • 待审 / 已过期 / 已生效 / 已停用 四组,逐条接受或拒绝
    • 停用 = 不再注入但保留记录;删除 = 彻底移除(任意状态可删,快照里仍可找回)
  • 每条显示 helpful / harmful 计数,harmful 攒到 3 次自动退场

候选不会自动生效——这是刻意的:ACE 的实测表明坏条目比没有条目更差 (每轮注入有害反思时准确率 66.7%,反而低于不做任何处理的 70.7%)。

七个工具

工具作用
cognition_context新会话先调它:读取跨会话核心记忆(≤400 字摘要)
cognition_remember写入记忆;supersedes 取代旧事实,source 标记来源并决定权威等级,scope 选 global / workspace / session,kind: correction 记纠正
cognition_recall按 strict / historical / belief 召回;render 走 Inline&Spill,expand 按主题扩展,scope 过滤作用域
cognition_forget删除记忆:按 id、按来源(如 test、reflection)、按主题
cognition_reflect三段式反思;draft 审草稿,save 把结论存成记忆;
action: playbook 改为准则蒸馏——从记忆提炼候选准则进待审队列(需真实模型)
cognition_state记忆/主题/任务/准则统计与跨会话摘要
manage_long_task长程任务:create / update / list / due / delete

配置

cordis.patch.yml:

- insert:
    - id: cognition-engine
      name: 'dsh-cognition-engine'
      config:
        decayHalfLifeHours: 168        # 记忆衰减半衰期
        assimilateThreshold: 0.55      # 同化阈值
        overlapThreshold: 0.42         # 重叠聚类阈值
        communityThreshold: 0.3        # 社区连边阈值
        maxClusterSize: 8              # 单簇上限
        tasksFile: ./tasks.json
        stateFile: ./cognition-state.json
        heartbeatHours: 6              # 多久没更新算超时
        patrolIntervalHours: 3         # 后台巡视间隔
        recordOnly: true               # 主动发言只记录不发送
        # lockToken: 你的固定口令
        # llmProvider: deepseek
        # llmModel: deepseek-chat

页面

浮层四个页签:

  • 任务:任务描述、状态、线索、顺序号、并行标记、超时标记;顶部「新建任务」可设时间段
  • 记忆:正文、来源徽章、当前/已取代、标签、录入时间;可编辑、可删除
  • 主题:标签、成员数、相关主题数、倾向;点开可看该主题下的记忆原文
  • 准则:从记忆蒸馏出的工作准则,按「待审 / 已过期 / 已生效 / 已停用」分组; 顶部有「重新蒸馏」与「+ 手动新增」;每条显示 helpful / harmful 计数
  • 设置:记忆准入规则开关、记忆归并与导入导出、三类删除、反思引擎三态、记忆读取锁、备份与审计

页面上所有数据走 HTTP,不进入模型上下文,不消耗 token。 只有「准则」页签里的条目会被注入上下文(600 字符预算)。

数据与隐私

项说明
落盘cognition-state.json(记忆)、tasks.json(任务)、cognition-playbook.json(准则)、cognition-audit.jsonl(审计)、.snapshots/(快照)
HTTPGET /cognition-engine/state(仅计数)、GET /cognition-engine/detail(含正文)、GET /cognition-engine/playbook、POST /cognition-engine/{clear,model,lock,playbook/*,snapshot/*}
记忆读取锁开启后 detail 与三个 POST 要求 x-cognition-token;state 始终公开(只有计数)
外部请求默认零外部请求;只有打开真模型时才会调用宿主配置的模型服务

⚠️ 不设 lockToken 且未上锁时,本机任意进程都能读取记忆正文。多人或多程序共用一台机器时请先上锁。


卸载

插件运行时注册的东西(7 个工具、4 条 HTTP 路由、后台巡视定时器、页面状态条)会在卸载时自动撤销。

但有四样东西不会自动消失,需要显式清理:

残留说明
cognition-state.json记忆的落盘
tasks.json长程任务台账
cognition-playbook.json准则本
cognition-audit.jsonl审计日志
.snapshots/自动快照
AGENTS.md 第九节会继续指示模型调用已不存在的 cognition_context
浏览器 localStorage['cognition-token']上锁口令

清理脚本:

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\uninstall-cleanup.ps1 -Workspace "<工作区目录>"

然后移除插件本体:

plugin_manager remove_bundle target=dsh-cognition-engine

最后在页面控制台执行 localStorage.removeItem("cognition-token"),刷新页面。

为什么不在 dispose 里自动删数据:dispose 在 HMR 热重载和插件重启时也会触发,自动删会把记忆每改一次代码就清空一次。运行时资源自动撤、磁盘数据交给显式脚本,是刻意的分工。


架构

模块职责设计来源
memory.ts双时态存储、三种召回、冲突检测、Inline&SpillLongMemory
topics.ts主题注册表:人定的适用范围键、别名匹配、归档Memobase / Letta
playbook.ts准则本:条目化存储、确定性合并、渲染与预算、过期与冲突
distill.ts准则蒸馏的提示词与解析(Reflector 五字段 + 候选)
audit.ts追加式审计日志(JSONL,按大小轮转)
reflection.ts三段式反思、Worker 队列Hegelion
proactive.ts默认不做的发言闸门dsh-superagent-prototype
task_manager.ts主题下的待办:增删改状态、原子落盘自研
persist.ts记忆快照存储自研
views.ts页面只读视图自研
tools.ts七个工具的参数表与执行体(状态全部来自依赖注入)—
util.ts无状态纯函数:参数收敛、schema 自检、异常转文本—
index.ts插件装配:建实例、注册工具、HTTP 路由、巡视、生命周期—
client.js输入框上方的浮层与状态条(四个页签)—

反思闭环参考了 Generative Agents 的「记忆 → 反思 → 回写记忆」。 主题层从 CAM 借鉴了同化/顺应概念,但实现已移除—— CAM 是为长文档阅读理解设计的,不适用于跨会话个人记忆(理由见 docs/topic-research.md)。


开发

npm install
npm run build      # tsc → lib/
npm test           # 33 项单元测试
npm run eval       # 20 条评测 + token 预算门禁

npm run eval -- --update 在确认变好之后重写基线。

质量门禁

  • 单元测试 64 / 64
  • 评测用例 16 / 16,判分器自检、打包自检 5 项、兼容性 5 项
  • 工具 schema 固定开销 1352 tokens(预算 1400)
  • 单次调用输出上限 344 tokens(预算 600)

发版前按六步走,不可跳步:① 卸载验证 ② 兼容性检查 ③ 代码优化 ④ README 覆盖检查 ⑤ 在真实入口点一遍 ⑥ 发布。

第 ⑤ 步是硬性要求——测试全绿不等于功能能用。0.9.0 就因为准则本的按钮没做、 只写了接口,测试全过后发出去,40 分钟后被迫补发 0.9.1。详细清单见 PUBLISH.md。


时间旅行

双时态意味着同一个问题可以问三次,得到三个都不一样但都正确的答案:

现在:部署区域定在哪?        → strict       → 华东(当前真值)
十月:那时定的是哪?          → historical   → 华南(那时为真)
十月:你当时知道改过吗?      → belief       → 不知道(那时还没记录)
两次都说说:                  → associative  → 华东 + 华南(不过滤时间)

旧值不会消失——被取代的记忆保留 id 与 hash,只闭合 validTo、标记 supersededBy, 所以「上次是怎么说的」永远查得到。

这是别的记忆插件做不到的部分:它们记住结果,我们连变迁过程一起记住。


兼容性

设计原则:只做特性探测,不做版本判断;任何宿主能力缺失都降级而不是报错。

场景行为
与其他插件工具重名跳过该工具并记警告,其余 6 个照常注册
HTTP 路由被占用跳过该路由,插件继续加载
宿主没有 webServer / events / effect对应功能静默关闭,不抛错
agent/pre-step 的 next 缺失返回 undefined,不阻断模型步骤
宿主更新导致工具 schema 不被接受该工具注册失败,但不影响其他工具

刻意不做的事(避免和其他插件打架):不修改全局 patch、不覆写系统提示、不接管 tools/post-execute、不声明 peerDependencies(避免 pnpm 的 ERESOLVE)。

已验证环境:DSH 0.1.x(desktop profile)+ Node 22。每次 npm run eval 都会回归「兼容性」三项。


已知限制

这些是当前版本明确不做或做不到的,写在前面免得踩坑:

限制说明影响
单实例写入用文件锁防止两个进程同时写坏,但不防后写覆盖:两个 DSH 实例各持一份内存快照时,后写的会盖掉先写的。检测到这种情况会在状态里给出告警。多开 DSH 时请只在一个窗口里写记忆
单机存储数据是本地 JSON 文件,没有服务端、没有团队共享。多人协作场景不适用
无增量同步导出是整库快照,导入是整体替换,不是合并。跨设备迁移请先导出再导入
反思引擎默认关闭开启后调用真实模型会产生额外 token 消耗,单次反思三次模型调用。对 token 敏感时保持关闭
语义损坏检测不到校验和能发现字节级损坏,但如果文件被写成了合法 JSON 却语义错误(例如被清空),只能靠快照回滚。建议定期导出备份
上锁是共享口令不是账号体系;口令泄露即失效。不要把口令发给别人

数据备份建议

  • 设置页「导出」可以随时导出整库
  • .snapshots/ 目录保留最近 5 份自动快照
  • 重要数据建议同时保留一份外部备份

设计依据:论文实测数据

这一节记录「按论文做了,但实测对不上」的地方——参数不能直接搬。

去重阈值

来源阈值说明
ACE (ICLR 2026)0.90稠密向量口径
本项目0.70字二元组词频余弦

实测标定点:

场景相似度
完全相同1.000
只差几个字0.759
同义改写0.694
意思相同、措辞不同0.522
完全无关0.000

用 0.90 会漏掉「只差几个字」这种最该拦的情况,所以降到 0.70。

冲突判定阈值

同一句话改否定词 → 0.915;「必须跑」改「不要跑」→ 0.786;「不跳步」改「可以跳步」→ 0.420。 取 0.38 才能覆盖最后一种。冲突只打标记给人工看,误报代价远小于漏报。

为什么「准则」不能整篇重写

Dynamic Cheatsheet 在 AppWorld 上的实测轨迹:

第 60 步   18,282 tokens   准确率 66.7%
下一步        122 tokens   准确率 57.1%   ← 比不 adapt 的 63.7% 还低

论文自己的结论是「模型会偷懒写 Previous content [...] preserved,小抄逐轮退化, 建议改外部结构化存储」。ACE 的增量方案相对整篇重写,AppWorld 上高 13.4 个点, 离线延迟低 82%。所以本项目:条目化存储 + 单条增删 + 渲染时拼装。

为什么候选必须人工确认

ACE 的对照:每轮都注入有害反思 → 准确率 66.7%,低于基线 70.7%; 改成每 5 轮注入一次才回到 76.1%。

坏条目的伤害大于好条目的收益。 所以蒸馏只产候选,进待审队列。

DC-∅ 对照:增益要减掉「指令本身」

Dynamic Cheatsheet 的消融有一列「空小抄」——给同样的解题指令但不给任何经验:

任务原始空小抄最佳
AIME24 (Claude)23.336.750.0
等式配平 (GPT-4o)50.088.0100

光换指令格式就能涨十几到三十个点。由此推出本项目的一条硬约束:

每条准则必须携带「只有这个用户/这个项目才知道」的信息。 判定问法:这条换成任何项目还成立吗?成立就不该写。

评测台里 playbook.gate 用例检查的就是这条:套话必须写不进去。


参考与致谢

本项目的机制设计来自以下开源工作。只借鉴思想,未复制任何代码——所有实现均为重新编写。

记忆与主题

项目借了什么
LongMemory双时态模型:validFrom/validTo 与 recordedAt/supersededAt 两条时间轴;半开区间判定;闭合区间不改变内容指纹与 id
CAM: A Constructivist View of Agentic Memory(NeurIPS 2025)借鉴同化/顺应概念。实现已移除:CAM 面向长文档阅读理解,实测不适合跨会话个人记忆(见 docs/topic-research.md)
A-MEM: Agentic Memory(NeurIPS 2025)卡片盒式动态链接:新笔记写入时分析历史笔记并建立语义连接。本项目的 linkedBy 记录「为什么连上它」(共享词 + 相似度)即源于此
MemGPT / Letta记忆分层与分页(对照参考)
GraphRAG社区摘要参与检索。本项目已移除:社区检索伤害细节型 QA(见 docs/topic-research.md)
RAPTOR递归聚类 + 逐层摘要的树状检索。本项目已移除:10² 条记忆规模下无需压缩
HippoRAG: Neurobiologically Inspired Long-Term Memory for LLMs(NeurIPS 2024)PPR 在知识图上传播相关度。本项目已移除:作者自认在基础事实记忆上不如标准 RAG

论文引用

实现中直接用到的三篇:

  • HippoRAG — Gutiérrez et al. HippoRAG: Neurobiologically Inspired Long-Term Memory for Large Language Models. NeurIPS 2024. arXiv:2405.14831
  • RAPTOR — Sarthi et al. RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval. arXiv:2401.18059
  • A-MEM — Xu et al. A-MEM: Agentic Memory for LLM Agents. NeurIPS 2025. arXiv:2502.12110

建构主义记忆框架另见 CAM(NeurIPS 2025,本项目仅借鉴概念未保留实现),辩证反思的 Prompt 编排另见 Hegelion,见下方各节。

信念修正与图结构

项目借了什么
memoripy(★693)admission.py 的准入管线:噪声过滤、敏感数据隔离、指令注入拦截、权威冲突判定(_higher_authority_conflict);以及「不可变版本 + 完整历史」的模型
memoryweb(★14)叙事边 Edge{from,to,relationship,narrative}:边不只有权重,还要说明为什么存在
Graphiti(★32k)时序边的建模方式(事实随时间为真/失效)
Kumiho(arXiv:2603.17244)typed dependency edges 的理论依据;AGM 信念修正与图原生记忆的对应关系

准则与上下文工程

项目借了什么
ACE: Agentic Context Engineering(ICLR 2026)一条式条目 + 双向计数([ctxt-00001] helpful=2 harmful=0 :: …);LLM 只产 ADD 候选,合并/去重/淘汰交给确定性代码——这是增量比整篇重写高 13.4 个点的根因;反思 3–5 轮最优
Dynamic Cheatsheet(EACL 2026)分节 + 使用计数、长度预算写进提示词;DC-∅ 对照(同指令 + 空小抄)说明「换成任何项目都成立」的套话增益为零,据此加了私有性校验
MemoryBank(AAAI 2024)艾宾浩斯遗忘曲线 R = e^(−t/S),被召回即增大强度 S;本项目的 decay() 按此让常用记忆衰减更慢
Mem0ADD / UPDATE / DELETE / NOOP 四分类与「UPDATE 前必须比较信息量」;其 token −73%、延迟 −92% 的数据支撑了「蒸馏优于堆上下文」的判断

反思

项目借了什么
Hegelion三段式 Prompt 编排:THESIS → ANTITHESIS(CONTRADICTION: / EVIDENCE: 成对)→ SYNTHESIS,以及合成的验收条件
Self-Refine生成 → 自我反馈 → 重写的迭代范式
Reflexion反思写回记忆、供下次使用的思路
Self-RAG把反思作为过程内控制信号(对照参考)
Generative Agents「记忆 → 反思 → 回写记忆」闭环;近期性 / 重要性 / 相关性三因子检索

插件机制

项目借了什么
dsh-superagent-prototype准入矩阵与「默认不做」;Inline & Spill 的 chars + read pointer;Worker 异步隔离
dsh-context-doctor工具 schema 的 token 成本量化思路(本项目用真分词器自测)
dsh-tool-squeeze工具结果压缩与原文留存的取舍(评估后未采用)

评测方法

项目借了什么
lm-evaluation-harness数据集 + prompt + 指标绑定;先小样本验证判分器
SWE-bench容器化复现、缓存键必须含输入
Inspect AITask / Solver / Scorer 的可替换分层
promptfoo声明式用例 + 断言 + 基线对比,CI 中运行

特别说明

  • 本项目由 DeepSeek V4.1-Flash(1017) 在「许愿式编程」模式下完成:人提需求,模型负责设计、实现、自测、修复与文档。
  • 所有参考项目仅用于理解机制;代码、测试与文档均为原创实现,未包含上述项目的源码片段。
  • 若你是上述项目的作者并认为某处借鉴过度,请开 issue,我会调整或移除。

License

MIT


English

dsh-cognition-engine is a zero-dependency DeepSeek Harness plugin that adds bitemporal memory, a constructivist schema graph, dialectical reflection, and a long-horizon task ledger. Seven tools, one status dock, everything stored locally.

相关插件