前言¶
在 DeepSeek Harness(DSH)里跑智能体,上下文窗口总会被对话、工具结果和压缩策略挤占。把偏好、项目决策和教训写进单独的 Markdown 或笔记,模型往往不会在合适的轮次自动带上;完全依赖会话内历史,又会在 compaction 之后丢失「线性表面」看不到的内容。
社区插件 @snow-the/dsh-acp-memory(仓库 snow-The/dsh-acp-memory)面向同一类问题:在本地维护分层记忆,并走 capture → recall → inject 管线,同时可选读取 ACP 图数据库做跨检查点召回。下面介绍它的定位、能力与在 DSH 中的接入方式。
这是什么¶
维护者为 snow-The。npm 包名为 @snow-the/dsh-acp-memory,当前版本 0.1.0,许可证 MIT(见仓库 package.json)。
一句话定位(与目录页、包描述一致):Unified local memory for DeepSeek Harness, backed by ACP graph——核心与 DSH 适配分离(src/core 无 DSH 依赖,src/dsh 为薄适配层),通过 Cordis 补丁注册为插件 dsh-acp-memory。
在 SkillHub 上分类为「记忆」;截至撰写时 GitHub 星标为 0。SkillHub 与 DeepSeek / 幻方无官方从属关系,只是社区插件目录;DSH 本身也强调「一切皆插件」,安装来源以目录页与仓库为准。
核心功能¶
七层记忆模型¶
记忆按层划分(工具与检索均围绕这些 level):
soul | user | project | fact | lesson | topic | rules
另有 episode 层:表示单轮原始记录,可搜索,不会自动注入,也不会被提升为长期层(见 memory_search 工具说明)。
project 层支持子类:overview、structure、decisions、quotes、ops、todo。
本地存储与 ACP 图¶
- 统一记忆库默认路径:
~/.dsh/memory/memory.db(可通过环境变量DSH_HOME改变根目录,状态工具会打印实际db路径)。 - ACP 图依赖:
src/core/acp.ts读取~/.dsh/graph/graph.db。图可用时,acp_recall与memory_status会反映图状态;不可用时会输出状态说明而非静默失败。
capture → recall → inject¶
-
Capture(捕获)
监听session/event:在turn/end时从会话事件自动捕获写入记忆(规则为主;LLM 精炼在默认配置下关闭,可配)。compaction/end时标记「待重注入」。 -
Recall(召回)
memory_search使用关键词、BM25 与时间衰减打分;acp_recall在 ACP 图与七层记忆间做跨检查点检索。 -
Inject(注入)
在agent/pre-step中:首轮用户消息前注入长期记忆与导引;之后每轮按用户文本做 top 命中注入;compaction 结束后执行重注入。注入消息使用 DSH V4 要求的source.kind: 'plugin:dsh-acp-memory'形态。
注册的工具¶
插件 inject 面为 tools,向 DSH 注册包括但不限于:
| 工具名 | 作用概要 |
|---|---|
memory_remember |
写入七层记忆,支持去重、关键词合并 |
memory_invalidate |
退役条目(软失效),可选 superseded_by |
memory_search |
分层/项目/状态/时间过滤检索 |
memory_read / memory_update |
按 id 读、改 |
memory_project |
按项目聚合浏览 |
memory_find_similar |
相似条目,便于去重或冲突检查 |
memory_status |
各层计数与 ACP 图可用性 |
acp_recall |
ACP 图 + 本地记忆联合召回 |
仓库内测试脚本覆盖 capture、FTS、inject 等模块(package.json 的 test / fuzz),说明上述路径在维护者侧有自动化校验;这不等同于你在本机安装后的端到端验证。
安装与启用¶
重要: 当前抓取到的 SkillHub 目录页与 GitHub 仓库根目录均未提供可引用的 README 或固定 CLI 安装命令;请勿凭插件名自行拼接 dsh plugin add github:...。安装前请打开目录页,按站点当时的「可安装」指引操作,并在 GitHub 核对 package.json、cordis.patch.yml 与源码。
已知与 DSH 集成相关的事实如下。
Cordis 补丁(cordis.patch.yml)会向配置插入插件条目:
- insert:
- id: dsh-acp-memory
name: "@snow-the/dsh-acp-memory"
版本与 peer 要求(来自提供的 package.json):
"peerDependencies": {
"@deepseek-ai/dsh": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-llm": ">=0.2.0-rc.1",
"@deepseek-ai/dsh-tools": ">=0.2.0-rc.1"
},
"engines": {
"dsh": ">=0.2.1-rc.2 <0.3.0-0"
},
"dsh": {
"compatibility": {
"dshReleases": ["0.2.0-rc.1", "0.2.0-rc.2", "0.2.1-rc.2"],
"verifiedAgainst": "0.2.1-rc.2"
}
}
说明:dsh.compatibility 字段供人与 CI 阅读;宿主是否禁用插件以 peerDependencies 与运行时 @deepseek-ai/dsh-app-boot 版本为准(详见仓库 docs/compatibility.md)。该文档在生成时曾针对较早宿主版本记录 PASS,不保证在你当前 DSH 版本上功能完整可用。
安装插件后,需保证 DSH 配置已应用上述 Cordis patch,并重启或按你使用的 profile 流程加载插件。
典型用法¶
仓库暂无 README 示例;下列用法对应工具在源码中的参数约定,可在智能体具备 memory_* / acp_recall 工具时由模型调用,或在支持工具调用的会话中等价发起。
写入一条项目决策(fact 层,带项目名):
智能体调用 memory_remember,例如:
content:一句不超过 60 字的结论(fact/lesson 的约定)level:factproject:你的项目标识keywords:可选,省略时会自动抽取
检索与跨会话对照:
- 当前会话内查本地库:
memory_search,query填中文或英文关键词,可按level、project、days过滤。 - 用户提到「上次会话里的决定」时:
acp_recall,query填主题;默认includeLocal: true会同时搜七层记忆。
查看存储概况:
调用 memory_status(无参数),确认 memory.db 路径、各层条数及 acp graph 是否可用。
压缩之后:
无需手工操作;compaction/end 会触发重注入逻辑,下一轮 agent/pre-step 尝试把仍相关的记忆塞回上下文(具体文本由 buildReinjection 生成)。
适用场景与注意¶
适合谁
- 长期在 DSH 同一 profile 下做项目开发,希望偏好、教训、项目结构沉淀到本地库并在每轮自动注入。
- 已使用或计划使用 ACP 图(
~/.dsh/graph/graph.db),需要把「被压缩掉的历史」与结构化记忆一起召回。
注意事项
- 权限与数据落盘:插件以当前 dsh 进程权限运行,会读写
~/.dsh/memory/memory.db及可能读取~/.dsh/graph/graph.db。安装前请阅读源码与 MIT 许可证,确认可接受本地明文记忆存储。 - 无官方安装命令摘录:正文未编造 CLI;以 SkillHub 目录页 与 GitHub 为准。
- 兼容性:
engines.dsh要求>=0.2.1-rc.2且<0.3.0-0;升级 DSH 主版本前需重新核对 peer 与注入消息格式(V4plugin:dsh-acp-memory)。 - 捕获依赖会话事件:若
turn/end时读不到可解析的 session 事件,自动捕获会跳过并在日志中告警(见index.ts中注释)。
结尾¶
dsh-acp-memory 把七层本地记忆、ACP 图召回和 DSH 侧的自动捕获/注入收在一个插件里,适合不想只靠单次会话上下文、又希望数据留在本机的 DSH 用户。文档与安装指引以社区目录与仓库为准:
- 目录页:https://www.skillhub.cn/plugins/snow-The/dsh-acp-memory
- 源码:https://github.com/snow-The/dsh-acp-memory