ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Cloudflare Computer:如何给你的 AI Agent 一块持久工作区与真实执行环境

Cloudflare Computer:如何给你的 AI Agent 一块持久工作区与真实执行环境 Cloudflare Computer如何给你的 AI Agent 一块持久工作区与真实执行环境【免费下载链接】computerGive your agent a computer 项目地址: https://gitcode.com/GitHub_Trending/computer1/computerCloudflare Computer 是 Cloudflare 开源的 Agent 云计算机SQLite 虚拟文件系统装在 Durable Object 里文件操作跨重启存活再按需挂上容器或 Worker 执行后端就能跑真实的 Linux 命令。先做个小实验让 Agent 读一份日志、改一段配置然后关掉终端再重开。多数实现里上一轮写下的中间产物、聊天记录、生成代码全部归零——模型再聪明记忆也只活在一次会话里。问题不在模型而在它缺两块硬件一块能存住中间状态的硬盘一双能碰真实二进制git、npm、pandoc的手。纯文本替换干不了需要执行的活本地 fs 跟着进程生灭自建容器要么丢状态、要么要自己写同步。Cloudflare Computer 就是冲着这两块硬件来的而且把两者装进了同一个对象里。它把硬盘搬进了 Durable ObjectDurable Object 是 Cloudflare 的持久化服务端运行时可以理解为一个永不掉线、状态自动落盘的服务端实例。Workspace 就住在这种实例里文件系统状态以 SQLite 为唯一数据源writeFile、mkdir、grep全部对它做持久化DO 重启后原样还在。你在 DO 里构造时指定存储与要挂的后端new Workspace({ storage: ctx.storage, backends: [ new CloudflareContainerBackend({ workspace: { binding: Agent, id: ctx.id.toString() }, }), ], });之后 Workspace 露出两张脸workspace.fs是接近 Nodefs/promises的异步文件 API绝对路径、流式读写、全局 grepworkspace.runtime是唯一执行入口按 backend 参数把同一条exec()路由到不同运行时。也可以不挂任何后端这时它退化成一块纯持久硬盘只读不跑命令。一条命令的一生push、执行、pull 的闭环容器后端的同步机制是这套系统里最有含金量的部分。容器内跑着一个 packages/computerd/ 里的守护进程computerd它借 FUSE——Linux 允许用户态程序挂载虚拟文件系统的机制——把 DO 侧状态投影成真实的/workspace挂载点。一次exec被包在同步括号里。push 阶段DO 把容器还没见过的修订revision流过去同一路径的多次改动合并成一条文件按 512 KiB 分块并以 sha256 做内容寻址双方像 git 协商一样只传缺失的块。命令在挂载点里执行FUSE 捕获的每次写入都打上容器侧修订号。命令结束后 DO 按游标拉回变更批大小 256 条中途崩溃最多重放一批apply 幂等所以重试是安全的。整条通道走 capnweb 二进制 RPCDO 与容器按匹配版本成对部署。Worker Shell 后端则压根没有第二个存储just-bash 跑在 Dynamic Worker按需冷启动的隔离执行环境业内常称 Isolate里通过 Workers RPC 直接读权威 SQLite零同步开销。await workspace.runtime.exec(grep -R TODO ., { backend: worker-shell }); await workspace.runtime.exec(npm test, { backend: container });exec还返回一个事件 ReadableStream转成 SSE 帧推给浏览器就是天然的终端直播。动手在终端里和带硬盘的 Agent 说上话仓库自带一组可直接跑的 Worker 示例我们一般建议从 examples/think 起步一个聊天 Agent同时挂着快速 Worker Shell 与完整容器两个后端工具直接来自cloudflare/computer/tools的createAITools()——read、write、edit、ls、find、grep、delete 自动就位exec 与 publish把产物发布成可分享链接按需开启自带分页、字节上限和原子化的 diff 返回。本地起它需要 Dockerwrangler 要构建容器镜像git clone https://gitcode.com/GitHub_Trending/computer1/computer cd computer npm install cd examples/think npm run dev # 终端 1wrangler dev # 终端 2 再进一次 shell cd examples/think npm run chat # AI SDK 终端聊天 UI发消息后Agent 会自己决定调 read、write 还是 exec 在云端工作区里干活。每个--name对应一个独立实例自己的工作区、自己的聊天历史。给命令选跑道三种后端怎么对号入座同一个workspace.runtime.exec()三种解释方式冷启动速度与天花板各不相同后端冷启动能干什么什么时候选它worker-shell最快Dynamic Worker 秒起just-bash 文本工具链内置 git 走宿主 API 而非公网grep、sed、jq、sort一类快文本命令container慢要拉起整个容器完整 Linux 用户态真实二进制能出公网pandoc转 PDF、完整npm install、测试框架worker-javascript快ESM 模块、结构化输入输出、durablenode:fs/promises确定性脚本、Agent 工具链think 示例的 system prompt 就编码了这条决策路径先 read/ls 而不是exec cat先试 shell 后端干不了再落容器。网络出口是另一根缰绳默认none完全断网all直连公网custom走 http-gateway 白名单——examples/egress 把同一个 URL 打到三条后端让你直观看到三种策略的差异。边界在哪元数据快、大文件慢还有几条红线 ⚠️官方基准跑在 standard-2 实例1 vCPU / 6 GiB / 12 GB 磁盘上对照系是 tmpfs 与容器内 ext4 根盘对象是一次含 854 个包、36,675 个文件的完整npm install。结论分得很干净元数据密集的场景内存 inode 表让它快过真实 ext4stat1000 个文件 0.91x、rm0.66x、建 10×10×10 目录树 0.74x、find0.72x、git init commit0.72x大文件顺序 I/O 是短板64 MiB 写盘约为 ext4 的 17 倍耗时、纯读约 30 倍——每个 512 KiB 块在释放时都要哈希进内容寻址存储这是 DO 侧只同步脏块必须付的账完整npm install耗时 124.7s约为 ext463.9s的 2 倍、tmpfs34.3s的 3.6 倍所以它想装的是 Agent 的工作台而不是整个 monorepo。几条红线要记牢总容量约 10 GB与 DO 共享存储容器侧文件树常驻内存巨型目录树撑不住项目处于 PREVIEW 阶段API 不稳定适合实验与原型不建议直接上生产。另外它没有合并语义——两个写者碰同一文件时最后写入者获胜多 Agent 共享工作区要么划分目录、要么靠显式workspace.pull()交接。往哪走仓库地图与示例清单monorepo 很小四个包各司其职。packages/computer/ 是 DO 侧门面Workspace、fs/runtime 表面、AI 工具另有/backends/*、/git、/tools等子路径入口且用了容器后端就不会把 just-bash 那棵树拉进 bundle。packages/dofs 是 SQLite 虚拟文件系统本体与同步协议构件packages/computerd 是容器内 FUSE 守护进程packages/rpc 是 DO 与容器共享的 capnweb 线协议类型。docs/ 下 19 篇设计文档是最好的第二入口同步协议那篇连为什么不设计一个 rename opcode都写清楚了。想横向对比运行时跑examples/think-compare-runtimes让同一任务在容器与 Worker 上并排赛跑想让 Agent 写 Markdown 再在容器里用pandoc出 PDF看examples/tutorialMCP 协议接入看examples/mcp。如果你现在要给 Agent 配一块存得住中间产物、跑得动真实命令的云硬盘下一步就是 clone 下来把examples/think跑起来再按自己的负载把backends数组换成你需要的形状。【免费下载链接】computerGive your agent a computer 项目地址: https://gitcode.com/GitHub_Trending/computer1/computer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表