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_tables、mysql_query 和 mysql_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 數據庫,添加一條連接並測試連接。

連接信息至少包括 host、port、user、password 和 default 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
羽毛球分组比赛记分
小程序二维码

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

小夜