dsh-memory-graph-chiyo:带锚点、会遗忘、夜间整理的记忆图插件

前言

给 AI agent 做长期记忆时,常见方案要么只靠向量相似检索、丢掉「谁说的、原话是什么」,要么把对话抽成结构化事实却无法再对回原句。DeepSeek Harness(DSH)支持以插件扩展能力;若你希望记忆既能召回、又能回溯原文,并且会随时间衰减而不是只增不减,可以看下维护者 fushui-menghua 在社区目录「记忆」分类下的 dsh-memory-graph-chiyo。它把记忆做成图:强制锚点、四层衰减、夜间 consolidation,数据落在本地 JSONL,运行时仅依赖 Node 内置模块。

这是什么

dsh-memory-graph-chiyo(npm 包名同名,当前版本 1.0.1,许可证 MIT)定位为「可回溯、会遗忘、会睡觉整理的记忆内核」,面向 bridge / DSH 人格类 agent 的长期记忆层。README 将其概括为抽取式检索与轻量时序图谱路线的混合,并强调三件事:锚点强制(fact / plan 必须能指回原话)、四层衰减(instant → short → long → cold)、夜间整理(归档重复与噪声、强化规则与承诺类记忆)。

与常见记忆路线的差异(简述)

README 用表格对比了向量 RAG、Mem0、Zep/Graphiti、Letta、Cognee 等路径的短板;本项目在结构化事实与关系边上做召回,同时要求事实类节点带 anchors,并内置计划过期、共享记忆审批、敏感信息写入前过滤、锚点与原文一致性校验等机制。具体能力以仓库 README 与测试(README 标注 67 passing)为准。

核心机制

锚点、节点类型与 scope

记忆按 scope 隔离,例如 user:alice、agent:chiyo、group:demo。节点 kind 包括 fact(须有锚点)、impression(可无锚点)、plan(带失效期)。layer 为 instant / short / long / cold / permanent 等;写入时相同规范化文本会合并并增加 mentionCount。

衰减与夜间整理

短期层在满足提及次数与时间条件后可升入长期层;长期不用会沉入冷层。nightly 会推进层与即时记忆、处理 plan 状态,并做重复/墓碑/极小陈旧项归档,以及对规则承诺类内容的强化。可用 cron 配合 CLI 每天执行,例如:

0 3 * * * cd /path/to/app && npx memory-graph nightly --dir ./data --scopes user:alice --apply

召回与关系边

召回综合字符 bigram、关键词、重要度与新鲜度,并过滤冷层、归档与过期 plan。支持 跨 scope 召回(结果带 scope)。关系类型含 person、relationship、because、derivedFrom、supports、contradicts 等,可按 hops 沿边扩展一跳。

共享记忆与合规

共享流程为 propose → approve → 跨会话可见 → revoke;未批准不可召回。另有路径、QQ 号、凭据、令牌等敏感内容的写入前拒收(可逐类放行)。

作为 DSH 插件安装与工具

面向 DSH 用户,官方安装命令为:

dsh plugin --profile web add dsh-memory-graph-chiyo

装上后 DSH 会注册 5 个工具:memory_write、memory_recall、memory_health、memory_nightly、memory_shared。数据默认目录为 ~/.dsh/memory-graph,默认 scope 为 agent:memory(可在插件配置中修改)。插件入口为包内 ./plugin.js 的 apply(ctx),与库共用同一 npm 包。

环境要求: Node ≥ 20;package.json 中 engines.dsh 为 >=0.1.7-rc.1。

典型用法:库 API

开发者也可直接安装库:

npm i dsh-memory-graph-chiyo

下面步骤演示创建存储、写入带锚点的事实、建关系、召回与夜间整理(摘自 README 快速开始)。

1、创建记忆实例并指定数据目录:

import { createMemory } from 'dsh-memory-graph-chiyo';

const mem = createMemory({ dir: './memory-data' });

2、写入 fact(必须带 anchors):

mem.write('user:alice', {
  nodes: [
    { kind: 'fact', text: '她喜欢下雨天', anchors: [{ quote: '我最喜欢下雨了' }] },
    { kind: 'fact', text: '她怕黑', anchors: [{ quote: '我怕黑' }] },
  ],
});

3、在已有节点上建立 because 关系并召回(hops: 1):

const fear = mem.load('user:alice').find((n) => /怕黑/.test(n.text));
mem.write('user:alice', {
  nodes: [{
    kind: 'fact',
    text: '睡觉要留一盏小灯',
    anchors: [{ quote: '留个灯' }],
    relations: [{ type: 'because', targetId: fear.id }],
  }],
});

const hits = mem.recall('user:alice', { query: '怕黑', hops: 1 });

4、执行夜间整理(apply: true 会写回状态):

const report = mem.nightly(['user:alice', 'agent:chiyo'], { apply: true });

存储布局为按 scope 与月份分文件的 JSONL,例如 memory-data/user_alice/2026-11.jsonl;同 id 以最后一条为准(last-wins)。

桥接层(QQ / 微信人格机器人)

若使用桥接 + DSH 人格机器人,README 提供 createBridgeMemory 适配:每轮前拼装上下文、每轮后自动抽取记忆,并可调用 nightly。详见仓库 docs/BRIDGE.md。

import { createBridgeMemory } from 'dsh-memory-graph-chiyo/bridge';
const bm = createBridgeMemory({ dir: './memory', scope: 'agent:chiyo' });

bm.beforeTurn({ query: 用户这句话 });
bm.afterTurn({ messages: [用户, 回复] });
bm.nightly({ apply: true });

同一桥接对象还可使用情绪、做梦与待办等扩展 API(bm.mood、bm.dream、bm.tasks)。

命令行体检与召回

包提供 memory-graph 可执行文件,例如:

npx memory-graph health --dir ./data --scope user:alice
npx memory-graph recall --dir ./data --scope user:alice --query 下雨
npx memory-graph recall-all --dir ./data --scopes user:alice,agent:chiyo --query 下雨
npx memory-graph nightly --dir ./data --scopes user:alice --apply

适用场景与注意

适合: 需要长期对话记忆、又要求 fact/plan 可回溯原话;希望自动遗忘与定时整理;打算接入 DSH 工具面或 Node 服务内嵌记忆层的开发者。

注意: DSH 插件在 当前 dsh 进程权限 下运行,会读写本机 ~/.dsh/memory-graph(或你配置的路径)。安装前请阅读 GitHub 源码与 MIT 许可证,确认敏感过滤策略是否满足你的合规要求。社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。

小结

dsh-memory-graph-chiyo 把「记得住、忘得掉、每晚自己整理」落到锚点图、JSONL 与 DSH 五件套工具上;库与插件同一包,可按项目选 npm 或 dsh plugin --profile web add。更多能力(上下文压缩带锚点、星图可视化、extractAndWrite、assembleContext 等)见 README。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye