DBLens + 企业微信智能机器人:把数据库 Agent 接入工作群

让业务方在企业微信里直接「问数据」,再也不用在群里疯狂跑 SQL 了。

痛点

你是否经常被拉进这样的群:

  • 产品同学:"最近 7 天订单量多少?"
  • 运营同学:"帮我查一下昨天新增用户的留存率。"
  • 老板:"退款金额最高的前 10 个订单是哪些?"

你放下手头的代码,打开 DBeaver / Navicat,连接数据库,写 SQL,执行,截图,发回群里。一天重复 10 次,开发节奏碎了一地。

如果有一个机器人,能听懂自然语言,自动理解表结构、生成 SQL、执行查询,并把结果直接回复到群里------会不会很爽?

DBLens 自带的 LensAI Agent 就可以做到。本文带你把它接入企业微信智能机器人,实现「对话式查数据库」。

如果你已经熟悉 DBLens 的基本操作,可以直接跳至「第三部分:整体接入流程」。

一、DBLens 与 LensAI Agent 能力速览

DBLens 不只是一个数据库管理工具,它内置了 LensAI Agent------一个能够理解自然语言并主动执行数据库任务的智能代理。

LensAI Agent 的核心能力:

  • 自然语言 → SQL:输入"本月销售额最高的 5 个产品",自动生成对应 SQL。
  • 数据库上下文感知:自动识别当前连接的数据库、表结构、字段注释,无需人工指定。
  • 安全执行:默认只允许只读查询;更新/删除操作需用户二次确认。
  • 结果解释:返回数据的同时,附上 SQL 语句和执行说明,方便复核。

关键是:Agent 不只是对话,它会真正执行任务。这也正是 DBLens 区别于普通 SQL 工具的地方。

二、企业微信智能机器人(长连接模式)

企业微信智能机器人支持两种接入方式:

模式 特点 适用场景
API 回调(短连接) 需要公网域名 + SSL 证书 服务器有公网 IP
WebSocket 长连接 无需公网 IP,只需能访问企微 API 内网开发机、笔记本

因为 DBLens 通常运行在开发者的本地电脑或内网服务器,我们选择 长连接模式,免去配置域名和证书的麻烦。

交互流程很简单:

用户发消息 → 企微服务器推送给 DBLens(长连接) → LensAI Agent 处理 → 回复给用户

三、整体接入流程

步骤一:创建企微智能机器人

  1. 打开企业微信客户端,进入工作台->智能机器人,点击创建机器人->手动创建;

  2. 点击 创建机器人 → 选择 API 模式创建

  3. 创建成功后,你会获得 Bot IDSecret (Secret 仅显示一次,请务必保存)。

步骤二:在 DBLens 中通过对话配置企微机器人

打开 DBLens,进入 LensAI 对话框(即你平时用自然语言查询数据库的地方),然后直接告诉 Agent 你要接入企业微信机器人,并给它提供 Bot ID 和 Secret。

示例对话

:帮我配置企业微信智能机器人,Bot ID 是 your_bot_id,Secret 是 your_secret
LensAI Agent:收到。正在验证凭证......验证通过。已为你建立与企业微信的长连接。机器人现在可以接收消息了。你可以在企业微信中搜索该机器人开始对话。

Agent 会自动完成以下动作:

  • 验证 Bot ID 和 Secret 的有效性
  • 启动 WebSocket 长连接
  • 注册消息回调处理
  • 返回配置结果

整个过程无需离开对话框,也不需要翻阅菜单或填写表单。如果凭证有误,Agent 会提示你重新提供。

步骤三:在企微中使用机器人

  1. 在企业微信中搜索你创建的机器人名称,发起单聊。

  2. 直接发送自然语言问题,例如:

    帮我查一下最近 7 天的订单数量,按天分组。

    LensAI Agent 会处理并回复结果。

  3. 也可以在群聊中 @机器人,它会回复到群里。

四、Agent 工作流程详解(技术向)

当用户发送一条消息,背后的完整流程如下:
sequenceDiagram participant User as 企微用户 participant WeCom as 企微服务器 participant DBLens as DBLens (长连接) participant Agent as LensAI Agent participant DB as 数据库 User->>WeCom: 发送自然语言消息 WeCom->>DBLens: WebSocket 推送消息 DBLens->>Agent: 调用 Agent.handle() Agent->>Agent: 理解意图 + 识别表/字段 Agent->>Agent: 生成 SQL(只读) Agent->>DB: 执行 SQL DB-->>Agent: 返回结果集 Agent->>Agent: 格式化结果 + 附上 SQL Agent-->>DBLens: 返回回复内容 DBLens-->>WeCom: WebSocket 回复 WeCom-->>User: 显示结果

关键设计细节:

  • 上下文构建:Agent 会自动从当前 DBLens 连接的数据库拉取表结构、注释、索引信息,作为给 LLM 的提示词。
  • SQL 生成:采用 ReAct 风格规划,先生成 SQL,再通过内置验证器检查风险(如 DROP、DELETE 不带 WHERE
    会被拦截)。
  • 只读安全策略:默认所有查询以只读事务执行。如果用户要求更新数据,Agent 会返回待执行的 SQL 并要求用户手动确认。
  • 性能优化:对于大结果集,自动限制返回行数(默认 100 行),并提示"仅展示前 100 条"。

五、典型应用场景与示例

场景一:业务快速查询数据

用户

最近一周,每天的下单用户数是多少?

Agent 回复

sql 复制代码
-- 已生成 SQL
SELECT DATE(created_at) as day, COUNT(DISTINCT user_id) as active_buyers
FROM orders
WHERE created_at >= NOW() - INTERVAL 7 DAY
GROUP BY DATE(created_at)
ORDER BY day;

场景二:排查线上问题

用户

订单表里,"退款金额"对应的字段叫什么?

Agent 回复

根据表 orders 的结构,与退款金额相关的字段有:

  • refund_amount (DECIMAL) ------ 实际退款金额
  • refund_status (INT) ------ 0:未退款, 1:退款中, 2:已退款
    你可能是想查 refund_amount

场景三:非技术人员自助取数

运营同学可以直接问:

帮我拉一份上个月注册、但从未下单的用户邮箱列表。

Agent 理解后生成 LEFT JOIN 查询,返回结果。这可以显著减少数据团队被简单取数需求打断的频率。

六、注意事项与最佳实践

注意点 说明
Secret 丢失 Secret 只在创建时显示一次,务必保存到密码管理器。丢失只能重新创建机器人。
长连接唯一性 同一时刻一个机器人只能维持一个长连接。如果 DBLens 关闭或网络中断,需要重连。
心跳保活 长连接需要定期发送心跳(建议 30 秒),否则企微会断开。DBLens 默认已实现。
权限控制 建议在企微后台设置机器人可见范围,只对需要的部门开放,避免敏感数据泄露。
只读优先 生产环境建议在 DBLens 中给机器人专用的数据库账号,授予 SELECT 权限即可。
复杂查询 如果表非常多(>200 张),Agent 可能漏选表。可以预先用 DBLens 的「数据字典」功能标记核心表。
重新配置 如果需要更换机器人或更新 Secret,只需再次在 LensAI 对话框中告诉 Agent 新信息即可,它会自动更新连接。

七、结语

完成上述配置后,你的企业微信里就多了一个「数据库 Agent」。团队成员可以像问一个懂数据的同事一样,用自然语言快速获取信息。

一句话总结:把 DBLens 的 LensAI Agent 接入企微机器人,让数据查询从「提需求 → 等排期 → 截图」变成「直接问 → 秒回」。

下一步可以做什么?

  • 定时推送:结合企微的主动消息 API,让机器人每天早晨推送关键指标。
  • 多数据源:DBLens 支持 MySQL、PostgreSQL、MariaDB、 SQL Server、MongoDB、SQLite 等,可配置不同的机器人对应不同库。
  • 告警联动:当监控系统触发阈值时,让机器人主动发送告警及诊断 SQL。