Passer au contenu principal
X

dsh-database-explorer

xing-he888/dsh-database-explorer

Explorateur de bases de données pour DeepSeek Harness : connexion à SQLite, MySQL, PostgreSQL, SQL Server, MongoDB, ClickHouse, Redis, Elasticsearch et Qdrant (base vectorielle). Prend en charge des moteurs NoSQL et vectoriels sans dépendances, permet de parcourir les schémas et d’exécuter du SQL.

Installer

dsh plugin --profile web add github:xing-he888/dsh-database-explorer

README

dsh-database-explorer

npm license

DeepSeek Harness 的数据库浏览器插件——在对话区「数据库」页签里,像 PyCharm 的 Database 面板一样直接浏览、查询、修改你的数据库。

A PyCharm-Database-style database panel for DeepSeek Harness, as a third Conversation tab.


它能做什么

支持的数据库(9 种)

类型引擎说明
SQLSQLite内置 node:sqlite,开箱即用,零驱动
SQLMySQL / MariaDBmysql2 驱动
SQLPostgreSQLpg 驱动(含 pgvector:ORDER BY embedding <=> '[…]')
SQLSQL Servermssql 驱动
SQLClickHouse@clickhouse/client
NoSQLMongoDBmongodb 驱动,查询框收 JSON 命令文档
NoSQLRedis零依赖(RESP2 协议自实现),按 key 类型分组浏览
NoSQLElasticsearch零依赖(Node 原生 fetch),便捷搜索或原始 REST
向量Qdrant零依赖,向量搜索 / scroll / payload 浏览

SQL 驱动为可选依赖:装哪个用哪个,不用的不用装。

面板功能

  • 结构树:连接 → 库/Schema → 表/视图 → 字段,点击逐级展开;MySQL 大库内省走两条 information_schema 全量查询(300 表不再 300 次往返)
  • 浏览数据:点表名直接看数据,服务端 LIMIT/OFFSET 分页(50–1000 行/页),表头排序、过滤(值参数化防注入)
  • 编辑数据:双击单元格回车保存(按主键参数化 UPDATE,主键列标 🗝,无主键表只读);➕ 新增行表单插入;行内删除
  • 建表 / 改表:可视化设计器,字段名/类型/主键/自增/唯一/默认值/外键全部点选,可先预览 SQL 再执行
  • 删表:表行 🗑 一键 DROP TABLE——要求手输表名确认(按钮在匹配前禁用),宿主侧二次校验,只读连接拒绝,删除与失败尝试都进审计
  • 导入 / 导出:CSV(Excel 友好 BOM)/ JSON / SQL INSERT / Markdown 表格导出(上限 10 万行,SQL 层限流不撑内存);CSV / JSON 导入带映射预览(dryRun 不写库)
  • E-R 关系图:外键自动布局 + SchemaSpy 式命名推断(无外键约束的库也能画),表视图 / Chen 概念图两种画法;可编辑——拖动、改名、改基数、手工建实体和联系,「还原」一键回到数据库真实结构
  • 单元格查看器:长文本 / JSON 格式化 / PNG·JPEG 预览 / 二进制 hex,一键复制
  • 查询历史:最近 100 条,localStorage 持久化
  • 连接档案导入 / 导出:⬆/⬇ 一键迁移,导出永远脱敏(不含任何形式密码),换机器不用手抄
  • 写操作审计:所有写操作(含只读连接上被拒绝的尝试)逐条入账,面板 📜 查看最近 200 条,支持单条删除与清空(删除动作本身也留痕)

在聊天里直接用(agent 工具)

安装重启后,10 个工具自动注册给 DSH 的 AI 助手,聊天里直接说:

  • “列出我的数据库连接” → db_list_connections
  • “users 表前 10 行” → db_connect + db_peek_page
  • “这个库有哪些表和字段?” → db_schema / db_describe_table
  • “users 和 orders 是什么关系?” → db_er_graph

调用过程与结果摘要在会话中实时展示。密码永不进入对话——工具没有密码参数,连接一律使用面板记住的凭据。

接入任意 AI 客户端(MCP 出口)

零依赖 MCP stdio 服务器(lib/mcp.js),与面板共享连接档案和安全规则。在 Claude Desktop / Cursor 等客户端注册:

{ "command": "node", "args": ["<插件目录>/lib/mcp.js"], "env": { "DSH_HOME": "可选,默认 ~/.dsh" } }

安装

