状态:活跃。 2026-10-12 解冻;旧的「自 2026-10-05 起冻结」描述已过期。
59.8/100
综合分
142
GitHub 星标
1,974
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-mementonpm 源 · dsh-memento 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-memento @ 0.5.28
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 17:40:58
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 11 处,展示前 11 条)
- 发起网络请求index.mjs:293
return await approval.request(request) - 读取本地文件index.mjs:1684
payload = JSON.parse(readFileSync(arg, 'utf8')) - 读取本地文件index.mjs:1818
const rawText = readFileSync(arg, 'utf8') - 发起网络请求client/client.js:166
const response = await fetch('/api/memento/entries?limit=1') - 发起网络请求client/client.js:507
const response = await fetch('/api/memento/entries?limit=200') - 发起网络请求client/client.js:517
void fetch('/api/memento/audit?limit=20') - 发起网络请求client/client.js:521
void fetch('/api/memento/proposals') - 读取本地文件bin/mcp-server.mjs:13
const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')) - 写入本地文件lib/store.mjs:233
mkdirSync(path.dirname(dbPath), { recursive: true }) - 读取本地文件lib/mcp.mjs:43
if (!existsSync(dbPath)) return - 读取本地文件lib/mcp.mjs:54
return existsSync(this.path)
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
⚠ 该插件运行需访问外部网络 / 远程 API,部署在国内无外网环境时可能无法正常使用。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-attachment@deepseek-ai/dsh-brand@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@deepseek-ai/dsh-working-directory@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-user-approval给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
1 张 · 点击查看大图功能亮点
- 分层记忆
- 需审批
- 可审计
为 DeepSeek Harness 提供有边界、分层、需审批、可审计的跨会话记忆(能力接缝:ctx.memory + SQLite 服务商 + memory 工具 + 冻结快照注入)
最近更新
在 GitHub 查看全部 →v0.5.292026-11-01
· [0.5.29] - 2026-10-31
· 变更
· 文档:修正过时的 FROZEN 说明,补上 active/see-also 注记;无代码改动。
v0.5.282026-10-22
· [0.5.28] - 2026-10-22
· 新增
· 悬浮入口可拖动,并记住位置(issue #21)。用 Pointer Events 配合 setPointerCapture 移动 #mem-open;拖动超过 4px 就把 {x,y} 存进 localStorage(dsh.memento.fab.position.v1),并限制在视口内、留 8px 边距,窗口 resize / orientationchange 时重新限制。双击恢复 CSS 默认位置。拖动之后紧跟的那次点击会被吞掉,抑制状态在下一个任务清除,所以之后再点仍能打开抽屉。
· 修复
· 窄屏下入口不再压在发送按钮上。宽度低于 640px 时默认位置改为 bottom: 132px;用户一旦拖动过,就以存储的位置为准。
v0.5.272026-10-18
Release v0.5.27. See CHANGELOG.md in the repository for the full change list.
原文(未汉化)
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-memento
状态:活跃。 2026-10-12 解冻;旧的「自 2026-10-05 起冻结」描述已过期。
另见。 dsh-mnemon 是框架,带 mem0/Honcho 托管服务商,锁定在 0.2.1 线;@openviking/dsh-memory-plugin 是火山引擎示例,未声明 dsh 引擎;dsh-plugin-memory 类型最接近,但没有来源信息。dsh-memento 是本地 SQLite 接缝,带审批门和审计轨迹,不能直接替换托管服务商。
- 1024 商店渠道:先执行一次 npm i -g dsh1024,再执行 dsh1024 plugin --profile web add dsh-memento(计入 deepseek1024.com 安装排名)。
dshfind
为 DeepSeek Harness 提供有边界、分层、带审批门、可审计的跨会话记忆。
一个带类型的 ctx.memory 接缝,一道任何模型路径都绕不过的写入审批门,一条你能重建的审计轨迹 —— 靠审批对加上插件自己的审计表,并明说会话日志的缺口。
展开完整文档(README 剩余 1 节)
dsh-memento
状态:活跃。 2026-10-12 解冻;旧的「自 2026-10-05 起冻结」描述已过期。
另见。 dsh-mnemon 是框架,带 mem0/Honcho 托管服务商,锁定在 0.2.1 线;@openviking/dsh-memory-plugin 是火山引擎示例,未声明 dsh 引擎;dsh-plugin-memory 类型最接近,但没有来源信息。dsh-memento 是本地 SQLite 接缝,带审批门和审计轨迹,不能直接替换托管服务商。
- 1024 商店渠道:先执行一次 npm i -g dsh1024,再执行 dsh1024 plugin --profile web add dsh-memento(计入 deepseek1024.com 安装排名)。
dshfind
为 DeepSeek Harness 提供有边界、分层、带审批门、可审计的跨会话记忆。
一个带类型的 ctx.memory 接缝,一道任何模型路径都绕不过的写入审批门,一条你能重建的审计轨迹 —— 靠审批对加上插件自己的审计表,并明说会话日志的缺口。
dsh-doctor
DSH Market
English · 简体中文 · Español · Português · हिन्दी
dsh plugin --profile <name> add dsh-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-<version>.tgz。
- 卸载:dsh plugin --profile web remove dsh-memento(记忆数据库与会话日志会保留)。
⭐ 如果它帮到了你
这个插件是 DSH 插件家族的一员(95 个,全部 Apache-2.0)。如果你在用,给个 star —— 它不会解锁任何功能,但会让下一个人在搜索里更容易找到它。
English: part of a 95 plugin family for DeepSeek Harness. If it is useful, a star helps the next person find it — nothing is gated behind it.
dsh-memento 是什么?
为 DeepSeek Harness 提供有边界、分层、需审批、可审计的跨会话记忆。
一个带类型的 ctx.memory 接缝,一道任何模型路径都绕不过的写入审批闸门,以及一条你能重建的审计链 —— 从审批对加上插件自己的审计表重建,并明确说出会话日志的缺口。
dsh-memento 的工作流示意图:安装 → 打开面板 → 操作。
工作流概览:安装 → 打开面板 → 操作。下面的示例用的是真实命令面。
dsh-memento 视频演示 —— 打开 MP4 文件
▶ 2 分 23 秒带解说演示 —— 缩略图会打开 MP4 文件;如果页面上播不了,就用那里的 Download raw file(MP4,1.87 MB · 直接下载)。GitHub 会从 README 文件里剥掉 标签,所以这个视频是一个要打开的文件,而不是内嵌在页面里的内容。
兼容性
| 面 | 状态 |
| Harness | DeepSeek Harness dsh-v0.2.1-alpha.2(适配于 2026-10-12;0.2.1-alpha.1 自 2026-10-04 起):0.1.7 系列用实时 Config 表单替换了整个设置注册面(installSettingsSection / SettingsProvider.installSection / SettingsNamespace / SettingsScope),所以两半都遵循新契约——表单的命名空间就是配置档条目 id(memento),可编辑字段是那些 .volatile() 字段,接受的编辑会提交进运行中的插件,而不是重新挂载它。浏览器那一半通过 ctx.configForms.get(entryId) 读取该表单(ctx.settingsScope 服务已移除)。两半都保留了 installSection / settingsScope 分支,对应 peer 范围仍然声明的 0.1.2-rc.1、0.1.5-alpha.1 和 0.1.6-0 系列,而新增的 >=0.1.7-0 <0.2.0 子句正是让目标宿主本身可安装的关键(旧范围按 semver 的预发布规则把它排除了)。仍然没有插件事件注册面——KNOWN_SESSION_EVENT_TYPES 不包含 memory/,Session.append 的第三个参数只对符合 surface 条件的类型携带 SurfaceIntent,所以审计门保持自适应并照旧跳过(每个进程说一次,并在 /memory audit 里说)。类型证据来自三处:本地检出构建出的类型、node_modules 中固定发布的系列,以及 DOM lib 下的浏览器那一半。已对照 0.2.1-alpha.2 重新验证: 本包触及的每个插件面向接缝在两个 tag 之间逐字节一致(packages/settings/settings/src/、packages/client/ui-settings/src/、packages/client/ui-slots/src/、packages/client/modules/src/、packages/interaction/user-approval/、vendor/loader/src/、vendor/schemastery/src/、packages/boot/app-boot/src/config-schema/),会话格式仍是 v4,没有 v4→v5 迁移,KNOWN_SESSION_EVENT_TYPES 只增加了一个第一方类型——所以自适应审计门保持关闭,无需改动代码。变动的是固定的 dev/test 系列(0.2.1-alpha.2,加上它在 pnpm-workspace.yaml 里的 release-age 允许列表条目)和兼容性基线;npm test(201 个用例,包括真实 Loader 组合套件)、typecheck:ci、覆盖率、产物、一致性和五语言门全部通过。alpha.2 确实新增了一个 plugin:<name>/ 命名空间的 appendPluginRecord 写入器,但宿主自己的 packages/core/session/README.md 禁止仓库外调用方使用,且强制的 plugin: 前缀无法表达 memory/,所以本包不采用它。 |
| Node | ^22.19.0 || >=24.0.0 |
| Platforms | Windows / macOS / Linux(纯宿主;无原生代码,无网络) |
| Model | Any |
你将获得
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 和插件表来审计。这个闸门是自适应的——一旦宿主认识这些类型,那行说明会自动消失。
两条轨道 × 两层 × 按智能体分键:user 轨道(关于用户的事实)和 agent 轨道(环境事实与约定),各自再分为 user-global 和 workspace 两层,按 agentPreset 隔离。快照在首次组装提示词时按会话冻结一次,会话中途不再变化。
快速开始
dsh plugin --profile web add github:PerryLink/dsh-memento
1. install the bundle into your profile
dsh plugin --profile web add github:PerryLink/dsh-memento
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'
示例
这些是插件真实的入口;安装一次,然后调用其中一个。
详细示例
命令
~~~sh
memory_stats
输入
~~~json
{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"memory_stats","arguments":{}}}
输出
~~~text
{
"total": 3,
"namespaces": [
{
"track": "agent",
"scope": "user-global",
"count": 1
},
{
"track": "agent",
"scope": "workspace",
"count": 1
},
{
"track": "user",
"scope": "workspace",
"count": 1
}
]
}
摘自 test/mcp.test.mjs:108-118 (fixture seed at 21-27); README.md:160-176*
失败分支
输入
~~~text
{"jsonrpc":"2.0","id":10,"method":"tools/call","params":{"name":"memory_search","arguments":{}}}
输出
~~~text
{"jsonrpc":"2.0","id":10,"result":{"content":[{"type":"text","text":"invalid arguments: query must be a non-empty string"}],"isError":true}}
观察自 plugins/dsh-memento/lib/mcp.mjs:188; plugins/dsh-memento/test/mcp.test.mjs:126-127; reproduced via plugins/dsh-memento/bin/mcp-server.mjs
简要示例
- /memory
配置
所有可调项都是 Schemastery 的 Config 字段(可从 cordis.yml 修改)。值不合法时会在加载阶段直接报错。在 memento 这一行下覆盖。
设置面板。 在 0.1.7 线上,插件自己的 Config 就是它的设置页:表单的命名空间是配置档条目 id(memento —— 本 bundle 该行的 id:),可编辑字段恰好是插件声明为 .volatile() 的那些(下面除 enabled 外的每个键),编辑通过后会合并进配置档的插件行,并提交到运行中的插件 —— 不用改文件,不用重启。几乎所有项都即时生效(写入策略、语言、预算、限制、提案、面板、dbPath / auditRetentionDays 通过重新打开存储生效、retrieval.vector 通过替换检索器生效);插件在加载时注册的内容(snapshotOrder、工具描述)会在重载时重新读取,页面会标出这些字段。数值边界也在 schema 里声明了,所以越界编辑会在写入时被拒绝,不会留下不可用的配置。在更早的线上(0.1.2-rc.1、0.1.5-alpha.1、0.1.6-0),同一张卡片照旧编辑 dsh-memento 设置命名空间;完全没有设置服务时,一切回退到组合后的 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 身份之后、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 时,只要有可用的 embedding 服务商,就启用 memory_recall 向量召回(fake hash embedding);否则降级为子串匹配 |
| 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 <path> · adapters |
| Web 面板 | 客户端抽屉 | 只读:浏览条目、搜索、预算条、审计尾部;浮动入口按钮可以隐藏(panel.enabled) |
| 设置区块 | DSH 设置侧边栏 → dsh-memento | 除 enabled 外,每个配置字段都能在这里改,不用碰文件(命名空间 = 0.1.7 线上的 memento 配置档条目,之前是 dsh-memento 设置命名空间);页面会标注哪些改动即时生效、哪些需要重载 |
MCP 服务器
dsh-memento 自带一个只读的 stdio MCP 服务器(dsh-memento-mcp),外部 MCP 客户端(Claude、Codex 等)不用 harness 也能搜索记忆库。它走 JSON-RPC 2.0,用换行分隔的 JSON(NDJSON)传输——每行一个 JSON 对象,不用 Content-Length 分帧。
只读。 数据库用 node:sqlite 的 readOnly: true 打开(不跑迁移、不写 WAL、不累加召回计数);数据库不存在时返回空结果,不会崩溃。
| 工具 | 用途 |
| memory_search | {query, limit?} → 排序后的条目(大小写不敏感的子串匹配,走检索服务商接缝) |
| memory_stats | {} → {total, namespaces} 条目数 + 按 track/scope 的概览 |
直接运行:
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 | 任务驱动的记忆工具 | 预算按 track×layer 分配,由服务强制执行,不是尽力而为 |
| claude-bridge | Claude Code 桥接 | DSH 原生;未来的 seed(source:'claude') 路径让桥接把数据喂进同一个存储 |
| dsh-external/Recall | 外部智能体记忆 | 本地优先、零网络,走 DSH 自己的审批接缝 |
| 官方 MCP memory 示例 | DSH 主张的「记忆 = 外部 MCP」立场 | 原生第一方的补充:目标相同,不需要外部服务器;两者共存 |
名字是 dsh-memento(已发布到 npm 和 GitHub)。不是 dsh-recall(容易和 dsh-external/Recall 混淆),也不是已删除的旧名 dsh-memory。
dsh-memory-protocol v1
dsh-memento 是 DSH 记忆协议的社区预演 —— 一个候选形态,目标是成为官方 ctx.memory 接缝。该协议把本插件的接缝归一成跨插件契约:
- 条目规范 —— 两条 track × 两层 × 每智能体一个 key,外加短 tags(≤16 个,每个 ≤32 字符)和每条目的 version,每次 replace 递增。
- 写入语义 —— 幂等的唯一子串条件写入;所见即所批的载荷(replace / remove / consolidate 携带它们改动的全文)。
- 审计契约 —— 每次写入都能从 approval/asked + approval/decided + 服务商账本重建。
- 预算模型 —— BUDGET_EXCEEDED / AMBIGUOUS_MATCH 语义。
- Schema 版本管理 —— 迁移规则,版本检查会明确报错。
- 规范 —— 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 和审批接缝;不改引擎 / 智能体循环 / 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 | 按目录划分作用域的指令,自动发现并注入,模型侧零摩擦 | workspace 层以会话 cwd 为键(Windows 大小写不敏感);会话启动时自动注入冻结快照 |
| Hermes — memory.md | 主动保存记忆,以及一条安全教训:只在工具层设卡,会被后置工具注入绕过 | 带 Save/Skip 指引的 memory 工具 + 需审批的自动捕获提案;关卡设在 ctx.memory 的写入方法内部,不在工具层 |
来源:Claude Code memory · Codex AGENTS.md · Hermes memory · Hermes #48181。
还有刻意拒绝的部分:把内容隐藏地自动摘要进模型私有状态(这里的压缩摘要会变成待处理提案,等人批准或驳回)、仓库/向量库的野心,以及任何缺少人类可见审批或审计轨迹的写入。另外也采纳了 Hermes 记录的一条注意事项:两个进程共用一个 home 目录时,会写同一个记忆文件——见安全边界。
开发
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 的 import 只出现在 index.mjs 里。
与其他 DSH 插件的互操作性
已针对 DSH 0.2.0-rc.2(本 README 随附的运行时)以及 2026-10-05 调研的高星插件集做过验证。
本插件不会干扰其他插件,包括广泛安装的高星插件:
- 无工具名冲突。 每个工具都带命名空间;不注册任何裸名称,既不属于已发布工具,也不属于其他插件。
- 无服务键冲突。 它提供 memory、memoryAdapters、memoryEmbedding、memoryRetrieval;这些键不是内置接缝,调研过的高星插件也都不提供。
- 无槽位冲突。 它不注册任何客户端槽位键,因此不会争抢 shadows-shipped-ui 的席位。
- 无 HTTP 路由冲突。 它不注册任何 webServer 前缀。
- 无补丁层冲突。 包补丁只 insert 自己那一行;从不覆盖内置行的 config。
- 无全局改动。 它不改原型、不重写 process.env、不替换全局 fetch 调度器。
共享事件监听器从设计上就不互相干扰。 它用 ctx.on() 观察对顺序敏感的事件 approval/request —— 这是 Cordis 的广播注册方式,每个监听器都会执行,谁也无法饿死别人。这里每个监听器都通过 next() 委派,所以调用链永远不会被短路;改动施加在 next() 产出的值上,而不是顶替它返回:
静态证据:dsh-plugin-doctor 的 K10–K13 对本仓库的每项检查都报告 pass。
主题
dsh、dsh-plugin、deepseek-harness、memory、agent-memory、approval、audit、sqlite、cordis、llm
贡献者
- @alone-tree —— DSH 设置面板入口与可隐藏浮动窗口(#8)。
- @zzproc —— memory_recall 输出 schema 的 source/tags 修复(#11)。
- @Niuniu-Sir —— issue #1 里的启动崩溃报告,促成了 0.3.1 发布的 ~/.dsh 回退方案。
- @alex-debap — 产品经理。从设计之初就主导产品的整体形态,而非代码:提出「接缝而非仓库」的主张(一个带类型的 ctx.memory 接缝,不是又一个记忆仓库);要求写入审批闸门在服务内部强制执行,任何模型路径都无法绕过,而不是把它当成工具层的约定;并保证审计能力,每次写入都能从审批对加上插件自己的审计表重建出来。命名了有界、分层的召回模型——两条轨道 × 两层,按智能体分键,每条轨道、每层都有硬性字符预算——并主张本地优先、零凭据存储(0600 权限的 SQLite,放在 $DSH_HOME 下,不联网,不用密钥)。把协议工作当作一条产品线推进:公开的 dsh-memory-protocol v1 演练、它的适配器注册表以及一致性测试套件。守住了范围边界,明确这个插件刻意不做什么。
PerryLink DSH 插件家族
本项目属于 PerryLink 的 DeepSeek Harness 插件家族。下面的名单默认折叠,好让每个 README 的首屏都保持简短;展开即可看到每一行及其状态。
展开全部插件
| 插件 | 状态 |
| dsh-aqua-input-check | |
| dsh-archive-check | |
| dsh-auto-review | |
| dsh-autotier | |
| dsh-bid-ca-precheck | |
| dsh-bid-qual-check | |
| dsh-cert-mcp | |
| dsh-checkpoint-rewind | |
| dsh-click | |
| dsh-composer-history | |
| dsh-contract-stance | |
| dsh-customs-doc-check | |
| dsh-data-quality | |
| dsh-demurrage-ledger | |
| dsh-doublecheck | |
| dsh-drill-script-check | |
| dsh-eia-guide-check | |
| dsh-emergency-plan | |
| dsh-essay-rubric-check | |
| dsh-evidence-check | |
| dsh-export-ctl-check | |
| dsh-fast | |
| dsh-fmea-table-check | |
| dsh-forecast-penalty | |
| dsh-fund-research | |
| dsh-github | |
| dsh-gongwen-flow-check | |
| dsh-gongwen-word-check | |
| dsh-guard-plan-qc | |
| dsh-hazchem-check | |
| dsh-hazplan-check | |
| dsh-hidden-risk-map | |
| dsh-hs-classify | |
| dsh-icd-rule-check | |
| dsh-industry-research | |
| dsh-lawcite-adapter | |
| dsh-laya | |
| dsh-lc-doc-check | |
| dsh-learning-gap-check | |
| dsh-library | |
| dsh-local-ai | |
| dsh-lsp-actions | |
| dsh-mask | |
| dsh-mcp-panel | |
| dsh-medrec-qc | |
| dsh-memento | |
| dsh-nsfc-form-check | |
| dsh-nurse-record-check | |
| dsh-observe | |
| dsh-origin-rvc-check | |
| dsh-ota-review-check | |
| dsh-output-styles | |
| dsh-paper-doc-adapter | |
| dsh-permission-rules | |
| dsh-permit-report-check | |
| dsh-pipeline-check | |
| dsh-pleading-draft | |
| dsh-plugin-doctor | |
| dsh-plugin-guide | |
| dsh-plugin-kit | |
| dsh-plugin-upgrade | |
| dsh-policy-brief-draft | |
| dsh-power-loss-split | |
| dsh-power-ticket-check | |
| dsh-ppap-check | |
| dsh-protest-deadline | |
| dsh-railway-window | |
| dsh-repair-order-qc | |
| dsh-research-report | |
| dsh-review-reply-check | |
| dsh-rulefile-check | |
| dsh-safety-brief-check | |
| dsh-score | |
| dsh-session-sync | |
| dsh-site-log-check | |
| dsh-skill-pack-security | |
| dsh-soe-decision-check | |
| dsh-soilwater-check | |
| dsh-sop-sync-check | |
| dsh-spc-gbt-adapter | |
| dsh-talk | |
| dsh-tender-extract | |
| dsh-tender-matrix | |
| dsh-test-drive | |
| dsh-ticktick | |
| dsh-translate | |
| dsh-warranty-calc | |
| dsh-budget | 🧊 FROZEN — see the repo README |
| dsh-claude-move | 🧊 FROZEN — see the repo README |
| dsh-defend | 🧊 FROZEN — see the repo README |
| dsh-draw | 🧊 FROZEN — see the repo README |
| dsh-reach | 🧊 FROZEN — see the repo README |
| dsh-background-agents | 🚫 RETIRED — see the repo README |
| dsh-session-pin | 🚫 RETIRED — see the repo README |
| dsh-team-rooms | 🚫 RETIRED — see the repo README |
License
Apache License 2.0 © 2026 dsh-memento contributors预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
PerryLink/dsh-memento
状态:活跃。 2026-10-12 解冻;旧的「自 2026-10-05 起冻结」描述已过期。
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个插件,给…
★ 814已汉化DSH
68.8
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 385已汉化DSH
67.9
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1