<!-- title: 问数、测提示、跑笔记：三件海外开源货 -->
<!-- domain: new-tools -->

国内技术圈的信息流有个怪现象：Cursor、Devin 这种大厂产品，国内分析师恨不得逐帧解读；而海外开发者社区里真正天天在用的开源件，反而没人搬运。今天拆三件——一个让你全公司用嘴查数据库，一个给提示词上单元测试，一个把 Jupyter 的祖坟刨了重写。都是能直接跑起来的东西，不是 PPT 产品。

> **数据说明**：本文撰写当日，检索通道（ducksearch / WebSearch / webReader）全部不可用，无法做当日交叉验证。三个项目均为长期存在的开源项目，名称与仓库地址可信度较高；但 Star 数、最新版本号、具体报价等易变信息一律不写，以下价格描述只到「开源免费/云托管收费」这个颗粒度，下单前请以官网为准。

## 第一件：WrenAI——让运营直接用嘴问库

**仓库**：github.com/Canner/WrenAI（背后是做数据平台 Canner 的团队，2024 年前后开源）

它解决的是每个数据组都头疼的事：业务同事提个数，要排队等数据分析师写 SQL。国内大厂云控制台里也有「智能问数」类功能，但通常绑定自家云、按调用收费，数据出域这件事在很多公司是红线。WrenAI 是自托管开源路线，数据库连接信息不出你的内网。

它的核心思路跟一般的 text-to-SQL 不一样：不是拿大模型硬猜表结构，而是先让你定义一层**语义层**——把表、字段、指标的业务含义写成一份模型描述文件（MDL），大模型在这层「地图」上生成 SQL。实践里这就是幻觉率差距的来源：模型不用猜「revenue 到底含不含退款」，因为语义层里写清楚了。

上手路径（据官方仓库 README 的部署方式）：

1. 克隆仓库，`docker compose up -d`，一条命令把整套服务拉起来
2. 在 Web 界面里连上你的 Postgres / DuckDB / BigQuery 等数据源
3. 让它扫库生成初步的语义模型，人工校对指标定义
4. 业务同事在聊天框里提问，得到 SQL、表格和图表

如果你们团队更想自己写代码集成，走**框架路线**看 Vanna（github.com/vanna-ai/vanna）：一个 Python 的 RAG 式 text-to-SQL 框架，训练素材就是三样——建表 DDL、业务文档、历史「问题-SQL」问答对，存进向量库，越用越准。两个都开源，产品化选 WrenAI，想嵌进自己系统选 Vanna。

**适用人群**：有自建数据库、数据组被取数需求淹没的后端/数据工程师；对数据出域敏感、用不了海外 SaaS 的团队。

## 第二件：Promptfoo——给提示词上单元测试

**仓库**：github.com/promptfoo/promptfoo（2023 年开源，MIT 协议，官网 promptfoo.dev）

先问一个扎心的问题：你线上跑的那段 system prompt，最近一次改动是怎么验证的？大概率是改完自己聊两句，「感觉还行」就发了。海外做 LLM 应用的团队早就把软件工程的老手艺搬过来了——提示词要有测试集、要有断言、要进 CI。Promptfoo 就是这条路上最流行的开源件之一。

用法完全是你熟悉的那套：

1. `npm install -g promptfoo` 安装
2. `promptfoo init` 生成配置，在 YAML 里写测试用例：给一组输入变量、期待输出
3. 断言很丰富：简单的是「包含某关键词」，硬核的是 `llm-rubric`——让另一个模型当裁判，按你定的标准打分；还能嵌 JavaScript 自己写判断逻辑
4. `promptfoo eval` 跑批，`promptfoo view` 起本地网页，左右对比不同 prompt、不同模型在同一批用例上的表现
5. 写进 GitHub Actions，prompt 一改，评测没过就拦住合并

它还有一个很多国内用户没注意的板块：**红队测试**。内置一批攻击模板——诱导越狱、套取 PII、越权指令——一键对你的应用做对抗扫描。这跟运行时防护（护栏类产品）是两码事：Promptfoo 管的是上线前的体检，不是上线后的拦截。

**跟国内的差距在哪**：国内大厂普遍自研评测平台，但开源社区里拿得出来直接用的东西很少，多数中小团队还停在「肉眼对比」阶段。Promptfoo 的 YAML 写完就是资产，换模型、换供应商时重新跑一遍，成本几乎为零——这是它最大的价值：**把「换模型」从玄学变成回归测试**。

**适用人群**：任何在生产环境跑 LLM 功能的团队，尤其是正在多家模型之间比价、选型的。

