前言¶
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。