用 dsh-data-agent 让 DeepSeek Harness 连上数据库写 SQL 并迭代

前言

让大模型写 SQL,现在已经不算新鲜事。难的是写完之后:语句能不能在真实库上跑通,报错了要不要改 JOIN,结果和业务问题对不上时,下一步该拆哪个维度。很多助手只能根据静态表结构或几句注释生成一段 SQL,执行、读结果、再改写,往往还得人来回粘贴。

DeepSeek Harness(以下简称 DSH)把这件事放进了插件体系里。官方仓库把核心理念写成「一切皆插件」:模型、工具、会话、UI 都可以在配置层装卸,不必改 Harness 源码。社区里有人专门做了一层「数据模式」:会话里连上数据库,只保留写 SQL、跑查询、改文件这几类能力,让模型对着真实执行结果迭代。这个插件叫 dsh-data-agent,收录在独立的社区插件目录 deepseek-harness-plugin.com 中。该目录与 DeepSeek / 幻方没有官方从属关系,不是官方应用商店。

本文按插件目录页、GitHub 仓库 README、package.json 和 npm 包页面交叉核对后整理:它是什么、装哪条命令、Web UI 和终端里怎么用,以及连生产库之前要看清的权限边界。

这是什么

dsh-data-agent 是一款面向 DeepSeek Harness 的数据分析插件,目录分类为「会话与消息」,由 GitHub 组织 omdsh-dev 维护,仓库地址为 omdsh-dev/dsh-data-agent。npm 包名是 @yejiming/dsh-data-agent,当前版本为 0.0.9(发布于 2026-08-16)。许可证为 MIT。目录页标注主要语言为 TypeScript;仓库同时提交了构建产物 lib/,安装时不必本地编译。截至 2026-08-17 查询,GitHub 显示 34 stars。

目录页给它的一句话是:会话级数据库连接,加上专用预设,让 AI 写 SQL 并迭代。仓库 README 把使用方式说得更具体:连上库之后用自然语言提业务问题,DSH 会查看表结构、编写并执行 SQL,再根据报错或返回数据继续调整,而不是停在一段未经验证的语句上。插件同时挂到 Web UI 和 dsh-tui,不修改 DSH 源码。

它要填的坑,README 写得很直接:模型写代码已经比较强,但 SQL 逻辑经常写不对,原因是没有和数据库操作形成 Agent Loop——感知不到执行结果,也就无法按报错或返回行动态调优。

核心功能

下面几条都来自当前仓库 README 与 package.json 描述,不额外发挥。

1. 把「写 SQL」放进 Agent 循环

连接成功后,会话按数据分析工作流处理后续问题。模型会根据当前问题查看库表、生成 SQL、执行查询,并结合报错或真实结果继续改写。你可以追问,分析沿同一会话上下文深入,而不是每轮重新从零猜表名。

README 举的入口问题是:分析最近 30 天订单变化,找出销售额下降最明显的地区和商品,并解释主要原因。插件不会保证分析结论一定正确,它提供的是「查结构 → 执行 → 根据结果再查」这条闭环。

2. 数据模式:收窄工具面

会话会启用名为「数据模式」的 Agent 预设(预设标识 data-agent)。按 README,这个模式下:

  • 文件操作用 DSH 原生的 str_replace_editor
  • 数据相关工具保留 sql-querysql-writesql-cmd
  • Web 界面额外提供 render-analysis
  • describe_imagessh_* 等宿主或社区插件工具不会进入数据模式

目的是让模型把上下文花在查库和写 SQL 上,而不是同时去 SSH、看图或调用一堆无关工具。package.json 也把能力概括为:共享的数据库连接、带掩码的 TUI 表单、credential reference、SQL 工具,以及 data-agent 预设。

3. 会话级连接,覆盖常见业务库

支持的数据库类型,README 列出的是 MySQL、PostgreSQL、SQLite、Oracle、Hive、Impala,覆盖业务库、分析库、本地文件和数仓场景。连接按会话隔离:不同会话可以连不同项目、客户或环境,不会混用同一条连接。

Web UI 内嵌数据库工作台,可以浏览库表、看字段,或临时跑一条 SQL;开始对话后,工作台会移到侧栏。dsh-tui 则通过 /database 系列命令完成连接、测试和断开。

4. Web 端的分析报告

仅 Web 界面提供 render-analysis。README 的约定是:Agent 先用 sql-query 探查并核对事实,再自行判断要不要画图。schema 探查、单标量查询不会被强制生成图表。

判断需要可视化时,一次工具调用生成一份版本化报告:

  • 1–6 个只读数据集,1–8 个视图(metric / line / bar / pie / scatter / table)
  • 同一数据集可被多个视图复用;聚合和 Top N 写在 SQL 里
  • 简单问题给单图内联预览;复杂问题给摘要,再打开「查看分析」Modal
  • 报告快照随会话日志持久化,刷新或回放历史不会重新查库

dsh-tui 不加载这套图表依赖,工具面保持不变。

5. 只读与口令处理

连接表单可以打开只读模式;README 建议再配一个数据库只读账号。TUI 里密码只显示为 *,重新打开表单不会把密码当草稿恢复。需要跨进程恢复认证时,可以用 DSH 的 credential reference,避免把明文密码写进命令参数。未开只读时,插件可以按你的要求执行更新或管理语句——这是明确写出的能力,不是疏漏。

安装与启用

插件目录页给出的安装命令是:

dsh plugin add github:omdsh-dev/dsh-data-agent

目录页同时提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。若需要可复现安装,固定 commit 哈希:

dsh plugin add github:omdsh-dev/dsh-data-agent#<commit>

<commit> 换成仓库里实际的提交哈希,不要照抄占位符。

