你的 agent 会说 MCP,那就给它一台电脑

Sprite 是一次性的云计算机,自带持久化文件系统,空闲时几乎不花钱。作者认为它比「沙箱」更适合跑 agent,并解释为什么 MCP 与命令行工具不必二选一。

中文
复制
一只卡通地鼠从屏幕里的洞探出头,旁边是一台云主机的示意图

Sprite 是一次性的云计算机。它们瞬间出现,始终自带持久化文件系统,空闲时几乎不花钱。它们是互联网上运行 agent 最好、最安全的地方,我们希望你去创建几十个。

Sprite 是运行 agent 的地方;拿到一个新 Sprite,你首先该想到的就是输入 claude(或者 gemini,或者 codex)。我们花了很多精力确保 coding agent 在 Sprite 上感到安全、开心,因为——这句话大概出自 John von Neumann——“开心的 agent 才是高效的 agent”。

Sprite 不那么明显的一点是,它们也是 agent 的绝佳工具。想要一个新功能的三个不同版本?一个测试环境?一组协同工作的服务?能这样开头写 prompt 实在太方便了:“On a new Sprite, do…”。

Sprite API 简单、易于发现,就是为这种场景设计的。唯一真正的问题是 agent 怎么访问它。对大多数人来说,答案是 MCP,而且配置已经写好了。

你不必二选一

有一种说法正在流传:MCP 是扩展 agent 的错误方式,命令行工具和可发现的 API 才是正道。这个说法有一半是对的,而且是对的那一半更重要,所以我们认真对待它。

把三十个工具描述塞进上下文窗口,不是教任何东西的好办法。不是每条 Sprite 命令在每次会话里都重要,把它们全塞进去,等于告诉模型它们对你全都重要。如果你不用网络策略,gemini 就不该烧掉一个 token 去学怎么配置它们。能力应该逐步显露,就像 agent 一个一个子命令摸索出 CLI 那样。

错的那一半,是拿这一点当作反对 MCP 的理由。渐进披露说的是你对模型讲什么。MCP 说的是字节怎么到达那里:传输、认证、结构化结果,一个模型可以调用的工具,而不是一个得靠猜 flag 的命令。这是不同的层次,同时拥有两者没有任何障碍。我们的插件就是两者兼得的样子。

装上 Claude Code 插件后,底层是托管的 MCP server,上层是 skills。进入你上下文的,大致只有一句话,说明什么时候你会想要一台新电脑。其余内容等到需要时才出现。Codex、Cursor、Antigravity、opencode、Grok 以及其他工具都是同样的用法;如果你的工具不在这个列表里,把它指向裸端点,照样能用。

server 在自己那一半工作上也变强了。读取文件返回的是 MCP resource,而不是一大段粘贴过来的文本,于是 agent 可以指向某个文件,而不必把它整个吞下。每个 tool 都带有安全标注:只读操作标为只读,破坏性操作标为破坏性,exec 和 service_start 则被标为仅有的两个会越过 Sprite 边界的操作。在意这些标注的客户端,就能把“列出我的 checkpoints”和“运行这个东西”区别对待。

shell 也一直都在。有 sprite CLI,有普通的 REST API,每个 Sprite 还在 /.sprite/llm.txt 提供机器可读的文档,教在里面干活的 agent 这个地方怎么运转。如果你的 agent 更愿意写点小脚本,而不是调用 tool,那就随它。底下是同一个 API。

sprites.dev/mcp

把这个 URL 填进 Claude Desktop,或者任何其他会说 MCP 的 agent 工具。你会认证到自己的某个 Fly.io organization,然后你的 agent 就能说 Sprites 了。

然后:

On a new Sprite, take this repository and reproduce this bug from issues/913, capturing logs.

On a new Sprite, benchmark this function across 1000 runs and summarize the results.

On a new Sprite, update all the dependencies on this project to their newest versions and test that everything works.

On 3 new Sprites, change this service to use each of these 3 query libraries, and use HTTP to test latency.

On a new Sprite, run this code with bpfwatch and show me what files it touches.

On a new Sprite, run a load generator against this endpoint for 60 seconds and report the results.

On a new Sprite, download this dataset and give me a Jupyter notebook to explore it in.

On a new Sprite, set up a webhook receiver and render a real-time web report of all the payloads it receives.

不知道。你比我更了解自己的项目。无所谓了。有时候你就是想要一台干净、便宜、用完即弃的电脑(或者五台)。现在,你写的每一条 prompt 都能用上这个功能。想想怎么把它用到你的项目里——我们觉得,用不了多久你就会纳闷:以前没有 Sprites 的日子是怎么过来的。

有些人心里在想:“这功能迟早会让机器人毁了我的生活。”我们同意。所以我们加了护栏。认证时,你交给 agent 的是 Fly.io 账号下一个指定的组织,你还可以在此基础上进一步收窄会话范围。默认上限是五台 Sprites,名称前缀为 mcp-,这样机器人容易辨认,也容易拆掉。这两项都可以自己改。

去他妈的无状态沙箱

这话我们会一直说,说到脸发青为止:整个行业还卡在“沙箱”这个思路上,用它让 agent 跑代码,而沙箱早就不够用了。Agent 想要的是真正的电脑,有真正的文件系统,连真正的网络,而技术上根本没有理由不给它们。

我们设计 Sprites 时,就是让你能放心大胆地一次创建一大堆。它们的响应速度足以给你的团队托管 Web 应用,但闲置时会进入休眠状态,几乎不花什么钱。Fly.io 每个用它们的人,最后手里都挂着二三十台。

我们相信,当你能随手拉来足够多的电脑来解决问题时,你会做出更好的东西。你的 agent 已经在开口要一台了。答应它。

来源: Fly.io← 返回首页