## 第三件：Marimo——反应式笔记本，Jupyter 的掘墓人

**仓库**：github.com/marimo-team/marimo（2024 年初开源，官网 marimo.io）

用过 Jupyter 的人都吃过这个亏：改了上面一个单元格，忘着重跑下面，拿着旧变量算出了新结论——而且报告已经发出去了。Marimo 把这个问题从根上干掉：**笔记本是反应式的**，改任何一个单元格，所有依赖它的单元格自动按拓扑序重跑，不存在隐藏状态。变量名重复定义？它直接报错拦你。

更狠的是存储格式：不是 `.ipynb` 那种嵌 JSON 的文件，就是**纯 Python 脚本**。这意味着 notebook 可以被 git 正常 diff、被 code review、被 import 复用——Jupyter 生态欠了十年的债，它用一个格式选择还清了。

还有一个国内几乎没人讲的能力：写完的分析，`marimo run notebook.py` 一敲，直接变成一个带滑块、按钮的**网页小工具**——数据同事调个参数看结果，不用再找你要新版本。同一个文件还能导出成幻灯片。写分析、做 demo、发交付物，一个文件全包。

上手只要两条命令：

```bash
pip install marimo
marimo edit
```

**跟国内对比**：国内数据教学和公司内部环境几乎全是 Jupyter 系，很多人没听说过「反应式」这个分支。对经常交付分析结果的人来说，迁移成本极低（纯 Python 文件，老代码基本能直接跑），收益却是立竿见影的。

**适用人群**：数据分析师、算法工程师、任何用 notebook 做探索和交付的人；教数据的老师也值得换——学生再也不用背「先 Restart 再 Run All」的咒语。

## 三件货串起来是什么

单独看是三个工具，拼起来是一条完整的「数据到交付」流水线：

```mermaid
flowchart TD
    Q["业务同事一句人话提问"] --> W["WrenAI 语义层翻译"]
    W --> S["生成可读的SQL"]
    S --> DB["直连数据库执行"]
    DB --> R["自动出表格和图"]
    R --> M["Marimo 笔记做深度分析"]
    M --> APP["一键发布成网页小工具"]
    P["改提示词或换模型"] --> PF["Promptfoo 批量跑评测"]
    PF -->|不达标回炉| P
    PF -->|达标才上线| W
```

注意 Promptfoo 那条回路：三件套里它是守门员。你的问数提示词、分析脚本里的 LLM 调用，每次改动都先过评测再上线——这套纪律，正是海外团队和国内多数团队在工程质量上拉开差距的地方。

## 信息差总结

| 你以为的 | 实际情况 |
|---|---|
| 用嘴查数只能买大厂云的「智能问数」，按调用付费还要数据出域 | WrenAI/Vanna 开源自托管，语义层压幻觉，数据不出内网 |
| 提示词改完自己聊两句感觉行就行 | Promptfoo 把提示词变成带断言的测试集，可进 CI 拦截合并 |
| 评测平台是大厂自研的专属能力 | MIT 协议开箱即用，YAML 写完就是可复用资产 |
| Notebook 就是 Jupyter，改代码必须小心手动重跑 | Marimo 反应式执行零隐藏状态，纯 .py 存储，还能一键变网页应用 |
| 这类新货国内没热度=没人用 | 海外社区已用了两三年，差的只是中文圈的搬运 |

## 行动指南

1. **今天就能做**：`pip install marimo`，把你手头一个旧 notebook 丢进去跑一遍，感受反应式执行和隐藏状态报错
2. **本周可做**：拿 Promptfoo 给你线上最关键的那段 prompt 补 10 个测试用例，跑 `promptfoo view` 和同事一起看对比结果
3. **本月可做**：在内网找一台测试机 `docker compose up` 部署 WrenAI，接一个非核心库，让产品经理试问一周，统计它生成的 SQL 有多少能直接跑通——这个比例就是你要不要推它的依据
4. **进阶**：把 Vanna 的「历史问答对」机制用起来，团队每次人工修正 SQL 都回灌进训练集，问数准确率随时间复利

## 参考来源

> 以下均为项目官方仓库/官网地址，因当日检索通道不可用，未能复核最新状态，访问时请以实际内容为准：

1. WrenAI 官方仓库：https://github.com/Canner/WrenAI
2. Vanna 官方仓库：https://github.com/vanna-ai/vanna
3. Promptfoo 官方仓库：https://github.com/promptfoo/promptfoo （官网 https://www.promptfoo.dev ）
4. Marimo 官方仓库：https://github.com/marimo-team/marimo （官网 https://marimo.io ）

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护。
> 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