仓库 README 把 Web UI 和 dsh-tui 写成两套独立 profile,并推荐走 npm。只用一种界面时装对应那一条;两种都用就执行两条:

dsh plugin --profile web add @yejiming/dsh-data-agent
dsh plugin --profile dsh-tui add @yejiming/dsh-data-agent

从 GitHub 安装、同样按 profile 分开写的写法是:

dsh plugin --profile web add github:omdsh-dev/dsh-data-agent
dsh plugin --profile dsh-tui add github:omdsh-dev/dsh-data-agent

README 写明:插件会自动安装「数据模式」预设,仓库已提交 lib/,安装时无需本地构建。若出现 failed to mount,或提示找不到 @yejiming/dsh-data-agent,文档给出的原因通常是当前 profile 还没装这个插件;确认对应命令执行过后再重启 DSH。

卸载按 README:

dsh plugin --profile web remove @yejiming/dsh-data-agent
dsh plugin --profile dsh-tui remove @yejiming/dsh-data-agent
rm -rf $DSH_HOME/.agent-presets/data-agent

卸载不会主动删除已经保存的非敏感连接信息。要彻底清理,需要先备份,再删掉 DSH 里对应的数据 Agent 存储记录。

典型用法

查询实际跑在本机到目标库的网络路径上,因此本机还要装对应客户端:SQLite 在 macOS / Linux 上通常已有;MySQL 需要 mysql;PostgreSQL 需要 psql;Oracle、Hive、Impala 需要各自的命令行客户端。建议先准备只读账号,再开始探索。

在 Web UI 中使用

启动:

dsh --profile web

README 给出的步骤是:

  1. 新建会话,选择「数据模式」。
  2. 在数据库工作台填写连接信息。
  3. 连接成功后,直接在对话框里提分析问题。
  4. 根据第一轮结果继续追问:缩小范围、比较维度,或总结结论。

仓库推荐的 Web 界面是 zhu1090093659/dsh-web-ui,这是另一款社区插件,不是 dsh-data-agent 本身。

在 dsh-tui 中使用

启动:

dsh --profile dsh-tui

空白会话里先切到数据模式,再连库:

/preset data-agent
/database connect

连接表单一次展示相关字段。Tab / Shift+Tab 切换输入项;数据库类型和只读模式按 Enter 展开,方向键选择后再按 Enter 确认。连接成功后回到聊天框提问即可。

同一会话里还会用到:

/database status       查看当前连接
/database test         测试当前连接
/database disconnect   断开当前连接

再次打开连接表单时,会恢复最近填写的数据库类型、地址、端口、用户、数据库名和只读模式;密码始终隐藏且不会恢复。终端界面 README 推荐的是 ccch1mneyyy/dsh-TUI,同样是独立社区插件。

提问时把目标写清楚

README 建议在问题里补上业务目标、时间范围和关注维度,例如:

分析2026年第二季度各地区的销售额和毛利率变化,找出表现异常的地区,
继续拆解到品类和核心客户,并给出三条可执行的业务建议。

也可以让 DSH 把 SQL 落到文件里,方便复查:

完成会员复购分析,把最终SQL保存到analysis/repurchase.sql,
并用一段适合周报的文字总结主要发现。

第二条能成立,是因为数据模式里仍保留了 str_replace_editor,可以把最终语句写进工作区,而不是只留在对话气泡里。

适用场景与注意事项

比较适合这些情况:

  • 本机能直接访问业务库或分析库,需要反复「提问 → 查表 → 改 SQL」
  • 已经在用 DSH 的 Web UI 或 dsh-tui,希望单独开一个数据会话,而不是让普通编码会话去碰生产库
  • 需要把查询结果整理成结论,或在 Web 里看 render-analysis 生成的图表/表格报告
  • 同时维护多套环境,希望连接按会话隔离

使用前注意下面几条,均来自目录页或仓库 README,不是额外发挥:

  1. 先看源码和许可证再装。 目录页写明:插件以当前 dsh 进程权限运行,安装时可能执行代码。这是社区插件,不是 DeepSeek 官方组件。
  2. 生产库默认按只读对待。 开只读模式,并用只读账号。未开只读时,数据 Agent 可以执行更新或管理语句;连生产库前要确认账号权限和备份策略。
  3. 客户端必须在本机可用。mysql / psql 等客户端时,工具调不起来,与模型是否会写 SQL 无关。
  4. Web 和 TUI 要分别安装。 两套 profile 互不影响;只装其中一个,另一个界面里会找不到包。
  5. 图表只在 Web。 render-analysis 不会出现在 dsh-tui;不要按 Web 截图去终端里找「查看分析」。
  6. 不要把目录页当成官方商店。 deepseek-harness-plugin.com 是社区目录;DSH 本体以 deepseek-ai/deepseek-harness 为准。安装命令以目录页原文和仓库 README 为准,不要凭插件名自行拼接 npm 或 GitHub 路径。

小结

dsh-data-agent 做的事情很集中:给 DSH 会话接上数据库,换上只保留 SQL 与文件编辑的数据模式,让模型对着真实执行结果改语句。MySQL、PostgreSQL、SQLite、Oracle、Hive、Impala 都在 README 的支持列表里;Web 还可以按问题生成分析报告,TUI 则走 /database 表单。安全边界同样写得很清楚——只读是可选项,不是默认锁死写操作。

目录页与仓库:

  • 插件目录:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-data-agent/
  • GitHub:https://github.com/omdsh-dev/dsh-data-agent
  • npm:https://www.npmjs.com/package/@yejiming/dsh-data-agent
  • DeepSeek Harness:https://github.com/deepseek-ai/deepseek-harness
羽毛球分组比赛记分
小程序二维码

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

小夜