🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

数据库工作台 mektpoy/dsh-db-studio

DeepSeek Harness
mektpoy17 天前有提交已提供中文文档扫描:含敏感能力

DeepSeek Harness 的数据库管理插件。左侧一个侧边栏入口,主区域一个面板:保存连接、浏览表结构、跑…

30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add mektpoy/dsh-db-studio
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · browser
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 5 处,展示前 5 条)
  • 读取本地文件
    index.js:20
    const manifest = JSON.parse(readFileSync(join(HERE, 'package.json'), 'utf8'))
  • 发起网络请求
    client.js:81
    const response = await fetch(`${API}/action`, {
  • 写入本地文件
    lib/store.js:105
    mkdirSync(this.directory, { recursive: true })
  • 读取本地文件
    lib/sqlite-driver.js:116
    try { bytes = statSync(this.connection.path).size } catch { }
  • 读取本地文件
    lib/sqlite-driver.js:363
    try { fileBytes = statSync(this.connection.path).size } catch { }
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的数据库管理插件:保存 SQLite 连接、浏览 schema、带只读保护的 SQL 执行器,还有智能体可调用的 db 工具。

README

由 DeepSeek 最新模型翻译生成
DB Studio DeepSeek Harness 的数据库管理插件。左侧一个侧边栏入口,主区域一个面板:保存连接、浏览表结构、跑 SQL、看执行计划、翻结果集。模型也能通过 db 工具查同一批连接,走同一套只读规则。 支持 SQLite 与 PostgreSQL。SQLite 用运行时自带的 node:sqlite,不需要任何依赖;PostgreSQL 需要 pg(安装本包时一并装上)。 它解决的问题 在对话里让模型查数据库,最难的不是写 SQL,是两件事: 1. 模型不知道自己面对的是哪个库、有哪些表。 于是它猜表名、编字段,你得来回纠正。 2. 模型有可能改坏数据。 一次 DELETE 没写 WHERE 就结束了。 DB Studio 对这两件事各给一个具体机制:把连接和表名直接放进模型每次看到的上下文;把「这条语句会不会改库」在执行前判定一次,只读连接直接拒绝。 功能 | 功能 | 说明 | | 连接管理 | SQLite 文件路径,或 PostgreSQL 的 host / port / 数据库 / 用户 / 密码 / TLS。带名称、只读开关;密码存进 Harness 凭据库,不写进插件库。测试连接返回版本与库大小。 | | 结构浏览 | 表与视图列表、行数、列类型、主键、非空、默认值、索引、外键、建表语句。
展开完整文档(README 剩余 1 节)
DB Studio

DeepSeek Harness 的数据库管理插件。左侧一个侧边栏入口,主区域一个面板:保存连接、浏览表结构、跑 SQL、看执行计划、翻结果集。模型也能通过 db 工具查同一批连接,走同一套只读规则。

支持 SQLite 与 PostgreSQL。SQLite 用运行时自带的 node:sqlite,不需要任何依赖;PostgreSQL 需要 pg(安装本包时一并装上)。

它解决的问题

在对话里让模型查数据库,最难的不是写 SQL,是两件事:

1. 模型不知道自己面对的是哪个库、有哪些表。 于是它猜表名、编字段,你得来回纠正。
2. 模型有可能改坏数据。 一次 DELETE 没写 WHERE 就结束了。

DB Studio 对这两件事各给一个具体机制:把连接和表名直接放进模型每次看到的上下文;把「这条语句会不会改库」在执行前判定一次,只读连接直接拒绝。

功能

| 功能 | 说明 |
| 连接管理 | SQLite 文件路径,或 PostgreSQL 的 host / port / 数据库 / 用户 / 密码 / TLS。带名称、只读开关;密码存进 Harness 凭据库,不写进插件库。测试连接返回版本与库大小。 |
| 结构浏览 | 表与视图列表、行数、列类型、主键、非空、默认值、索引、外键、建表语句。SQLite 的行数超过 10 万显示为 10 万+;PostgreSQL 用 pg_class.reltuples 的估算值并标注为估算。 |
| 数据浏览 | 分页(25/50/100/200)、点表头排序、整表关键字搜索、CSV / JSON 导出。 |
| SQL 执行 | 多语句、Ctrl+Enter、耗时与行数回报、结果网格、错误原文回传。结果默认最多 200 行,被截断时在结果旁写明只返回前 N 行。 |
| 只读保护 | 连接级只读;语句级判定(WITH ... DELETE 也算写);可写连接还需要显式勾选才执行改动语句。PostgreSQL 上再加一层 default_transaction_read_only,由服务器自己拒绝。 |
| 执行计划 | SQLite 用 EXPLAIN QUERY PLAN,PostgreSQL 用 EXPLAIN (FORMAT TEXT),结果都进网格。 |
| 查询历史 | 最近 500 条语句,含成功/失败、耗时、行数、错误原文;点一条载入编辑器。 |
| 模型上下文 | 每次组装 prompt 时带上一段连接与表名摘要(1400 字符以内,60 秒内复用)。数据库连不上时写「打不开」,不写空表。 |
| db 工具 | 模型可直接调用:列连接、加/删连接、测试、读结构、翻页、跑 SQL、看计划、导出、查历史。 |

两种数据库各有什么不同

| 方面 | SQLite | PostgreSQL |
| 地址 | 文件路径 | host / port / 数据库 / 用户 / TLS |
| 对象名 | 表名 | schema.table;public 省略,其他 schema 必须写 |
| 行数 | 精确计数,最多扫 10 万行 | 目录里的估算值;schema 里会标 rowsEstimated |
| 建表语句 | sqlite_master 里存的原文 | 没有原文,按列、主键、外键、索引重建,标注为重建结果 |
| 只读 | 以 readOnly 打开文件,同时拒绝写语句 | 拒绝写语句,并设置 default_transaction_read_only |
| 超时 | 无(本地文件,查询很快) | statement_timeout 30 秒,连接超时 8 秒 |

安装

在 DSH 里用插件管理器安装本地目录:

plugin_manager
action: install_bundle
target: <本仓库的绝对路径>

install_bundle 会执行 pnpm install,把 pg 一起装进 profile。安装后侧边栏会出现「数据库」入口。插件主机半的改动需要重启 Host;浏览器半的改动需要重启后刷新页面(打包后的 bundle 按内容哈希缓存)。

面板怎么用

- 左栏顶部是连接列表,+ 新增。类型选 SQLite 或 PostgreSQL,填对应字段。密码框留空表示沿用已保存的密码。
- 点连接会读取结构,下面出现表与视图。
- 点一张表进入「数据」,可以直接搜索、排序、翻页、导出。
- 「结构」显示列、索引、外键和建表语句。
- 「SQL」是编辑器。可写连接上有一个「允许改动语句」勾选框,不勾就只跑读语句。
- 「历史」是这条连接最近的执行记录。

模型怎么用

工具名是 db,一个 action 参数决定操作:

| action | 用途 | 主要参数 |
| connections | 列出保存的连接 | — |
| add_connection | 保存一个连接 | driver、path 或 host / port / database / username / password / ssl、name、readOnly |
| remove_connection | 删除一条连接记录 | connection |
| test | 打开并回报版本、大小 | connection |
| schema | 列全部对象,或一张表的完整结构 | connection、table(可选) |
| preview | 翻一页表数据 | table、limit、offset、order、dir |
| query | 执行 SQL | sql、limit、allowWrite |
| explain | 执行计划 | sql |
| export | 导出 CSV / JSON 文本 | sql 或 table、format |
| history | 最近的执行记录 | connection、limit |

connection 可以写 id,也可以写名称;只保存了一个连接时可以省略。

只读与写操作的确切规则

判定发生在执行之前,规则只有一处(lib/sql.js::classifyStatement):

1. 按分号切语句,字符串字面量和注释里的分号不算分隔符。
2. 每条语句只取主语句的动词:EXPLAIN 视为读;PRAGMA 含 = 视为写;WITH 取括号外第一个数据动词,所以 WITH x AS (SELECT 1) DELETE FROM t 是写。
3. SELECT / EXPLAIN / 不带赋值的 PRAGMA 算读;INSERT / UPDATE / DELETE / REPLACE / DDL / 事务控制 / ATTACH 算写;认不出的动词一律按写处理。
4. 只读连接遇到写语句直接拒绝,并说明是第几条语句。
5. 可写连接上,写语句还要 allowWrite: true(面板里就是那个勾选框)。
6. 多条写语句在一个事务里执行,任意一条失败整批回滚。

密码怎么存

密码不进 studio.db。Studio 把它交给 Harness 的凭据服务,引用名是 DB_STUDIO_PASSWORD_<连接 id 大写去横线>,落盘在 ~/.dsh/.credentials.yaml;每次操作前重新解析,改了密码下一次操作就生效,不需要重启。

Harness 没有凭据服务时,保存 PostgreSQL 连接会失败并说明原因——不会退回到把密码写进插件库。

配置

插件行配置就两项:

| 键 | 默认 | 说明 |
| dataDir | <DSH home>/dsh-db-studio | 连接表与查询历史的存放目录(studio.db) |
| allowWriteByDefault | false | 新增连接默认是否可写。默认只读,写入要你在面板里显式打开。 |

加一种数据库要改什么

驱动契约是 lib/studio.js::openDriver 选中的那个类,方法都是异步的:

open / close / test / objects / describe / preview / run / explain / stats

lib/sqlite-driver.js 与 lib/postgres-driver.js 是两个实现。加 MySQL 之类就是再加一个文件,并在 openDriver 里认一个 driver 名;面板的字段与 db 工具的 driver 枚举各加一项。

明确不做的

调研了 DBeaver、DataGrip、TablePlus、Navicat、Beekeeper Studio、pgAdmin、HeidiSQL、Adminer、Letos(原 SQLiteStudio)等产品之后,这几项对「让模型看懂库 + 让执行有边界」几乎没有帮助,但成本最高,所以不放进路线:

- ER 图:要图的话把建表语句导出去,交给 ChartDB 或 drawDB。
- 结构与数据 diff:类型映射、列顺序、默认值表达差异,代价远高于收益。
- 用户与权限管理:改错权限的后果比省下的操作重。
- 图表分享与协作:需要账号体系和存储。

行内编辑数据也不做:主键变更、类型转换、并发冲突三件事都要处理,而执行 SQL 已经能改。

开发

node --test 'test/.test.mjs'

SQLite、语句判定、连接存储、历史与工具层不需要外部服务。PostgreSQL 用例在给了服务器时才跑:

DB_STUDIO_TEST_PG_HOST=... DB_STUDIO_TEST_PG_PORT=5432 \
DB_STUDIO_TEST_PG_DATABASE=... DB_STUDIO_TEST_PG_USER=... \
DB_STUDIO_TEST_PG_PASSWORD=... node --test 'test/postgres.test.mjs'

这些用例只读:它们从服务器上找一张已有的表来验证结构、分页和执行计划,唯一的写用例检查的是「写被拒绝」,不会真的改数据。

DB Studio is a database management plugin for DeepSeek Harness. It adds a sidebar panel with saved connections, an object tree, a paged data grid, a schema view, a SQL runner, query plans and query history — and a db tool the model can call under the same rules.

It speaks SQLite through the runtime's built-in node:sqlite (no dependency) and PostgreSQL through pg.

Two mechanisms carry most of the value:

- The model is told what the database contains. Every prompt assembly carries a bounded digest of saved connections and their table names, so the model stops guessing table names. The digest refreshes in the background, so a slow server never delays a prompt.
- Writes have a boundary. Read-only is per connection, statement classification runs before execution, an unrecognised verb counts as a write, and a writable connection still needs an explicit allowWrite per call. PostgreSQL read-only connections also set default_transaction_read_only, so the server refuses even if a rule is missed. Multi-statement writes run in one transaction.

Passwords go to the Harness credential store, never to the plugin database.

Install with plugin_manager action=install_bundle target=<absolute path to this repository>, then run node --test 'test/.test.mjs' to check it.

MIT licensed.

许可

MIT。
预览分享卡片长什么样 ↓mektpoy/dsh-db-studio
分享 · DeepSeek Harness Hub
mektpoy/dsh-db-studio

DeepSeek Harness 的数据库管理插件。左侧一个侧边栏入口,主区域一个面板:保存连接、浏览表结构、跑…

这是你的仓库?认领条目

回到顶部