上周我在做一个Agent小工具——帮我把每天的Hacker News热帖自动整理成周报。逻辑很简单:抓内容、做摘要、排Markdown、导出PDF。跑了一下午终于通了,满心欢喜关电脑。 第二天打开,中间产物全没了。临时目录被清掉,草稿、缓存、依赖,全部蒸发。 我盯着终端发了会儿呆,然后去翻Agent框架的文档——翻了一圈,发现压根没人讨论"文件存哪"这个问题。 正当我准备自己写个持久化方案的时候,我刷到了Cloudflare Computer。
给Agent一台不会丢文件的"电脑"
Cloudflare Computer是Cloudflare在8月初开源的项目,到今天(8月7日)GitHub已经快5000星了,连续两天挂在Trending第一。 一句话概括:它是一个住在Durable Object里的虚拟文件系统,让Agent像用一台真正的电脑一样读写文件、跑代码——而且关了再开,文件还在。 说实话,刚看到这个项目的时候我有点懵。Cloudflare不是做CDN的吗?怎么做Agent基础设施了?但仔细看完它的README和示例代码之后,我觉得这个方向确实戳到了痛点。
我们给Agent派活的时候,默认它"有一台机器"——能存文件、能跑命令、能积累进度。但实际上呢?大多数Agent跑在临时上下文里,状态散落在各种临时目录和会话历史中。你让Agent写一份报告,它在临时环境里跑完交付;你想改个版式,发现中间稿没了,只能从头来。 Cloudflare Computer的思路很直接:把"状态"和"算力"拆开。 权威状态统一放在Durable Object的SQLite里,这是唯一的事实来源。执行后端可以是容器、可以是Worker里的shell,也可以是纯JavaScript——按需选择,不用的时候不花那份钱。
这个设计哲学我觉得是对的。不是每个任务都需要一个完整的Linux容器。文件读写、数据处理、Git操作这些轻量活儿,用个Isolate就够了,只有需要npm install、跑原生二进制的时候才升级到容器。按官方说法,容器只承担不到10%的工作。
三种后端,按需选择
Cloudflare Computer提供了三种执行后端,这也是整个项目里最有意思的部分:
Container(容器模式) ——完整Linux用户空间,真实文件系统通过FUSE挂载,能跑任意二进制。这是最重的模式,冷启动几百毫秒,但功能最全。适合需要npm install、跑编译、或者需要完整网络访问的场景。
Isolate Shell(隔离Shell模式) ——在Dynamic Worker里跑一个just-bash,通过Workers RPC直接和文件系统通信,没有第二个存储、没有同步往返。适合跑简单的shell命令,比如cat、grep、wc -l这种。
Isolate JavaScript(隔离JS模式) ——直接在Dynamic Worker里执行一个ES模块,有结构化的输入输出,能访问node:fs/promises。这是最轻量的模式,适合纯数据处理。
三种后端共享同一个Workspace——你在Container里写了一个文件,Isolate Shell里立刻能看到,反过来也一样。不需要手动同步。 我花了一下午把三个示例都跑了一遍。说说踩坑的地方。
跑起来没那么丝滑
先说环境。Cloudflare Computer目前是个monorepo,用npm管理,核心包是@cloudflare/computer。安装倒是顺畅:
npm install @cloudflare/computer
但第一次跑Container模式就给我上了一课。
Container模式需要computerd——一个跑在沙箱容器里的守护进程,负责FUSE挂载和RPC通信。官方提供了一个预构建的Docker镜像@cloudflare/computer-computerd-linux-x64。我照着example里的步骤配好,一跑:
Error: FUSE mount failed: operation not permitted
折腾了半小时才反应过来——我本地的Docker环境没开--privileged。FUSE需要内核级别的权限,不开特权模式根本挂不上。加上--privileged之后才跑通。
# docker-compose.yml 关键配置
services:
computerd:
image: cloudflare/computerd:latest
privileged: true # 不加这行FUSE直接挂
volumes:
- workspace-data:/workspace
这个问题在README里没有明确提,至少在文档里我没找到醒目的提示。对于第一次接触的人,这个坑大概率会踩。
Isolate Shell模式倒是顺畅。just-bash是个纯JS实现的bash子集,不需要容器,直接在Worker里跑。我试了几个基本命令,响应速度比Container快不少——毕竟少了容器启动和FUSE同步的开销。
// 一开始我直接 exec 拿 stdout 就往 Response 里塞
// 结果返回的是 "18\n" 带换行符,Response 直接炸了
// 后来加了个 trim 才搞定——这种小坑文档里根本不会写
import { Workspace } from '@cloudflare/computer';
export default {
async fetch(request, env) {
const ws = new Workspace(env.WORKSPACE);
await ws.fs.writeFile('/hello.txt', 'Hello from Agent!');
const result = await ws.runtime.exec('cat /hello.txt | wc -c', {
backend: 'worker-shell'
});
const count = result.stdout.trim(); // 别忘 trim
return new Response(`字节数: ${count}`);
}
}
Isolate JavaScript模式我用来做了一个简单的文本处理——把一段Markdown转成纯文本。ES模块直接在Worker里执行,通过node:fs/promises读写文件,全程没有shell开销。
// worker-javascript 模式执行的任务模块
import { readFile, writeFile } from 'node:fs/promises';
export async function main(input) {
const content = await readFile(input.file, 'utf-8');
const plain = content
.replace(/#{1,6}\s/g, '')
.replace(/[([^]]+)]([^)]+)/g, '$1')
.replace(/[*_~`]/g, '');
await writeFile(input.file + '.txt', plain);
return { lines: plain.split('\n').length };
}
这套"同一个文件系统、三种执行方式"的设计确实灵活。想象一下:Agent先用Isolate JS做数据处理(快且便宜),遇到需要pandoc转PDF的步骤切到Container(功能全),中间的文件完全不用搬运。
先说清楚:这玩意儿还没法上生产
Cloudflare Computer目前还是PREVIEW状态,README开头就写得很明确:
PREVIEW ONLY — APIs are unstable and the design is subject to change. Suitable for experiments, exploration and prototypes. It is NOT suitable for production use at this time.
我跑example的过程中也确实碰到了一些粗糙的地方。比如examples/think是一个基于@cloudflare/think的聊天Agent示例,我照着README配置好之后,第一次启动等了将近10秒才有响应——后来发现是Durable Object冷启动的问题,第二次就快了。
另外,整个项目的文档目前是"forward-looking"的——它描述的是设计意图,而不是当前代码的实际状态。有些API在文档里有,代码里还没实现;有些代码里有的功能,文档里没写。对于想深入使用的人,直接看源码比看文档靠谱。
这东西到底适合谁
说说我的判断。 如果你是做Agent产品的,尤其是需要Agent长时间运行、积累中间产物的场景(比如代码生成、文档处理、数据分析流水线),Cloudflare Computer值得关注。它解决的不是"Agent聪不聪明"的问题,而是"Agent有没有一个稳定的工作环境"的问题。 这个区分很重要。我们讨论Agent的时候,总在想模型能力、推理策略、工具调用——但很少有人关注"Agent在哪干活"。就像你招了一个很聪明的实习生,但没给他分配工位、没开电脑账户,他只能在大厅地板上写代码,每天下班东西就全清了。
Cloudflare Computer本质上就是给Agent分配了一个云端工位:有文件柜(SQLite)、有电脑(三种执行后端)、有门禁(权限控制)。而且这个工位是在Cloudflare的边缘网络上,全球可用、延迟低。 但它现在还不适合生产。API不稳定、文档不完善、预览状态——这些都是事实。我的建议是:现在开始关注、开始试玩、开始理解它的设计思路,但别急着往生产环境里塞。
为什么我觉得这事值得关注
Cloudflare做这个项目,让我意识到一件事:Agent基础设施的竞争,可能比模型能力的竞争更值得关注。 现在大家都在卷模型——参数量、推理能力、Benchmark分数。但当Agent开始真正干活的时候,它需要的不只是一个聪明的大脑,还需要:文件系统、执行环境、持久化存储、权限管理、资源调度……这些东西目前还很原始。
Cloudflare Computer不是唯一一个试图解决这些问题的项目。TencentDB刚开源了Agent-Memory做Agent记忆管理,Addy Osmani的agent-skills在做可复用的Agent技能库。这些项目加起来,正在构建一个Agent的"操作系统层"。 这个层面目前还没有赢家。Cloudflare Computer开了一个好头,但它要走的路还很长。
如果你也在做Agent相关的东西,建议现在就去翻翻它的源码,设计思路值得参考。等正式版出来,我再写一篇实测。现在这个状态,玩玩可以,别当真。