前言¶
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 侧的典型触发场景(摘自工具使用指南):
- 用户说「记住……」「以后都……」→ 应调用
memory_store。 - 新会话开场或用户提起旧话题 → 用任务关键词调用
memory_recall(可对kind过滤类型)。 - 用户要求删除某条记忆 → 用
memory_forget,id 来自 recall 或 status 输出。 - 排查捕获/召回是否正常 → 调用
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/ 为准。