前言¶
在 DeepSeek Harness(DSH)里给 Agent 加「记忆」,常见做法是存进去、搜出来。实际跑起来还会遇到几类麻烦:密码或 Token 被写进本地文件、同一偏好被新旧两条记录静默覆盖、一次召回把整库内容塞进 Prompt,以及事后说不清「记住了什么、为什么被召回」。Memory Guardian 是社区维护者 Ukashi0 发布的记忆类插件,走本地优先路线,在读写之外补上来源、作用域、冲突审核、召回预算和 Web 治理面板。它不依赖 Memmy、ExpMem 或向量库,也不会主动访问网络。
这是什么¶
插件 npm 包名为 dsh-memory-guardian,当前版本 0.1.1-beta.1(Beta),许可证 MIT。一句话定位:面向 DeepSeek Harness 的可治理长期记忆——自带本地存储、三个模型工具,以及 Settings 里的原生 Web 面板,让跨会话记忆可解释、可审核、有上下文上限。
维护者与仓库:Ukashi0/dsh-memory-guardian。社区目录页:SkillHub 插件页。
与普通 Memory 插件的差异¶
资料里归纳了四块额外能力:
- 记忆安全:密码、Token、私钥等在写入磁盘前直接拒绝;邮箱、手机号等个人信息默认进入隔离区,需人工批准。
- 记忆准确性:同一
semantic key出现新旧不同内容时不静默覆盖,建立冲突并进入 Review Queue。 - 上下文预算:单次召回同时限制条数(
maxRecallItems)和正文字符数(maxRecallChars)。 - 可解释性:保留来源、作用域、重要性、召回次数、风险和生命周期;Privacy Ledger 记录治理事件。
v0.1 使用本地词法检索,不含 Embedding,零第三方运行时依赖,结果可审计。
核心功能¶
Web 面板¶
安装后在 DSH 中打开 Settings → Memory Guardian。主要页面:
| 页面 | 用途 |
|---|---|
| Memory Vault | 浏览 Active、Review、Archived,查看来源与作用域,固定或归档 |
| Recall Lab | 输入查询,模拟召回,看重相关性得分与预算消耗 |
| Review Queue | 新旧内容对比,选择替代、并存或拒绝;未批准不会进入召回 |
| Privacy Ledger | 创建、去重、隔离、召回、归档与凭据拦截记录 |
界面跟随 DSH 明暗主题,支持键盘焦点、移动端布局与 prefers-reduced-motion。
模型工具¶
向 Agent 注册三个工具:
| 工具 | 说明 |
|---|---|
memory_remember |
保存长期信息;自动去重、敏感检测与冲突隔离 |
memory_search |
词法相关性检查后按相关性、重要性、新近度与固定状态排序;整组执行受预算约束 |
memory_forget |
归档指定记忆并立即排除出召回,可在面板恢复 |
插件还会注入简短 Memory Policy,说明何时搜索、何时保存及禁止保存的内容。
明确「记住」语句¶
开启 captureExplicitRequests(默认 true)时,用户用固定格式表达保存意图会被识别,例如:
记住:这个项目统一使用 pnpm
请记住发布前必须运行 npm test
remember: I prefer concise answers
普通聊天不会被整段自动抓取。
数据模型与冲突¶
每条记录包含:正文、semantic key、分类、标签、重要性、作用域(global/project/agent/team)、来源(session/event)、状态(active/quarantined/archived)、风险、冲突,以及创建/更新/最后召回时间与可选过期。
同一 key 已对应「VS Code」又保存「Zed」时,新记录进 Review Queue,而不是两条矛盾记忆同时影响模型。审核可选 replace(替代旧 Active)或 coexist(并存,召回时带备选提示)。项目作用域使用规范化后的绝对工作目录(来自 Session 的 cwd 或面板选择),路径文本规范化,不调用 realpath。
安装与启用¶
要求:DeepSeek Harness 0.1.2-rc.1 或更高,Node.js 22 或更高,运行模式以 Web Profile 为主(Host 存储与模型工具也可用于包含所需服务的其他 Profile)。
已发布测试版使用 beta 标签。本机已有 dsh 命令时:
dsh plugin --profile web add dsh-memory-guardian@beta
dsh web
无全局 dsh 时可用 npx:
npx @deepseek-ai/dsh plugin --profile web add dsh-memory-guardian@beta
npx @deepseek-ai/dsh web
本地开发或 tgz 包安装见仓库 README;通过本地目录链接安装时需保留该目录。插件不依赖 Context Sentinel。
Bundle 默认会插入如下配置片段(可在 DSH 配置中调整):
- insert:
- id: memory-guardian
name: dsh-memory-guardian
config:
maxRecords: 10000
maxRecallItems: 8
maxRecallChars: 6000
captureExplicitRequests: true
quarantinePersonalData: true
常用配置项:
| 配置项 | 默认值 | 说明 |
|---|---|---|
storagePath |
~/.dsh/memory-guardian/store.json |
本地 JSON 存储 |
maxRecords |
10000 |
最大记录数(上限 100000) |
maxRecallItems |
8 |
单次召回最大条数(上限 50) |
maxRecallChars |
6000 |
召回正文字符预算(256–100000) |
captureExplicitRequests |
true |
是否识别「记住:……」等明确请求 |
quarantinePersonalData |
true |
邮箱、手机号、身份证号是否需人工批准 |
auditLimit |
500 |
本地治理记录数量(上限 5000) |
升级前建议备份 store.json;不要让多个 DSH 进程同时写同一存储文件。
典型用法¶
会话内:让 Agent 调用 memory_remember / memory_search / memory_forget,或发送上述「记住:」格式消息。
面板内:在 Recall Lab 调试查询与预算;在 Review Queue 处理冲突或个人信息的 approve / reject(需当前记录的 reviewToken,过期会 HTTP 409)。
HTTP API(Web Profile,同源):GET /memory-guardian/api/snapshot、POST .../search、POST .../mutate、GET .../export。冲突批准示例:
{
"action": "approve",
"id": "<待审核记录 ID>",
"resolution": "replace",
"expectedToken": "<当前 reviewToken>"
}
resolution 可为 replace 或 coexist;拒绝新记录用 "action": "reject"。
适用场景与注意¶
适合:需要在单机、离线环境下做长期记忆,且在意凭据误存、个人信息隔离、语义键冲突和 Prompt 膨胀的 DSH 开发者;希望用面板审计召回与治理流水线的团队内 Web Profile 使用。
注意:
- 插件以当前 DSH 进程权限读写本地 JSON;本地存储没有额外加密,不可信环境应配合磁盘加密或受保护目录。
- 检索是词法匹配,不保证语义正确;冲突检测依赖稳定的
semantic key。 - 不要把 DSH Web 无额外访问控制地暴露到不可信网络。
- 安装前请自行查看仓库源码与 MIT 许可证;实际兼容性需按你使用的 DSH 版本验证。SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
Memory Guardian 把「能记住」推进到「能治理」:本地存储、敏感拦截、冲突审核、有界召回和可观测面板在同一插件内完成。若要试用或贡献,可从 SkillHub 目录页 进入说明,或直接查看 GitHub 仓库 的安装命令与 docs/privacy-and-security.md 威胁模型。