内部资料 · 桌面端选型

WrenAI 调研

主线已不是旧版聊天式 BI,而是面向 Agent 的「语义层 + SQL 规划器 + 多源执行 + MCP/CLI/SDK」工具链。价值在后端能力面与交互范式,不在直接搬用。

仓库 Canner/WrenAI形态 Python + Rust + WASMLicense Apache-2.0(核心)
01结论

局部引入,重点参照

局部引入强烈参照

局部引入:把 Python CLI/SDK 或 MCP 能力面(语义层+查询规划+只读策略+结构化错误)放进隔离适配层,只读账号、开严格模式、做方言 PoC。不要把整仓库当核心依赖。

参照:Git 友好的三层上下文、先规划后执行、按阶段错误、写能力显式授权、渐进披露的 Agent 工作流——正是「让 AI 查数据可信可复核」的答案。

口径提醒:README「22+ 数据源」实为代码 20 个标识且有复用;「GenBI 部署仪表盘」实为外部 Agent 编写、CLI 只做静态校验;严格模式默认关闭。以代码和 PoC 为准。

02要点

产品与架构

做什么让 Agent 用显式业务语义(非裸 schema)写 SQL,模型/规则/成功样例作为 Git 项目资产。不内置大模型、当前无完整聊天 UI
语义层MDL(模型/关系/cube/视图/规则/已确认查询)编译成 mdl.json 可重建构建物
规划器Rust + Apache DataFusion 规划优化、反解析成目标方言 SQL;SQLGlot 做 CTE 重写与安全 AST 检查
链路Agent → 只读+严格策略 → 裁剪 MDL → CTE 重写 → Rust 规划 → 最终 SQL 复检 → 连接器 → Arrow 结果/结构化错误
多入口同一语义暴露为 CLI(Typer) / MCP(FastMCP) / Agent SDK,避免各框架复制建模逻辑
记忆NL–SQL 对写成确定性 Markdown 作真相源,LanceDB 只是可重建的派生索引
03借鉴

最值得学的范式

需调整:默认沉淀应加用户确认+数据分类+审核,不能把口径错的可执行 SQL 自动当知识。

04风险与落地

引入前必知

建议范围:只做「可替换的语义查询适配器」,上游只依赖本方 plan/validate/execute/describe-context 接口,Wren 的 manifest/错误/Arrow 结果在适配层内转换。