main.ts 入口同时提供构建后的静态资源和 API。
这是将 Next.js 示例移植到 Deno + Hono 的版本,展示了如何在 Deno Deploy 而不是 Vercel 上运行相同的代理技术栈。
源代码位于部署示例仓库中的 js-deno。
部署到 Deno Deploy
1
创建 Deno Deploy 项目
Fork 或克隆
langchain-ai/deployment-cookbook。在 Deno Deploy 控制台中,创建一个与此仓库关联的新项目。2
配置构建设置
- 将 Root Directory 设置为
js-deno。 - 将构建命令设置为
deno task build:client(将 Vite SPA 构建到dist/)。 - 将入口点设置为
main.ts。 - 在项目环境变量中添加
OPENAI_API_KEY。
3
部署
从控制台进行部署。Deno 的构建环境会运行构建命令,因此
dist/ 会在云端生成,无需提交到仓库。deno deploy CLI(Deno 2.x)。deno.json 中的 deploy 配置块设置了 org/app。请将它们改为你自己的值(或者传入 --org/--app 标志,这些标志会覆盖配置中的值)。
deno task deploy 会运行 deno task build:client && deno deploy --prod,然后执行 rm -rf dist。由于 deno deploy --source local 会上传你的工作区(不包括 .gitignore 中指定的内容),且不会运行构建命令,因此必须在本地完成构建。只有与 GitHub 连接的应用才会运行这些构建命令。
你也可以选择通过添加 .env.example 中的变量来启用 LangSmith 追踪。
必需的 API 端点
应用在/api/threads/... 下提供 Agent Streaming Protocol。路由处理器位于 server/routes.ts,与 js-next/app/api/threads/ 中的 Next.js 处理器相对应。
最低要求(流式聊天)
可选功能(侧边栏)
请求流程
Deno 后端的工作原理
此示例作为一个单独的 Deno 进程运行:main.ts:Deno.serve+ Hono 应用。挂载/api路由,并从dist/提供 Vite 构建的 SPA。server/routes.ts:Agent Streaming Protocol 的 Hono 路由定义。server/session.ts:LocalThreadSession:在 LangGraphStreamChannel中缓冲协议事件,使用matchesSubscription进行筛选,并通过 SSEReadableStream将匹配的帧分发出去。server/threads.ts:以检查点保存器为基础的getState/updateState/getHistory辅助函数,使用 LangGraph SDK 的线路格式。server/registry.ts:进程本地的单例,负责管理代理,并为每个线程 ID 管理一个会话。server/agent/:与 Next.js 示例相同的createDeepAgent编排器(研究员和数学专家子代理,以及模拟工具)。
MemorySaver 检查点保存器。若要在生产环境中跨隔离实例持久化数据,请换用持久化检查点保存器(Postgres、Redis、…)。路由处理器和 server/threads.ts 辅助函数无需更改。
生产环境持久化
开箱即用时,代理使用内存中的MemorySaver 检查点保存器(server/agent/index.ts)和进程本地的会话映射(server/registry.ts)。这适用于本地开发和单隔离实例部署,但在 Deno Deploy 上(存在多个隔离实例和冷启动),对话状态无法跨实例持久保存。
请将 server/agent/index.ts 中的 MemorySaver 替换为持久化检查点保存器,例如 @langchain/langgraph-checkpoint-postgres 或 @langchain/langgraph-checkpoint-redis。此外,还需要一个共享的会话/重放存储,以确保 SSE 重连能够跨隔离实例正常工作。
本地开发
客户端需要 Deno 2.x 和 pnpm。/api 代理到 8000 端口上的 Deno 服务器。
若要以接近生产环境的方式在本地运行(单服务器、无 HMR):
项目结构
main.ts:Deno Deploy 入口点(Deno.serve+ Hono)。server/agent/:包含子代理和模拟工具的深度代理(createDeepAgent)。server/:协议服务器逻辑:session.ts、threads.ts、serialize.ts、registry.ts、routes.ts。client/:Vite + React SPA(与 Next.js 示例使用相同的 UI)。dist/:由 Deno 提供服务的 Vite 构建输出(由deno task build:client生成)。
另请参阅
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

