10 月 9 日,Ryan Dahl 在 Deno 官方博客发了一篇不长但分量极重的公告:Deno 团队整体加入 Cloudflare。HN 上一千多个赞,评论区一半在惋惜,一半在算账。惋惜的是又一个独立的开发者产品被收编,算账的人则在看更长远的一件事——这可能是 JavaScript 服务端演化二十年来,最重要的路径收束点之一。
一、三次出走:从 Node 到 Deno 到 celld
要看懂这次收购,得先把 Ryan Dahl 这二十年的路径摆出来。
2009 年他创造了 Node.js,把 V8 从浏览器拖到了服务器,用事件循环重定义了服务端编程。2012 年他离开 Node,2018 年带着对 Node 架构 regrets 的反思归来,创办 Deno:原生 TypeScript、默认安全的权限模型、内建工具链、ESM 优先。Deno 是一次对「JavaScript 运行时应该长什么样」的重新追问。
但 Ryan 的野心从不止于运行时。他在著名的《JavaScript Containers》一文里写下的愿景是:计算、存储、通信一体化,应用不再各自拼装基础设施。Deno Deploy 是这一步的落地,而最近的项目 celld 则走得更远——基于 Cloudflare Workers 的编程模型,把「扩展性内置于编程模型本身」做成从第一天就成立的事实,而不是事后运维补上的补丁。
从 Deno 到 Deno Deploy 再到 celld,这条线解释了为什么是 Cloudflare:当你的产品哲学已经是「Workers 编程模型 + 状态内建」,再独自维护一个运行时和一个托管平台,就是重复建设。公告里说得很直白:团队将把未来开发投入这个共享平台,而不是继续维护一个独立的运行时和托管服务。
二、明码标价的过渡期
对存量用户,公告给出了清晰的日期表,坦率得少见:
- Deno 运行时:再支持一年,按月发布 bug 修复与安全更新,之后官方停止开发。仓库保持开源,欢迎社区接手。
- Deno Deploy:继续运行六个月后关停,付费客户迁移到 Cloudflare Workers 会获得支持。
- JSR:继续运营,基础设施迁至 Cloudflare。
- rusty_v8:持续维护,并逐步集成进 Cloudflare 的 workerd。
四个数字里藏着收购的完整意图。运行时一年、托管六个月,这是给社区和商业客户的止损线;JSR 与 rusty_v8 保留,是拿走了生态分发层和 V8 绑定层这两项真正的资产。运行时的「壳」可以放弃,入口和底层工程能力必须收进来。这个组合拳的思路,和历史上所有成功的开发者生态收购一致:买生态位,不买代码。
三、为什么是现在:Agent 基础设施的缺口
公告里最值得逐字读的一段,是 Ryan 对 AI 的表态:「对更好抽象的需求,在 AI 时代尤其尖锐。」他随即点名 Durable Objects——无服务器执行、持久状态、WebSocket、高层 JavaScript 接口,四个能力装在同一个原语里——「这正是 Agent harness 特别需要的东西,也是我对 celld 最兴奋的原因」。
这话不是客套。拆开任何一个生产级 Agent 系统看,最难的部分从来不是模型调用,而是状态:一个跑半小时的浏览任务,中间态要能存、能恢复、能跨请求续接;多轮工具调用要流式推送;会话结束后的记忆要能带着。传统架构里这些分别对应消息队列、数据库、SSE 和缓存,四套运维;Durable Objects 把它们收敛成一个带单实例强一致的对象模型——每个 Agent 会话就是一个对象,断电重启接着跑。
而 celld 的定位是把这套模型带出 Cloudflare 的网络:「想在自有基础设施上大规模跑 Agent 的团队,请发邮件到我的新邮箱。」Ryan 用个人邮箱公开招募场景,说明 Cloudflare 的意图不止于自家长大的 Workers,而是想让「扩展性内建于编程模型」成为服务器开发的新默认——无论你跑在谁家的机器上。
四、行业格局:运行时战争结束了
把镜头拉远,这次收购完成了一个阶段的收束。服务端 JavaScript 的运行时格局,曾经是三四个玩家并进的战国:Node 背靠 OpenJS 基金会与企业共同体,Bun 用 Zig 重写引擎争性能,Deno 走安全与工程化的路线。现在,Bun 仍是独立公司继续搏杀商业化,而 Deno 选择了另一条路:不卖运行时,把团队和理念并进最大的边缘计算平台,去定义运行时之上的那一层。
这个信号对所有做开发者基础设施的团队都成立:单点工具的窗口期越来越短,平台级整合的速度越来越快。开发者在选型时需要把「这个框架三年后还在不在」纳入权重——不是看技术好不好,而是看它背后有没有一个能把维护成本扛过十年周期的商业实体。
对 Cloudflare,这笔账同样清楚。Workers 已经拿下了「边缘函数」的心智,但 Agent 时代真正值钱的是有状态的长期会话——这正是 Durable Objects 相对竞品最深的护城河。把 V8 绑定层的顶级团队收进来,把 celld 的分布式抽象揉进 Durable Objects,等于在「Agent 会住在哪里」这个问题上抢占了答案的位置。
五、给开发者的三条建议
存量用户:给 Deno Deploy 项目排迁移计划,六个月不算长,Workers 的权限模型与 Deno 有差异,趁早动。Deno 运行时不必急着换,一年维护期足够稳住存量,但新项目不该再起。
生态观察者:盯 JSR 的后续。包注册表迁入 Cloudflare 后如果与 Workers 部署打通(push 即部署),会形成一个很强的开发者闭环,值得警惕也值得学习。
Agent 开发者:认真评估 Durable Objects 作为会话状态层的方案,无论是否部署在 Cloudflare。celld 是开源方向,自托管路径可能出现;「状态内建于编程模型」这个理念本身,比它落地在哪一家更重要。
Ryan Dahl 二十年间三次重新定义服务端 JavaScript 的边界。这一次,他带着整个团队把自己交给了更大的平台——不是退场,而是把赌注押在了下一个抽象层上。Agent 基础设施这条赛道,刚刚多了一个重量级的押注者。