先从一个思维实验开始。

忒修斯之船问的是:如果你逐一替换船上的每一块木板,它在哪个时刻变成了另一艘船?

用计算机来回答这个问题就简单多了。

如果你在一个月内把自己的电脑每个零件都换成了完全相同的组件,它在哪个时刻不再是「你的电脑」?

答案是:当你数据——你的密钥、文件、项目——被清空的那一刻,它才不再是你的电脑。如果你成功保持了数据跨硬件迁移,它就依然是你的电脑。

这个思维实验揭示了一个关于云计算和沙箱的惊人真相:计算本身从来不是机器的身份,数据才是。

现有云模型的盲点

然而,现有的每个云服务商——AWS → EC2、Fly → machines、Sandbox providers → sandboxes——都把注意力放在让你如何启动和管理计算产品的生命周期上。

这个模型导致的结果是:用户必须自己解决如何以临时方式使用计算,把计算当作「牛不是宠物」来对待,同时还要想办法把真正重要的数据弄到那台「失忆的服务器」里。

过去几个月,随着 AI Agent 需要启动沙箱来运行任意代码、bash、POSIX 命令,这个问题更加严重了。这些产品好用,但用户需要自己处理数据进出、机器生命周期管理、以及确保充分利用以避免账单意外。

新范式:Serverless Execution

Archil 提出了一个新模型,核心原则:服务器的「身份」其实是它的数据。

存储——文件系统——被视为下一代云的核心资源,而不是服务器。用户可以把数据放进这个文件系统,用各种工具,包括从 S3 等原始服务懒同步。然后,当需要从中提取信息或以某种方式编辑时,再在文件系统上运行计算。

因为文件系统是多挂载的,用户可以并行运行多个「计算函数」,每个函数获得自己独立的 CPU 和内存配额。因为函数只运行到完成,用户只为实际使用计算的时间付费。

核心 API 示例

import { Archil } from '@archildata/client'

// 创建磁盘,以 S3 bucket 为后端
const disk = await Archil.disks.create({
  name: 'agent-workspace',
  mounts: [{ type: 's3', bucketName: 'agent-bucket'}],
})

// 在文件系统上执行任意命令
const { fileList } = await disk.exec("ls")

// 并行 map-reduce 全文搜索
const grepPromises = fileList.map(file =>
  disk.exec("grep ERROR " + file)
)

const results = Promise.all(grepPromises)

这个例子展示了跨整个 bucket 的全量 map-reduce 搜索。每个 exec 获得独立容器,可以做完整的横向扩展搜索,比 grep 和 ripgrep 更快。

给 Agent 提供 bash 工具

同样可以把 exec 作为 bash 工具提供给 Agent:

const bash = tool({
  description: '在 Archil 支持的工作区磁盘内运行 shell 命令并返回 stdout/stderr',
  inputSchema: z.object({
    command: z.string().describe('要执行的 shell 命令'),
  }),
  execute: async ({ command }) => {
    const result = await disk.exec(command)
    return {
      stdout: result.stdout ?? '',
      stderr: result.stderr ?? '',
      exitCode: result.exitCode ?? 0,
    }
  },
})

Agent 直接在文件系统上工作,不需要管理沙箱生命周期或数据迁移。

为什么这重要

这个模型的价值在于:下一代 Agent 开发者不需要再思考如何搬运数据或管理沙箱生命周期。

计算是按需的附属物,数据才是恒定的。把数据放进文件系统,让计算来找数据,而不是把数据搬到计算里。

这就是 Sam 说的「本地文件系统是一切资产的根」在云端的对应版本——只不过这次,云基础设施层面也在朝这个方向演进。