dsh-sql:DSH 的數據庫插件,覆蓋連接、只讀查詢、寫審批與結構探查

前言

DSH 的插件體系可以把外部能力掛到 agent 側。數據庫這類能力很常見,但直接讓模型執行任意 SQL 風險較高:讀庫需要穩定,寫庫需要審批,連接配置也需要集中管理。

dsh-sql 提供一套 SQL 工具,定位是工程師級數據庫插件,覆蓋連接管理、只讀查詢、寫操作與結構探查,支持 SQLite / MySQL / PostgreSQL 三引擎。

這是什麼

dsh-sql 是 DSH 插件,圍繞數據庫訪問提供四個工具:

  • sql_list:列出連接並做連通性測試。
  • sql_query:執行只讀查詢。
  • sql_exec:執行寫操作或 DDL。
  • sql_schema:查看錶清單和表結構。

它強調只讀白名單、寫審批門、流式行數鉗制和多連接配置。許可證爲 MIT,運行要求 Node >=22.13。

核心功能

工具邊界

  • sql_list:用於確認當前配置了哪些連接,以及連接是否可用。
  • sql_query:用於只讀查詢,支持 SELECT、PRAGMA、EXPLAIN、SHOW、DESCRIBE、WITH;按關鍵字白名單校驗,並拒絕多語句。
  • sql_exec:用於寫操作/DDL,可執行多語句腳本;受 readOnly 禁用與審批門控制。
  • sql_schema:用於查看錶清單和表結構,並做標識符白名單校驗。

連接與限制

  • 支持 SQLite / MySQL / PostgreSQL 三引擎。
  • 支持多連接配置。
  • 查詢返回行數上限 maxRows 範圍爲 1-10000。
  • queryTimeoutMs 默認 60 秒,範圍 5 秒到 10 分鐘。
  • execTimeoutMs 默認 120 秒,範圍 5 秒到 10 分鐘。
  • 密碼支持環境變量 DSH_SQL_PASSWORD_<連接名>,例如連接名爲 prod 時使用 DSH_SQL_PASSWORD_PROD。

安裝與啓用

在 Web profile 下安裝:

dsh plugin --profile web add dsh-sql

安裝後,sql_list、sql_query、sql_exec、sql_schema 可在 DSH 插件側使用。該插件已在 @deepseek-ai/dsh@0.1.2-alpha.4 源碼模式下驗證,驗證日期爲 2026-09-02。

典型用法

下面示例來自已覈實用法:

sql_list {}
sql_schema {}
sql_schema { table: users }
sql_query { sql: SELECT * FROM orders WHERE status = 'pending' LIMIT 50 }
sql_exec { sql: UPDATE orders SET status = 'paid' WHERE id = 42 }

sql_list 用於先看有哪些連接是否可用;sql_schema 用於看錶結構;sql_query 用於只讀查詢;sql_exec 用於寫操作,默認會觸發審批。headless 環境無審批通道時,sql_exec 會拒絕執行。readOnly 爲 true 時,sql_exec 被禁用。

適用場景與注意

適合需要在 DSH 中接入數據庫、同時限制模型只讀或審批寫庫的場景。若連接生產庫,建議把寫操作放在受審批的環境中,並考慮使用 readOnly: true。密碼優先使用 DSH_SQL_PASSWORD_<連接名> 環境變量,不要寫入可公開配置。

使用前應將 dsh-sql 視爲以當前 dsh 進程權限運行:它能訪問的數據庫取決於該進程的連接與權限。安裝前建議先檢查源碼與許可證。卸載後需重啓 Web 服務;如需徹底清理,可手動刪除自己 profile cordis.patch.yml 中覆蓋的插件行。

結尾

dsh-sql 的價值在於把數據庫訪問拆成四個邊界更清晰的工具:列連接、讀查詢、受控寫、結構探查。這樣既能讓 agent 查庫,也能把寫操作限制在審批和只讀策略內。

倉庫:STARDUSTLC666/dsh-sql

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

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

小夜