dsh-memory
已验证@domencai/dsh-memory · v0.1.1 · MIT
Shared cross-agent memory for DeepSeek Harness: six model tools backed by the portable @domencai/agent-memory CLI.
安装
dsh plugin add @domencai/dsh-memory 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
发布到 npm 但没有公开仓库。安装前请检查包内容。
标签
作者
说明文档
dsh-memory
让 DeepSeek Harness(DSH)读写与 Claude Code、Codex、Grok 相同的长期记忆、决策 log 和项目约定。
插件提供六个模型工具,并把每次调用交给 @domencai/agent-memory CLI。它不维护第二份存储实现,因此不同 agent 看到的是同一批 Markdown、同一套写作规则和同一条 Git 恢复链。
你会得到什么
- 跨 agent 共享:DSH 读写
~/.agents/memory,无需单独维护一份插件数据。 - 自动匹配当前项目:插件从 DSH 会话取得工作目录,并映射到对应项目槽。
- 按需检索,不灌满上下文:默认只注入规则和文件存在性清单;正文由模型需要时再读。
- 安全写入:追加、整文件替换、revision 冲突和隔离提交全部复用 memory-core。
- 决策可追溯:除了“不要再踩什么坑”,还可以回答“当初为什么这样改”。
安装
前置要求:Node.js >= 20、Git,以及可用的 DSH profile。
1. 先安装共享 CLI
npx @domencai/agent-memory install
node ~/.agents/agent-memory/verify.mjs
2. 再安装 DSH 插件
dsh plugin --profile <name> add @domencai/dsh-memory
安装后重新启动对应 profile 的 DSH host。顺序不能反过来:插件不自带存储实现,CLI 缺失时会明确报错,而不会降级成直接写文件。
第一次使用
正常对话即可。规则注入会告诉 DSH agent 何时搜索、何时记录;你也可以明确发起:
先搜一下这个项目关于发布和鉴权的记忆,再开始处理。
记一下:这个目录不是 Git 仓库时,项目槽使用目录名。
这里当初为什么把安装产物复制到 ~/.agents,而不是链接到 checkout?
插件会逐次从当前会话取得 cwd 并计算 slug。模型不需要填写路径参数,也不会误用 DSH host 自己的启动目录。
六个工具
| 工具 | 用途 |
|---|---|
memory_read |
读取一个记忆文件;省略 path 时读取当前项目槽,并返回 save 所需 revision |
memory_search |
用多个独立关键词按完整条目检索;关键词之间是 OR,默认不搜索 README |
memory_capture |
追加一条“前提 + 指导 + 原因”的新教训并单独提交 |
memory_save |
整理、合并或删除失效条目;用 revision 防止并发覆盖 |
memory_log_write |
追加一条包含“放弃了什么”的决策记录 |
memory_log_search |
按文件查找“当初为什么这样改”;默认只搜索当前项目 |
为了控制上下文和副作用,模型工具表刻意不提供:
memory sync:这是唯一会访问远端的命令,只能由用户在终端显式执行。memory handoff:交接属于用户明确发起的 skill 流程,不是普通模型工具。- 调用方可调的
limit:插件锁定检索预算,人工 CLI 仍保留该参数。
工作方式与安全边界
插件只负责四件事:注册工具、补齐会话 pwd / slug、调用 CLI、解析带版本的 JSON 结果。
- CLI 是唯一写入器:插件不直接读写记忆文件,也不复制校验或提交逻辑。
- 缺失就失败:找不到
~/.agents/scripts/memory.mjs时返回可行动的安装错误,不静默兜底。 - 不猜工作目录:取不到
exec.agent.session.header.cwd就报错,绝不回退process.cwd()。 - 校验契约版本:CLI 的
schemaVersion不匹配时明确失败,不按旧格式猜测。 - 不注入记忆正文:常驻提示只包含规则和文件路径;具体条目按需读取。
- 规则只有一个来源:提示正文由
memory-core/templates/rules.md在构建期生成,避免插件与 skills 各写一版。
常见问题
工具提示 CLI 未安装
先运行:
npx @domencai/agent-memory@latest install
node ~/.agents/agent-memory/verify.mjs
如果安装器报告目标被其他内容占用,先检查报告的路径;只有确认可以替换时才使用 --force。
搜索结果为空或不相关
使用 3–6 个短而独立的锚点,例如“install、symlink、npx”,不要把整句问题当成一个 query。多个 query 会独立匹配并按覆盖度排序。
记忆落到了意外的项目槽
先检查当前 DSH 会话的工作目录。Git 仓库使用顶层目录名;非 Git 目录使用当前工作目录名。插件不会用 host 进程目录兜底。
如何卸载插件
dsh plugin --profile <name> remove @domencai/dsh-memory
这不会卸载 @domencai/agent-memory,因为 Claude Code、Codex 或 Grok 可能仍在使用它。若确实要移除 core,运行 npx @domencai/agent-memory@latest uninstall;记忆库本身仍会保留。
开发
插件是 host-only,没有 client UI。
src/index.ts 注册六个工具、规则节和存在性清单
src/host/cli.ts CLI 调用、退出码、schemaVersion 与 slug
src/host/tools.ts 工具 schema 与参数映射
src/host/prompt.ts 规则节和存在性清单
src/host/rule-section.ts 构建生成,不能手改
scripts/gen-rule-section.mjs 从 memory-core 模板生成规则节
cordis.patch.yml DSH bundle patch
pnpm install
pnpm typecheck
pnpm build
修改注入规则时只改 memory-core/templates/rules.md;pnpm build 会重新生成插件规则节,pnpm typecheck 会检查两边是否同步。
设计文档
docs/shared-writer.md— 共享写入器与插件边界docs/module-boundaries.md— 数据模型、CLI 模块和依赖方向docs/acceptance.md— CLI 的并发、路径和提交隔离验收
以上设计文档位于源码仓库;插件 npm 包只携带编译产物、bundle patch、README 和 LICENSE。