dsh-db-connections:在 DSH 里用短名称访问 MySQL

前言

在 DeepSeek Harness(DSH)里让模型查库,常见做法是每次在对话里重复主机、端口、账号和密码。连接信息一旦写进提示词,既啰嗦,也有泄露风险。dsh-db-connections 把连接集中写在配置或设置页里,对话里只说「用 128」这类名字,模型通过插件提供的工具访问对应 MySQL。密码不会进入系统提示,只暴露主机、端口、默认库名以及是否允许写入。

下面介绍插件定位、能力、安装配置与典型用法。事实以 GitHub 仓库 README 为准;社区目录页为 skillhub.cn/plugins/lb290/dsh-db-connections(独立站点,与 DeepSeek / 幻方无官方从属关系)。

这是什么

dsh-db-connections(维护者 lb290,分类 admin-security)为 DSH 提供命名数据库连接:在设置页或配置文件中登记 MySQL,聊天中用连接名引用。默认只读;每条连接可单独开启写权限。当前仅支持 driver: mysql(依赖 mysql2)。

连接名会写入系统提示,三个工具都以 connection 为第一个参数,模型只需携带名称,无需在对话里复述地址或凭证。

核心功能

三个工具(由模型在对话中调用)

工具 作用
db_query 只读查询;在服务端强制的 START TRANSACTION READ ONLY 中执行,返回列与行
db_execute 写入(INSERT / UPDATE / DELETE / DDL);仅当该连接 allowWrite: true 时可用
db_schema 查看结构:不传 database 列库;传 database 列表;再传 table 可看列、索引与 DDL

只读与写入的两层约束

  1. allowWrite: false(默认)时,db_execute 直接拒绝。
  2. 即使连接可写,每次 db_query 仍在只读事务中执行,MySQL 会拒绝写操作;部分「绕过型」语句(如 SELECT ... INTO OUTFILE、SELECT ... FOR UPDATE、WITH ... UPDATE)同样会被服务端拒绝。

写权限应按连接单独开启;生产环境更稳妥的做法是使用只读数据库账号,而不是轻易打开 allowWrite。

设置页与配置等价

  • 设置 → Databases:增删改连接、只读/读写下拉、Test 当场验连;保存立即生效,无需重启(与手改文件后需 Reload 或重启不同)。
  • 桌面端安装插件后需重启一次应用,设置页才会出现(客户端在启动时扫描插件清单)。
  • 插件目录通过 link: 挂在 profile 上,不要删除、改名或移动,否则会报 cannot resolve profile bundle "dsh-db-connections"。

安装与启用

先在插件目录安装依赖(mysql2、yaml),再装入 profile。README 给出的命令如下,路径请换成你本机实际位置。

cd <path-to>/dsh-db-connections
npm install

桌面端 desktop profile 需使用应用自带的 CLI(Windows 示例路径):

"C:\Program Files\deepseek\resources\runtime\cli\bin\dsh.cmd" ^
  plugin --profile desktop add "<path-to>/dsh-db-connections"

其他 profile(web、tui 或自建)使用普通 CLI:

dsh plugin --profile <name> add /absolute/path/to/dsh-db-connections

dsh plugin add 会写入 profile 的 dsh.profile.bundles;包内 cordis.patch.yml 会插入 id: db-connections 且默认 connections: [](初始不连任何库)。

运行环境:package.json 要求 Node ^22.19.0 || >=24.0.0,许可证 MIT,当前包版本 0.1.0。

配置连接

方式一:设置页(推荐)

在 Settings → Databases 中维护连接。界面语言跟随 DSH shell 的语言设置(通过 ctx.locale 注册词典)。密码在页面上以明文显示与编辑——配置在你自己的文件里,遮罩反而不利于核对错误密码。

方式二:编辑 cordis.patch.yml

在 profile 中完整重写 db-connections 这一行的 config(加载器整段替换,不会深度合并),示例:

- id: db-connections
  name: "dsh-db-connections"
  config:
    connections:
      - name: "128"
        host: 192.0.2.10
        port: 3306
        user: root
        password: "change-me"
        database: appdb
        description: dev database
        allowWrite: false

profile 中 cordis.patch.yml 常见路径:

平台 路径
Windows C:\Users\<you>\.dsh\profiles\desktop\cordis.patch.yml
macOS / Linux ~/.dsh/profiles/desktop/cordis.patch.yml

手改文件后,在设置页点 Reload 或重启应用。通过设置页保存的改动不需要 Reload。

多条连接放在 connections 列表中,name 须唯一。可用 passwordEnv: PROD_DB_PASSWORD 从环境变量读密码(缺失变量会明确失败);与 password 同时存在时以 passwordEnv 为准。设置页保存不会把解析后的密码写回文件,但设置页本身没有 passwordEnv 字段,需手改 YAML 才能使用该方式。

常用配置项还包括:ssl(默认 false)、connectTimeoutMs(默认 10000)、queryTimeoutMs(默认 30000)、maxRows(默认 200,超出会报告而非静默截断)、maxCellChars、connectionLimit 等,详见 README 表格。

典型用法

你不需要直接调用工具名;用自然语言描述意图即可,例如:

  • 「列出 128 上的 schema」→ db_schema
  • 「128 里 sys_user 表长什么样」→ db_schema
  • 「在 128 里查前 10 个用户」→ db_query
  • 「把 128 里 id=1 的 remark 改掉」→ db_execute(连接须为可写)

适用场景与注意

适合需要在 DSH 对话中反复查 MySQL、又希望连接信息集中管理、且默认只读的团队或个人。插件以当前 dsh 进程的权限连接数据库;安装前请阅读源码与 MIT 许可证,确认主机与账号策略符合你的安全要求。错误配置会在插件加载阶段失败,而不是静默连错库。

社区目录当前星标为 0,不代表功能不可用,但采纳前建议自行验证与你使用的 DSH profile 是否匹配。

结尾

dsh-db-connections 把 MySQL 连接收成可命名的配置,对话里用短名驱动 db_query、db_execute、db_schema,默认只读、按连接可选写入,并避免密码进入提示词。更多信息见 目录页 与 GitHub:lb290/dsh-db-connections。

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

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

小夜