前言¶
DeepSeek Harness(dsh)里,若要让 agent 查库、改数据或做维护,常见做法是临时写脚本或把连接串塞进对话上下文。Firebird 又往往跑在 Windows 服务器上,路径、认证插件和 wire 加密和默认 Node 驱动行为不一致,一旦把 SQL 和凭据交给模型自由拼接,风险和误连都很大。
下面介绍社区维护的 bundle 插件 dsh-firebird-connector(npm 包名 dsh-firebird-connector,维护者 long18229425025)。它在 dsh 里提供命名连接、只读/读写/管理三种访问模式、强制参数绑定、对象白名单、写操作与危险操作的确认门,以及 JSONL 审计;驱动在独立子进程执行,超时回收 worker,避免拖死整个 dsh 进程。
这是什么¶
dsh-firebird-connector 是面向 DeepSeek Harness 的 Firebird 2.5 / 3.0 / 4.0 / 5.0 数据库连接器 bundle。Agent 通过一组 firebird_* 工具在配置好的连接上工作,而不是直接持有 DSN 或明文密码。
插件按 profile 安装:Web(dsh web)与 Desktop 各自使用 ~/.dsh/profiles/web 与 ~/.dsh/profiles/desktop,配置与依赖互不影响。社区目录页:https://www.skillhub.cn/plugins/long18229425025/dsh-firebird-connector;源码与文档:https://github.com/long18229425025/dsh-firebird-connector。
核心约束与能力¶
资料中强调的设计边界如下,也是和「裸连数据库」的主要差别:
- 凭据只来自环境变量(
userEnv/passwordEnv)或 dsh 凭据引用(userRef/passwordRef);配置里禁止user、username、password等明文字段,审计与工具结果也不写入密码。 - SQL 必须通过
?/:name参数绑定;插件不接受把用户输入拼进 SQL 字符串。 - 每个连接必须声明
accessMode:readonly、readwrite或admin,并可叠加allowedObjects白名单(空数组表示不限制对象名)。 - 每次工具调用写入 JSONL 审计(含拒绝与失败);日志里 SQL 只保留前 200 字符,并附完整 SQL 的 SHA-256。
- 写操作默认需要显式确认;危险操作需二次确认;
GRANT/REVOKE使用两阶段一次性确认令牌。 node-firebird@^2.18.2由 profile 单独安装,本包不 bundled 驱动,避免双份依赖。
环境要求:Node.js >= 20.19(dsh 自带运行时即可)、支持 bundle 的 dsh 版本、目标 Firebird 实例,以及 profile 内已安装的 node-firebird@^2.18.2。
安装与启用¶
dsh 插件没有全局目录;Web 端用 CLI 管理,Desktop 端 CLI 会拒绝 --profile desktop 的插件管理,需在桌面应用内操作。
Web profile¶
先安装驱动,再安装连接器;本地开发也可指向插件目录(README 中有示例路径):
dsh plugin --profile web add "node-firebird@^2.18.2"
dsh plugin --profile web add "dsh-firebird-connector"
编辑 ~/.dsh/profiles/web/cordis.patch.yml 追加 firebird-connector 配置(见下一节),然后重启 dsh web。
Desktop profile¶
- 打开左侧栏 插件(不是「设置 → 内置插件」)。
- 添加插件,输入
dsh-firebird-connector;同样方式添加node-firebird@^2.18.2。 - 在
~/.dsh/profiles/desktop/cordis.patch.yml追加firebird-connector配置,勿覆盖已有 UI 配置行。 - 完全退出并重启 Desktop;在「已安装插件」中确认条目。插件只注册 agent 工具,无独立菜单页;对话中调用
firebird_list_connections验证。
只安装插件、不配置 connections 时,启动校验会失败,桌面端也看不到可用连接。
配置示例¶
每个 profile 单独配置。最小结构参考 README 与仓库内 config.example.yml:
- id: firebird-connector
config:
logLevel: info
audit:
file: ~/.dsh/firebird/audit.jsonl
connections:
app_ro:
dsn: firebird://127.0.0.1:3050//data/app.fdb
accessMode: readonly
userEnv: FB_APP_RO_USER
passwordEnv: FB_APP_RO_PASSWORD
app_rw:
host: 127.0.0.1
port: 3050
database: '/data/app.fdb'
accessMode: readwrite
allowedObjects: [CUSTOMERS, ORDERS, V_ORDERS]
userRef: firebird/app-rw-user
passwordRef: firebird/app-rw-password
role: APP_WRITER
allowRoleSwitch: true
凭据环境变量必须对 运行 dsh 的进程可见:Web 在启动 dsh web 的终端里设置;Desktop 若从开始菜单启动,通常要在系统用户环境变量中设置后重启应用。userEnv 与 userRef 二选一,同时配置会报错。
连接可用 dsn 或 host / port / database;DSN 支持 firebird://、jdbc:firebirdsql:// 等,且禁止在 DSN 里带账号或查询参数。插件默认 authPlugin: auto(先 Srp,必要时回退 Legacy_Auth)和 wireCrypt: false,以适配未强制 wire 加密的 Firebird 3.x;Windows 上数据库路径建议用 host + database,避免 /D://... 这类写法。
根配置仅允许 logLevel、audit.file 和 connections;未知字段会导致加载失败。
Agent 工具概览¶
工具均通过 defineTool 注册,返回 JSON 文本。下表摘自 README,便于对照 accessMode 选连接:
| 工具 | 最低 accessMode | 要点 |
|---|---|---|
firebird_list_connections |
任意 | 列出连接元信息,不含凭据 |
firebird_query |
readonly | SELECT/WITH/EXPLAIN;拒绝 FOR UPDATE / WITH LOCK |
firebird_execute |
readwrite | DML;需 confirmWrite 等 |
firebird_call_procedure |
readwrite | 校验 EXECUTE 权限后调用过程 |
firebird_list_objects / firebird_describe_object |
任意 | 元数据,120 秒缓存 |
firebird_create / firebird_alter / firebird_drop |
readwrite 或 admin | DDL;过程/触发器等需 admin |
firebird_grant / firebird_revoke |
admin | 两阶段确认 + token |
firebird_set_role |
任意 | 需 allowRoleSwitch: true |
firebird_manage_user |
admin | 用户 CRUD;密码仍只从 env/ref 来 |
readwrite 仅覆盖表、视图、索引级 DDL;存储过程、触发器、角色等需 admin。CREATE DATABASE 与配置 SQL 里的 USER 语法会被拒绝,用户管理走 firebird_manage_user。
典型验证步骤:配置好只读连接后,在对话中让 agent 调用 firebird_list_connections,再对 app_ro 使用 firebird_query,传入绑定参数而非字面拼接条件。
适用场景与注意¶
适合:已在用 dsh 做运维或业务辅助,需要 agent 在 Firebird 上读数、受控写入或元数据探查,且希望凭据与 SQL 有统一护栏和审计的团队。
务必注意:
- 插件以 当前 dsh 进程的权限与环境变量运行;安装前应阅读源码与许可证(MIT,见 GitHub 与 npm 包
0.1.1)。 - 元数据工具不受
allowedObjects限制;若对象名本身敏感,不要对不可信调用方开放相关工具。 - SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系,插件为社区贡献,非官方应用商店条目。
结尾¶
dsh-firebird-connector 把 Firebird 访问收进命名连接、参数化 SQL、模式分级和 JSONL 审计里,让 dsh agent 在可预期的边界内工作。安装时记得 profile 内同时提供 node-firebird@^2.18.2 与 cordis.patch.yml 中的 connections。