
morlay/session-persistence-rdb
40最近提交 2026年8月14日
session-persistence-rdb DSH 插件
@morlay/session-persistence-rdb 为 DSH 提供持久化会话后端(ctx.sessionPersistence)。它通过 Drizzle ORM 实现了 PersistenceBackend<number>,支持 SQLite 和 PostgreSQL 两种数据库。该插件用于 DSH 配置,需要在 settings.yaml 中配置。
如何安装 session-persistence-rdb DSH 插件
dsh plugin --profile=web add "@morlay/session-persistence-rdb@^0.0.1" --config.@morlay:registry=https://npm.pkg.github.com/复制不会执行命令。安装 session-persistence-rdb DSH 插件前请核对仓库和版本。
session-persistence-rdb DSH 插件数据来源
session-persistence-rdb DSH 插件快照日期:2026年8月16日
discovered
session-persistence-rdb DSH 插件能做什么
- 通过 Drizzle ORM 实现 PersistenceBackend<number>
- 支持 SQLite 和 PostgreSQL 后端
- 通过 DSH settings.yaml 配置
- 与 PersistenceCoordinator 和契约测试套件集成
- 发布在 GitHub Packages 上
session-persistence-rdb DSH 插件适合哪些场景
- 跨重启持久化 DSH 会话数据
- 使用 SQLite 进行本地开发或单用户
- 使用 PostgreSQL 进行多用户或生产部署
- 通过配置轻松切换数据库类型
- 利用现有的 PersistenceCoordinator 管理会话
session-persistence-rdb DSH 插件适合谁
- 需要会话持久化的 DSH 插件开发者
- 部署有状态 DSH 会话的操作员
session-persistence-rdb DSH 插件的限制
- 需要 DSH 配置中包含 GitHub Packages 注册表和认证令牌
- 仅支持 SQLite 和 PostgreSQL,不支持 MySQL 等其他数据库
- 配置必须在 settings.yaml 的特定命名空间下进行
- settings.yaml 不支持 !!js 表达式(仅 cordis.patch.yml 支持)
session-persistence-rdb DSH 插件的仓库 README 摘录
以下文字摘自 session-persistence-rdb DSH 插件的上游仓库 morlay/session-persistence-rdb 的 README,版权归原作者,仅作引用。
RDB(SQLite / PostgreSQL)持久会话后端(`ctx.sessionPersistence`):通过 drizzle 实现 `PersistenceBackend<number>`,复用上游 `PersistenceCoordinator` 与契约测试套件, 支持配置选择 SQLite 或 PostgreSQL 后端。设计细节(表结构、delta 过滤、并发写、 方言差异、仓库结构)见 [docs/design.md](docs/design.md)。 ## 安装 包发布在 GitHub Packages,按包名安装到 dsh profile(示例:web;`dsh plugin add` 把参数原样转发给 pnpm,版本号按发布版本调整)。registry 必须限定在 `@morlay` scope(`--config.@morlay:registry=…`),不要用全局 `--registry`, 否则依赖(`@deepseek-ai/*` 等)也会被指到 GitHub Packages 而解析失败: ```sh dsh plugin --profile=web add "@morlay/session-persistence-rdb@^0.0.1" --config.@morlay:registry=https://npm.pkg.github.com/ ``` GitHub Packages 的 registry 要求认证(公开包也一样):profile 的 `.npmrc` 需为 `npm.pkg.github.com` 配置访问 token(如 `//npm.pkg.github.com/:_authToken=<token>`),详见 [GitHub 文档](https://docs.github.com/packages/working-with-a-github-packages-registry/working-with-the-npm-registry)。 ## 配置 配置写在 `${DSH_HOME}/settings.yaml`,settings namespace 为插件短名 `session-persistence-rdb`(与 cordis 插件 `name` 一致): ```yaml session-persistence-rdb: type: sqlite # path 省略时回落 cordis.patch.yml 的默认($DSH_HOME/sessions/sessions.sqlite, # 由 bundle patch 的 !!js 表达式求值);自定义路径请用绝对路径字符串。 path: /absolute/path/to/sessions.sqlite jou
阅读完整 README仓库许可: MIT
session-persistence-rdb DSH 插件常见问题
如何安装 session-persistence-rdb 插件?
运行 `dsh plugin --profile=web add "@morlay/session-persistence-rdb@^0.0.1" --config.@morlay:registry=https://npm.pkg.github.com/`。确保你的 profile 的 .npmrc 中有 npm.pkg.github.com 的认证令牌。具体设置请参考 GitHub 文档。
如何配置数据库类型?
在 DSH 的 settings.yaml 中,添加 session-persistence-rdb 命名空间,设置 type: sqlite 或 type: postgres。对于 SQLite,可以指定 path、journalMode 和 busyTimeout;对于 PostgreSQL,提供 connectionString。
可以使用 MySQL 或其他数据库吗?
不行,该插件仅支持 SQLite 和 PostgreSQL。虽然 Drizzle ORM 理论上支持其他数据库,但当前插件只包含这两个后端。
为什么安装这个插件需要 GitHub 令牌?
该包发布在 GitHub Packages 上,即使是公开包也需要认证。你需要在 profile 的 .npmrc 中为 https://npm.pkg.github.com/ 配置认证令牌。
如何从 SQLite 切换到 PostgreSQL?
修改 settings.yaml 中 session-persistence-rdb 的 type 为 postgres,并提供 connectionString。插件会在首次打开时自动创建表。