dsh-memory
Đã xác minh@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.
Cài đặt
dsh plugin add @domencai/dsh-memory Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.
Mã nguồn
Phát hành lên npm mà không có repository công khai. Hãy kiểm tra nội dung package trước khi cài.
Thẻ
Tác giả
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.md;pnpm build 会重新生成插件规则节,pnpm typecheck 会检查两边是否同步。
设计文档
docs/shared-writer.md— 共享写入器与插件边界docs/module-boundaries.md— 数据模型、CLI 模块和依赖方向docs/acceptance.md— CLI 的并发、路径和提交隔离验收
以上设计文档位于源码仓库;插件 npm 包只携带编译产物、bundle patch、README 和 LICENSE。