给 Agent 一台电脑:Cloudflare 怎么把虚拟文件系统塞进 Durable Object
你给 AI agent 交代一个任务,它跑完,你关掉终端——下一次再叫它,它什么都不记得了。
这就像让一个人搬进新公寓,第二天早上醒来发现所有家具都被清空了,连昨天写了一半的代码也没了。传统 agent 的"无状态"设计,在简单任务上没问题,但一旦任务跨越数小时、数天、多个工具调用,这种"金鱼记忆"就成了致命缺陷。
Cloudflare 这周上了 trending 的 computer 项目,干的就是这件事:给 agent 一台真正的"电脑"——不是比喻,是一个带持久化文件系统、可执行环境、多后端切换的虚拟机器。
核心设计:文件系统即状态
传统 agent 框架把"记忆"塞进向量数据库或聊天上下文。Cloudflare Computer 走了一条完全不同的路:把状态做成文件系统。
具体来说,整个 agent 的工作状态被装进一个 Durable Object,底层用 SQLite 做权威存储,对外暴露成一个虚拟文件系统。Agent 想记住什么,就写文件;想读之前的上下文,就读文件。不需要额外的 embedding 检索,不需要 RAG 管道——文件系统就是记忆。
这个设计的关键洞察是:人类程序员的工作记忆就是文件系统。你的代码、配置、日志、TODO list、中间产物——全都是文件。让 agent 也用文件系统,它就能直接复用人类几十年积累的 Unix 工程工具链(grep、find、make、git),而不需要重新发明一套"AI 专用"的记忆抽象。
三个后端,三种执行模式
但光有文件系统不够,agent 还需要"执行"——跑代码、调工具、调外部命令。Cloudflare Computer 的巧妙之处在于:文件系统是固定的,执行后端是可插拔的。
三个后端对应三种使用场景:
- Container 后端:把 SQLite 状态通过 FUSE 挂载到一个真正的 Linux 容器里。Agent 跑的是真实二进制、真实网络、真实 Linux 用户land。这相当于给 agent 一台完整的电脑。
- Isolate shell 后端:在 Cloudflare Worker 里跑 just-bash(一个纯 JS 实现的 bash),通过 RPC 访问权威状态。没有容器开销,启动快,但能力受限。
- Isolate JavaScript 后端:在 Dynamic Worker 里跑一个 ECMAScript 模块,有结构化输入输出、
node:fs/promises的 polyfill、可信的ws:git和ws:artifacts模块。适合纯逻辑任务。
workspace.runtime.exec(source, { backend }) 是唯一入口。Agent 可以根据任务性质选择后端——需要跑 pandoc 生成 PDF?用 Container。需要快速执行一段 JS 逻辑?用 Isolate JavaScript。为什么这是重要的
第一,状态和执行解耦。 传统 agent 框架把"记忆"和"执行"绑在一起——你用 LangChain 的 memory,就得用 LangChain 的 tool calling。Cloudflare Computer 把状态层(Durable Object + SQLite + 文件系统)和执行层(三个后端)分开,你可以带自己的 agent runtime,只用它的状态层。
第二,文件系统是 agent 之间的共享协议。 多个 agent 协作时,最难的不是"怎么对话",而是"怎么共享工作产物"。用文件系统做共享层,agent A 写的代码、日志、中间数据,agent B 可以直接读——不需要设计专门的的消息协议。这和人类团队的协作方式完全一致。
第三,Cloudflare 的基础设施优势。 Durable Object 是 Cloudflare 边缘网络上的有状态计算单元,全球 300+ 节点,低延迟,自动持久化。把 agent 状态放在 Durable Object 上,意味着 agent 不在某个 GPU 集群里"等死",而是活在边缘网络上,随时可唤醒。
当前状态和限制
README 明确标注了 PREVIEW ONLY——API 不稳定,不适合生产使用。目前的设计是前瞻性的,文档里的内容很多还只是意图,不是当前代码的描述。
但这个方向值得跟踪。Cloudflare 之前出了 cloudflare/agents 做 agent 部署框架,现在又出了 computer 做状态层——他们在系统性地补齐 agent 基础设施的每一层。
一个更大的图景
如果把最近几个 trending 项目连起来看,会发现一个清晰的分层趋势:
- Agent runtime 层:Codex、Claude Code、Cursor——负责"怎么执行一个 turn"
- Loop 控制层:loopx 这类项目——负责"怎么管理多 turn 的工作流"
- 状态层:Cloudflare Computer——负责"怎么持久化 agent 的工作产物"
- 技能层:addyosmani/agent-skills——负责"怎么把工程师经验编码给 agent"
给 agent 一台电脑,不是给它更强的 GPU,而是给它一个可以积累的工作空间。这个方向比"再训一个更大的模型"更接近解决 agent 的长期可用性问题。
---
*项目地址:cloudflare/computer · TypeScript · 796 stars today*