方式一:dshmarket 市场(推荐)— 在 DSH 设置 → 插件 → 市场里搜 dsh-database-explorer,点安装。

方式二:命令行

npm install -g dsh-database-explorer   # 或
dsh plugin --profile web add dsh-database-explorer

安装后必须完全退出并重启 DSH Desktop(托盘右键退出,不是刷新页面)。插件的后端注册在 DSH 进程里,页面刷新更新不到它;升级后前后端版本不一致时,面板顶部会挂红色横幅明确提醒。


快速上手

  1. 打开对话区 数据库 页签(聊天、轨迹旁边)
  2. 点 + 新建连接:选类型、填主机/端口/账号,勾 记住密码 重启免输;生产库建议勾 🔒 只读
  3. 展开连接,点表名——右侧出数据
  4. 双击单元格改数据,或点 ➕ 行 插入、⤓ 导出、⤒ 导入
  5. 工具条 📜 看写操作审计,⛓ 画 E-R 图,+ 建表;表行 🗑 删表(强确认:手输表名才能执行)

安全模型

三层写权限

层机制效果
连接级只读连接编辑勾选 🔒 只读该连接一切写路径被硬拒绝:面板写操作、agent 写工具、SQL/原生命令统一按语句预检(仅放行单条读语句;redis 按读命令白名单、mongo 仅 find/count/aggregate、es/qdrant 仅读端点)。SQLite 只读模式打开文件、pg 会话级只读、ClickHouse readonly=1 引擎级兜底
agent 写工具授权默认关闭SQL 执行 / 改格 / 插行 / 删行需在 ~/.dsh/plugin-data/dsh-database-explorer/ 创建空文件 agent-write-tools 显式授权(重启生效),删除文件即收回。模型不可自授
写操作审计自动改格/删行/插行/导入/建表/改表/删表/写 SQL(含被拒尝试)逐条记入 plugin-data/dsh-database-explorer/audit-log.jsonl(超 5MB 轮转一代)。面板 📜 查看;删除记录/清空日志的动作本身也会留痕

推荐用法:生产库建两个档案——「生产库 🔒 只读」日常浏览随便点,「生产库(可写)」真正要改数据时才连。

密码安全

  • 默认只在内存;勾「记住密码」后 Windows 落盘自动经 DPAPI(CurrentUser) 加密为 dpapi:v1:<密文>,connections.json 不再有明文(防文件外流;不防同用户本地进程,DPAPI 语义如此)
  • agent 工具 / MCP 无密码参数,一律复用面板记住的凭据
  • 档案导出永远脱敏

网络围栏

所有接口同源校验 + Host 白名单(localhost / 127.0.0.1 / ::1),防 DNS rebinding;DSH 供局域网使用时,非本机请求返回 403 并说明原因。本插件仅允许本机浏览器访问。


排障

症状原因与处理
没有「数据库」页签完全退出 DSH Desktop 重启(后端注册在 DSH 进程里,刷新页面无效)
面板顶部红色版本横幅前后端版本不一致(升级后没重启)——完全退出重启即消
连接报「缺少驱动」SQL 驱动必须装进 DSH profile 的 node_modules(市场 / dsh plugin add 会装好;游离在 profile 外的插件副本装不了驱动)
局域网另一台机器打开是 403设计如此:本插件仅允许本机访问,在本机浏览器打开
单元格双击不能编辑该表无主键(防误改),或当前连接是只读连接,或结果来自 SQL 查询(SQL 结果一律只读)
ES 深分页报错Elasticsearch from+size 引擎限制(>10000),用 scroll 或收窄条件

开发

npm test              # 全量回归(8 个套件,含真实 SQLite 边界用例)
npm run release       # 发布流水线:版本握手 → pack 清单闸门(拦截 lib/package.json 遮蔽宿主包定位)→ 三副本同步 → 回归 → git tag → npm publish

架构:宿主半区(lib/index.js 路由 + lib/connections.js 连接管理 + lib/tools.js agent 工具 + lib/mcp.js MCP 出口)运行在 DSH 进程;浏览器半区(lib/client.js)经 dsh.client 声明注入对话区。注意:lib/ 目录下不要放名为 package.json 的文件——DSH 从模块位置向上找最近清单,会遮蔽包根配置导致 UI 无法注入(release 流水线已加闸门拦截)。

Source / 源码

https://github.com/xing-he888/dsh-database-explorer

License

MIT

Plugins associés