Cloudflare 推出了开源内容管理系统 EmDash,用 TypeScript 写成,基于 Astro 框架。官方把它定位为 WordPress 的精神接班人,并已在近期发布 1.0 首个稳定版。这个项目到底能做什么、和 WordPress 相比差别在哪,值得从“你打算建什么站、谁来改内容”这两个现实问题出发去看。
许可证与团队背景
Cloudflare 以 MIT 许可证维护 EmDash,WordPress 则是 GPLv2 或更高版本。Cloudflare 在发布文章中强调,EmDash 没有使用任何 WordPress 代码,其中相当一部分由 AI agent 在两个月内写出。
维护者 Matt Kane 同时也是 Astro 核心维护者,Astro Technology Company 团队也已加入 Cloudflare。这让 EmDash 更像“Cloudflare 认真做的一个产品”,而不是社区插件堆出来的东西。
运行形态与技术栈
一个 EmDash 站点可以跑在 Cloudflare Workers 上,用 D1 存数据库、R2 存对象存储;也可以部署在受支持的 Node.js 主机上,配 SQLite、libSQL 或 PostgreSQL。当前的 Node.js 部署指南 要求版本 22.23.4 或更高;如果只用 Astro 7.3 或更早版本,22.16.0 就够了。
后台管理有五个角色:Admin、Editor、Author、Contributor、Subscriber。默认登录方式是 passkey。侧边栏按内容分组,同时提供菜单、重定向、小工具、内容类型、插件和导入等工具入口。
编辑器与主题模型
文章在 TipTap 编辑器里撰写,保存为 Portable Text(一种 JSON 内容格式)。编辑界面把发布状态和 slug 放在内容旁边的侧栏里,作者署名和分类也在同一位置。
TipTap 是一个开源的无头编辑器框架,EmDash 用它承载 Content 字段,把写入的内容存为 Portable Text。
WordPress 同样在区块编辑器里写文章,文章设置也放在独立侧栏,习惯迁移的人上手不会有太大阻力。
主题则是另一套逻辑:Astro 项目,由路由、布局和组件构成,通过 EmDash runtime 查询内容,且不像注册表插件那样被沙箱隔离。这个开发模型直接决定了站点迁移时会遇到什么。
核心变化:1.0 之后已经具备的能力
EmDash 1.0 确立了稳定版本基线,后续版本继续补齐。当前已确认的能力包括:
- 集合(Collections),内置 17 种字段类型,其中包含可关联其他条目的引用字段,以及用于结构化重复行的 repeater 字段。
- 沙箱插件,同时支持 Cloudflare Workers 和 Node.js 环境。
- WordPress 导入,支持两种入口:上传 WXR 文件,或使用安装在线上站点里的导出插件产出数据。
- 内置 MCP 服务、命令行工具和 Agent Skills,用于构建、升级和迁移站点与插件。
- 可选的按请求付费,通过独立的 x402 集成实现。
生态差距也必须说清楚:对比 WordPress,官方插件注册中心的插件数量少得多,Cloudflare 在 1.0 公告中把“付费插件支持”列为未来目标而非已交付能力。EmDash 用 Astro 模板取代 WordPress 式主题切换,第三方主题是可用的,但它的 区块组合系统只允许编辑增删、排序开发者预先定义的区块,并不是 Divi 那种通用可视化页面构建器。注册中心首页会标注每个插件的作者、版本和许可证标签。
真实迁移案例
Cloudflare 已经 把自己的博客迁到了 EmDash。那份迁移复盘里,团队实际补齐了媒体、搜索、作者署名、本地化、SEO 和编辑器易用性这些缺口。定时发布在 0.19.0 版本加入,当前版本仍然支持。
插件安全:EmDash 的沙箱与 WordPress 的风险敞口
插件隔离是 EmDash 的设计核心。每个沙箱插件只运行在它声明、并经管理员批准的能力范围内:在 Cloudflare 上跑在 Dynamic Worker 里,在 Node.js 上由独立的 workerd 进程提供隔离;Cloudflare 侧启用沙箱需要 Workers Paid 套餐。需要注意的是,原生(native)插件直接在服务进程内运行,没有这层隔离;而且被批准的权限依然能产生真实变更,所以沙箱化并不能免除“信任插件发布方”这件事。
WordPress 的插件风险则是可量化的。Patchstack 的 安全报告统计了一个报告期内新增 11,334 个漏洞,比上一期增长 42%,其中 91% 出现在插件、9% 在主题,核心代码只有 6 个;而在披露时仍有 46% 尚未修补。
影响与建议
如果继续用 WordPress:只保留一份自己审过的插件短名单,在所有站点上复用同一套;能上 Patchstack 就上,把告警接入日常流程;及时删除不再需要的插件,版本更新先在预发布环境验证;主动看安全公告和开发者回应。安装量和最后更新时间可以作为筛选参考,但都不能证明插件安全。Patchstack 的 插件列表 提供免费漏洞告警,但要真正主动处置需要付费方案——其 Developer 计划按年付为每月 69 美元、覆盖 25 个站点,预算前请以官网当前条款为准。
如果考虑迁到 EmDash:把沙箱当作加分项而不是免罪符,原生插件依然要按“完全信任”来审;先在 Cloudflare 侧跑通 Workers + D1 + R2 的组合,再评估 Node.js 部署路径(注意 Node 版本要求);用 WXR 导入做小规模试点,重点验证媒体、搜索、署名、SEO 这些历史上最容易出问题的环节;插件生态规模明显小于 WordPress,先确认你依赖的插件在注册中心是否已存在。
就目前的完成度而言,EmDash 还有不少地方谈不上惊艳,但项目足够新,1.0 稳定版和随后的迭代确实把“能不能真的拿来建站”这个问题往前推了一大步。Cloudflare 在自家博客上的迁移实践提供了一个现成的参照样本。对自己的站点,更稳妥的顺序是:先做试点,验证通过了再谈整体迁移。
把一个 WordPress 站点迁到 EmDash,真正难的往往不是“能不能装插件”,而是“这个插件能不能在你选定的运行环境里真正跑起来”。接下来按结构化内容、常规功能、迁移和 AI 代理四条线,把两侧的能力差异摊开讲清楚。
WordPress 的插件生态体量远大于 EmDash,但“一份经过筛选的小插件清单”并不提供运行时隔离。插件的审查、及时更新、备份和监控能降低风险,却不能把风险清零。
这决定了后续每一个判断的前提:凡是靠插件生态覆盖的能力,在 EmDash 上要么由内核自带,要么需要重新设计实现路径。
能力对比:结构化内容、站点设置与常规功能
内容类型与自定义字段
我建站的常规做法是围绕“选项页 + 自定义文章类型 + 自定义字段”展开:客户在选项页上改设置,在后台按一组固定、明确的字段新增内容。
EmDash 覆盖了后半段。可以在后台的 Content Types 下创建集合,也可以用命令行工具创建;集合结构(schema)在运行时直接从数据库读取。Add Field 对话框列出全部 17 种字段类型,其中包括可以在多个集合之间建立关联的引用字段,以及承载结构化行的 repeater 字段。
WordPress 侧则由核心提供自定义文章类型(custom post type)和文章元数据的 API,编辑界面靠代码或插件实现。免费的 Secure Custom Fields 插件可以注册文章类型、分类法,以及字段组、repeater 和选项页。
站点级设置与选项页
站点级选项需要另一套配置。EmDash 内置的 Settings 界面覆盖站点身份、社交账号和 SEO 默认项;要给客户做自定义控制项,可以走插件设置与后台页面——这能让电话号码、预约链接、横幅开关成为可能,但前提是有开发投入和模板改造,而不是一个“字段插件里已经配好的选项页”工作流。
在 WordPress 上,选项页来自字段插件,客户在同一个后台里完成编辑:电话号码、预约链接、横幅开关都集中在一个页面上。
表单、电商与可视化编辑
表单最能说明两者的配置差异。EmDash 有表单类插件,但要逐个看它的渲染说明:部分插件要求在 Astro 项目里安装配套包,并先完成一次构建和部署——只从注册中心安装插件,并不等于表单已经出现在公开页面上。在 WordPress.org 上,Contact Form 7 的活跃安装量超过 1000 万,WPForms Lite 超过 500 万,表单通过受支持的区块或短代码放置;像 Divi 这样的构建器在装好对应插件后,还提供 Gravity Forms 模块。
电商方向上,Urumi 现在提供 Otta,一个面向 EmDash 的开源电商层。选型前需逐一核对具体店铺在支付、物流、税务和集成上的要求。WordPress 一侧的 WooCommerce 生态成熟得多,活跃安装量超过 700 万,Divi 也提供 WooCommerce 模块来搭建商品页和店铺布局。
另外,x402 包可以通过 HTTP 支付请求为某个资源的访问收费,它不是购物车,应当与 Otta 或 WooCommerce 分开评估。
可视化编辑与邮件的分界线在于“改内容”和“做设计”的区别。EmDash 支持页面内联编辑,编辑者可以组合预设区块,或在开发人员配置好的前提下选择布局;但新增布局和样式仍然要回到 Astro 开发。WordPress 上,Divi 的 Visual Builder 直接给客户页面本身的视觉控制权。
邮件在生产环境需要 provider 插件,否则邀请链接只能手工复制。付费扩展则要单独确认厂商的授权、更新和支持条款——注册中心上的免费条目并不代表这些服务已经具备。
AI 代理接入
AI 在 WordPress 侧的日常提效已经相当可观。EmDash 则把代理当作一等用户对待:内置 MCP 服务位于 /_emdash/api/mcp,支持 OAuth 2.1 或个人访问令牌鉴权,权限不会超出用户本身的角色;工具覆盖内容、schema、媒体、分类法、菜单、修订和设置,插件还可以对外暴露额外的 MCP 工具。
WordPress 的做法依然是“核心搭零件”。6.9 引入的 Abilities API 让核心以机器可读的形式登记自己能做什么,插件和主题也能用同一套方式登记自己的能力。7.0 进一步加入 AI Client——一个面向插件的 PHP API,模型由 Anthropic、Google、OpenAI 各自提供的官方插件接入。
在此之上还有官方 MCP Adapter,把“注册得合适”的能力暴露给 Claude Code 这类兼容客户端。需要说清楚的是:它与 WordPress 核心分开分发,并不会自动把全部 WordPress 操作权限交到代理手上。AI Engine 则提供了另一条通往 WordPress MCP 服务器的路径。
插件和主题层面也在自己加代理能力:Divi AI Agents 直接工作在 Visual Builder 里,用自然语言描述改动,它负责增删改模块、新建页面。EmDash 走的则是另一条路——它内置的代理界面覆盖了整个内容模型。
一句话结论:在 WordPress 上,代理能做什么,取决于核心和你的插件注册了哪些 abilities。
迁移:把 WordPress 站点搬到 EmDash
WordPress 导入界面接受三类输入:WXR 导出文件、EmDash Exporter 迁移密钥,或一个站点 URL。
需要注意的边界:
- 仅填 URL 仍需 Exporter 才能完成鉴权导入;没有它,EmDash 只会探测公开的 REST API。
- WXR 导入以导出文件中的数据为准,附件 URL 必须保持可访问,媒体才能被复制过来。
- 字段范围:Exporter 可以带入受支持的自定义 meta 和 SEO 字段;评论、菜单、Logo 和 favicon 需要 Exporter 1.2.0 或更高版本。字段映射和引用关系要逐项复核,不要默认“一一对应、完整转换”。
- 主题不会被导入,需要手工移植。迁移文档明确要求在导入后检查短代码、页面构建器标记和插件定义的区块;用页面构建器搭的站点会以“内容”形式搬过去,版式则要重建成 Astro 页面。
- 导入是分块执行的,成功提示不等于迁移完成。仍需比对内容数量、抽查代表性页面、检查媒体与作者、测试重定向和导入的设置。
EmDash 提供了主题移植和插件移植的 Agent Skills,可以辅助重建,但它们不会让 WordPress 插件或既有版式直接兼容。
迁移建议
- 别用插件数量评估迁移成本,要看每个能力在目标环境里是否真的可运行:装得上 ≠ 渲染得出来。
- 表单和电商是迁移中风险最高的两块,它们往往带外部依赖(构建步骤、支付、物流、税务),建议在上线前用真实店铺做一次端到端验证。
- 内容结构是迁移中最容易保留的部分:自定义文章类型和自定义字段有明确对应关系,核对字段映射比重建 schema 更省事。
- 版式与页面构建器产物基本等于重做,把主题移植当成独立项目排期,不要塞进导入任务里。
- 上线后做一次完整核验:内容数量、代表性页面、媒体、作者、重定向、导入的设置,缺一不可。
- AI 代理方面,EmDash 把 MCP 做进内核并严格限制权限边界,是可以直接纳入评估的成熟度信号。
运行成本:免费的是软件,不是账单
WordPress 运行在满足其 PHP、数据库与 HTTPS 要求的托管环境上,这些环境很可能正是客户已经在用的那台。WordPress 与 EmDash 本身都是免费开源软件,真正的总成本由托管、开发、维护和你选用的增值服务决定。
EmDash 可以跑在 Node.js 托管上。放到 Cloudflare 上时,沙箱插件需要 Workers Paid,起步价 每月 5 美元——但这是平台门槛价,不等于整站账单,用量、数据库、存储和其他服务都可能往上加。WPMU DEV 也提供托管 EmDash 主机,其入门服务器标称 每月 30 美元,Premium Pro 会员则为 每月 15 美元;比较方案时记得把会员成本和当前条款一并算进去。
留在 WordPress 这一边,预算项是托管费加上你挑选的付费插件或监控服务。而在两个平台上,都应该把持续开发与支持的人力成本算进去——尤其当客户自己维护不了这套技术栈时。
早期反馈:值得听,但要分清时点
WordPress 联合创始人 Matt Mullenweg 对初始预览版本给出了正面评价,称产品“非常扎实”(very solid)、工程实现“非常出色”(excellent engineering),并把 Agent Skills 称为“一个绝妙的策略”(a brilliant strategy),认为 WordPress 也需要“照做”(to do the same)。他的反对意见是插件沙箱“只能在 Cloudflare 上跑”——但这句针对的是发布预览期,现在的 EmDash 也已支持通过 Node.js 上的 workerd 做沙箱。相关表态见原帖。
Yoast 创始人 Joost de Valk 欢迎这种面向代理的设计,同时提醒:快速推进的 AI 辅助开发不能替代生产环境经验。他的判断可以作为参考背景,但要注意它早于 EmDash 正式稳定版和后续改进。读全文
影响与建议:下一站该选谁
答案取决于两件事:这个站点要承担什么任务,以及由谁来编辑。
- 依赖成熟插件、可视化页面设计,或客户已经在你支持的编辑流程里 —— WordPress 通常是更务实的起点。
- 别只拿“自定义字段”当分水岭 —— 两套系统都支持结构化内容,这一点不足以决定选型。
- 由已经熟悉 Astro 的 TypeScript 开发者维护的内容型站点 —— 更适合先做一次 EmDash 试点。
- 在最终敲定前,先把所需的集成和编辑控制项逐条确认清楚。
开发者本人的态度也值得摆在桌面上:他对迁移现有站点到 EmDash 仍有顾虑——自己在 WordPress 插件与主题生态、以及既有 SOP 上投入很深,也确实从 AI 上获得了可观的效率提升;即便 WordPress 有各种小毛病,它仍未被开发的可能性还有很多,因此“切换”很难被论证为划算。
具体行动建议:
- 决定留在 WordPress:先整理一份自己信得过的插件与监控清单,并优先看 WordPress AI 插件指南中覆盖代理方向的部分。
- 对 EmDash 感兴趣:先试公开 playground,或者搭一个小规模试点站,再谈迁移计划。
- 想要更完整的判断:可以延伸看“AI 会终结 WordPress 吗?”那篇的背景分析。
- 偏好可视化工作流:不妨试试 Divi 5,看它的构建器是否贴合你和客户的使用习惯。




