数据截至 (上游 commit 7830cc746c11)
GenBI:仪表盘生成与一键部署
30 秒导读: 这一章讲 WrenAI 三个节拍里的第二拍 —— Deploy。当 agent 已经把一个业务问题变成一条受治理的 SQL 答案后,怎么把这个"答案"变成一个可分享、能在浏览器里跑、无需后端的仪表盘应用?核心答案是:
wren genbi这套 CLI 自己不写前端代码,它把"用本项目的上下文层构建一个 GenBI app"合成为一份指令,交给外面的编码 agent 去实现;然后负责登记、部署前防泄密校验、一键部署到用户自己的 Vercel / Cloudflare Pages 账号。跑起来的应用由wren-core-wasm(语义引擎的 WebAssembly 版)驱动,在浏览器里按 MDL 语义直接查询数据。
本章只覆盖 core/wren/src/wren/genbi/ 这一个子系统。上下文层(MDL、项目文件)怎么来,见 上下文层:MDL 语义模型与项目文件;模型名 SQL 如何被翻译成受治理的物理 SQL,见 语义引擎:模型名 SQL → 受治理物理 SQL。
1. 这是什么(零基础也能懂)
一句话定义: wren genbi 是一套把"一次数据分析答案"变成"一个静态仪表盘网站"并帮你部署上线的命令行工具链。
它和你想象的"AI 生成前端"不一样。 最容易误解的一点:Wren 不自己生成前端代码。它扮演的是"包工头 + 质检 + 物流",不是"泥瓦匠"。真正动手写 HTML/JS 的是外部的编码 agent(比如 Claude Code、Cursor 这类)。Wren 做三件事:
- 合成一份施工图纸 —— 把静态模板、本项目的实时事实(有哪些模型、哪些列、数据源是什么)、用户的原始需求拼成一份权威的"构建指令",打印到 stdout,交给 agent。
- 登记与质检 —— agent 把应用写进
apps/<name>/后,Wren 把它登记进项目清单,并在部署前做一次结构校验 + 防泄密扫描。 - 一键物流 —— 校验通过后,把这个静态文件夹上传到用户自己的 Vercel 或 Cloudflare Pages 账号。
给谁用、解决什么问题: 假设你是一个数据 agent 的搭建者。agent 已经能回答"上季度各区域营收是多少"。现在你想让这个答案变成一个同事点开链接就能看、还能自己改筛选条件的看板 —— 而且你不想为它运维一个后端服务。wren genbi 就是把这最后一公里(从答案到可分享的应用)标准化、并守住"公开站点绝不能泄露数据库密码"这条红线。
为什么能没有后端? 因为语义引擎被编译成了 WebAssembly(wren-core-wasm)。浏览器直接加载这个 wasm 引擎 + 项目的 MDL,就能在客户端按语义模型跑查询 —— 数据要么打包进应用一起发(快照模式),要么由应用连回用户自己的数据源(实时模式)。
用起来什么样: 一条端到端的命令序列大致长这样:
# 1. 让 Wren 吐出一份"构建指令",喂给你的编码 agent
wren genbi build sales-dash --prompt "各区域季度营收看板" --data-mode snapshot
# 2. (agent 按指令把应用写进 apps/sales-dash/ 后)登记进项目清单
wren genbi register sales-dash --data-mode snapshot
# 3. 部署前质检:文件齐不齐、MDL 能不能解析、有没有把密码写进代码
wren genbi verify sales-dash
# 4. 本地预览
wren genbi open sales-dash
# 5. 一键部署到你自己的 Vercel 账号
wren genbi deploy sales-dash --provider vercel
一句话直觉: 把 wren genbi 当成一个发布流水线:build(出图纸)→ agent 施工 → register(入册)→ verify(质检卡口)→ deploy(上线)。Wren 掌管的是"图纸、册子、质检、物流",施工交给 agent,运行时交给浏览器里的 wasm 引擎。