dsh-mysql:为 DSH 添加 MySQL 连接与受控数据库工具

前言

在 DSH 中让智能体操作 MySQL 时,常见的问题是连接配置分散、不同会话误选数据库、工具权限边界不够清晰。dsh-mysql 把 MySQL 连接配置、会话选择和数据库工具放在同一个 Web profile 插件里:先在设置页维护连接,再按会话选择连接,最后让 Agent 用受控工具查表或执行查询。

这是什么

dsh-mysql 是一个面向 DeepSeek Harness(DSH)的插件,仓库名为 1321928757/dsh-mysql,采用 MIT 许可证。

它为 DSH 的 Web profile 提供三件事:

  • 多套 MySQL 连接的设置页;
  • 输入框旁边的按会话数据库选择器;
  • 面向所有 Agent 预设可用的 mysql_tablesmysql_querymysql_execute 工具。

插件不需要修改 Agent 预设。工具由 profile bundle 全局注册,注册后对所有 Agent 预设可用。

核心功能

连接管理

插件提供设置页,用于管理多套 MySQL 连接。可执行的操作包括添加、编辑、删除和测试连接。

每条连接可配置:

  • host
  • port
  • user
  • password
  • default database
  • table scope
  • write permission

连接表单当前不暴露 SSL/TLS、Unix socket/named-pipe 或 charset 选项。

会话选择

输入框旁边提供数据库选择器。当前会话选择的连接会显示在输入框附近,并可以随时更改。

一个会话中切换连接,不会隐式改变另一个会话的连接选择。

受控数据库工具

插件向所有 Agent 预设提供三个工具:

mysql_tables

用于发现默认数据库中的表。插件在 DATABASE() 中发现表;如果希望进行 schema discovery,需要为该连接配置 default database。未配置默认数据库的连接可能返回空表列表。

mysql_query

用于执行查询并返回结果。结果最多返回 2,000 行,并带有 truncated 标志。

涉及 MAX_EXECUTION_TIME 的优化提示面向 MySQL 5.7.8+ 等支持该提示的版本;MariaDB 可能对该提示的处理不同。

mysql_execute

用于执行写操作,要求连接配置中启用 allowWrite: true

mysql_execute 会拒绝 DDL、事务控制语句、多语句 SQL 以及其他不允许的语句类型。

默认只读与本地配置

插件默认只读。写权限是每条连接的显式配置,并且默认关闭。

配置采用 local-first 方式:浏览器收到的是安全的连接视图,包含 hasPassword,不会收到已存储的密码。连接设置和密码保留在本地 DSH 存储中。

数据边界需要注意:当 Agent 使用数据库工具时,数据库 schema 和查询结果会作为普通工具输出发送给 LLM provider。

安装与启用

使用前需要满足:

  • 已安装带 Web profile 的 DSH;
  • Node.js 20 或更高版本。

从 GitHub 安装 v0.1.10

dsh plugin --profile web add github:1321928757/dsh-mysql#v0.1.10

安装完成后,重启 dsh web

可以用下面的命令确认该 bundle 是否出现在 web profile 配置中:

dsh --profile web --dump-config | findstr dsh-mysql

如果不再需要,可以移除:

dsh plugin --profile web remove dsh-mysql

典型用法

下面介绍一个常见的只读查询流程。

1、打开 Settings → MySQL 数据库,添加一条连接并测试连接。

连接信息至少包括 hostportuserpassworddefault database。如果只想允许 Agent 读取特定范围,可以配置 table scope。写权限默认不要开启。

2、回到会话页面,点击输入框旁边的数据库按钮,选择当前会话要使用的连接。

3、让 Agent 先查 schema,再执行查询。可以这样描述:

Use mysql_tables to inspect the available schema first, then use mysql_query to answer my question. Do not modify data.

经过上面的步骤后,Agent 会在当前会话选择的连接上工作。默认情况下只能读,不能写。

适用场景与注意

适合在 DSH Web 中接入 MySQL、希望按会话选择数据库,并让 Agent 使用受控工具处理表结构和查询结果的场景。

使用前需要确认以下几点:

  • 插件以当前 dsh 进程权限运行;安装前应检查源码和许可证。
  • 许可证为 MIT。
  • 连接密码保留在本地 DSH 存储中,但 Agent 使用工具时,schema 和查询结果会作为工具输出发送给 LLM provider。
  • mysql_execute 只有在 allowWrite: true 时才可用,并且会拒绝 DDL、事务控制语句、多语句 SQL 和其他不被允许的语句类型。
  • mysql_query 最多返回 2,000 行,并带有 truncated 标志。
  • 连接表单不暴露 SSL/TLS、Unix socket/named-pipe 或 charset 选项。
  • MAX_EXECUTION_TIME 优化提示面向 MySQL 5.7.8+ 等支持该提示的版本;MariaDB 可能处理不同。

链接

  • 目录页:在 DSH 插件目录中检索 dsh-mysql 条目;具体 URL 以当前目录检索结果为准。
  • GitHub:https://github.com/1321928757/dsh-mysql
羽毛球分组比赛记分
小程序二维码

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

Xiaoye