前言¶
给 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)、夜间整理(归档重复与噪声、强化规则与承诺类记忆)。
- 目录页:https://www.skillhub.cn/plugins/fushui-menghua/dsh-memory-graph-chiyo
- 源码与文档:https://github.com/fushui-menghua/dsh-memory-graph-chiyo
与常见记忆路线的差异(简述)¶
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。