11 个图像来源,以及为什么 ManimCE 被放进了这张表

2026-08-09

翻 OpenMontage 的 README,看到 Supported Providers 折叠块里的图像生成表,第一反应大概率是数错了:前十行都是正经的图像来源,最后一行冒出来一个 ManimCE,Type 标 Local,Notes 只有三个词——Mathematical animations。数学动画怎么会算”图像生成”?

这不是排版顺手粘错了,也不是把视频那栏的东西错放了一行。把这张表按类型拆开看,它反映的是这个项目对”图像”这一栏的定义方式,而这个定义方式会直接影响你在没配任何视频密钥时能做出什么。

先把这 11 行摆全

README 在这一节的标题写的是 11 tools/providers,表格实际也是 11 行(以下 Notes 一栏全部是 README 自己的措辞,不是我们的评价):

ProviderTypeREADME 的 Notes
FLUXCloud APIState-of-the-art quality
Google ImagenCloud APIImagen 4 — high-quality, multiple aspect ratios
Grok Imagine ImageCloud APIStrong image edits, style transfer, and multi-image compositing
GPT Image 2Cloud APIOpenAI’s image model
RecraftCloud APIDesign-focused generation
Kling OfficialCloud APIOfficial direct API for Kling image generation and reference workflows
Local DiffusionLocal GPUStable Diffusion, free
PexelsStockFree stock images
PixabayStockFree stock images
UnsplashStockFree stock images
ManimCELocalMathematical animations

这里必须先说死一件事:State-of-the-art qualityhigh-qualityDesign-focused 这些词是 README 描述的,我们没有调用过其中任何一个 API,没有生成过任何一张图,也没有验证过任何一条 Notes。所以本文不会拿这些形容词给你排名,也不会说”要画质就选 FLUX”。README 在这一节顶部把完整配置指南(含定价和免费额度)指向了 docs/PROVIDERS.md,那份文档我们没有读过,同样不展开。

按 Type 数一遍,这张表就分成了四种东西

从表里数出来:6 个 Cloud API、1 个 Local GPU、3 个 Stock、1 个 Local

这四类在你的实际处境里不是同一种资源:

  • Cloud API(6 个)——要密钥、要联网、要花钱。这一档能不能用,取决于你 .env 里配了什么。
  • Local GPU(1 个)——Local Diffusion,README 的注释是 Stable Diffusion, free。这里的”free”指的是不用付 API 费用,代价换成了你自己的显卡。
  • Stock(3 个)——Pexels、Pixabay、Unsplash,都标 Free stock images。这一档严格说不是”生成”,是从现成素材库里取。它们在 .env 密钥矩阵里各占一项:PEXELS_API_KEYPIXABAY_API_KEYUNSPLASH_ACCESS_KEY;README 的零密钥能力表把这三家归在 Extra stock 一行,注明”开发者密钥可免费申请”。
  • Local(1 个)——ManimCE。.env 的密钥矩阵里没有与它对应的条目。

看清这个分类逻辑,ManimCE 的位置就不奇怪了。这张表分的不是”用什么技术做出来的”,而是”这一格能不能给流水线交出一份静态视觉素材”。三条路的前置条件差别很大——Stock 要的是可免费申请的开发者密钥,Local Diffusion 要的是显卡,ManimCE 的 Type 只标了 Local——但输出物在流水线眼里占的是同一个能力槽位。

顺带一个可以对照的细节:这 11 行里的 Pexels 和 Pixabay,在 README 的视频生成表里也各出现一次(那边标的是 Free stock footage);Unsplash 只出现在图像这张表里。Kling Official 也是两张表都在——图像这边 README 写的是 image generation and reference workflows。视频那张 15 行的表本文不铺开,我们另有一篇专门讲。

ManimCE 这一行对应到仓库里的哪个文件

光看 README 的三个词判断不了什么,得往仓库里落。这一行对应的是 skills/creative/manim-usage.md 这个 skill 文件——注意它落在 skills/creative/ 下,而不是 skills/core/

README 把知识分成三层:Layer 1 是 tools/ + pipeline_defs/(“What exists”),Layer 2 是 skills/(“How to use it”,即 OpenMontage 自己的约定与质量标准),Layer 3 是 .agents/skills/(“How it works”,外部技术知识包)。ManimCE 这一行落在 Layer 2 里,而 Layer 2 又分四个分区:core/creative/meta/pipelines/。我们实读了这几个目录:skills/core/ 只有 6 个文件(color-grading.mdffmpeg.mdhyperframes.mdremotion.mdsubtitle-sync.mdwhisperx.md),manim-usage.md 不在其中,而是和 image-gen-usage.mdimage-provider-usage.mdstock-sourcing-usage.mddiagram-gen-usage.mdtypography.mdvideo-gen-prompting.md 这些文件一起待在 creative/ 下。

单看文件名,前面那张表里的几类来源在 skills/creative/ 里大都能找到名字对得上的文件——image-gen-usage.mdimage-provider-usage.md 对图像生成、stock-sourcing-usage.md 对素材库、manim-usage.md 对 ManimCE。这些文件的正文我们一个都没有读过,这里只按实读到的路径和文件名说明它们的位置,不描述里面写了什么。

