Flint 图表
让 AI 用简洁可编辑的规格生成精致、可靠的多后端图表。
CI 明确采用只读 contents 权限,CodeQL 也按任务列出权限,但没有材料说明 MCP 运行时的最小权限边界,因此 least_privilege 仅给薄弱分。README 说明可内嵌数据、读取本地 JSON/CSV/TSV,并区分托管与本地 MCP,但未交代托管端的数据保留、传输、遥测、敏感数据政策或操作前确认机制;也没有撤销或恢复流程。外部效果大致列为打开交互视图及生成 PNG、SVG、原生规格或 Excel,但副作用边界不完整。定期 CodeQL、只读 CI 权限和依赖 overrides 构成较好的依赖安全证据,但未提供审计结果或锁文件材料,故未满分。Microsoft 官方组织、Microsoft Research、IDEAS Lab、版权和 MIT 文件提供了清晰且相互一致的来源归属,source_attribution 可满分。
README、包脚本、CI 和测试对主要组件及构建流程基本一致,所给测试也覆盖稀疏数据、轴推断和 dodge 决策等具体边界。不过 README 一处称 0.5.1 已把主题扩展到 Plotly,后文又称 ThemeSpec 当前只影响 Vega-Lite,形成可指出的不一致,因此 self_consistency 未满分。Node 18+、npm 安装命令、工作区脚本和多 Node 版本 CI 足以支持一般依赖可用性判断,但缺少子包依赖清单、锁文件和离线或平台约束细节。没有提供用户可见错误消息、诊断格式或恢复建议的证据,failure_messages 为零。
材料清楚覆盖库调用、远程和本地 MCP、聊天或编码环境、大数据集、主题定制、多后端及 Excel 等受众和场景,因而 audience_and_scenarios 充分。后端范围、Python 仅源码预览、本地文件类型和主题适用范围有所说明,但主题范围叙述互相冲突,且未系统列出不支持的图表、数据规模或 MCP 能力边界。MCP 被描述为提供选模板、验证和渲染工具,却没有给出工具 schema、调用条件或拒绝条件,所以 trigger_precision 证据较薄。Node 版本、兼容客户端、远程端点、本地模式和开发命令提供了良好环境适配信息,但 README 未包含完整客户端配置且依赖外链,因此未满分。
README 的功能、安装、库用法、主题、MCP、仓库结构、开发和贡献路径组织清楚,information_architecture 可满分。安装命令简洁,并注明 Node 18+ 与大数据建议使用本地 MCP,但完整 MCP 客户端配置被放在外部项目页,故 install_notes 为 2。包名、组件名和 assemble API 在材料中稳定,但未提供兼容性或弃用政策,因此 naming_stability 未满分。存在多个具体代码示例、代理提示示例和测试案例,但没有 FAQ 或故障排查示例。已明确 Python 未发布和部分主题限制,但限制清单并不全面且主题陈述冲突。MIT 正文和 README 元数据一致,license 满分;日期化更新、语义版本、发布链接和 changelog 路径使 versioning_changelog 满分。官方组织、Microsoft Research、合作实验室、贡献指南、安全报告路径及 CI 更新路径共同明确维护责任,maintenance_responsibility 满分。
输出可直接用于 Vega-Lite、ECharts、Chart.js、Plotly、Excel,以及 PNG、SVG 和交互视图;输入规范可编辑、主题可继承覆盖,因而 output_usability 证据充分。以一个紧凑语义规范派生布局并生成多个后端原生结果,相比让代理硬编码每个后端参数有明确增量价值,marginal_value 可满分。MIT 授权、npm/npx 安装和共享输入形状降低采用成本,但托管服务的数据成本、网络依赖、渲染资源消耗、包体和运维负担未披露,所以 cost_benefit 未满分。
主要能力声明可关联到命名 API、仓库目录、脚本、CI 和针对具体算法行为的测试,因此具有较好的 claim_traceability;但没有提供核心实现文件、MCP 工具定义或生成结果快照,不能给满分。README 的组件声明受到 package.json、CI 和测试文件的多源支持,不过多后端、托管 MCP 和视觉质量等重要声明没有在所给材料中被独立交叉印证。事实、计划和建议通常有明确措辞,例如 Python 待发布及研究论文即将发布;然而 arXiv 徽章与“论文即将发布”以及 Plotly 主题范围的冲突削弱了事实与推断分离的完整性。
- 托管 MCP 端点的数据保留、日志、遥测、传输保护和敏感数据处理政策未在所给材料中说明;处理非公开数据前应先核实。
- MCP 可读取本地 JSON、CSV、TSV 文件,但未提供运行时文件访问范围、路径限制或每次读取前确认机制;建议在受限目录和最小权限环境中运行。
- README 对 Plotly 是否支持 ThemeSpec 存在冲突,采用前应以该固定修订的实现和后端参考为准。
- 没有证据展示 MCP 的用户可见错误消息、失败恢复、撤销机制或完整工具触发 schema。
- 本评估仅基于所给静态文件,未执行安装、测试、渲染或安全扫描。
这个 Agent 能做什么,适合哪些场景?
Flint 是面向 AI 时代的可视化中间语言,依据高层语义规格、数据与可选主题自动决定比例尺、坐标轴、间距、标签和布局。仓库包含 TypeScript 库 `flint-chart` 与供聊天及编码环境调用的 MCP 服务器 `flint-chart-mcp`。同一份 `ChartAssemblyInput` 可编译为原生 Vega-Lite、ECharts、Chart.js、Plotly 规格,或可编辑的 Excel 图表。MCP 服务器可以创建、验证和渲染图表,并返回交互视图、PNG、SVG 或后端原生规格。项目提供托管 HTTP MCP 端点,也支持通过 `npx` 在本地运行;后者更适合大型数据集。当前主要实现面向 JavaScript/TypeScript,Python 版本仍是尚未发布的软件包源码预览。
Flint 接收包含 data、semantic_types、chart_spec 以及可选 theme_spec 的 ChartAssemblyInput。数据既可直接放入 data.values,也可由 MCP 调用通过 data.url 读取本地 JSON、CSV 或 TSV 文件。核心层使用 70 多种语义类型(如 Rank、Temperature、Price 和 Country)理解字段,并结合数据基数、画布约束、图表设计和主题生成布局、标签、图例、坐标轴、标记、字体与配色决策。库通过 assembleVegaLite、assembleECharts、assembleChartjs、assemblePlotly 和 assembleExcel 产生目标后端的原生对象。flint-chart-mcp 则向支持 MCP 的客户端提供模板选择、验证、渲染和交互式图表查看能力。
- 需要让聊天助手根据公开数据生成图表的数据分析师,可通过托管或本地 MCP 服务器完成选型、验证与渲染。
- 需要从同一语义输入输出 Vega-Lite、ECharts、Chart.js 或 Plotly 的 TypeScript 团队,可在不改变输入结构的情况下切换后端。
- 需要交付原生、可继续编辑 Excel 图表的办公数据团队,可调用
assembleExcel生成 Excel 图表产物。 - 希望跨整套图表统一视觉规范的设计与品牌团队,可使用内置主题,或继承预设并通过
ThemeSpec覆盖品牌决策。 - 处理较大 JSON、CSV 或 TSV 数据集的本地智能体用户,可运行本地 MCP 服务器并通过
data.url读取文件。 - 需要在画廊或编辑器中快速迭代图表模板的贡献者,可使用仓库的 Vite + React 演示站点和热重载开发流程。
这个 Agent 有哪些优点和局限?
- 同一
ChartAssemblyInput可生成五类后端原生产物,包括可编辑的 Excel 图表,减少维护多套输入模型的成本。 - 70 多种字段语义类型以及自动尺寸、间距、标签、标记和图例决策,专门减少智能体手写冗长底层图表参数的需要。
- 同时提供 TypeScript 库、托管 HTTP MCP 和可本地运行的 MCP 服务器,可用于程序代码或对话式工作流。
- 正式的
ThemeSpec支持预设、继承与局部覆盖,可将布局、语义呈现和视觉身份作为统一系统复用。 - MCP 可以返回交互视图、静态 PNG/SVG 和后端原生规格,覆盖查看、分享与继续开发等不同交付需求。
- 运行与开发依赖 Node.js 18+;Python 端目前只是源码预览,尚无已发布的软件包。
- README 对主题后端支持的描述存在版本语境差异:更新记录称 0.5.1 已将主题扩展到 Plotly,但主题使用段仍写着
ThemeSpec当前影响 Vega-Lite,采用前需核实目标版本和后端行为。 - 通过
data.url读取本地文件需要本地 MCP 服务器及文件系统访问;托管端点不等同于本地大数据文件工作流。 - 要实际显示后端原生规格,应用仍需相应的 Vega-Lite、ECharts、Chart.js 或 Plotly 渲染环境;Flint 本身主要负责组装规格。
- 来源只明确记录 Claude 自定义连接器和 GitHub Copilot 的远程 MCP 配置,未证明对其他指定聊天或 API 平台有原生集成。
如何安装或部署这个 Agent?
前提:安装 Node.js 18+。在 JavaScript/TypeScript 项目中安装库:
npm install flint-chart为支持 MCP 的智能体或客户端启动本地服务器:
npx -y flint-chart-mcp若使用托管服务,无需本地安装服务器;在支持远程 HTTP MCP 的客户端中添加:
https://flint.data-formulator.ai/mcpREADME 未注明 API 密钥或其他凭据要求。Claude 可通过 Customize → Connectors → Add custom connector 添加该端点。大型数据集推荐本地 MCP 方式。
如何使用这个 Agent?
库方式的首个调用可使用统一输入生成 Vega-Lite 规格:
import { assembleVegaLite } from 'flint-chart';
const spec = assembleVegaLite({data: { values: myData },
semantic_types: { weight: 'Quantity', mpg: 'Quantity', origin: 'Country' },
chart_spec: {chartType: 'Scatter Plot',
encodings: {x: { field: 'weight' },
y: { field: 'mpg' },
color: { field: 'origin' }},
baseSize: { width: 400, height: 300 }}
});
要应用内置主题,在输入旁加入 theme_spec: 'economist'。要切换输出后端,可将同一 input 传给 assembleECharts(input)、assembleChartjs(input)、assemblePlotly(input) 或 assembleExcel(input)。使用 MCP 时,连接托管端点或启动本地服务器后,可让智能体查找数据并要求它用 Flint 指定主题绘图;MCP 调用也可直接嵌入 data.values,或通过 data.url 引用本地 JSON、CSV、TSV 文件。
这个 Agent 与同类方案有什么区别?
与直接为 Vega-Lite、ECharts、Chart.js 或 Plotly 手写大量比例尺、坐标轴、标签、间距和布局参数相比,Flint 使用较短的语义规格自动推导这些决策,并允许同一输入切换后端。代价是引入 Flint 的语义类型、图表模板和编译层;需要完全控制某个后端专有行为的团队仍需评估生成的原生规格是否足够。
常见问题
使用 Flint 是否需要付费或 API 密钥?
它能直接读取本地数据文件吗?
data.url 读取本地 JSON、CSV 或 TSV 文件;这涉及本地服务器的文件系统权限。也可以把数据行直接放入 data.values。是否必须使用 MCP?
flint-chart 并调用各个 assemble* 函数。MCP 主要用于让智能体在聊天或编码环境中选择、验证和渲染图表。能否部署在自己的环境中?
npx -y flint-chart-mcp 运行本地 MCP 服务器;项目同时提供远程 HTTP MCP 端点。本地方式被推荐用于大型数据集。所有后端都支持完全相同的主题效果吗?
ThemeSpec 当前影响 Vega-Lite;采用前应针对所用版本和目标后端验证主题覆盖范围。