@amaster.ai/dsh-storage

中文文档
0.1.40发布于 2026/11/04MITTypeScriptES Module近 30 天下载 4510

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

中文使用文档
文档目录6 节
  1. 安装
  2. 配置
  3. 数据模型
  4. 存档会话
  5. 兼容性
  6. 许可证

@amaster.ai/dsh-仓库

dsh-storage preview

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

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

安装

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数字 :

- 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

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

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 版本在 根相配矩阵事件有效载荷搭载预放出 dsh API-检查 TODO(verify) 标记在 src/ 在升级 dsh 之前.

许可证

麻省理工学院

版本与发布记录

@amaster.ai/dsh-storage 共发布 41 个版本,首次发布于 2026/08/28;过去 12 个月发布了 41 个版本。

版本发布日期距今
0.1.40latest2026/11/041 天前
0.1.392026/11/041 天前
0.1.382026/10/315 天前
0.1.372026/10/315 天前
0.1.362026/10/315 天前
0.1.352026/10/315 天前

关于 @amaster.ai/dsh-storage 的常见问题

@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 和提交记录判断。