dsh-db-connect:DSH 內網數據庫連接與元數據瀏覽

前言

在 DSH 裏讓助手理解內網數據庫結構,常見做法是外掛 SQL 客戶端、手工導出 DDL,或依賴與業務系統綁定的工具鏈。這些路徑往往帶來憑證散落、驅動環境不一致,或把未脫敏的連接信息寫進模型上下文等問題。下面介紹 stitchmaps 維護的獨立插件 dsh-db-connect:在 DSH 客戶端內完成連接配置、驅動診斷、連通性測試,以及分頁瀏覽 schema → 表 → 列;它不依賴 HZsql、SQLBot、hz-workbench、traffic-domain 資產或其憑證體系。

這是什麼

dsh-db-connect(GitHub:stitchmaps/dsh-db-connect)是面向 DeepSeek Harness 的客戶端插件,當前版本 0.2.0。定位是內網數據庫連接與元數據瀏覽:Oracle(含 11.2 Thick)、PostgreSQL、MySQL、MariaDB、SQL Server、SQLite。README 明確:不執行任意 SQL、不讀應用行數據、不寫庫、不提供語義層;Redis、MongoDB、達夢等未實現。

核心功能

連接與驅動

  • 多引擎連接配置;Oracle 支持 Thick/Thin、Service Name/SID,可指定 Oracle Client 目錄。
  • Windows 下憑據靜態存儲使用 CurrentUser DPAPI;公開 API 不返回密碼,模型工具參數/結果中也不 echo 命令行密鑰。
  • Databases → Runtime 中配置獨立 Python 解釋器絕對路徑並運行診斷;留空時 Host 依次嘗試 DSH_DB_PYTHON 與 PATH 上的 Python,不依賴 DSH 私有 bundled runtime 佈局。
  • 每條連接默認不對助手開放元數據;需顯式啓用。

元數據瀏覽

  • 分頁查看列詳情(數據類型、可空、默認值、註釋)及鍵/結構視圖(主鍵、唯一與其他索引、外鍵)。
  • 中英文 UI,使用 DSH theme tokens。

Host 與模型工具

  • 共享 Host 應用服務承載 UI 與模型工具;子進程有界,支持取消與 deadline。
  • db_connections:僅返回已顯式啓用的連接 ID、標籤、類型與 revision。
  • db_inspect:動作包括 test、schemas、tables、columns、indexes;分頁默認 100 行、最大 200,通過 hasMore 與 offset 翻頁。columns 返回類型與註釋等;indexes 返回單表主鍵、索引與外鍵結構。
  • 工具不能創建連接、改密鑰、自授權或改 Python 設置;元數據視爲不可信數據而非指令。

驅動矩陣(摘要)

數據庫 要點
Oracle 11.2 oracledb==3.4.2,Thick;推薦 Client 19c Basic,與 Python 架構一致
Oracle 12.1+ 同上驅動,Thin 或 Thick;Thin 無法連 11g
PostgreSQL psycopg[binary] 3.x;默認 TLS verify-full
MySQL / MariaDB PyMySQL[rsa] 1.x;默認校驗證書
SQL Server pyodbc 5.x;需單獨安裝 ODBC Driver 18
SQLite 標準庫 sqlite3;絕對路徑,URI mode=ro 與 query_only

其他驅動依賴見倉庫 python/requirements.txt。插件啓動時不下載包、不訪問公網服務;@deepseek-ai/dsh-tools 由 DSH 提供 peer 包。

安裝與啓用

API 基線爲 DSH 0.2.1-rc.3;manifest 聲明 >=0.2.1-rc.3 <0.3.0。舊版 DSH 0.1.6 桌面不兼容。Node 要求 >=22.19.0(見 package.json)。

官方步驟如下(安裝命令以 README 爲準,勿手動追加 insert 條目):

  1. 從 GitHub Releases 下載 dsh-db-connect-0.2.0.tgz,或通過倉庫目錄,使用當前 DSH 插件管理器的本地包安裝能力,傳入絕對路徑安裝。
  2. 準備獨立 Python 環境(README 推薦 Windows x64 Python 3.12)。SQLite 僅用標準庫;其餘驅動按 python/requirements.txt 安裝。
  3. 打開 Databases → Runtime,設置解釋器絕對路徑並運行診斷。
  4. 添加並保存連接,再測試並瀏覽結構(僅保存不會連庫)。
  5. 若需助手使用,再顯式啓用該連接的 assistant access。

注意:修改 Python 路徑會清空已有密碼與 assistant 授權;修改端點、用戶名、庫名、Oracle 模式/Client 目錄或 TLS 配置需重新輸入密碼。應先配置解釋器,再添加連接。

內網離線部署可參考 README 中的 PowerShell 腳本(prepare-offline.ps1 / setup-runtime.ps1),在匹配 OS、架構與 Python 主次版本的前提下準備 wheelhouse 並在目標機 --no-index 安裝。

典型用法

客戶端工作流

  1. 安裝插件並配置 Runtime Python,直至診斷通過。
  2. 新建連接(按引擎填寫主機、庫/SID、TLS 等),保存後點測試。
  3. 在 UI 中分頁瀏覽 schema、表、列與索引結構。
  4. 對允許助手訪問的連接勾選啓用;模型側即可調用 db_connections 與 db_inspect 拉取元數據(仍不執行任意 SQL)。

模型工具分頁示例(概念)

對某已啓用連接調用 db_inspect,例如 action: "tables"、schema: "<name>",默認頁大小 100;若響應 hasMore: true,下次傳入更大 offset 繼續讀取,單頁不超過 200。

適用場景與注意

適合:需要在 DSH 內統一管理內網庫連接、做驅動自檢、讓助手在受控策略下查看錶結構(而非跑 ad-hoc 查詢或讀業務數據)的團隊。

務必知曉:

  • 插件以當前 DSH 進程所在用戶權限運行;DPAPI 無法隔離同 Windows 用戶下任意代碼;與 DSH 終端/文件工具共享同一身份。應對庫賬號最小權限,並按內網策略決定是否啓用 assistant access。
  • 配置持久化在 <DSH_HOME>/dsh-db-connect/connections.json(默認 ~/.dsh/)。損壞的配置fail closed,不會靜默覆蓋;跨機器或 Windows 賬戶需重錄密碼。
  • 安裝前請閱讀源碼與 MIT 許可證;社區目錄 skillhub.cn 插件頁 與 GitHub 爲獨立信息源,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-db-connect 把內網多引擎連接、驅動診斷與分頁元數據瀏覽收進 DSH 客戶端,並與 HZsql 等生態解耦;0.2.0 範圍止於連接與元數據,不替代 SQL 客戶端或數據訪問層。進一步瞭解可查看 GitHub 倉庫(含中文 README.zh.md、架構與驗證文檔)及 目錄頁。

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

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

小夜