dsh-ai-memory:让 DSH 会话写入 ai-memory 共享记忆

前言

ai-memory 把多类编码智能体的会话收敛成可检索的 Markdown wiki,Claude Code、Codex、Cursor、Gemini CLI 等 harness 可以共用同一份记忆。DSH 也能通过 ai-memory 去读别人写下的内容,但会话结束时并不会触发 ai-memory 依赖的「会话结束」路径:原始观测会留在库里,却进不了 wiki,其他 harness 搜不到你在 DSH 里做过什么。

dsh-ai-memory 是维护者 rasyidmmz 在 DSH 侧做的桥接插件,分类属于「记忆」。它不负责新建一套记忆系统,而是在 DSH 会话结束时调用本机 ai-memory 的 finalize-session,把已由 hook 捕获的观测整理成 wiki 页,与 Claude Code、Codex 等写入的同库记忆对齐。

这是什么

一句话:DSH 与 ai-memory 之间的适配层——约 800 行 JavaScript,通过 shell 调用你已安装的 ai-memory 二进制,仓库内不含 ai-memory 源码,也不是其 fork。

需要事先分清边界(README 中强调):

  • 插件不是 ai-memory,不打包、不替代上游项目。
  • 插件不负责采集;只终结(finalize) ai-memory 已经捕获的会话。采集依赖你在 DSH 里单独接好的生命周期 hook。
  • 与 ai-memory 作者无隶属或背书关系,为第三方集成。

核心功能

闭合 DSH 的 consolidation 环路

ai-memory 在会话结束时把原始记录 consolidation 成可读 wiki。DSH 结束路径不发出 disposal 事件,因此历史上常见情况是:DSH 能搜别人写的记忆,DSH 自己的会话却停在 raw observations。安装本插件后,DSH 会话结束会触发 ai-memory finalize-session,产物进入与其他 harness 共用的 wiki。

启动预检与缺失项提示

启动时可做 preflight(默认开启),在 harness 日志里打出是否找到 ai-memory、版本、数据目录与 server 地址。若未安装二进制、或未接 capture hook,日志会点名缺哪一半,并指向安装说明与仓库内 hook 模板路径 docs/hooks-dsh.json。

会话结束与并发

按 package 描述:跳过 subagent、对并发结束的会话排队处理;sweep 默认开启,用于强制重启后遗留未 finalize 的会话(可在配置里关闭)。

随包提供的 DSH hook 模板

ai-memory 自带的 install-hooks 不支持 --agent dsh。你需要手写 DSH 生命周期 hook;仓库提供参考文件 docs/hooks-dsh.json。插件不会自动往 cordis.patch.yml 写入 hook 行,避免与已有 hook 重复采集或干扰桌面端热重载配置。

安装与启用

环境要求

  • DSH:>=0.1.7-rc.2 且 <0.3.0(见 package.json dsh.engines)
  • Node:>=22.5.0
  • 本机已安装并可执行 ai-memory CLI;ai-memory 服务在跑,且 DSH 已按模板接好 capture(见下文前提)

安装命令

从 DSH 插件源安装:

dsh plugin --profile web add dsh-ai-memory

从 GitHub 安装:

dsh plugin --profile web add github:rasyidmmz/dsh-ai-memory

安装后重启 DSH。加载器导入插件不带 cache-buster,新增或修改插件需重启进程才会生效。

在 harness 日志中搜索 ai-memory,应能看到类似:

[dsh-ai-memory] active v1.2.0 -- fast path session/disposed (zero idle cost) + ...
[dsh-ai-memory] preflight: ai-memory v3.1.1 | data_dir=... | server=127.0.0.1:49374

(日志中的插件版本号以你实际安装的包为准;package.json 当前为 1.2.1。)

可选配置

默认无需 config 块。非标准安装路径时可按需写入 profile 的插件配置,例如:

- insert:
    - id: ai-memory
      name: dsh-ai-memory
      config:
        exePath: /usr/local/bin/ai-memory   # 默认:平台标准位置或 PATH 中的 ai-memory
        dataDir: /home/me/.local/share/ai-memory  # 默认:不设置,由 CLI 自行解析
        agentKind: claude-code              # 默认:claude-code(见 README 说明,非随意取值)
        sweep: true                         # 默认:true
        preflight: true                     # 默认:true
        timeoutMs: 120000                   # 默认:120000

dataDir 一般保持未设置,与 hook 使用的解析方式一致。

典型用法

前提:先让 capture 独立工作

  1. 按 ai-memory 上游 安装并运行服务。
  2. 参照本仓库 docs/hooks-dsh.json,在 profile 的 cordis.patch.yml 中增加 hook 接入(README 说明通常为指向 @deepseek-ai/dsh-hooks-claude-code 的 insert: 行,具体以模板为准)。
  3. 在项目目录验证采集是否正常:
ai-memory status          # 会话与观测应持续增长
ai-memory doctor          # 在项目目录内执行

capture 未工作时,本插件没有可 finalize 的会话;应先修 hook,再谈插件。

日常使用

装好插件并重启 DSH 后,正常开闭 DSH 会话即可:结束时插件调用 finalize-session。其他已接 ai-memory 的 harness 可通过既有 MCP/HTTP 检索到对应 wiki 页。若 server 未运行,插件启动时会打明确警告且不做 finalize;这与 capture 失败是不同问题。

适用场景与注意

适合谁: 已在用 ai-memory 做多 harness 统一记忆,且经常在 DSH 里干活、希望 DSH 会话与 Claude Code/Codex/Cursor 等对等写入同一 wiki 的开发者。

不适合谁: 只想在 DSH 里「自带一套记忆」、不愿安装和运维 ai-memory,或不愿手写 DSH hook 的用户——本插件只补 finalize 一环。

安全与权限: 插件以当前 DSH 进程权限运行,会执行本机 ai-memory 命令。安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认 exePath 指向可信二进制。

社区目录: 插件可在 SkillHub 目录页 浏览元信息;该站点为社区插件目录,与 DeepSeek / 幻方无官方从属关系。DSH 生态强调「一切皆插件」,本包是其中一条记忆类集成。

结尾

dsh-ai-memory 的价值不在于新记忆引擎,而是让 DSH 在 ai-memory 生态里从只读消费者变成对等写入方:会话结束触发 consolidation,观测变成可检索 wiki,供其他 harness 接续任务。上游记忆引擎请支持 akitaonrails/ai-memory。

  • 目录页:https://www.skillhub.cn/plugins/rasyidmmz/dsh-ai-memory
  • 源码与文档:https://github.com/rasyidmmz/dsh-ai-memory
羽毛球分组比赛记分
小程序二维码

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

小夜