dsh-hy-memory:为 DSH 装上会话、项目、个人三层长期记忆

前言

用 DSH 做智能体开发时,上下文往往只活在当前会话里:AGENTS.md 可以写静态规则,但换会话、开子代理后,上次说过的约定、偏好和踩坑仍要重讲一遍,而且很难保证和上次一样清楚。手写文档还依赖你是否记得「这件事值得记」。

下面介绍社区维护的 dsh-hy-memory(Echo-Smith),它在对话进行中自动沉淀记忆,在需要时按层召回,并可在 DSH 设置面板里查看与整理。

这是什么

dsh-hy-memory 是 DSH 的「记忆」类插件:为宿主接上 Hy-Memory 2.0 内核(Python sidecar + 本地存储),实现 会话、项目、个人 三层长期记忆。对话自动捕获与晋升,召回以带来源的 user 消息注入,不伪装成用户指令。许可为 MIT,npm 包名 dsh-hy-memory(资料中 package 版本为 0.2.1)。

生态上,DSH 秉持「一切皆插件」;插件目录在 SkillHub 等社区站点展示,与 DeepSeek / 幻方无官方从属关系。

三层记忆如何分工

层 存什么 谁能看到
会话 当前对话细节、工具调用、临时结论 仅本会话
项目 仓库约定、路径、命令、架构决定 同一工作区所有会话
个人 跨项目偏好、习惯、长期规则 所有项目

沉淀方向为 会话 → 项目 → 个人:反复出现的约定会上提;一次性调试细节不会自动污染个人层。子代理与主会话共享项目层,各自有独立会话层。

核心能力

自动捕获与召回

  • 捕获:监听会话事件,按窗口轮数与空闲时间把对话与工具调用交给 sidecar 提炼写入存储。
  • 召回:在 agent/pre-step 钩子里对个人、当前项目、当前会话三路检索,命中后以标注为「背景资料」的 user 消息注入,并说明可能过时、不是指令。
  • 晋升:按轮次与会话结束事件,把会话记忆提炼为项目约定,再提炼为个人偏好。

设置面板

装好后打开 设置 → 记忆。个人、项目、会话分标签,支持搜索、分页、展开、编辑与删除。个人层可编辑与永久遗忘;项目与会话层在面板中为只读,避免与自动沉淀冲突。可查看单条记忆的召回溯源(查询、命中、分数)以及实际注入模型的文本。

个人层主动写入

每个会话可注入一次简短策略,引导模型在识别到长期偏好或规则时调用 memory_add 并指定 tier: "personal"。可通过 recall.personalWrites: false 关闭。

与 MemHub

若已安装 MemHub,面板支持导出 JSON、从 MemHub 拉取、从文件导入;同步由 MemHub 侧控制,本插件负责接线。

安装与启用

插件以当前 DSH 进程权限运行,安装前请阅读仓库源码与 MIT 许可证。依赖要点(来自 README):

  • DSH 0.2.x(维护者验证过 0.2.2-rc.1)
  • 已配置的 OpenAI 兼容 模型路由(记忆沿用 DSH 配置,无需另填 key)
  • Node.js ≥ 22(package.json engines)
  • Python 3.11+:首次启动自动准备独立 venv;有 uv 时优先用 3.12

从 npm(推荐)

node scripts/install-into-profile.mjs --spec dsh-hy-memory --apply

脚本会把包加入 profile 依赖并写入 dsh.profile.bundles,并校验入口导出 apply()。手工等价于在 profile 中 pnpm add dsh-hy-memory 并把包名加入 bundles。

装完 重启或重载 DSH,再打开 设置 → 记忆。

其他装法

从源码链接到当前目录:

dsh plugin --profile desktop add link:$(pwd)

从 GitHub Packages(需 read:packages token,见 README 中的 ~/.npmrc 示例):

node scripts/install-into-profile.mjs --spec @echo-smith/dsh-hy-memory --apply

从 Release tarball 示例(README 给出 v0.1.6 地址):

node scripts/install-into-profile.mjs --spec https://github.com/Echo-Smith/dsh-hy-memory/releases/download/v0.1.6/dsh-hy-memory-0.1.6.tgz --apply

插件市场索引(可选)

在 DSH 插件市场设置中加入:

https://raw.githubusercontent.com/Echo-Smith/dsh-hy-memory/main/market/index.json

便于详情页对比已安装版本并标记更新。面板检测到新版本后可从 Release 安装,但 不会自动重启 DSH,需按提示自行重启。

配置要点

可在 设置 → 记忆 → 诊断 / 记忆引擎 修改,或直接编辑 settings.json。常用项如下(默认值以 README 为准):

键 默认 说明
enabled 开 总开关
mode pro lite 不调用模型,只存原文
tiers.personal / project / session 全开 关闭某层则不检索、不写入
recall.maxItems 5 单次最多注入条数
recall.maxChars 1200 注入字符预算
recall.minScore 0.45 相关度门槛,越低召回越多也越杂
recall.halfLifeDays 30 时效半衰期
recall.personalWrites 开 是否注入主动写个人层策略
capture.windowTurns 3 几轮对话后提炼
capture.idleFlushMs 180000 空闲多久强制沉淀
embedding.mode local local 本地 ONNX,remote 远端嵌入
lifecycle.maxPerTier 2000 单层容量上限

完整列表见 GitHub README。

典型用法与排错

  1. 装完无面板:看 设置 → 记忆 → 诊断 侧车状态;首次需装 Python 依赖,可等约一分钟或重启 DSH。
  2. 写了但召不回:尝试调低 recall.minScore;召回需一轮正常完成,否则写入策略也会跳过。
  3. 长期无新记忆:晋升按单会话攒门槛,多会话时可能各自未满;可对 AI 说「记住这件事」,或依赖个人层主动写入。
  4. 删除某条:面板中永久遗忘;会记录内容哈希,晋升时不会写回。
  5. 凭证:进入沉淀队列前过滤,不写入记忆;召回内容标注为背景资料。

数据位于 $DSH_HOME/integrations/hy-memory/(SQLite、向量库、日志、私有 Python 环境)。除你配置的模型端点外,插件不向外发送数据。诊断区「清除全部数据」需输入 ERASE 确认;卸载插件不删数据,重装可恢复。

适用场景与注意

适合长期在 DSH 内迭代同一仓库、希望跨会话保留约定与偏好、又不想手工维护大块 AGENTS.md 的开发者。若只需单次问答、无工作区概念,会话层收益有限,仍可只用项目/个人层。

注意:插件依赖 sidecar 与可选本地嵌入;低配机器首次启动会有 venv 与依赖准备开销。模式 lite 可减轻模型调用,但提炼能力弱于 pro。

结尾

经过上面的步骤,DSH 可在新会话第一轮就带上与你、与当前项目相关的背景,而不必在提示里重复偏好与约定。详情与 Issue 见仓库:

  • 目录页:https://www.skillhub.cn/plugins/Echo-Smith/dsh-hy-memory
  • GitHub:https://github.com/Echo-Smith/dsh-hy-memory
羽毛球分组比赛记分
小程序二维码

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

小夜