再往 README 的架构图上对一眼,tools/graphics/ 那一行的原文是 “9 image/graphics generation tools + diagrams, code snippets, math”。这句话里”图表(diagrams)、代码片段(code snippets)、数学(math)“是和图像并列写出来的三类。换句话说,graphics 这一栏本来就不止管”画图”,数学动画在这一栏里有明确位置。

这里也有一处可核实的数字差异:provider 表标的是 11,架构图里 tools/graphics/ 标的是 9 个工具。 两处不是同一个计数口径——一个数的是 provider/来源,一个数的是 Python 工具文件,而且架构图那句还在 9 之外用加号另挂了三类。我们只陈述这个差异,不推断哪个数字更准、也不拿它评价这个项目。同一张 README 里这类口径差不止一处:TTS 那节表格列了 5 个 provider,架构图里 tools/audio/ 写的是 4 TTS providers;Node.js 前置条件写的是 18+,而 HyperFrames 那行标的是 Node.js ≥ 22。都是文本之间的差异,说到这儿为止。

为什么静态图这一栏值得你认真配

如果你把 OpenMontage 当成”文字生成视频”的工具,图像 provider 看上去只是配角。但 README 在 Composition & Rendering 那张表里给 Remotion 写了一句很关键的话(原文大意照录):当没有配置任何视频生成 provider 时,agent 生成静态图,再由 Remotion 把它们变成完全动起来的视频。

这句话把图像这一栏的地位抬起来了。在一个密钥都没配、或者只配了图像密钥的环境里,这 11 行就不是备选项,而是主路径——素材从这里出,动效交给 Remotion 的程序化场景去补。README 的零密钥能力表里,与静态素材直接相关的那两行是 Extra stock(Pexels + Unsplash + Pixabay,注明开发者密钥可免费申请)和 Composition (React)(Remotion);.env 那一段的头一行注释原文是 # .env — every key is optional, add what you have。这条路径在什么条件下走得通,你对着这张表数一下自己手上有几格就知道了。

需要提醒的是,这条”静态图 + Remotion”的路,走的是 README 那张表里的两套合成运行时之一。另一套 HyperFrames 标的是 Local (Node.js ≥ 22),通过 npx hyperframes 使用,不需要 checkout 整个 monorepo。README 给这两套运行时配了一条硬治理规则:运行时在提案阶段就被选定,记为 render_runtime,并通过 edit_decisions 锁定在运行时之间静默切换是一次治理违规(governance violation)。完整的决策矩阵 README 指向 skills/core/hyperframes.md,那份文件我们没有读过,不描述它的内容。与之呼应的是 AGENT_GUIDE.md 里那节标题——“Present Both Composition Runtimes (HARD RULE)“,两套运行时都得摆给用户看。

怎么查你自己这 11 格里点亮了几个

不要靠数 .env 里写了几个密钥来猜。README 和 AGENT_GUIDE.md 给的办法是问 registry:

python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.provider_menu(), indent=2))"
python -c "from tools.tool_registry import registry; import json; registry.discover(); print(json.dumps(registry.support_envelope(), indent=2))"

AGENT_GUIDE.md 的 Mandatory Preflight 一节给这两条命令各配了一句注释:前者是按能力分组的可用/不可用完整菜单;后者是每个工具的完整契约,原文明确警告 慢、输出量大,只用于调试。所以日常想知道”图像这一栏我有几格”,用第一条就够,第二条别顺手跑。这两条命令照抄自仓库文档,我们没有执行过,返回里到底有哪些字段我们也没有读过 tools/tool_registry.py,不做描述——实际输出以你本地跑出来的为准。

AGENT_GUIDE.md 的 “What Not To Do” 里有两条正好卡在这张表上:不要硬编码 provider 名、API key 名或安装 URL,要从 registry 的 install_instructionsdependencies 字段读;不要孤立地呈现单个不可用工具,要永远展示完整能力图景,用 “X of Y providers configured for this capability.” 这种说法。第二条落到图像这一栏就是:不管你配了几个,agent 该告诉你的是”11 个里配好了几个”,而不是只说”FLUX 用不了”。同一节里还有一条:preflight 时不许跳过 Provider Menu,原文的说法是用户必须看到自己有什么以及还能解锁什么。

最后一句关于密钥:Kling 在这套体系里出现两次,一次经 fal.ai 网关,一次是官方直连(provider 名 kling_official),对应 .envFAL_KEYKLING_API_KEY 两个独立的密钥项。配的时候别把它们当成同一个东西。本文所有密钥一律写成 $FAL_KEY<YOUR_API_KEY> 这样的占位符,真实值只放在你自己的 .env 里。


本文依据 OpenMontage 官方仓库(github.com/calesthio/OpenMontage)的 README、 AGENT_GUIDE.mdconfig.yamlpipeline_defs/lib/ 下的治理模块整理,核对日 2026-08-09。 本文内容为仓库源码与文档口径,我们没有安装或运行过该系统,也没有调用过其中任何一个 provider API, 文中出现的成本数字均为项目方在 README 中自行标注的金额,非我们的实测结果。 该项目以 AGPL-3.0 发布,部分流水线在 manifest 中自标 stability: beta,请以仓库最新内容为准。 安全相关做法请结合自身环境评估,本文不构成安全方案建议。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。