前言¶
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.jsondsh.engines) - Node:
>=22.5.0 - 本机已安装并可执行
ai-memoryCLI;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 独立工作¶
- 按 ai-memory 上游 安装并运行服务。
- 参照本仓库
docs/hooks-dsh.json,在 profile 的cordis.patch.yml中增加 hook 接入(README 说明通常为指向@deepseek-ai/dsh-hooks-claude-code的insert:行,具体以模板为准)。 - 在项目目录验证采集是否正常:
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