dsh-memory-hub:DSH 本地优先的跨会话记忆插件

前言

DeepSeek Harness(dsh)把能力拆成可插拔模块,但默认会话仍是「开新窗就失忆」:偏好、约定、上一轮工具结论不会自动带到下一次对话。社区里也有记忆类插件,README 指出不少仍偏早期、依赖外部生态或未在 dsh 事件层做深度集成。dsh-memory-hub 由维护者 beijingwahw 发布,归类为「记忆」,在 GitHub 上当前可见约 1 star;它以本地 JSONL 为主存储,订阅 dsh 的 session/event 与 tools/result 做事件驱动捕获,并给 Agent 暴露四套记忆工具,目标是在不接入云端的前提下让 Harness「越用越懂你」。

这是什么

dsh-memory-hub 是 dsh 的智能会话记忆中心插件:自动从真实用户输入与工具成功结果里提炼可持久化的偏好、指令与事实,同时允许模型在对话中显式写入、召回、遗忘与查看库况。实现为纯 TypeScript,MIT 许可证;package.json 中版本为 1.6.0,运行要求 Node.js ≥ 18,并通过 cordis.patch.yml 以插件 id memory-hub 挂入 profile 配置树。

核心功能

下面按「自动捕获 → 显式工具 → 存储与隐私」三块说明已写在 README 中的能力。

自动捕获

插件监听 dsh 事件溯源与工具结果管线,在四档 captureMode 下工作:off、conservative、balanced(默认)、aggressive。捕获只针对真实用户消息,跳过插件注入与子代理上下文;短于 8 字符的片段丢弃,API Key、JWT、私钥、数据库连接串等敏感模式在 NFKC 归一化后匹配拦截。内容经 contentHash 等在去重窗口内幂等写入 append-only JSONL。

启动时还可选配置 importSources,批量导入 Markdown(如 AGENTS.md、MEMORY.md)与会话 JSONL 日志,重复导入按内容合并。

四套 Agent 工具

模型可直接调用:

工具 用途概要
memory_store 持久化决策、事实、偏好、指令,自动标签与幂等 id
memory_recall BM25 为主的多线召回(容错、语义兜底、可选图谱/推理/向量等高级开关见 README 配置表)
memory_forget 按 id 删除记忆
memory_status 规模、分布、运行指标与存储诊断

输出为结构化 JSON 加可读文本,召回默认受 token 预算(如 defaultRecallTokens 800)与条数上限约束。

本地存储与治理

默认目录为 ~/.dsh/memory-hub(配置项 storageDir)。写入遵循「先落盘后入内存」;逻辑删除用 tombstone,可 compact 重建。支持 TTL 批量过期、memory_forget 与价值感知淘汰(需开启 maxEntries 与 autoEvict)。1.4.0 起可选 passphrase 或环境变量 DSH_MEMORY_PASSPHRASE 做逐行 AES-256-GCM 加密落盘。

安装与启用

官方 README 的安装方式是基于已打包的 .tgz 插件包,而不是在文中给出 github:owner/repo 一类命令。先将打包文件(文档示例文件名为 dsh-memory-hub-1.1.0.tgz)放到可从插件页选择的位置,再任选其一:

# 方式一:CLI(profile 替换为你自己的 profile 名,如 web)
dsh plugin --profile web add ./dsh-memory-hub-1.1.0.tgz

方式二:在 dsh 桌面端「设置 → 插件」点击「安装插件包」,选择同一 tgz 文件。

安装后插件 id 为 memory-hub,重载 profile 即生效;卸载会恢复 patch 前的配置,磁盘上的记忆文件仍保留。

配置要点

在 profile 的 memory-hub 节点下可改行为。常用项如下(完整表见 GitHub README):

配置项 默认值 说明
storageDir ~/.dsh/memory-hub 记忆库目录
captureMode balanced 自动捕获力度
defaultRecallTokens 800 召回 token 预算
defaultRecallLimit 8 召回条数上限
ttlDays 0 0 表示不过期
importSources 空 启动导入 Markdown / 会话 JSONL

若希望「开箱即有记忆」,可按 README 在 patch 中声明导入源,例如:

memory-hub:
  importSources:
    documents:
      - ~/workspace/AGENTS.md
      - ~/workspace/.agents/notes/MEMORY.md
    sessionLogs:
      - ~/.dsh/sessions/archive/2026-09.jsonl

路径不存在时仅告警,不阻断插件启动。

典型用法

自动捕获在 captureMode 非 off 且会话正常产生用户消息与工具结果时持续运行,无需额外命令。

Agent 侧的典型触发场景(摘自工具使用指南):

  1. 用户说「记住……」「以后都……」→ 应调用 memory_store。
  2. 新会话开场或用户提起旧话题 → 用任务关键词调用 memory_recall(可对 kind 过滤类型)。
  3. 用户要求删除某条记忆 → 用 memory_forget,id 来自 recall 或 status 输出。
  4. 排查捕获/召回是否正常 → 调用 memory_status 查看 metrics 与 diagnostics。

高级参数(如 expand、asOf、explain、vector 等)与版本对应关系以 README「工具使用指南」为准;默认关闭的开关(如 semanticBoost、graphEnabled)不改变行为,按需再在 profile 中打开。

适用场景与注意

适合希望在单机上长期积累 Harness 偏好与项目事实、且不愿把记忆送到第三方服务的开发者。也适合已有 AGENTS.md、归档会话 JSONL,希望一次性导入再增量捕获的场景。

使用前请注意:插件与 dsh 进程同权限运行,能读写你配置的 storageDir 与 importSources 路径;安装 tgz 前应自行查看 GitHub 仓库 源码与 MIT 许可证。敏感内容虽有多层过滤,仍不应把密钥类信息故意写入会被捕获或导入的文本。社区目录 SkillHub 插件页 与 GitHub 无 DeepSeek / 幻方官方从属关系,仅为社区收录入口。

结尾

dsh-memory-hub 把跨会话记忆落在本地 JSONL 与可选加密层上,用事件驱动自动捕获加四套显式工具,补上了 dsh 长期记忆方向上的可落地实现之一。若要安装说明、配置全集与架构细节,请以仓库 README 与 docs/ 为准。

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

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

小夜