# @amaster\.ai/dsh-storage 中文文档

规范地址：https://npmcn.com/package/%40amaster.ai/dsh-storage/

版本：0\.1\.40
npm 元数据更新时间：2026-11-04T11:24:18.942Z
中文译文更新时间：2026-11-06T06:16:30.718Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40amaster.ai/dsh-storage
原文对照：https://npmcn.com/package/%40amaster.ai/dsh-storage/?lang=original
项目主页：https://github.com/TGYD-helige/dsh-plugins#readme
源码仓库：https://github.com/TGYD-helige/dsh-plugins

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：2.6 MB，99 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^20\.19 \|\| ^22\.12 \|\| \>=24\.0
- 运行依赖：1 个
- peer 依赖：@prisma/client ^7\.9\.1，@prisma/adapter-pg ^7\.9\.1，@deepseek-ai/cordis ^4\.0\.1，@prisma/adapter-mssql ^7\.9\.1，@prisma/adapter-libsql ^7\.9\.1，@prisma/adapter-mariadb ^7\.9\.1，@deepseek-ai/dsh-session \>=0\.1\.5-rc\.1 \|\| \>=0\.1\.6-alpha\.1 \|\| \>=0\.1\.7-alpha\.1 \|\| \>=0\.2\.0-rc\.1 \|\| \>=0\.2\.1-rc\.1 \|\| \>=0\.2\.2-rc\.1
- 首次发布：2026-08-28T11:51:03.756Z
- 最新版本发布：2026-11-04T11:24:18.791Z
- 近 30 天下载量：4510（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：41（近 12 个月 41 个）

## 中文简介

DeepSeek Harness的会话存储镜:在不取代 dsh 本地持久性的情况下,将会话事件流投放到 MySQL/PostgreSQL/SQLite/SQL 服务器(ai messages / ai chat history)中.

## 安装

```sh
npm install @amaster.ai/dsh-storage
```

也可以使用：`pnpm add @amaster.ai/dsh-storage`、`yarn add @amaster.ai/dsh-storage`、`bun add @amaster.ai/dsh-storage`

## README

# @amaster.ai/dsh-仓库

