@morlay/session-persistence-rdb:DeepSeek Harness 的 RDB 持久会话后端

前言

DSH 的插件化结构里,会话持久化可以由后端插件提供。@morlay/session-persistence-rdb 面向需要把会话持久化落到 SQLite 或 PostgreSQL 的使用场景:它作为 DSH 插件接入,提供 RDB durable session persistence backend,并通过配置选择数据库后端。

插件定位

@morlay/session-persistence-rdb 是 morlay 维护的 DeepSeek Harness 插件,许可证为 MIT。它的核心定位是:为 ctx.sessionPersistence 提供 SQLite / PostgreSQL 持久会话后端。

核心能力

下面列出该插件已确认提供的能力:

  • 提供 RDB(SQLite / PostgreSQL)持久会话后端,接口为 ctx.sessionPersistence
  • 通过 drizzle 实现 PersistenceBackend<number>
  • 复用上游 PersistenceCoordinator 与契约测试套件。
  • 支持在配置中选择 SQLite 或 PostgreSQL 后端。

安装与启用

安装前先处理认证。GitHub Packages 的 registry 要求认证,公开包也一样。需要在 profile 的 .npmrc 中为 npm.pkg.github.com 配置访问 token,例如:

//npm.pkg.github.com/:_authToken=<token>

确认 token 可用后,将插件安装到目标 DSH profile。下面示例安装到 web profile,并把 registry 限定在 @morlay scope:

dsh plugin --profile=web add "@morlay/session-persistence-rdb@^0.0.1" --config.@morlay:registry=https://npm.pkg.github.com/

这里不要使用全局 --registry。如果全局指向 GitHub Packages,@deepseek-ai/* 等依赖也可能被解析到 GitHub Packages,导致安装失败。

典型用法

启用后,在 settings.yaml 中使用 session-persistence-rdb namespace 配置后端类型。

SQLite 后端

配置字段包括 typepathjournalModebusyTimeout。示例结构如下:

session-persistence-rdb:
  type: sqlite
  path: <SQLite 文件路径>
  journalMode: <journalMode 值>
  busyTimeout: <毫秒数>

PostgreSQL 后端

配置字段包括 typeconnectionString。示例结构如下:

session-persistence-rdb:
  type: postgres
  connectionString: <PostgreSQL 连接串>

settings.yaml 是纯 YAML,不支持 !!js JS 表达式。!!js 只在 cordis.patch.yml(bundle patch 层,loader 求值)有效。

适用场景与注意

这个插件适合需要 SQLite 或 PostgreSQL 持久会话后端的 DSH 使用方。使用前注意:

  • 许可证为 MIT。
  • 插件以当前 dsh 进程权限运行;安装前应检查源码与许可证。
  • GitHub Packages 安装需要 .npmrc token。
  • registry 必须限定在 @morlay scope,避免影响 @deepseek-ai/* 等依赖解析。
  • settings.yaml 不支持 !!js,不要把 !!js 表达式写入该文件。

资源

  • GitHub:https://github.com/morlay/session-persistence-rdb.git
  • 社区目录:本文未确认具体 URL。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