Skip to content

dsh-memory

Verified

@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.

Install

dsh plugin add @domencai/dsh-memory

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Tags

Creators

Readme

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.mdpnpm build 会重新生成插件规则节,pnpm typecheck 会检查两边是否同步。

设计文档

  • docs/shared-writer.md — 共享写入器与插件边界
  • docs/module-boundaries.md — 数据模型、CLI 模块和依赖方向
  • docs/acceptance.md — CLI 的并发、路径和提交隔离验收

以上设计文档位于源码仓库;插件 npm 包只携带编译产物、bundle patch、README 和 LICENSE。