![dsh-storage preview](https://npmcn.com/package/%40amaster.ai/dsh-storage/preview.png)

会话存储镜像 [深层空间( dsh)](https://github.com/deepseek-ai/deepseek-harness): 预测 `session/event` 流入 MySQL/PostgreSQL/SQLite/SQL 服务器(`ai_messages` 编号 : `ai_chat_histories`,与源项目相同的表格),而不取代 dsh 的本地持久性——本地文件保持权威,这是一面镜像.

当 dsh 配置文件需要持久,可查询的会话数据时使用,同时保留运行时本地会话存储作为真理的来源.

## 安装

```sh
dsh plugin --profile my-agent add @amaster.ai/dsh-storage
```

运行时端点 : `@prisma/client` (单位:千美元)**普里斯玛7**加您数据库的驱动适配器 :

| 提供者 | 适配端点 |
| --- | --- |
| `mysql` | `@prisma/adapter-mariadb` |
| `postgresql` | `@prisma/adapter-pg` |
| `sqlite` | `@prisma/adapter-libsql` |
| `sqlserver` | `@prisma/adapter-mssql` |

PrismaClient是每个供应商预先生成的,并在包中发运—— **没有 `prisma generate` 步骤** 为消费者服务.

## 配置

默认禁用 。 通过配置配置配置 `cordis.patch.yml`数字 :

```yaml
- insert:
    - id: storage-mirror
      name: '@amaster.ai/dsh-storage'
      config:
        enabled: true
        database:
          enabled: true
          provider: mysql   # mysql | postgresql | sqlite | sqlserver
          url: mysql://user:pass@host:3306/agent
```

使用运出的方案变量创建或升级表格:

```sh
npx prisma db push --schema node_modules/@amaster.ai/dsh-storage/prisma/schema.mysql.prisma --url "mysql://user:pass@host:3306/agent"
# schema.postgresql.prisma / schema.sqlite.prisma / schema.sqlserver.prisma work the same way
```

只有消息,工具-结果,助理-尝试,转会,标题,以及成功的收缩事件进入镜像队列;不相关的生命周期记录不会触发数据库读取或重试. 失败的初始化重试在会话中共享一秒钟的延迟 。 已排入队列的事件等待到这一延迟,会话冲出/卸载仍会排出命令的工作 。 数据库操作故障继续被记录并吞入;局部DSH持久性仍然具有权威性.

同一助手行的相邻排队工具结果在写入前被合并,每批最多有32个事件,不跳出计时器. 不同消息和被镜像干扰的事件保留了队列顺序. 会话冲出、归档、处置和插件卸下封条并排出较早的批次。 完全结果行不保存在新的持久缓存中 。 这将减少重复读取/写入; 当输入的数据超过数据库时, 队列仍然可以增大 .

## 数据模型

-   **`ai_messages`** ——用户和模范行,有 `thoughts`, (中文(简体) ), `tokens`, (中文(简体) ), `tool_calls`, (中文(简体) ), `agent_id`, (中文(简体) ), `metadata` JSON列和软去除. A 类 `tool/result` 更新匹配的模型行 `tool_calls` 以调用 ID 输入; 它不创建 `type=tool` 排队.
-   **`ai_chat_histories`** ——按会场滚动(消息计数,总信使,一/最后消息时间戳).

逻辑信息 ID 载入 `metadata.id`;信息行使用决定散列 `(session_id, message id)` 作为他们的主要钥匙,所以重新预测的事件在每一个连接器上都会上升而不是重复. 会话行匹配 `session_id` 并保留他们的密钥。 一次偏离源项目:否 `user_id` ——租房骑行 `session_id`。 。 。 .

对于 `user/message` 排队, `content` 保留文本投影,同时 `metadata.message` 保留收到的原始用户信件,包括 `source` 并点出内容块。 图像/ 文件块保留任何附件引用、路径、 URL, 或内置信息中实际包含的数据; 此镜像不会获取或重写附件 。 重投影将相同的原始消息写入已存在的行.

这个 `tool_calls` 阵列保留 dsh 的工具调用块(`id`, (中文(简体) ), `name`, (中文(简体) ), `arguments`); 匹配条目增加结构 `result` 在失败时 `error` 身份证明 Live call ID被缓存,恢复的呼叫可以从模型表面解析出它们的消息ID:两条路径都读取了一则消息主键. 旧电话在最多100个ID/工具呼叫候选人的密钥集页面中搜索,在插件中匹配,并在获取下页前被丢弃. 工具结果查询 SQL 不搜索 JSON, 加入表格, 或巢 SELECT 语句 。 复制结果更新同行, 不增加消息计数 。 现有历史 `type=tool` 排行完好无损.

当助理信件包含 dsh `reasoning` 块, `thoughts` 是一组 `{ content }` 按块顺序输入。 如果适配器在信件中提供匹配签名 `source.replayState.blocks`,该条目也带有 `thoughtSignature`。完整的模型 `source`,包括不透明 `replayState`,在行元数据中保存,用于无损失提供者重放。 后门的 `readMessages()` 还接受老年 `{ description }` 条目和 JSON 字符串想法,返回为 `{ content }`。 。 。 . `subject` 并且当上游信息不提供时,没有发明出一个深思熟虑的时间戳.

SQL 服务器注释: Prisma 的 sqlserver 连接器没有 `Json` 类型,所以它的变体将 JSON 列映射到文本中——后端自动将其序列化(SQL Server's `ISJSON` 编号 : `JSON_VALUE` 仍以 JSON 为文本查询).

镜像是无出错的接合: 后端错误被登录 `[dsh-storage]` 前缀并永不逃入代理循环.

成功本土 `compaction/end` 事件还写出 `utility_compressor` 留言。 内容 `content` 是源兼容的 `Content[]` 完全存活的 JSON 阵列 对话:摘要加保留尾巴,工具呼叫/结果由ID对等。 系统 提示不包括在内。 在同步数据库之前, 地面被捕获 写入; 失败/ 关闭的收缩让上次的快照完好无损 。 抓图行做 不增加可见信件数。 具有相同角色的相邻消息合并 命令部件, 因为遗留的读取器会跳过保留尾巴.

消费者可以从最新的活性压缩快照中恢复,加上后期消息行. 抓图和新镜像行包括 `metadata.sessionCreatedAt` 财务报告和审定财务报表 `metadata.seq` 在同一数据库第二处区分会话的复会时间和消息. 没有此元数据的旧快照保留了创建时间界限 。 镜子 不从不透明的附件ID获取附件或发明可用的路径/URL. 附件、开发者更新、扩展块和非对象工具参数 当遗留下来时,保留为文本部分中标注的 JSON 数据 `Content[]` 无法代表 他们是本地的。 这种快照保存参考信息,而不是附件字节或a 完整本地会话/工具注册。 附件字节仍然需要它们现有的持久 存储。 一个不变的后遗症读取器仍然基于时间戳;它必须消耗序列 元数据以区分同一数据库中的后期消息.

## 存档会话

处理会话清除请求时,请拨 `await ctx.get('dshStorage').archiveSession(sessionId)` 停止活转后 它等待队列的镜像写入, 然后按交易方式指定所有当前, 非删除 `ai_messages` 行数(`history_id IS NULL`改为未删除 `ai_chat_histories` 排队 返回的历史 ID 可以直接从数据库中查询这些行; 没有活动信件返回的第二个呼叫 `null`。数据库故障拒绝这一明确操作,而不是报告一个成功的明确操作.

存档的卷起仍可查询 。 插件确认活动滚动为没有相关消息的历史行,因此下个预计事件创建了新的滚动而不是覆盖存档的一行. 呼叫者拥有停止/ 替换 dsh 会话表面和任何 A2A 任务状态; 此操作只归档数据库镜像 .

## 兼容性

Dsh/cordis 版本在 [根相配矩阵](https://npmcn.com/package/README.md#compatibility)事件有效载荷搭载预放出 dsh API-检查 `TODO(verify)` 标记在 `src/` 在升级 dsh 之前.

## 许可证

麻省理工学院

## 常见问题

### @amaster\.ai/dsh-storage 是什么？

DeepSeek Harness的会话存储镜:在不取代 dsh 本地持久性的情况下,将会话事件流投放到 MySQL/PostgreSQL/SQLite/SQL 服务器\(ai messages / ai chat history\)中\.

### 如何安装 @amaster\.ai/dsh-storage？

在项目目录运行 npm install @amaster\.ai/dsh-storage，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@deepseek-ai/cordis（^4\.0\.1）、@deepseek-ai/dsh-session（\>=0\.1\.5-rc\.1 \|\| \>=0\.1\.6-alpha\.1 \|\| \>=0\.1\.7-alpha\.1 \|\| \>=0\.2\.0-rc\.1 \|\| \>=0\.2\.1-rc\.1 \|\| \>=0\.2\.2-rc\.1）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @amaster\.ai/dsh-storage 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @amaster\.ai/dsh-storage 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @amaster\.ai/dsh-storage 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js ^20\.19 \|\| ^22\.12 \|\| \>=24\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @amaster\.ai/dsh-storage 可以商用吗？

@amaster\.ai/dsh-storage 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @amaster\.ai/dsh-storage 的下载量有多少？

根据 npm 官方下载统计，@amaster\.ai/dsh-storage 在 2026/10/06 – 2026/11/04 这 30 天内被下载 4,510 次，日均约 150 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @amaster\.ai/dsh-storage 还在维护吗？

最新版本 0\.1\.40 发布于 2026/11/04（1 天前）；至今共发布 41 个版本，其中过去 12 个月发布了 41 个；首次发布于 2026/08/28。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

