dsh-plugin-nlbi: 自然语言查询与 BI 报表

前言

DeepSeek Harness(DSH)通过插件机制扩展能力,其中 dsh-mysql 插件提供了基础的 MySQL 连接管理与查询工具。在此基础上,dsh-plugin-nlbi 插件增加了自然语言查询(Text2SQL)与商业智能(BI)报表功能。该插件旨在降低 SQL 编写门槛,让开发者或业务人员能通过自然语言与数据库交互,并直接生成可视化图表。

该插件由 1byteone 维护,基于 dsh-mysql(v0.1.4)的连接底座进行二次开发,保留了原有的连接管理能力,同时新增了智能查询、图表生成与报表收藏等特性。

核心功能

插件提供了以下主要能力:

  • 自然语言查询 (nl_query):基于 Text2SQL 技术,将自然语言转换为 SQL 语句。生成过程包含 AST 语法树校验与正则校验,确保安全性。
  • BI 图表生成 (sql_to_chart):根据查询结果自动生成图表规格,支持多种图表类型。
  • 报表收藏与管理:提供 save_report、list_reports、delete_report 和 rerun_report 等接口,用于管理生成的报表。
  • 数据浏览器:包含 SchemaTree(表结构导航树)与 GridPanel(数据网格),支持在右侧栏进行表结构浏览、数据预览、分页、排序及 WHERE 过滤。
  • 智能查询与侧栏工作台:提供右侧栏工作台,集成智能查询、数据浏览与报表功能。
  • 继承的连接管理工具:继承了 dsh-mysql 的工具,包括 mysql_query(只读查询)、mysql_tables(查看表结构)和 mysql_execute(写操作)。

安装与启用

安装前请确保已安装 Node.js >= 18。

# 安装最新稳定版插件
dsh plugin --profile web add dsh-plugin-nlbi@latest

安装完成后,需要重启 DeepSeek Harness Web 进程:

dsh web

如果启动时提示端口占用(如 EADDRINUSE: address already in use 127.0.0.1:3080),说明服务已在运行,直接访问 http://127.0.0.1:3080 即可,无需重复执行安装命令。

典型用法

1. 对话中自然语言查库

在 DSH 的对话输入框中输入自然语言,系统将调用 nl_query 工具。生成的 SQL 以草稿形式展示,需用户显式点击“运行”按钮执行。

  • 示例:
    用户:上个月每天的订单量是多少?
    系统调用:nl_query
    结果:返回表格数据及对应的 BI 图表

2. 右侧栏全能工作台

右侧栏功能依赖 betterSidebar 或 dsh-web-ui-all 插件。若未安装前置插件,系统会自动降级处理,核心功能仍可通过设置页使用。

打开右侧栏,进入 Nlbi 数据库 tab,包含三个子区:

  • 智能查询:输入自然语言,即时返回表格和图表,支持一键“发到对话”。
  • 数据浏览:通过左侧 SchemaTree 选择表,右侧 GridPanel 展示数据。
  • 报表:自然语言生成图表,支持收藏、重跑与导出。

注意事项

  • LLM 依赖:nl_query 的 Text2SQL 功能依赖于 LLM 服务(如 DeepSeek 或 OpenAI)。
  • 仅支持 MySQL:插件继承自 dsh-mysql,目前仅支持 MySQL 数据库。
  • 安全性:nl_query 强制执行只读操作,即使数据库连接开启了写权限。SQL 生成经过双层校验(AST + 正则),防止写操作泄露。
  • 图表导出:图表导出当前仅支持导出 SQL(Markdown 格式)。
  • 侧栏依赖:右侧栏的智能查询、数据浏览和报表功能需要 betterSidebar 或 dsh-web-ui-all 插件支持,但已做降级处理,无侧栏时功能仍可使用。

参考资料

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

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

小夜