dsh-tool-database:在 DSH 里直连 SQL Server / PostgreSQL / MySQL

前言

在 DeepSeek Harness(DSH)里让模型查业务库,常见做法是再挂一层 MCP 或自己写桥接脚本:多一跳进程、多一套部署,连接信息和结果集还要自己管好别灌爆上下文。若你手里本来就是 SQL Server、PostgreSQL、MySQL 混合环境,更希望「配好连接 → 模型直接调工具读结构、跑只读 SQL」,同时能在界面里手动试语句,dsh-tool-database(维护者 SouleyMoni1,GitHub:SouleyMoni1/dsh-tool-database)走的就是这条路径:一套 db_* 工具、原生驱动、内置左侧栏「数据库」面板,分类上属于客户端插件。

下面按定位、能力、安装、用法与注意事项说明怎么用。

这是什么

dsh-tool-database 是 DSH 的数据库插件:用 mssql(tedious)、pg、mysql2 连库,不经过 MCP、不为每次查询起子进程;模型通过宿主注册的工具读(可选写)你在宿主侧配置的源。同一插件里可按源分别选引擎,例如 SQL Server 生产、PostgreSQL 报表、MySQL 业务库并存。

npm 包名 dsh-tool-database,源码与说明见 GitHub 仓库;社区目录页:SkillHub 插件页(社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系)。

支持的引擎

每个连接独立指定 engine,默认引擎为 SQL Server(兼容自旧版 dsh-tool-mssql 的清单)。

引擎 engine 驱动 默认端口 DSN 前缀
SQL Server sqlserver mssql(tedious) 1433 sqlserver:// / mssql:// / tds://
PostgreSQL postgres pg 5432 postgres:// / postgresql:// / pg://
MySQL / MariaDB mysql mysql2 3306 mysql://

核心功能:模型侧 db_* 工具

安装并重启 DSH 后,宿主侧会出现 6 个工具(与 README 工具表一致):

工具 功能
db_sources 列出已配置源(id、引擎、主机、端口、库、账号、是否可写);可 probe: true 实测连通性
db_databases 列出实例上的数据库
db_tables 列出表与视图(schema、类型、行数估算),支持 schema / filter
db_schema 单表列结构:类型、可空、自增、主键、默认值等
db_query 只读查询;支持多条语句逐条执行;page + limit 翻页
db_execute 写通道:源须 writable: true 且调用显式 allowWrite: true;DDL 另需 allowDdl

省 token 的推荐顺序:db_sources → db_tables(带 filter)→ db_schema → db_query,先看清结构再取数,避免 SELECT * 把整表打进上下文。

参数占位按引擎区分:SQL Server 用 @p0, @p1 …;PostgreSQL 用 $1, $2 …;MySQL 用 ?,值统一放在 params 数组。

左侧栏「数据库」面板

从 0.2.1 起,面板在左侧栏全局区(挨着「插件 / 自动化任务」)。主要能力包括:

  1. 连接列表:搜索、引擎徽标、可写标记;选中后在右侧打开查询或编辑表单。
  2. 查询区:多页签 SQL 编辑器(语法高亮、关键字与字段补全)、Ctrl / Cmd + Enter 执行;结果表格显示列名、行数、耗时,超限标「已截断」,可复制整表(TSV,便于粘到 Excel)。
  3. 连接表单:引擎、类型、主机、端口、库、账号、密码、TLS、可写、允许 DDL;「测试连接」;密码可显示/隐藏;「高级」里可贴连接字符串(填了则忽略上方主机表单)。

0.3.0 起每条连接有类型三档:开发 / 测试 / 正式(stage: dev | test | prod),列表可按类型分组,选择记在浏览器本地。老清单无 stage 时按别名、描述、库名推断,保存连接时写回清单。

0.3.4 起查询页签与 SQL 自动保存在本机 $DSH_HOME/database-tool/queries.json(与 sources.json 同目录);支持历史页签、重命名、编辑器与结果区高度拖拽记忆等。控制台支持多语句、结果分页、执行选中片段、列宽调整等(详见仓库 README)。

设置页保留「数据库连接」一节,用于控制台写策略与默认行数;sources.json 改动由宿主按 mtime 热加载,一般不用重启(增删插件本身仍需重启后才出现工具与侧栏)。

