js-cloudflare。
部署到 Cloudflare
1
安装并构建
2
配置密钥
3
部署
nodejs_compat 和 nodejs_compat_populate_process_env 后,LangChain 就可以从环境中读取 OPENAI_API_KEY。
wrangler.jsonc 通过 new_sqlite_classes 注册 ThreadSession Durable Object,这是 Workers 免费计划所必需的。
必需的 API 端点
应用在/api/threads/... 下提供 Agent Streaming Protocol。路由在 worker/index.ts 中使用 Hono 实现。
最低配置(流式聊天)
可选配置(侧边栏)
请求流程
- 初始化线程状态(
GET/POST /state)。 - 提交时,SDK 向
/commands发送run.start,并接收一个run_id。 - Worker 启动图运行,并将每个协议事件分发到线程对应的 Durable Object。
- SDK 订阅
/stream(SSE)。DO 会重放已缓冲的事件,并持续接收实时帧,即使 Worker 隔离实例重启也不会中断。 - 子代理(
task)运行时会发出带命名空间的事件,这些事件会以stream.subagents的形式呈现。
Cloudflare 后端设计
在 Cloudflare 上,Worker(代理 + 检查点保存器)与 Durable Object(SSE 事件日志)之间的拆分是主要设计选择。Worker 隔离实例是临时的,因此重放缓冲区存储在 Durable Objects 中,而不是进程内存中。
生产环境持久化
默认情况下,代理使用内存中的MemorySaver 检查点保存器(worker/agent/index.ts)。这对本地开发和演示来说已经足够,但在 Cloudflare 上,由于存在多个隔离实例和冷启动,会话状态在部署之间或不同隔离实例之间不会持久化。
在生产环境中:
- 换用持久化检查点保存器(例如通过 Hyperdrive 使用 Postgres,或使用基于 DO 的自定义存储)。
- 保留每个线程对应的 Durable Object 以实现 SSE 重放(或者将事件日志持久化到 DO 存储 / KV,以支持长期重连)。
本地开发
/api/* 路由的行为与生产环境一致。
项目结构
src/components/— 聊天界面(ChatApp、Chat、MessageThread、Subagents、ThreadHistory、…)。src/lib/chat/threads-client.ts— 浏览器端线程初始化和侧边栏辅助函数。worker/agent/— 深度代理(createDeepAgent),包含researcher和math-whiz子代理以及模拟工具。worker/server/— 协议辅助函数:runs.ts(在 Worker 上启动运行)、threads.ts(基于检查点保存器的状态)、serialize.ts、registry.ts。worker/durable-objects/thread-session.ts— 每个线程的 SSE 事件日志(StreamChannel+matchesSubscription)。worker/index.ts— Hono 应用:协议路由 + Worker 导出。wrangler.jsonc— Worker 配置:nodejs_compat、Durable Object 绑定,以及 SPA 资源路由(run_worker_first: ["/api/*"])。
另请参阅
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

