
一句话钩子:6849★ · MIT · SvelteKit · DuckDB WASM —— 当所有 BI 厂商都在抢 ”AI Copilot 按钮 ” 时,Evidence 把整个 BI 平台直接搬进了你的 git 仓库,让 SQL 和 Markdown 成为报表的唯一真理,agent 通过 MCP 直接读你仓库里的报表。
写在前面:BI 的两条路线
2026 年的 BI 战场正在分裂成两条路线:
- A 路线:拖拽 + AI 助手 —— Superset、Metabase、Looker Studio、Tableau。用户友好、所见即所得,AI 在旁边给建议。问题:报表逻辑和配置藏在数据库 / YAML / GUI 状态里, 没法 code review、没法 diff、没法让 agent 自动改。
- B 路线:代码即报表 —— Evidence.dev、Lightdash、Hex。把报表写成
.md文件,SQL 写在代码块里,版本管理走 git。
我们今天讲 Evidence 是因为它把 B 路线推到了一个极端:Markdown + SQL + 30+ 组件 + Parquet 跨源查询 + MCP 暴露给 Agent,已经不是一个 ” 轻量 BI 工具 ”,而是一个“ 可被 AI 直接消费的 BI 数据产品 ”。
一、它解决什么问题
| 维度 | 数值 |
|---|---|
| GitHub | evidence-dev/evidence |
| Stars | 6,849 ⭐(2026-08-14) |
| Forks | 394 |
| Open issues | 271(活跃) |
| License | MIT ✅ |
| 首次 commit | 2021-05-27(5 年) |
| 主仓最近 push | 2026-02-18(子包仍在 2-6 月活跃发版) |
| 体积 | 296 MB(含 11MB 示例 DuckDB) |
| 贡献者 | 68 人 / 总提交 9,853 |
| 核心维护者 | ItsMeBrianD (2049) / hughess (1600) / archiewood (1556) / zachstence (1496) |
| 默认分支 | main |
| 协议 | MIT(双轨:Core 开源 + Studio 商业云) |
一句话定位:”Business intelligence as code: build fast, interactive data visualizations in SQL and markdown”。
痛点直击:
1.
报表逻辑黑洞 —— Superset 的图表配置存数据库,Metabase 存 JSON,Tableau 存 .twbx。改个图表,code review 无门,事故复盘无据。
2.
Agent 拿不到报表 —— 现有 BI 都是 GUI,AI 只能截图 OCR 解析。Evidence 直接把报表变成 .md 文件,Claude / Cursor / 任何 Coding Agent 都能读、能改、能 commit。
3.
跨源查询靠 ETL —— 要查 Postgres + Snowflake + Google Sheets?以前必须 ETL 进数仓。Evidence 用 Parquet 中转 让 SQL 直接跨源 join。
二、核心能力:Everything as Code
Evidence 把 ”BI 平台 ” 拆成 5 个代码化对象,每个都有对应文件:
| 对象 | 形式 | 你写什么 |
|---|---|---|
| 数据源 | sources/<name>/connection.yaml + .sql |
一次抽取,Parquet 中转 |
| 数据查询 | Markdown 文件里的 “`sql 块 | 任意 SQL,引用数据源 |
| 组件 | Markdown 里的标签语法 | <BarChart data={query} /> |
| 页面模板 | 一个 .md 文件 |
循环 / 条件 / 模板化生成 |
| 访问控制 | access.yaml |
页面级 + 行级权限 |
2.1 数据源架构(独家亮点)
这是 Evidence 最具技术含量的设计 —— Parquet 跨源查询:
PostgreSQL ─┐
Snowflake ─┤ npm run sources
BigQuery ─┤ ─────────────► Parquet 文件
Google Sheets ─┤ │
CSV ─┘ ▼
Evidence SQL Engine
(基于 DuckDB WASM)
│
▼
你的 .md 报表里任意 join
- 数据源连接器支持 16+:BigQuery / Snowflake / Redshift / PostgreSQL / Timescale / Trino / MS SQL Server / MySQL / SQLite / DuckDB / MotherDuck / Databricks / Cube / Google Sheets / CSV / JavaScript
npm run sources触发抽取,只重跑变化的源(增量感知)- 大数据源(百万行 +)支持
NODE_OPTIONS=--max-old-space-size=4096调内存 - 构建时可注入变量:
EVIDENCE_VAR__client_id=123→ SQL 里${client_id}引用
这个架构跟 Cube.js(282)的 ” 语义层 ” 思路有点像,但 Evidence 是 消费端 ,Cube.js 是 供应端。两者甚至可以串起来用 —— Evidence docs 里直接支持 Cube 作为数据源。
2.2 Markdown 报表语法
一个 .md 文件里能写:
# Monthly Revenue
```sql orders_by_month
select date_trunc('month', order_date) as month,
sum(amount) as revenue
from needful_things.orders
group by 1
order by 1
```
<BarChart data={orders_by_month} x=month y=revenue />
{#each months as month}
## {month.label}
<DataTable data={orders_by_month.filter(r => r.month === month.value)} />
{/each}
- SQL 块命名
orders_by_month→ 后续组件直接引用 - 模板语法 Svelte 风格(
{#each}/{#if}/{variable}) - 30+ 组件:
<AreaChart>/<BarChart>/<LineChart>/<DataTable>/<Dropdown>/<TextInput>/<Map>/<Heatmap>/<BigValue>/<FunnelChart>等
2.3 Git 集成(”Ship like software”)
官网最打眼的卖点不是技术,是 工作流:
| 能力 | Evidence 给的 |
|---|---|
| Push to Deploy | merge → 自动部署到 Netlify / Vercel / 自托管 |
| Instant Rollback | 任意 commit 一键回滚 |
| Branch Previews | 每个 PR 一个独立预览 URL |
| CI | PR 自动跑校验 + e2e 测试 |
这意味着改报表跟改代码走完全一样的流程 —— code review、版本对比、权限审批、A/B 上线 全部免费拿到。这是 Superset/Metabase 永远给不了的能力。
2.4 部署选项:
- Cloud:Evidence Studio(闭源 SaaS,含 analytics agent)
- Netlify / Vercel:静态站点天然契合
- 自托管:Docker / Node.js / 任意静态服务器
- 嵌入:Embedded JS SDK / White-labeled 完整品牌定制
三、Analytics Agent:MCP 时代的差异化(最值得装的理由)
这是 2026 年 Evidence 区别于所有其他 BI 的 最大杀招。
官网 8/14 改版后重磅推出的 “Analytics Agent”:
| 维度 | 详情 |
|---|---|
| 协议 | MCP(Model Context Protocol,Claude Desktop / Cursor / ChatGPT / OpenClaw 都能接) |
| 可用入口 | Slack、MCP client、CLI |
| 核心能力 1 | Understands your project —— 把仓库里所有 dashboard 当作 agent 的 context,不需要 RAG 重新索引 |
| 核心能力 2 | Builds new insights —— 团队成员让 agent 自己建报表 + 自己存档 |
| 核心能力 3 | Custom context —— 你可以在仓库里写一份 ” 业务说明 markdown”,agent 立刻 get |
| 核心能力 4 | Skills —— 自建分析 playbook(包含可视化 + 输入框 + 澄清问题) |
| 核心能力 5 | Evals & Observability —— 跟踪 agent 准确率 + 失败分析 |
对飞熊读者(INTP / Coding Agent 重度用户)的真实意义:你不用截图给 AI 看你的 BI 了,你直接把 Evidence 仓库 clone 下来,agent 自己读、自己分析、自己提修改 PR。
架构层价值:
传统 BI:数据 → BI 平台 → 截图 → OCR → AI 看图分析
Evidence:数据 → .md 报表(版本管理) → MCP → Agent 直接读源码 → Agent 自己改 → PR
后者是 机器原生 的,前者是 机器模拟人。在 2026 年的 AI 时代,前者的天花板肉眼可见。
四、可视化与编辑器能力
4.1 30+ 组件矩阵
| 类别 | 组件数 | 代表 |
|---|---|---|
| 图表 | 12 | AreaChart / BarChart / LineChart / ScatterPlot / BubbleChart / FunnelChart / HeatMap / Sankey / USMap / Map / ECharts / Plot |
| 数据展示 | 6 | DataTable(带 sparkline + 副总计 + 图片)/ BigValue / Sparkline / Html / Tabs / Accordion |
| 输入控件 | 8 | Dropdown / TextInput / NumberInput / DateInput / DateRange / Checkbox / Radio / Slider |
| 布局 | 4 | Grid / Tabs / Columns / Modal |
| 自定义 | ∞ | Custom Svelte components(套娃复用) |
| 导出 | 2 | PDF / XLSX(multi-tabbed) |
4.2 编辑器生态
| 工具 | 状态 |
|---|---|
| VSCode 扩展 | Evidence.evidence-vscode —— 一键建项目 + 状态栏 Start 按钮 |
| CLI | npx degit evidence-dev/template |
| Cloud Editor | Evidence Studio 自带(无需本地安装) |
| 第三方 IDE | JetBrains 系列没有官方插件,但 SvelteKit 生态能 cover |
4.3 报表消费
| 能力 | 实现 |
|---|---|
| Scheduled Emails | 任意页面定时发到邮箱(日报 / 周报 / 月报) |
| Page-level Access | 单文件 access.yaml 控制谁能看 |
| Row-level Access | 按行级数据权限 |
| Usage Analytics | 哪些报表被读、谁在读(read receipts) |
| Embed | JS SDK / iframe + token 签名 |
| White-label | 完整品牌定制(logo / 域名 / 主题色) |
| Multi-tenancy | 多客户 / 多工作区 / 多权限 |
五、对比 Superset / Metabase / Lightdash / Hex / Cube.js
把 Evidence 跟已调研的 14 篇 BI / 数据栈项目放一起看:
| 维度 | Evidence.dev | Superset (270) | Metabase (274) | Lightdash (272) | Hex | Cube.js (282) |
|---|---|---|---|---|---|---|
| 范式 | Code-based (MD+SQL) | Drag-and-drop | Drag-and-drop | Code-based (YAML+SQL) | Notebook+SQL | Headless 语义层 |
| License | MIT | Apache-2.0 | AGPL+Commercial | MIT | 闭源 | Apache-2.0 |
| Stars | 6.8K | 66K | 48K | 4.5K | — | 5.5K |
| 适合谁 | 工程师 + Agent | 全公司 | 全公司 | 数据团队 | 数据科学家 | 数据团队 / BI 厂商 |
| 报表存在哪 | .md 文件(git) |
DB metadata | DB metadata | .yml 文件(git) |
Notebook | API / Cache |
| Agent 接入 | 原生 MCP ⚡ | 无 | 无 | 部分 | 无 | MCP 支持 |
| 跨源查询 | Parquet 中转 | 弱(要 JDBC) | 弱 | dbt 集成 | SQL cells | 任意下游 |
| 学习曲线 | 中(要会 Svelte+SQL) | 低 | 低 | 中(要会 dbt+YAML) | 低 | 高 |
| 部署方式 | Static / Cloud | Docker | Docker / Cloud | Cloud / Self | Cloud | API |
| Git 版本管理 | ✅ 天生 | ❌ DB only | ❌ DB only | ✅ | ❌ | ⚠️ 部分 |
| AI Agent 改报表 | ✅ PR 直提 | ❌ | ❌ | ⚠️ 部分 | ⚠️ | ⚠️ |
| 最新动态 | Studio 重写(26Q2) | 5.x 持续 | 0.5x 持续 | dbt 深度集成 | Series C | 语义层标准 |
核心判断
选 Evidence 的场景:
– ✅ 你的团队主要写代码 / 写 SQL,不想碰拖拽 GUI
– ✅ 你希望报表逻辑可 code review / 可版本回溯 / 可让 Coding Agent 改
– ✅ 你用 Claude / Cursor / ChatGPT 等 Coding Agent 想让它
直接读报表、改报表
– ✅ 你需要跨 PostgreSQL + Snowflake + Google Sheets 跨源 join,不想搞 ETL
– ✅ 你想用 git PR 工作流管理报表上线
不选 Evidence 的场景:
– ❌ 你的报表消费者主要是
非技术 PM / 业务方(他们不会写 SQL / Markdown)
– ❌ 你已经重度投入 dbt + Lightdash,且不需要 Agent 集成
– ❌ 你的数据量是 TB 级实时(Parquet 中转架构会有延迟)
– ❌ 你想要成熟的 admin UI / 权限模型(Evidence Studio 在补,但还没 Metabase 成熟)
跟 7/15 EmDash CMS(141)的横向关系
| 维度 | Evidence | EmDash |
|---|---|---|
| 底层 | SvelteKit + DuckDB | Astro + MCP |
| 领域 | BI 报表 | 内容 CMS |
| 核心范式 | SQL+MD 写报表 | Markdown 写文章 |
| Agent 接入 | Studio Analytics Agent | 原生 MCP server |
| 目标用户 | 数据团队 | 内容团队 |
两者代表同一波趋势:把 ” 专家工具 ” 从 GUI 拉回代码仓库,让 Coding Agent 能直接读写。Evidence 管数据产品,EmDash 管内容产品。
六、实战:3 步跑通一个 Evidence 项目
6.1 安装(3 种方式任选)
方式 A:VSCode 扩展(最推荐)
1. VSCode Marketplace 搜
Evidence → 装 Evidence.evidence-vscode
2.
F1 → Evidence: New Evidence Project
3. 状态栏点
Start Evidence → 自动 npm install + npm run dev
方式 B:CLI(geek 路线)
npx degit evidence-dev/template my-bi
cd my-bi
npm install
npm run dev
# → http://localhost:3000
方式 C:Docker
docker run -p 3000:3000 -v $(pwd):/evidence evidence/dev
6.2 配数据源(5 分钟)
- 浏览器打开
http://localhost:3000/settings - 选数据源类型(如 PostgreSQL)→ 填连接信息
- Evidence 自动测试连接 + 写
sources/<name>/connection.yaml - 在
sources/postgres/加.sql文件定义要抽取的表:sql
-- sources/postgres/orders.sql
select * from orders where created_at > '2026-01-01' - 跑
npm run sources→ 自动生成 Parquet
6.3 写第一份报表(10 分钟)
新建 pages/index.md:
# Monthly Revenue
```sql revenue_by_month
select date_trunc('month', order_date) as month,
sum(amount) as revenue
from postgres.orders
group by 1
order by 1
```
<BarChart data={revenue_by_month} x=month y=revenue title="Revenue Trend" />
保存 → dev server 自动重载 → http://localhost:3000 看到图表。
6.4 部署(选一个)
# Vercel(零配置)npx vercel
# Netlify(拖拽 dist 目录也行)npm run build && netlify deploy --prod --dir=build
# 自托管(任何静态服务器)npm run build
# 把 build/ 目录拷到 nginx / caddy
6.5 接 Claude Desktop(杀手级玩法)
~/.config/claude_desktop_config.json:
{
"mcpServers": {
"evidence": {
"command": "npx",
"args": ["-y", "evidence-mcp-server"],
"env": {"EVIDENCE_PROJECT_PATH": "/path/to/your/project"}
}
}
}
然后在 Claude Desktop 里直接说:” 帮我把月营收图表改成按品类拆分 ”,agent 自己读 .md → 自己改 SQL → 自己提 PR。
七、风险与坑
7.1 商业化分叉风险 ⚠️
Evidence 现在是 双轨制:
–
Evidence Core(MIT 开源)
–
Evidence Studio(闭源云服务,含 analytics agent / cloud editor / embedded / white-label)
类似 MongoDB(SSPL)+ Atlas / GitLab CE + EE 的关系。风险 :未来如果 Studio 跑通,Core 可能放缓。 目前 2026 上半年观察:Core 仍在 2-6 月频繁发版(universal-sql / trino / sqlite / snowflake 等数据源子包都更新),活跃度 OK,但需要长期跟踪。
7.2 SvelteKit 学习曲线
Markdown 模板语法是 Svelte 风格({#each} / {#if}),如果团队只用过 React/Vue,需要适应期。但 模板能力远强于普通 BI —— 真正的 ” 用代码表达报表逻辑 ”。
7.3 Parquet 中转架构的延迟
每次报表查询会触发 Parquet 抽取(如果源数据变了)。TB 级实时场景不适合,但百 GB 级以下 + ETL 已经处理过的数据源,体验非常好。
7.4 Markdown 报表对非技术 PM 不友好
业务方不会写 .md 不会写 SQL。解法:
– 用 Evidence Studio 的 cloud editor(GUI)
– 或者用 Hex(notebook 风格)+ 团队里有 SQL 能力的人
7.5 Open issues 271 个
不算失控(Metabase 是 4K+),但说明:
– 项目活跃是真活跃
– 也意味着响应慢的 issue 不少
– 重大 bug 修复 SLA 不一定有保证
7.6 vs dbt 生态的边界
Lightdash(272)跟 dbt 是深度绑定(dbt models 直接当数据源)。Evidence 也支持 dbt,但定位不同:Evidence 是消费端,Lightdash 是 dbt-native BI。如果你已经重度用 dbt,Lightdash 更顺。
八、总结:3 个 ” 最值得装的理由 ” + 1 句 ” 先试一周 ”
最值得装的理由
- MCP Analytics Agent 是 2026 年 BI 唯一杀招 —— 其他 BI 都在给 ”AI 按钮 ” 做装饰,Evidence 直接让 agent 读写你的报表仓库。agent 原生消费 BI 数据,这不是小升级,是范式跃迁。
- Code review / Git / CI 是 BI 从未有过的工作流 —— 报表跟代码走完全一样的发布流程:A/B 上线、回滚、PR 审批、分支预览。 从此告别 ” 谁改了我的报表 ” 事故。
- 跨源 Parquet 查询是中型公司的 ETL 救星 —— 不需要 Airbyte + dbt + Cube.js 全链路搭一遍,直接 SQL 跨 PostgreSQL + Snowflake + Google Sheets join。 省掉一条 ETL pipeline。
先试一周
如果你有以下任一场景,今晚花 30 分钟跑一下:
npx degit evidence-dev/template my-bi-test
cd my-bi-test && npm install && npm run dev
接一个你已有的 PostgreSQL / BigQuery 数据源 → 写一份月营收报表 → 改改 SQL 看 dev server 实时刷新 → 推到 git 看 PR 预览。如果你在第 20 分钟开始想 ” 为什么 Superset 不这么做 ”,那就对了。