跳到正文
北京时间
原文
Hacker News 热门(buzzing.cc 中文翻译)· chenglong-hn·· 2026-07-10精选AI 评分75

微软发布Flint:面向AI智能体的可视化语言

Show HN: 微软发布了Flint,一种用于人工智能代理的可视化语言

AI 导读

微软研究院推出Flint,一种可视化中间语言,让AI智能体通过简洁的人类可编辑spec自动生成美观图表。用户只需提供数据、语义类型和图表类型,Flint编译器即可推导坐标轴、配色、布局等底层参数。支持46种图表类型,可渲染到Vega-Lite、ECharts和Chart.js三个后端。项目通过npm安装(TypeScript/JavaScript),并提供MCP服务器用于智能体工作流集成。采用弹性布局模型自动优化图表尺寸与间距,已开源。

推荐理由

微软这个 Flint 用语义类型代替了低层图表参数,是给 AI 代理装上了一双会画图的手,开发者现在就能装 MCP server 跑起来,做数据可视化代理的不用再跟 Vega-Lite 的细节搏斗了。

正文 · AI 翻译

Flint:面向 AI 时代的可视化语言

一个 Microsoft Research 项目

Flint 是一种可视化中间语言,让 AI 智能体能够根据简单、人类可编辑的图表规格,可靠地创建富有表现力且美观的图表。Flint 编译器无需冗长的底层参数(如比例尺、坐标轴、间距和布局),而是从数据、语义类型、图表类型和编码中推导出优化的图表设置。Flint 支持 46 种图表类型,并支持在 Vega-Lite、ECharts 和 Chart.js 中渲染。

使用 npm 安装 Flint(TypeScript / JavaScript)。

要在智能体工作流中使用 Flint,请查看 MCP server。

在 gallery 中探索 46 种图表类型和 83 个示例。

Flint 规格在编辑器中打开 →

{ "data": {...}, "semantic_types": { "period": "YearMonth", "totalUsers": "Quantity", "gameType": "Category", "region": "Category" }, "chart_spec": { "chartType": "Line Chart", "encodings": { "column": "region", "x": "period", "y": "totalUsers", "color": "gameType" }, "baseSize": { "width": 300, "height": 600 } } }

编译后的图表

Vega-Lite ECharts Chart.js

分面折线图。按地区划分的月活跃用户,以小型多图的形式随时间排布。

它是如何工作的?

Flint 从一份紧凑的规格开始:数据、语义类型以及图表规格。由此,编译器会生成一份完整的后端原生规格(此处以 Vega-Lite 展示),填充必要的底层细节,并渲染出一张美观的图表。

Flint 规格

{ "data": {...}, "semantic_types": { "game": "Category", "period": "YearMonth", "newUsers": "Profit" }, "chart_spec": { "chartType": "Heatmap", "encodings": { "x": "period", "y": "game", "color": "newUsers" }, "chartProperties": { "colorScheme": "redblue" } } }

编译后的规格(Vega-Lite)

{ "data": {...}, "mark": { "type": "rect", "width": 47 }, "height": { "step": 29 }, "encoding": { "x": { "field": "period", "type": "temporal", "scale": { "nice": false, "domain": [ "2024-12-16T19:38:10.909Z", "2025-12-16T04:21:49.090Z" ] } }, "y": { "field": "game", "type": "nominal", "sort": null }, "color": { "field": "newUsers", "type": "quantitative", "scale": { "scheme": "redblue", "domain": [ -84108, 84108 ], "domainMid": 0 } ... // 还有 16 行

可视化

Flint 规格

{ "data": {...}, "semantic_types": { "game": "Category", "period": "YearMonth", "newUsers": "Profit" }, "chart_spec": { "chartType": "Heatmap", "encodings": { "x": "period", "y": "game", "color": "newUsers" }, "chartProperties": { "colorScheme": "redblue" } } }

编译后的规格(Vega-Lite)

{ "data": {...}, "mark": { "type": "rect", "width": 47 }, "height": { "step": 29 }, "encoding": { "x": { "field": "period", "type": "temporal", "scale": { "nice": false, "domain": [ "2024-12-16T19:38:10.909Z", "2025-12-16T04:21:49.090Z" ] } }, "y": { "field": "game", ... // 还有 30 行

可视化

1. 使用语义类型进行指定

Flint 使用语义类型来捕捉数据字段的含义(例如 Rank、YearMonth、Delta、Temperature),并利用它们推断底层图表配置,如解析、比例尺、坐标轴、格式化和配色方案。

编译后的图表

Flint 规格

{

"semantic_types": {

"game": "Category",

"period": "YearMonth",

"newUsers": "Profit"

},

"chart_spec": {

"chartType": "Heatmap",

"encodings": {

"x": "period",

"y": "game",

"color": "newUsers"

},

"chartProperties": {

"colorScheme": "redblue"

}

}

}

对于这张按游戏和月份展示净新增用户增长的热力图,Flint 会根据字段的语义类型来确定时间值解析器、坐标轴格式,以及发散型配色方案和中点。

2.自动布局优化

Flint 基于弹性布局模型和 banking 原则来优化图表布局。编译器会动态管理尺寸、间距和排列方式,使图表能够很好地适配画布。

密集 · 22 × 3

稀疏 · 5 × 3

随着分组柱状图数量的增加,Flint 会拉伸画布并减小带宽,使密集版本仍能很好地适应画布,就像弹簧在可扩展容器中自然舒展一样。

3. 易于生成和适配

由于没有脆弱的底层参数,Flint 规格可以被用户轻松生成和适配。更改图表设计只需切换图表类型并重新绑定视觉编码,编译器会将新的编码选择级联到低层设置。

金字塔图

分面柱状图

用户只需切换图表类型,就能轻松将 2000 年美国人口普查按性别和年龄分布的分面柱状图转换为金字塔图。其余工作由编译器处理。

4. 使用不同后端渲染

Flint 支持 Vega-Lite、ECharts 和 Chart.js 上的 46 种图表类型,图库中有 83 个后端专属示例。尽管它们的 API 和编程模型各不相同,Flint 将它们隐藏在统一接口之后。用户可以轻松切换到不同的后端并利用其独特功能。

ECharts 旭日图

Vega-Lite 分面柱状图

Vega-Lite 没有原生旭日图,但用户可以轻松切换到 ECharts。在可视化 region × gameType × game 的层级结构时,旭日图是比分组柱状图更好的选择。

开源且开箱即用。从 GitHub 开始,或在图库中浏览示例。

Flint 由 Microsoft Research 与中国人民大学 IDEAS Lab 合作构建。

来源:Hacker News 热门(buzzing.cc 中文翻译) · microsoft.github.io