安装与启用

包已发布到 npm。Web profile 建议带显式版本号安装,避免解析到 npm 上损坏的占位版本 0.0.0-stage:

dsh plugin --profile web add dsh-tool-database@0.3.5

README 中安装示例为 0.3.5;package.json 在资料中记录的最新版本为 0.3.6,可按需在 add 时改用对应版本号。

装完后重启 DSH,6 个工具、侧栏面板、设置项才会出现。

桌面端(desktop profile)

dsh plugin --profile desktop ... 会被 CLI 拒绝(由 Electron 应用独占管理)。可选做法:在 ~/.dsh/profiles/desktop/package.json 的 dependencies 增加 "dsh-tool-database": "^0.3.5",并在 dsh.profile.bundles 加入 "dsh-tool-database",再用与该 profile 同大版本的 pnpm 安装后重启。资料给出的稳妥命令示例:

cd ~/.dsh/profiles/desktop && npx --yes pnpm@11.28.5 add dsh-tool-database@0.3.5

从 dsh-tool-mssql 升级

勿与旧插件同时安装(会同时出现 mssql_* 与 db_* 两套工具):

dsh plugin --profile web remove dsh-tool-mssql
dsh plugin --profile web add dsh-tool-database

首次启动会把 $DSH_HOME/mssql-tool/sources.json 复制到 $DSH_HOME/database-tool/sources.json(只复制不删除);老字段 server 仍认,缺省引擎按 sqlserver 处理。

配置连接

源清单两种写法,config.sources 非空时优先于独立 JSON。

方式一:在 profile 的 cordis.patch.yml 里插入插件项,例如:

- insert:
    - id: tool-database
      name: 'dsh-tool-database'
      config:
        defaultSource: erp_prod
        sources:
          - id: erp_prod
            engine: sqlserver
            stage: prod
            description: 【正式·只读】db.example.com/demo_erp
            host: db.example.com
            port: 1433
            database: demo_erp
            user: reader
            passwordEnv: MSSQL_PROD_PW
            writable: false
          - id: pg_report
            engine: postgres
            stage: test
            description: 【报表】pg.internal/report
            host: pg.internal
            database: report
            user: readonly
            passwordEnv: PG_REPORT_PW
            ssl: true

方式二(推荐):编辑 $DSH_HOME/database-tool/sources.json,改完即时生效。完整字段说明见仓库 README(资料中该段有截断,以 GitHub 为准)。

密码宜通过 passwordEnv 等宿主侧环境变量引用,避免明文写进可提交的清单。

典型用法

  1. 在 DSH 对话中让模型先调用 db_sources,确认可用的 id 与是否可写。
  2. 对目标源调用 db_tables,必要时加 filter 缩小表名范围。
  3. 对单表调用 db_schema,再写带条件的 db_query;大结果集用 page / limit。
  4. 需要变更数据时:仅在源配置 writable: true 的前提下,由模型调用 db_execute 并显式 allowWrite: true;DDL 还需 allowDdl。
  5. 调试 SQL 时打开左侧栏「数据库」面板,在对应连接下新建页签,用控制台执行并翻页看结果。

适用场景与注意

适合:已在 DSH 里做数据分析、排障、报表核对,需要模型与人在同一套连接上读库;多引擎、多源只装一个客户端插件即可。

务必注意:

  • 插件以当前 DSH 进程权限连库、读配置;安装前请查看 源码 与许可证(资料中为 MIT)。
  • 默认只读;写与 DDL 需配置 + 工具参数双重开关。
  • Node 引擎要求(package.json):^22.19.0 || >=24.0.0。
  • 0.1.1 起入口为 lib/boot.js,带 shim 以规避旧版 profile 解析器对部分 CJS 依赖 require('process/') 的 import 失败问题;正常使用 npm 安装即可。

本地 link: 调试时,联接须相对 profile 目录解析;装前需 npm run build 生成 lib/(详见 README「本地目录安装」)。

结尾

dsh-tool-database 把 SQL Server、PostgreSQL、MySQL 收成一套 db_* 工具和左侧栏控制台:模型侧按结构再查数,人侧也能同一连接跑 SQL。进一步了解能力细节与截图说明,见 GitHub README 与 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye