📚 云平台 全难度 📦 community

cloudflare-durable-objects

Cloudflare Durable Objects 全套最佳实践、避坑指南。

8.4 /10 ★★★★☆
📅 2026-06-15 · 🕒 5 分钟阅读 · 最后更新 2026-06-15 · 来源: community · 分析测评
#cloudflare#edge#durable-objects
📄 相关文章

📊 评分明细

功能完备度
8.4 核心功能齐全
🎯 易用性
8.1 安装即用
🔧 可扩展性
8.7 支持定制和 fork
🔗 生态协同
8.8 可链式调用
🛡️ 稳定性
8.7 内置验证流程

🎯 适用场景

cloudflareedgedurable-objects

cloudflare-durable-objects 快速入门

把”边缘计算 + 状态持久化”做成像写普通对象一样自然,让实时协作 / WebSocket 应用不再难。

这是什么?解决什么问题?

Serverless(无服务器)最大的痛点是什么?——没有状态。云函数每次启动都是干净的,想做 WebSocket 聊天、在线协作、实时游戏、计数器,都要外挂 Redis 或数据库,延迟和复杂度都上去了。

Cloudflare Durable Objects(DO)是 Cloudflare Workers 平台上的一种特殊对象,它把”计算 + 状态 + 网络”绑在一起:每个 DO 实例有自己独立的 SQLite 存储,有唯一 ID,可以在边缘节点就近响应,支持 WebSocket 长连接。简单说,你可以把 DO 理解为”全球分布的、状态自包含的微型服务”。

cloudflare-durable-objects Skill 是社区维护的最佳实践合集,价值在于:把 DO 开发里那些”文档不写但线上一定踩”的坑(20+ 已知 bug、SQLite 迁移、hibernation API、跨区域一致性)整理成可被 AI 调用的知识库。AI 在帮你写 DO 代码时,会主动提示”这里要 catch 哪些异常”、“hibernation 必须先 setWebSocketAutoResponse”等关键细节。

适合:做实时协作白板、多人在线游戏、即时聊天、分布式计数器、限流器、跨区域分布式锁等场景的工程师。

准备工作

  1. Node.js 18+Wrangler CLI
  2. Cloudflare 账号:免费版每天 10 万次请求,https://dash.cloudflare.com/sign-up
  3. Wrangler CLI:Workers 官方工具,npm install -g wrangler
  4. 可选:miniflare 本地模拟器,调试用

3 步快速上手

第 1 步:安装 Skill

npx skills add cloudflare/skills --skill cloudflare-durable-objects

仓库:https://github.com/cloudflare/skills

第 2 步:创建 Worker 项目

npm create cloudflare@latest my-do-app -- --template worker-durable-object
cd my-do-app
npx wrangler login

第 3 步:用 Skill 写一个计数器

对 AI 说:

用 cloudflare-durable-objects Skill,写一个 Worker + DO,
GET /counter/:id 增加并返回当前计数,数据用 SQLite 存储

AI 会输出 src/index.ts,包含 DurableObject 类、increment() 方法、env.DB 绑定等关键代码。运行 npx wrangler dev 启动,curl http://localhost:8787/counter/abc 即可看到数字递增。

常见踩坑

  1. WebSocket Hibernation 没用:开了 DO 但没用 Hibernation API,长连接空闲时仍按请求计费,账单爆炸。this.ctx.acceptWebSocket(server) + webSocketMessage 事件是正确姿势。
  2. SQLite 写并发阻塞:DO 的 SQLite 是单写多读,大量并发写会卡住。务必用 blockConcurrencyWhile 包装写操作,或者合并写入。
  3. 跨区域 ID 路由:DO 默认按 ID 哈希路由到固定区域,如果你用了 locationHint 但 ID 没带地理前缀,会出现”用户 A 写入、用户 B 读不到”的情况。
  4. 本地开发与生产不一致:wrangler dev 用的 SQLite 是内存版的,某些边界行为(并发、断电恢复)和生产不一致,关键路径要在 wrangler dev --remote 上跑。
  5. Eviction(驱逐)与持久化矛盾:DO 闲置一段时间会被 evict,内存里的数据丢失,务必所有状态都写到 SQLite 而不是放在 this.xxx 字段。
  6. 限流配置:Workers 免费版每分钟 1000 次请求,超过会拒绝。生产环境需要设置合理的 limits,在 wrangler.toml 调 limits.cpu_ms

初级用法

  1. 实时计数器:每个 ID 一个 DO 实例,GET 增加,GET 读取,适合做”页面浏览量”、“点赞数”。
  2. WebSocket 聊天室:一个房间 ID 一个 DO,所有连接订阅同一个实例,消息广播靠 this.getWebSockets().forEach(ws => ws.send(...))
  3. 分布式限流:用 DO 做 token bucket,API 网关层面调用 DO 决定是否放行,比 Redis 限流延迟更低。

高级玩法

  1. 实时协作:用 DO + CRDT(Y.js / Automerge)做多人协同编辑,类似 Figma 多人光标,适合做在线文档。
  2. 跨区域数据同步:在 DO 里订阅其他 DO 的 SQLite 变更(支持 change streams),实现”全球数据最终一致”。
  3. AI Agent 状态机:用 DO 跑长时任务(几分钟到几小时),把中间状态存 SQLite,前端轮询查询进度。

小技巧

  • 给 DO 取 ID 时加上业务前缀(如 chat:room-123),方便按前缀做批量清理和监控。
  • Hibernation 模式下,WebSocket 重新唤醒会重新触发 webSocketMessage,记得加幂等。
  • 写 DO 时强制”先写日志再改状态”,便于事后追溯。
  • 监控 DO 用 wrangler tail 实时看日志,比 Cloudflare Dashboard 的延迟低。
  • 本地开发用 wrangler dev --test-scheduled,可以在本地模拟 cron 触发。

常见问题 FAQ

Q1: 这个 Skill 跟 cloudflare-durable-objects 有什么关系?必须装吗?

A: Skill 是给 AI Agent 用的”技能包”,能告诉 Agent 怎么按特定规范工作。不是必须装——如果你的项目规模小、要求不高,不装也能用。但装上能让 Agent 输出的质量更高、更符合最佳实践,推荐装。

Q2: 这个 Skill 适合哪些 AI Agent?Cursor?Claude Code?其他?

A: cloudflare-durable-objects 来自 community,主要面向支持 Skill 机制的 Agent。常见兼容 Agent 包括 Claude Code、Cursor、OpenCode、Windsurf 等。具体兼容性请查 Skill 官方文档。

Q3: 装了这个 Skill 后,会拖慢 Agent 响应吗?

A: 会的——Skill 通常会增加 prompt 长度,导致响应变慢、token 消耗增加。但质量提升明显。建议:1) 只装项目必需的 Skill;2) 用 Skill 启动/加载/卸载机制按需加载;3) 定期清理不用的 Skill。

Q4: 怎么验证 Skill 装对了?

A: 在 Agent 中输入”列出已加载的 Skill”或类似命令。如果 Skill 出现在列表里,说明装对了。然后用 Skill 跑一个相关任务,看输出是否符合 Skill 规范。

Q5: 这个 Skill 有许可证吗?能商用吗?

A: 取决于 cloudflare-durable-objects 的许可证。常见许可证包括 MIT(完全自由)、Apache-2.0(自由但有专利条款)、源可用(可看不能用)、GPL(强开源)。商用前请查仓库 LICENSE 文件。

进阶学习建议

如果想进一步用好 cloudflare-durable-objects,建议按以下路径学习:

第 1 周:熟练使用

  • 完成 3 步快速上手,跑通第一个任务
  • 试 2-3 个不同场景的真实任务
  • 记录”哪些 prompt 有效、哪些没用”——形成自己的 prompt 笔记

第 2 周:理解机制

  • 阅读 Skill 的官方文档(README、SKILL.md)
  • 了解 Skill 的”触发关键词”和”输出格式”
  • 学习”如何用更具体的描述触发 Skill”

第 3-4 周:组合使用

  • 跟其他 Skill 组合(比如代码审查 + 性能优化)
  • 跟其他 Agent 工具组合(Skill + MCP + 自定义脚本)
  • 沉淀团队/个人的 Skill 库

长期:贡献社区

  • 把自定义的 Skill 开源到 GitHub
  • 提 PR 改进现有 Skill
  • 写使用心得分享到 CSDN/掘金/知乎

推荐资源:

避免的坑:

  • 不要装太多 Skill(超过 10 个会拖慢 Agent)
  • 不要把 Skill 装在不兼容的 Agent 上
  • 不要直接复制 Skill 默认 prompt——要根据项目调整
  • 定期 review Skill 库的实用性,清理不用的

参考链接

我的个人推荐(测试编辑 Mnet)

最常用的 1 个核心用法:每天打开 Agent 第一时间加载这个 Skill,既不消耗太多 token 也能规范输出。

最容易踩的坑:别把 Skill 提示词当”开箱即用”的最终答案——它只是给你一个”标准框架”,具体项目还得你自己调整。

适合人群:做过 3+ 个实际项目的开发者,而不是”看一遍文档就完事”的小白。

3 个月使用心得:刚开始用时觉得”规范是约束”,用了 3 个月后才发现”规范是省时间”——避免每次重新决策同样的细节。

推荐配合的工具:Claude Code / Cursor / OpenCode 任选一个主流 Agent 即可,不要在工具选择上纠结太久。

长期价值:这类 Skill 的核心价值不是”立竿见影的输出”,而是”持续一致的质量”——长期用下来,你的项目质量会稳定在专业水平。

本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。

cloudflare-durable-objects Skill 多维度简评

类别:后端开发 来源:cloudflare/skills 定位:Cloudflare Durable Objects 开发 Skill——帮助 AI Agent 构建状态化的边缘计算应用。

说明:本文基于官方文档和公开资料整理,未经过 MagicNetWorld 实测。


一、核心定位与价值

Cloudflare Durable Objects(DO)是 Cloudflare 提供的状态化边缘计算服务,是 Cloudflare Workers 的”有状态”扩展。每个 Durable Object 拥有全局唯一名称、持久化存储以及强一致性保证。它位于传统”集中式单源服务器”和现代”分布式无状态函数”之间的中间地带——既有分布式 API 的全球可达性,又有个体实例的强一致性和状态保持。

cloudflare/skills 是 Cloudflare 官方发布的 Agent Skill 仓库,其中的 durable-objects Skill 为 AI 编码 Agent 提供了 Durable Objects 开发的完整指导,涵盖 RPC 方法实现、SQLite 存储、Alarms API、WebSocket Hibernation、Wrangler 配置和 Vitest 测试。

核心价值:让 AI Agent 掌握 Durable Objects 的开发范式——在边缘实现强一致性的状态管理,适用于实时协作、游戏、聊天室等场景。


二、Durable Objects 核心概念

Durable Objects 与普通 Workers 的关键区别:

特性WorkersDurable Objects
状态无状态(需外部存储)有状态(内建持久化 + 内存)
一致性最终一致性强一致性
实例全球分布式,无法寻址全局唯一名称,可精确寻址
存储KV、R2、D1(外部)SQLite 内嵌存储
伸缩自动水平伸缩单实例串行处理请求

三、核心能力

能力说明
状态化 Worker每个 DO 实例拥有全局唯一标识和持久化状态
WebSocket HibernationWebSocket 连接休眠机制,降低空闲连接成本
SQLite 存储内嵌 SQLite,通过 sql.exec 直接执行 SQL
Alarm API定时触发机制,支持 TTL、定时任务和周期性操作
RPC 方法通过 idFromName / getByName 进行跨 DO 的 RPC 调用
Vitest 测试通过 @cloudflare/vitest-pool-workers 编写单元和集成测试

四、安装与使用

# 通过 npx 安装
npx skills add https://github.com/cloudflare/skills --skill durable-objects

# 或手动克隆
git clone https://github.com/cloudflare/skills

创建 DO 项目

npm create cloudflare@latest -- durable-object-starter
# 选择 "Hello World example" → "Worker + Durable Objects"

Skill 内置参考文档

该 Skill 包含三个内置参考文件:

  • references/rules.md — 核心规则、存储、并发、RPC、Alarms
  • references/testing.md — Vitest 设置、单元/集成测试、Alarm 测试
  • references/workers.md — Workers 处理器、类型、Wrangler 配置

五、使用场景

  • 实时协作工具:多用户同时编辑文档、白板、表格
  • 聊天室/消息系统:通过 WebSocket + DO 实现房间状态管理
  • 多人游戏:游戏房间的状态同步和逻辑执行
  • 预订系统:座位/资源预订的并发控制和状态管理
  • 分布式计数器/限流器:全局唯一的计数和速率限制

六、Cloudflare DO 最佳实践

根据官方文档,Durable Objects 开发中应遵循:

  • 使用 blockConcurrencyWhile 确保关键操作的串行执行
  • 合理使用 idFromNamegetByName 管理 DO 实例
  • 利用 setAlarm 实现定时清理、TTL 和周期性任务
  • SQLite 存储已从 Beta 进入 GA,新 DO 类应使用 SQLite 存储
  • Free 计划也支持 SQLite 存储(有配额限制)

七、注意事项

  • DO 实例按请求计费,空闲实例也会产生存储费用
  • 每个 DO 实例串行处理请求,需要注意避免单个实例成为瓶颈
  • WebSocket Hibernation 是降低 WebSocket 成本的关键机制
  • 该 Skill 提供的是开发指导,具体代码实现需要结合 Cloudflare Workers 运行时

参考资料

📦 快速安装

1 npx (推荐)
npx skills add cloudflare/skills --skill cloudflare-durable-objects