Hugging Face · 官方博客

Agent 链式调用两个 Hugging Face Spaces 构建 3D 巴黎画廊

How an Agent Built a 3D Paris Gallery by Chaining Two Hugging Face Spaces

二〇二六年六月九日 · 英文原文

Hugging Face 通过 `agents.md` 文件使每个 Gradio Space 暴露可调用的 API schema、端点、文件上传和认证方式,让 coding agent 无需客户端库即可端到端驱动多媒体模型。作者让一个 agent 链式调用两个 Spaces——图像生成 Space 和 `VAST-AI/TripoSplat`(单图像到 3D Gaussian splat 重建)——自动生成巴黎地标的 3D 画廊,包括翻转 Y 轴、压缩 `.ply` 为 `.ksplat`、构建 Three.js 查看器并部署为静态 Space。整个过程无需人工打开图像生成器或 3D 重建工具,仅通过审美调整对话完成。

](https://huggingface.co/mishig)

一个 agent 利用两个 Hugging Face Spaces 构建了一个 3D 巴黎画廊。

我让一个 coding agent 搭建一个漂亮的网站,将巴黎地标展示为 3D Gaussian splat。我从未打开过图像生成器,也从未碰过 3D 重建工具。这个 agent 通过直接调用两个 Hugging Face Spaces 生成了所有素材(图像 3D splat),然后将它们整合到一个电影感十足的查看器中。

以下是结果,以静态 Space 形式呈现:

👉 mishig/monuments-de-paris

这篇文章将探讨这如何成为可能,以及为什么我认为这预示着未来大量多媒体软件的构建方式。

积木经济降临多媒体领域

Mitchell Hashimoto 最近描述了一种他称之为积木经济的转变:构建软件最有效的路径不再是打磨一个庞大的单体,而是使用小巧、文档完备的组件,让其他人(尤其是 agent)来组装。他的关键观察是:AI 从头构建一切的能力尚可,但它在拼接经过验证的组件方面非常擅长

这个论点主要围绕代码库展开。但同样的力量正在冲击多媒体 AI。使用最先进的图像模型、视频模型、TTS 模型或 3D 重建模型的难点从来不是模型本身,而是集成:SDK、权重、GPU、输入格式、轮询。如果每个模型都是一个有文档、可调用的模块,那么 agent 就能像拼接 npm 包一样将它们粘合在一起。

这正是 Hugging Face Spaces 悄然演变而成的形态。

每个 Space 都是一个积木块,通过 agents.md 实现

Hub 上托管着数千个最先进的模型(其中很大一部分是开放权重的),并且大多数都部署为交互式 Spaces。现在,每个 Gradio Space 都暴露了一个纯文本的 agents.md 文件,它精确地告诉 agent 如何调用它:

curl https://huggingface.co/spaces/VAST-AI/TripoSplat/agents.md

一次性返回所有必要信息:schema URL、调用和轮询模板、如何上传文件以及认证提示:

API schema:   GET  .../gradio_api/info
Call endpoint: POST .../gradio_api/call/v2/{endpoint} {"param_name": value, ...}
Poll result:  GET  .../gradio_api/call/{endpoint}/{event_id}
File inputs:  POST .../gradio_api/upload -F "files=@file.ext"
Auth:         Bearer $HF_TOKEN

无需客户端库,无需硬编码集成。Agent 读取这些信息后,就能端到端地驱动这个 Space。设置好 HF_TOKEN 即可开始。

真正的解锁在于链式调用:一个 Space 的输出成为下一个 Space 的输入。Prompt → 图像 → 3D。这正是这个画廊背后的完整流水线。

实际案例:巴黎地标 → 3D splat

Agent 链式调用了两个 Spaces:

  1. 图像: 一个图像生成 Space 将每个地标转化为干净、深色背景的"标本"照片(埃菲尔铁塔则变成了底座上的小立体模型)。输入 prompt,输出图像。
  2. Splat: VAST-AI/TripoSplat 从每张单张图像重建出 3D Gaussian splat(.ply 格式)。输入图像,输出 3D。

生成的图像

Image 2: 生成的先贤祠

重建的 splat

Agent 生成的六张源图像,全部以黑色背景隔离,准备进行单图像 3D 重建:

Image 3: 生成的巴黎歌剧院图像Image 4: 生成的凯旋门Image 5: 生成的圣心大教堂Image 6: 生成的埃菲尔铁塔立体模型

之后,agent 还完成了"粘合"工作。它注意到 TripoSplat 的输出是 Y 轴向下,于是将其翻转直立,自动为每个地标取景,将 .ply 文件压缩为 .ksplat(体积缩小约 3 倍,加载更快),构建了一个带有滚动切换和拖拽旋转 UI 的 Three.js 查看器,并将整个项目部署为一个静态 Space。唯一的人工输入是审美层面的调整:"拉远一点","把方尖碑换成更适合 splat 的东西","过渡时间太长了"。

其中几个步骤是 agent 根据实际情况做出的反应。宽大的玻璃金字塔 splat 效果不佳;细长的方尖碑很乏味;单视角重建会推断背面。这正是积木经济所预测的"外包研发,快速迭代"循环,只不过这里的研发是一场对话。

为什么这很重要

自己动手试试

将你自己的 agent 指向一个 Space 的 agents.md,让它自由发挥:

# 图像生成
curl https://huggingface.co/spaces/ideogram-ai/ideogram4/agents.md
# 单图像到 3D Gaussian splat
curl https://huggingface.co/spaces/VAST-AI/TripoSplat/agents.md

将任一链接粘贴到你的 coding agent(如 Claude Code 等)中,设置好你的 HF_TOKEN,然后让它构建一些东西。这个画廊完整、可复现的流水线,以及调用这两个 agents.md 端点的脚本,都存放在 Space 仓库中。

积木块就摆在 Hub 上。Agent 已经知道如何拼接。

译自 Hugging Face · 官方博客 · 录于 二〇二六年六月九日