dsh-neo4j-memory:用 Neo4j 图数据库做 DSH 长期记忆

前言

在 DeepSeek Harness(DSH)里跑智能体时,常见做法是依赖会话上下文或把聊天记录切成片段做检索。这类方式能应付短对话,但人物、事件、地点和概念之间的关系很难稳定保留,跨会话也容易丢细节。下面介绍社区插件 dsh-neo4j-memory:它把显式保存的内容整理成「事件 + 实体 + 关系」写入 Neo4j,并提供语义与实体维度的召回,适合需要本机长期图记忆、又愿意自己配置提取与向量 API 的 Windows 桌面用户。

这是什么

dsh-neo4j-memory 由 shuunO-O 维护,分类为「记忆」,当前 npm 版本 0.6.0,许可证 MIT。简介为:A long-term graph memory plugin for DeepSeek Harness (DSH), powered by Neo4j.

插件只向模型暴露两个工具,不扫描聊天记录;只有模型显式调用保存工具时才会写入记忆库。

工具 作用
memory_database_save(content) 从文本提取事件、人物、概念、地点及关系,写入 Neo4j
memory_database_search(query_text?, target_label?, entity_filter?, time_hint?) 按语义、实体或日期召回,返回主匹配及一跳关系

README 说明:这是一个可读、可改的开源原型,主要链路在真实环境跑过,并非生产级产品;仅在 Windows 10/11 x64 上测试,DSH 要求 >=0.2.1-rc.2 <0.3.0,Node.js 22+(桌面宿主内置)。

核心功能

图模型

记忆按图组织,而非聊天切片:

  • 四类节点:Event、Person、Concept、Location
  • 四类关系:PARTICIPATED_IN、OCCURRED_AT、MENTIONS、HAS_ATTITUDE
  • 节点 ID 按类型自增,例如 event_1、person_2、concept_3

本地 Neo4j 与外部库

首次调用相关工具时,可在 auto / managed 模式下自动下载 Neo4j 5.26.30 与 Temurin JRE 21(约 211 MB),无需系统已装 Java;也可连接支持向量索引的外部 Neo4j(需 Neo4j 5.23+ 及 vector.similarity.cosine)。

默认数据与日志目录为 %LOCALAPPDATA%\dsh-neo4j-memory\,可在设置页修改(改目录需重启 DSH)。

设置页与图谱页

安装后在 设置 → Neo4j 记忆 可配置:

  • 提取、向量、概念对齐三组 API Key 与 Base URL / 模型名
  • 概念对齐开关与阈值(80%–99%)、向量维度(默认 1024,须与向量模型输出一致)
  • 本地 / 外部 Neo4j 模式、外部密码、本地数据目录
  • 「重新向量化」:模型或维度变更后须执行,否则保存与语义搜索会被拒绝

默认模型参考(可在设置或环境变量中覆盖):

用途 默认服务 / 模型
提取 DeepSeek / deepseek-flash
向量 DashScope / qwen3.7-text-embedding,1024 维
概念对齐 TypeSafe / jev,阈值 0.95

只读图谱:设置 → Neo4j 记忆 → 展开图谱,或访问 /dsh-neo4j-memory/graph/,可查看已写入的节点与关系;无删除、合并、编辑 UI。

写入与检索链路

保存与检索的大致流程如下(与 README 一致):

保存:content
  → 提取事件/实体/关系
  → 生成事件摘要与实体名向量
  → 概念对齐(可选)
  → 一个 Neo4j 事务写入

检索:query / entity / date
  → 向量 top-3,或按实体/日期过滤
  → 取最相关节点的一跳邻居
  → 返回主匹配 + 次要匹配 + 上下文

写入失败时整笔事务回滚。配置中的 Key、端点、模型、阈值、维度在保存后于下一次工具调用生效;本地数据目录、Neo4j 模式、外部密码变更需重启 DSH。

安装与启用

DSH 生态采用「一切皆插件」;社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。安装前建议浏览 GitHub 仓库 源码与 MIT 许可证;插件以当前 DSH 进程权限运行,请勿把密钥或不愿发给模型服务的内容写入记忆。

桌面版插件页(推荐):

  1. 打开 插件 → 添加插件。
  2. 输入 dsh-neo4j-memory,按提示安装。
  3. 安装完成后重启 DSH(或按插件页提示重载),在 设置 → Neo4j 记忆 配置 Key。

命令行(PowerShell;CLI 路径按实际安装位置调整):

$cli = "D:\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd"
& $cli plugin --profile desktop add dsh-neo4j-memory

从 GitHub 安装:

$cli = "D:\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd"
& $cli plugin --profile desktop add github:shuunO-O/dsh-neo4j-memory

--profile desktop 为桌面版默认 profile;若使用其他 profile,请替换为对应名称。

典型用法

在对话中由模型按需调用工具即可,无需额外脚本。典型模式如下:

  1. 写入:用户说明希望记住的事实或经历后,模型调用 memory_database_save(content),传入自然语言内容;插件抽取图结构并写入 Neo4j。
  2. 召回:后续会话中,模型调用 memory_database_search,可传 query_text 做语义检索,或用 entity_filter、time_hint、target_label 缩小范围;返回主匹配节点及其一跳关系,供模型组织回答。
  3. 核对:在图谱页查看实际落库的节点与边,确认提取是否符合预期。

README 未提供固定 prompt 模板;行为依赖模型是否、何时调用上述工具。提取与合并为单次抽取,概念对齐为可选;检索为向量 top-3 加一跳,在几十条记忆规模上验证过,无公开 benchmark。

适用场景与注意

适合:

  • 已在 Windows 上使用 DSH 桌面版,需要跨会话保留结构化记忆(谁、何时、何地、涉及哪些概念)。
  • 愿意配置 DeepSeek(或自定义)提取 API、DashScope 兼容向量 API,以及可选的概念对齐 endpoint。
  • 接受本机 Neo4j 托管或自备外部 Neo4j,并理解记忆库在本机、但提取/向量/对齐请求会发往所配置的模型 API。

务必留意:

  • 平台限制:package.json 声明仅 win32 / x64;其他系统未在资料中声明支持。
  • 隐私:API Key 保存在当前 DSH profile 配置中,不回显、不进入对话;记忆内容经第三方 API 做抽取与向量化,勿存入密码或敏感密钥。
  • 限制:图谱只读;同一时间建议只运行一个使用托管本地 Neo4j 的 DSH 实例;向量维度变更后必须「重新向量化」。
  • 可选环境变量(插件设置优先于环境变量)包括 DSH_NEO4J_MEMORY_NEO4J_MODE、DEEPSEEK_API_KEY / EMBEDDING_API_KEY / TYPESAFE_API_KEY 等,完整列表见仓库 README。

排障时可查看 %LOCALAPPDATA%\dsh-neo4j-memory\provision.log 与 logs\console.log。若希望 DSH 退出后本地 Neo4j 仍运行,可设置 DSH_NEO4J_MEMORY_NEO4J_KEEP_RUNNING=1。

结尾

dsh-neo4j-memory 把 DSH 智能体的长期记忆落到 Neo4j 图模型上:显式保存、结构化抽取、语义与实体召回,并附带设置页与只读图谱。适合在 Windows 桌面 Harness 里做可读的图记忆原型与二次开发。

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

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

小夜