← 返回列表
✓ 可直接安装
面向 DeepSeek Harness 的有界、分层、需审批、可审计的跨会话记忆。
自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node ^22.19.0 || >=24.0.0);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/19 · 已提供中文文档
为 DeepSeek Harness 提供有界、分层、需审批、可审计的跨会话记忆(能力接缝:ctx.memory + SQLite 提供程序 + memory 工具 + 冻结快照注入)
综合分
57.4
GitHub 分
57.4
用户评分
—
★ Stars
103
周下载量
776
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-mementonpm 包 dsh-memento 已校验归属本仓库,走 npm 安装最省事
🟢实装验证通过· 2026/9/18
由 dsh-plugin-verify(GitHub Actions)在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-memento @ 0.5.12
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/17 08:24:44
⚠ 该插件运行需访问外部网络 / 远程 API,部署在国内无外网环境时可能无法正常使用。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-attachment@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-session@deepseek-ai/dsh-settings@deepseek-ai/dsh-tools@deepseek-ai/schemastery用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-memento
- 1024 商店渠道:先执行一次 npm i -g dsh1024,然后执行 dsh1024 plugin --profile web add dsh-memento(计入 deepseek1024.com 安装排名)。
Gitee
面向 DeepSeek Harness 的有界、分层、需审批、可审计的跨会话记忆。
一个带类型的 ctx.memory 接缝,一道任何模型路径都无法绕过的写入审批门,以及一条你可以重建的审计轨迹——由审批对加上插件自身的审计表重建,并明确说出会话日志的缺口。
License
DSH plugin
dsh-doctor
Node
CI
Version
npm version
npm downloads
English · 简体中文 · Español · Português · हिन्दी
兼容性
| 层面 | 状态 |
|---|---|
| Harness | DeepSeek Harness dsh-v0.1.6-alpha.2(2026-09-18 重新核对):仍然没有插件事件注册接口——KNOWN_SESSION_EVENT_TYPES 不包含 memory/,且 Session.append 的第三个参数仅为符合 surface 条件的类型携带 SurfaceIntent,因此审计门保持自适应并像以前一样跳过(现在它每个进程提示一次,并在 /memory audit 中说明)。对等版本范围保留 0.1.2-rc.1、0.1.5-alpha.1 和 0.1.6-0 系列。类型证据来自三个方面:本地检出目录的构建类型、node_modules 中锁定的已发布版本,以及 DOM lib 下的浏览器部分。 |
| Node | ^22.19.0 || >=24.0.0 |
| 平台 | Windows / macOS / Linux(纯宿主;无原生代码,无网络) |
| 模型 | 任意 |
你将获得
dsh-memento 是一个能力接缝,而不是又一个记忆仓库:一个带类型的 ctx.memory 服务、一个本地 SQLite 提供程序(node:sqlite、WAL、0600,位于 $DSH_HOME/dsh-memento/memory.db),以及它的消费者——memory 工具和一个注入系统提示的冻结快照。
- 审批门禁无法被绕过。 每条写入路径(add / replace / remove / seed)都被强制经过服务内部的审批瀑布流程,而不是在工具层。writePolicy: ask | auto | off 是模型不可见的配置;replace / remove / consolidate 会在审批载荷中携带其所更改条目的完整文本,而被拒绝的写入仍会留下一条 -denied 审计记录。
- 模型可见 ⟺ 已记录。 注入的快照会原样落入 system/message;每次写入都可以从 approval/asked + approval/decided + 插件自身的审计表重建。
- 有界且诚实。 每条轨道/每层都有硬性字符预算(默认 user 2000 / agent 4000)。存储写满时会以结构化错误(用量 + 限制)失败——绝不截断,绝不自动压缩。
- 审计缺口是可见的。 /memory audit 会列出插件审计表,并在会话日志一侧未写入时追加一行:此 harness 不知道 memory/ 会话事件类型,而追加未知类型会导致会话无法加载,因此写入通过 approval/asked + approval/decided 以及插件的表来审计。该门禁是自适应的——一旦宿主知道这些类型,这一行就会自行消失。
两条轨道 × 两个层 × 每 agent 键:一条 user 轨道(关于用户的事实)和一条 agent 轨道(环境事实与约定),每条都拆分为 user-global 和 workspace 层,并按 agentPreset 隔离。快照在首次提示组装时按会话冻结一次,会话中途绝不改变。
快速开始
1. install the bundle into your profile
dsh plugin --profile web add "github:PerryLink/dsh-memento#main"
or from npm (published releases)
dsh plugin --profile web add dsh-memento
2. restart and verify the row
dsh --profile web --dump-config | grep -A3 'id: memento'
安装与卸载
- git 渠道(最新 main):dsh plugin --profile web add git+https://github.com/PerryLink/dsh-memento.git。
- npm 渠道(已发布版本):dsh plugin --profile web add dsh-memento。
- tarball 渠道:在本仓库中执行 npm pack,然后执行 dsh plugin --profile web add ./dsh-memento-.tgz。
- 卸载:dsh plugin --profile web remove dsh-memento(记忆数据库和会话日志会保留)。
配置
所有可调项都是 Schemastery Config 字段(可从 cordis.yml 更改)。无效值会在加载时大声失败。在 memento 行下覆盖。
设置面板。 当 DSH 设置服务挂载后,下面的每个字段(enabled 除外)都可以从插件在 DSH 设置侧边栏中的 dsh-memento 条目(一个顶层分区,类似 General 或 Plugins)进行编辑;编辑会写入设置用户层(settings.yaml),无需手动编辑文件。几乎所有内容都会实时生效(写入策略、语言、预算、限制、提案、面板、通过存储重新打开的 dbPath / auditRetentionDays、通过检索器替换的 retrieval.vector)——只有 snapshotOrder 需要重新加载 DSH。没有设置服务时,一切都会回退到组合后的 cordis 配置,与之前完全一致。浮动面板按钮可以从同一页面隐藏(panel.enabled)。
| 键 | 默认值 | 含义 |
|---|---|---|
| enabled | true | 总开关;false 会移除服务、工具、快照、命令、面板和应答器(无法从设置页面编辑——被禁用的插件没有设置条目) |
| panel.enabled | true | 显示 Web 面板的浮动按钮;从设置页面保存 false 会立即隐藏 🧠 条目,无需重新加载(设置页面本身仍可访问) |
| dbPath | '' → $DSH_HOME/dsh-memento/memory.db | 绝对路径,或相对于 $DSH_HOME(在 Windows 上回退到 ~/.dsh) |
| budgets.user.userGlobal | 2000 | 用户轨道 user-global 层的硬字符预算 |
| budgets.user.workspace | 2000 | 用户轨道 workspace 层的硬字符预算 |
| budgets.agent.userGlobal | 4000 | 代理轨道 user-global 层的硬字符预算 |
| budgets.agent.workspace | 4000 | 代理轨道 workspace 层的硬字符预算 |
| writePolicy | 'ask' | 默认写入策略:ask / auto / off(模型不可见) |
| writePolicies | {} | 按轨道/作用域或按来源的覆盖(例如 user/workspace、source:claude) |
| language | 'en' | 模型可见和命令输出的语言:en / zh |
| snapshotOrder | -50 | 快照分区顺序(在 harness identity 之后,persona 之前) |
| maxEntriesPerQuery | 20 | 默认每次查询结果上限(硬上限为 1000) |
| commandListLimit | 50 | 每次 /memory list / query 渲染的条目数 |
| commandAuditLimit | 10 | 每次 /memory audit 渲染的审计行数 |
| recall.historyLimitDefault | 8 | 默认扫描的 memory_recall 会话数 |
| recall.snippetCap | 5 | 每个会话的 memory_recall 片段数 |
| recall.snippetChars | 300 | memory_recall 片段字符数 |
| recall.windowDays | 30 | memory_recall 的近期时间窗口(天) |
| retrieval.vector | false | 语义召回开关:当嵌入提供程序可用时,true 启用 memory_recall 向量召回(伪哈希嵌入);否则降级为子串匹配 |
| panelEntriesLimit | 200 | Web 面板条目页大小 |
| panelAuditLimit | 20 | Web 面板默认审计行数 |
| auditRetentionDays | 0 | 审计保留期(0 = 永久保留) |
| proposals.enabled | true | 每次成功压缩后自动捕获一条记忆提案 |
| proposals.maxChars | 2000 | 提案字符数上限 |
| proposals.maxPending | 8 | 待处理提案数量上限 |
工具与界面
| 界面 | 类型 | 说明 |
|---|---|---|
| memory | 工具 | 支持 add/replace/remove/consolidate/query,并附带 Save/Skip 指引;写入操作需经过审批门 |
| memory_recall | 工具 | 有界记忆匹配,外加近期会话历史匹配 |
| /memory | 命令 | list · query · add · remove · consolidate · proposals · budgets · audit · export · import · adapters |
| Web 面板 | 客户端抽屉 | 只读:浏览条目、搜索、预算条、审计尾部;浮动入口按钮可隐藏(panel.enabled) |
| 设置区 | DSH 设置侧边栏 → dsh-memento | 无需触碰文件即可编辑每个配置字段(enabled 除外);页面上标注了哪些是实时生效、哪些需要重新加载 |
MCP 服务器
dsh-memento 附带一个只读的 stdio MCP 服务器(dsh-memento-mcp),让外部 MCP 客户端(Claude、Codex 等)无需 harness 即可搜索记忆存储。它通过换行分隔的 JSON(NDJSON)进行 JSON-RPC 2.0 通信——每行一个 JSON 对象,不使用 Content-Length 分帧。
只读。 数据库以 node:sqlite 的 readOnly: true 打开(不执行迁移、不写入 WAL、不增加召回计数);数据库缺失时返回空结果而非崩溃。
| 工具 | 用途 |
|---|---|
| memory_search | {query, limit?} → 排序后的条目(通过检索 Provider 接缝进行不区分大小写的子串匹配) |
| memory_stats | {} → {total, namespaces} 条目计数 + 按轨道/作用域的概览 |
直接运行:
node bin/mcp-server.mjs
or, after npm install: npx dsh-memento-mcp
数据库路径为 $DSH_MEMENTO_DB_PATH(绝对路径,或相对于 $DSH_HOME);默认为 $DSH_HOME/dsh-memento/memory.db。
Claude Desktop(claude_desktop_config.json)示例:
{
"mcpServers": {
"dsh-memento": {
"command": "npx",
"args": ["-y", "dsh-memento-mcp"],
"env": {
"DSH_MEMENTO_DB_PATH": "/home/you/.dsh/dsh-memento/memory.db"
}
}
}
}
该服务器为只读:无网络、无写入、无审批门——仅提供搜索和统计。
有何不同
| 插件 | 它是什么 | dsh-memento 的不同之处 |
|---|---|---|
| dsh-memory-evolve | 记忆仓库 / 演化循环 | 类型化服务接缝、审批门和会话日志审计;没有仓库式的野心 |
| dsh-mnemon | 记忆存储助手 | 协议 + 门 + 审计,而非另一个存储 |
| dsh-kb-sieve | 知识库筛选 | 不做检索工程:小语料子串搜索,通过 session_search/sessionQuery 实现跨会话召回 |
| dsh-tdai-memory | 任务驱动的记忆工具 | 预算按轨道×层划分,并在服务中强制执行,而非尽力而为 |
| claude-bridge | Claude Code 桥接 | DSH 原生;未来的 seed(source:'claude') 路径可让桥接向同一存储馈送数据 |
| dsh-external/Recall | 外部代理记忆 | 本地优先、零网络,依托 DSH 自身的审批接缝 |
| 官方 MCP 记忆示例 | DSH 所声明的“记忆 = 外部 MCP”立场 | 原生一方的补充:目标相同,无需外部服务器;两者共存 |
名称是 dsh-memento(已发布在 npm 和 GitHub 上)。不是 dsh-recall(易与 dsh-external/Recall 混淆),也不是已删除的旧名称 dsh-memory。
dsh-memory-protocol v1
dsh-memento 是 DSH 记忆协议的社区预演——一个官方 ctx.memory 接缝的候选形态。该协议将此插件的接缝规范化为跨插件契约:
- 条目规范 — 两条轨道 × 两个层级 × 每代理键,外加短 tags(≤16 × ≤32 字符)以及每次 replace 都会递增的每条目 version。
- 写入语义 — 幂等的唯一子串条件写入;所见即所批的载荷(replace / remove / consolidate 携带其更改的完整文本)。
- 审计契约 — 每次写入均可从 approval/asked + approval/decided + 提供方账本重建。
- 预算模型 — BUDGET_EXCEEDED / AMBIGUOUS_MATCH 语义。
- 模式版本控制 — 带显式版本检查的迁移规则。
- 规范 — docs/protocol-v1.md(中文:protocol-v1.zh.md);规范性 JSON Schema 位于 docs/schemas/dsh-memory-protocol-v1.schema.json。
适配器注册表 — ctx.memoryAdapters(register / list / adapt / export)让第三方记忆插件通过注册纯数据转换器来使用该协议(可逆的 register();导入依托经审批门控的 seed,导出为只读)。入门指南:docs/adapters-guide.md(中文:adapters-guide.zh.md)。
| 内置适配器 | 外部格式 | 备注 |
|---|---|---|
| mem0 | mem0 事实集合({facts: [{memory, metadata?}]}) | metadata.category / metadata.tags 变为标签;原始 messages 数组会被拒绝——适配器只做转换,绝不提取 |
| hermes-memory-md | Hermes memory.md(## section + 项目符号) | 章节名变为标签;非项目符号的散文会显式报错 |
| claude-code-memory-md | CLAUDE.md 风格 Markdown(标题、项目符号、段落) | 项目符号和段落变为条目;章节名变为标签 |
一致性测试套件 — test/protocol-conformance/:一个可分发的用例集,任何声称兼容的提供方都可运行(node test/protocol-conformance/run.mjs --provider ./your-factory.mjs);本仓库的 CI 将其作为黄金参考对自身提供方运行(npm run test:conformance)。
- 上游提案 — docs/upstream-proposal.md(中文:upstream-proposal.zh.md):为什么官方 ctx.memory 接缝应采用该协议、差异所在,以及迁移路径。
权限与数据
- 权限:在其 workshop manifest 中声明 harness:tool、filesystem:read、filesystem:write,以及 network:none / subprocess:none / shell:none / python:none / credentials:none。写入审批走官方审批接缝。
- 数据:本地 SQLite 数据库(0600),零网络,零凭据。
- 会话日志:审计完整性来自审批对(approval/asked + approval/decided)加上插件自身的审计表;该缺口在会话日志一侧的情况在 /memory audit 中声明,一旦宿主注册 memory/ 即消失。
安全边界
- 仅使用公共服务。 消费 tools、systemPrompt 和审批接缝;不修改 engine / agent-loop / apiproxy / 官方 UI。
- 零网络,零凭据。 本地数据库,POSIX 文件模式 0600。
- 大声失败。 数据库损坏、schema 较新或配置无效时在加载时失败;预算耗尽和模糊子串匹配以结构化错误失败。
- 一个进程,一个存储。 多个会话共享同一 SQLite 存储;两个进程共享一个 $DSH_HOME 会写入同一文件(在 SQLite 锁下采用最后写入者胜出)。
已知限制
- 会话事件已声明,但尚未发出(rc.2)。 memory/added|updated|removed|recalled|snapshot 已通过合并声明,但 rc.2 没有针对仓库外事件类型的注册接口;一旦某个 harness 构建注册了它们,发出功能即开启。
- ask 策略需要应答者。 在未组合任何 UI/ACP 应答者的情况下,写入会故障关闭。
- 无 FTS5 索引。 子串搜索基于大小写不敏感的 instr 运行(对 CJK 正确)。
我们从终端记忆中学到了什么
dsh-memento 不是 Claude Code、Codex 或 Hermes 的移植——但它的设计刻意吸收了它们各自做对的部分,并拒绝了那些有害的部分:
| 终端记忆 | 做对的地方 | dsh-memento 采纳的内容 |
|---|---|---|
| Claude Code — CLAUDE.md | 分层纯文本记忆文件(用户级 → 项目级),人类可读且可编辑,自动合并到每个会话 | 纯文本条目;user-global / workspace 层按会话合并;一个可浏览、export 和审计的存储——透明性作为一项特性 |
| Codex — AGENTS.md | 按目录作用域自动发现并注入的指令,零模型摩擦 | 以会话 cwd 为键的 workspace 层(Windows 大小写不敏感);会话启动时自动注入冻结快照 |
| Hermes — memory.md | 主动记忆保存,以及一条安全教训:仅在工具层强制执行的门禁,可被后置的工具注入绕过 | 带有 Save/Skip 指引的 memory 工具 + 需审批的自动捕获提案;门禁位于 ctx.memory 的写入方法内部,而非工具层 |
来源:Claude Code memory · Codex AGENTS.md · Hermes memory · Hermes #48181。
以及那些被刻意拒绝的部分:向模型私有状态进行隐藏式自动摘要(此处的压缩摘要会成为待处理提案,等待人工批准/驳回)、仓库/向量存储方面的野心,以及任何缺少人类可见审批或审计追踪的写入。同样被采纳的还有:Hermes 文档中记载的注意事项,即两个进程共享同一个主目录时会写入同一个记忆文件——参见安全边界。
Development
npm install # node ^22.19 || >=24
npm test # node --test: 187 tests
npm run lint # oxlint
npm run test:conformance # dsh-memory-protocol v1 conformance suite
npm run typecheck # host face vs a local D:\deepseek-harness checkout (prints "not verifiable" and exits 0 without one)
npm run typecheck:ci # host face vs the pinned published line in node_modules
npm run check:client # browser half (DOM lib) type gate
npm run check:coverage # line-coverage gate
npm run check:readmes # five-language README consistency gate
npm run verify:self-contained # reject out-of-repo dependency specs
npm run verify:artifacts # artifact presence + syntax + import
lib/ 零 DSH 依赖(仅使用 node: 内置模块);DSH 导入仅存在于 index.mjs 中。
Topics
dsh、dsh-plugin、deepseek-harness、memory、agent-memory、approval、audit、sqlite、cordis、llm
Contributors
- @Niuniu-Sir — issue #1 中的启动崩溃报告,促成了 0.3.1 中发布的 ~/.dsh 回退方案。
PerryLink DSH Plugin Family
本项目是由 PerryLink 维护的 40 个 DeepSeek Harness 插件之一。如果这个项目对你有帮助,其他的很可能也会:
| Plugin | One-liner |
|---|---|
| dsh-auto-review | 审批链上的第二模型自动审查,默认故障关闭 | |
| dsh-background-agents | 持久化后台子代理,带 Web UI 侧边栏、消息传递与中断 | |
| dsh-budget | DeepSeek Harness 的成本治理:预算、碳排与延迟集于一个面板。 | |
| dsh-checkpoint-rewind | Claude Code /rewind 等价功能:快照、会话分叉、一次性恢复 | |
| dsh-claude-move | 将 Claude Code 会话、记忆、技能和 CLAUDE.md 迁移到 DSH | |
| dsh-click | 面向 DeepSeek Harness 的跨平台原生桌面控制——优先支持 Windows。 | |
| dsh-composer-history | Web 编辑器的终端风格输入历史:方向键、Ctrl+R 搜索 | |
| dsh-data-quality | 数据集质量检查与引用交叉核对(此处消费的可选数值桥接) | |
| dsh-defend | 面向 DeepSeek Harness 的提示注入、越狱和密钥泄露防御。 | |
| dsh-doublecheck | 工程纪律守卫:需求拷问、测试门禁、对抗性审查 | |
| dsh-draw | 面向 DeepSeek Harness 的统一静态图像生成路由。 | |
| dsh-fast | 面向 DeepSeek Harness 的只读性能诊断。 | |
| dsh-fund-research | 面向中国公募基金的确定性研究报告 | |
| dsh-github | 面向 DSH 的 GitHub PR/issue 集成,每次写入均需审批 | |
| dsh-industry-research | 行业研究编排,通过本插件的 ctx.researchReport.assemble 封存其交付物 | |
| dsh-library | 面向 DeepSeek Harness 的本地文档知识库。 | |
| dsh-local-ai | 面向 DeepSeek Harness 的本地模型(Ollama)集成。 | |
| dsh-lsp-actions | 基于语言服务器的 LSP 诊断、格式化、补全、代码操作和重命名 | |
| dsh-mask | PII 脱敏中间件:在模型边界匿名化,在展示层还原 | |
| dsh-mcp-panel | 只读 MCP 运行时面板:/mcp 命令 + 设置选项卡,含状态、工具和错误 | |
| dsh-observe | 面向 DeepSeek Harness 的 OpenTelemetry 和 Langfuse 可观测性导出器。 | |
| dsh-output-styles | Claude Code outputStyles 等价的运行时样式切换 | |
| dsh-permission-rules | Claude Code 风格的声明式允许/拒绝/询问权限规则,带审计 | |
| dsh-personal-directive | 带顶栏开关的个人指令注入器(框架版) |
| dsh-plugin-guide | 作为按需智能体技能提供的插件开发知识库 | |
| dsh-plugin-doctor | 面向 DSH 插件的零依赖静态 + 沙箱冒烟检测器 | |
| dsh-reach | 多渠道审批/提问桥接:微信/Telegram/飞书,会话控制台 |
| dsh-research-report | 可验证的研究报告引擎:内容寻址的证据账本与密封版本 | |
| dsh-score | 面向 DeepSeek Harness 插件的多维度质量评分。 | |
| dsh-session-pin | 在 Web 侧边栏中固定会话,并保持持久排序 | |
| dsh-session-sync | 面向 DeepSeek Harness 的跨设备会话同步——你的会话存储的专用 git 镜像。 | |
| dsh-skill-pack-security | 安全审计技能包:密钥扫描、依赖与供应链审查 | |
| dsh-talk | 面向 DeepSeek Harness 的语音优先会话循环:对它说话,听它回答。 | |
| dsh-test-drive | 面向 DeepSeek Harness 插件的隔离式安装与冒烟测试试驾。 | |
| dsh-ticktick | TickTick/滴答清单任务桥接:会话头部面板 + 11 个工具 | |
| dsh-translate | 面向 DeepSeek Harness 的厂商参数转换与确定性 JSON 修复。 | |
| dsh-wechat | 微信 ↔ DSH 桥接(腾讯 iLink 机器人):文本/图片/文件/语音,聊天内审批 | |
| dsh-autotier | 自动强/廉价模型层级路由,带确定性风险防护和 /tier 命令 | |
| dsh-catalog | PerryLink 系列的 DSH 桌面市场标准目录源 | |
| dsh-cert-mcp | 暴露认证注册表的只读 MCP 服务器:等级、快照与五维证据 | |
| dsh-kit | 一键安装核心系列插件的入门包 | |
| dsh-plugin-certification | 社区认证注册表,带可复现检查的等级与徽章 | |
| dsh-plugin-kit | 面向 PerryLink DSH 插件的共享零运行时依赖工具包 | |
| dsh-plugin-portal | 零依赖静态门户,将整个插件系列渲染为单个页面 | |
| dsh-plugin-upgrade-015 | 合并了 0.1.3-alpha.1 → 0.1.5-rc.1 升级通道卡片,外加一个零依赖接缝扫描器 | |
| dsh-team-rooms | 跨会话团队房间:共享消息总线、任务板和时扫码进群