前言¶
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 后端¶
配置字段包括 type、path、journalMode、busyTimeout。示例结构如下:
session-persistence-rdb:
type: sqlite
path: <SQLite 文件路径>
journalMode: <journalMode 值>
busyTimeout: <毫秒数>
PostgreSQL 后端¶
配置字段包括 type、connectionString。示例结构如下:
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 安装需要
.npmrctoken。 - registry 必须限定在
@morlayscope,避免影响@deepseek-ai/*等依赖解析。 settings.yaml不支持!!js,不要把!!js表达式写入该文件。
资源¶
- GitHub:https://github.com/morlay/session-persistence-rdb.git
- 社区目录:本文未确认具体 URL。