cloudflare/agents

GitHub: cloudflare/agents

Cloudflare 推出的基于 Durable Objects 的 AI 智能体框架,提供持久化状态、实时通信和多模态能力,帮助开发者低成本构建和部署有状态的 AI Agent。

Stars: 5191 | Forks: 608

# Cloudflare Agents [![npm 版本](https://img.shields.io/npm/v/agents)](https://www.npmjs.com/package/agents) [![npm 下载量](https://img.shields.io/npm/dw/agents)](https://www.npmjs.com/package/agents) ![npm install agents](https://raw.githubusercontent.com/cloudflare/agents/main/assets/npm-install-agents.svg) Agents 是由 Cloudflare [Durable Objects](https://developers.cloudflare.com/durable-objects/) 驱动的,专为智能体工作负载设计的持久化、有状态的执行环境。每个 agent 都拥有自己的状态、存储和生命周期——并内置了对实时通信、调度、AI 模型调用、MCP、工作流等的支持。 Agents 在空闲时会休眠,并按需唤醒。你可以运行数百万个 agent——每个用户、每个会话、每个游戏房间各一个——它们在不活动时没有任何成本。 ``` npm create cloudflare@latest -- --template cloudflare/agents-starter ``` 或者添加到现有项目中: ``` npm install agents ``` **[阅读文档](https://developers.cloudflare.com/agents/)** — 入门指南、API 参考、使用指南等。 ## 快速示例 一个带有持久化状态、可调用方法,并能与 React 前端实时同步的计数器 agent: ``` // server.ts import { Agent, routeAgentRequest, callable } from "agents"; export type CounterState = { count: number }; export class CounterAgent extends Agent { initialState = { count: 0 }; @callable() increment() { this.setState({ count: this.state.count + 1 }); return this.state.count; } @callable() decrement() { this.setState({ count: this.state.count - 1 }); return this.state.count; } } export default { async fetch(request: Request, env: Env, ctx: ExecutionContext) { return ( (await routeAgentRequest(request, env)) ?? new Response("Not found", { status: 404 }) ); } }; ``` ``` // client.tsx import { useAgent } from "agents/react"; import { useState } from "react"; import type { CounterAgent, CounterState } from "./server"; function Counter() { const [count, setCount] = useState(0); const agent = useAgent({ agent: "CounterAgent", onStateUpdate: (state) => setCount(state.count) }); return (
{count}
); } ``` 状态更改会自动同步到所有已连接的客户端。可以像调用本地函数一样调用其方法。 该 agent 是一个 Durable Object,因此它需要在 `wrangler.jsonc` 中进行 binding 并设置一个 SQLite 迁移: ``` { "name": "counter", "main": "server.ts", "compatibility_date": "2026-06-11", "compatibility_flags": ["nodejs_compat"], "durable_objects": { "bindings": [{ "name": "CounterAgent", "class_name": "CounterAgent" }] }, "migrations": [{ "tag": "v1", "new_sqlite_classes": ["CounterAgent"] }] } ``` ## 功能 | 功能 | 描述 | | ----------------------- | ------------------------------------------------------------------------------- | | **持久化状态** | 同步至所有已连接的客户端,在重启后依然保留 | | **可调用方法** | 通过 `@callable()` 装饰器实现类型安全的 RPC | | **子 Agent** | 通过 facets、嵌套路由和类型化的父级查找实现父/子 DO 组合 | | **Agent 工具** | 将具备聊天功能的子 agent 作为工具运行,并带有流式子时间线 | | **调度** | 一次性、周期性和基于 cron 的任务 | | **WebSockets** | 带有生命周期钩子的实时双向通信 | | **AI 聊天** | 消息持久化、可恢复的流式传输、服务端/客户端工具执行 | | **MCP** | 作为 MCP 服务端或作为 MCP 客户端连接(HTTP, SSE, RPC, elicitation) | | **WebMCP** | 通过 WebSocket 将浏览器端工具暴露给 agents | | **工作流** | 带有人工审核的持久化多步骤任务 | | **电子邮件** | 通过 Cloudflare Email Service 发送、接收和回复 | | **语音** | 连续的 STT、流式 TTS、VAD、中断、SFU 实用工具 | | **浏览器 Agent** | 使用 `agents/browser` 在浏览器标签页中运行 agents | | **代码模式** | LLM 生成可执行的 TypeScript,而不是单次的工具调用 | | **沙盒执行** | 在带有虚拟文件系统的隔离 Worker 中运行生成的代码 | | **x402 支付** | 通过 x402 协议实现按调用付费的 API 和工具 | | **可观测性** | 内置的 tracing、指标和结构化日志 | | **SQL** | 通过 Durable Objects 进行直接 SQLite 查询 | | **React Hooks** | 用于前端集成的 `useAgent`, `useAgentChat`, `useVoiceAgent` | | **原生 JS 客户端** | 用于非 React 环境的 `AgentClient` 和 `VoiceClient` | ## 包 | 包 | 描述 | | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | | [`agents`](packages/agents) | 核心 SDK — `Agent` 类、路由、状态、调度、MCP、电子邮件、工作流、x402、浏览器 agent | | [`@cloudflare/ai-chat`](packages/ai-chat) | 更高级的 AI 聊天 — 持久化消息、可恢复流式传输、工具执行 | | [`@cloudflare/think`](packages/think) | 预设的聊天 agent 基础 — 智能体循环、流恢复、客户端工具、workspace 工具 | | [`@cloudflare/codemode`](packages/codemode) | LLM 编写调用你工具的可执行代码,而不是一次仅进行一次工具调用 | | [`@cloudflare/shell`](packages/shell) | 面向 agents 的沙盒化 JS 执行 + 虚拟文件系统(`Workspace`) | | [`@cloudflare/voice`](packages/voice) | 语音管道 — STT, TTS, VAD, 流式传输, SFU 实用工具 | | [`@cloudflare/worker-bundler`](packages/worker-bundler) | 在运行时构建并打包 Workers,以配合 Worker Loader binding 使用 | | [`hono-agents`](packages/hono-agents) | 用于将 agents 添加到 Hono 应用的 Hono 中间件 | ## 示例 [`examples/`](examples) 目录包含 30 多个独立的演示。以下是不完全一览: - **展示** — [`playground/`](examples/playground) 是一个大杂烩应用:状态、可调用方法、调度、聊天、工具、MCP、工作流、电子邮件、语音——全部集成在一个 UI 中 - **聊天与助手** — [`assistant/`](examples/assistant), [`agents-as-tools/`](examples/agents-as-tools), [`agent-skills/`](examples/agent-skills), [`workspace-chat/`](examples/workspace-chat), [`resumable-stream-chat/`](examples/resumable-stream-chat), [`structured-input/`](examples/structured-input), [`dynamic-tools/`](examples/dynamic-tools), [`multi-ai-chat/`](examples/multi-ai-chat), [`context-overflow-recovery/`](examples/context-overflow-recovery) - **MCP** — [`mcp/`](examples/mcp), [`mcp-client/`](examples/mcp-client), [`mcp-server/`](examples/mcp-server), [`mcp-worker/`](examples/mcp-worker), [`mcp-worker-authenticated/`](examples/mcp-worker-authenticated), [`mcp-elicitation/`](examples/mcp-elicitation), [`mcp-rpc-transport/`](examples/mcp-rpc-transport), [`webmcp/`](examples/webmcp) - **代码模式与沙盒** — [`codemode/`](examples/codemode), [`codemode-mcp/`](examples/codemode-mcp), [`codemode-mcp-openapi/`](examples/codemode-mcp-openapi), [`dynamic-workers/`](examples/dynamic-workers), [`dynamic-workers-playground/`](examples/dynamic-workers-playground), [`worker-bundler-playground/`](examples/worker-bundler-playground) - **语音** — [`voice-agent/`](examples/voice-agent), [`voice-input/`](examples/voice-input), [`elevenlabs-starter/`](examples/elevenlabs-starter) - **工作流与审批** — [`workflows/`](examples/workflows), [`a2a/`](examples/a2a) - **认证、支付、通信** — [`auth-agent/`](examples/auth-agent), [`cross-domain/`](examples/cross-domain), [`x402/`](examples/x402), [`x402-mcp/`](examples/x402-mcp), [`email-agent/`](examples/email-agent), [`github-webhook/`](examples/github-webhook), [`push-notifications/`](examples/push-notifications) - **游戏与其他** — [`tictactoe/`](examples/tictactoe), [`ai-chat/`](examples/ai-chat) 使用 [OpenAI Agents SDK](https://openai.github.io/openai-agents-js/) 的示例位于 [`openai-sdk/`](openai-sdk) 中。正在进行中的实验性项目位于 [`experimental/`](experimental) 中(无稳定性保证)。 在本地运行任意示例: ``` cd examples/playground npm start ``` ## 文档 - developers.cloudflare.com 上的[完整文档](https://developers.cloudflare.com/agents/) - 本仓库的 [`docs/`](docs) 目录(上游同步) - [Anthropic 模式指南](guides/anthropic-patterns) — 顺序、路由、并行、编排器、评估器 - [人工介入指南](guides/human-in-the-loop) — 带有暂停/恢复功能的审批工作流 - [`design/`](design) — 架构与设计决策记录(聊天 API、子 agent、agent 工具、workspace、语音、浏览器工具、重试等) ## 仓库结构 | 目录 | 描述 | | ----------------------------------------------------- | -------------------------------------------------------- | | [`packages/agents/`](packages/agents) | 核心 SDK | | [`packages/ai-chat/`](packages/ai-chat) | AI 聊天层 | | [`packages/think/`](packages/think) | 预设的聊天 agent 基础 | | [`packages/codemode/`](packages/codemode) | 代码模式 | | [`packages/shell/`](packages/shell) | 沙盒化执行 + 文件系统 | | [`packages/voice/`](packages/voice) | 语音管道 | | [`packages/worker-bundler/`](packages/worker-bundler) | 运行时 Workers 打包器 | | [`packages/hono-agents/`](packages/hono-agents) | Hono 集成 | | [`examples/`](examples) | 独立演示应用 | | [`experimental/`](experimental) | 正在进行中的实验性项目(未发布) | | [`openai-sdk/`](openai-sdk) | 使用 OpenAI Agents SDK 的示例 | | [`guides/`](guides) | 深度模式教程 | | [`docs/`](docs) | 同步至 developers.cloudflare.com 的 Markdown 文档 | | [`site/`](site) | 已部署的网站(agents.cloudflare.com,AI playground) | | [`design/`](design) | 架构与设计决策记录 | | [`scripts/`](scripts) | 仓库级工具 | ## 开发 需要 Node 24+。使用 pnpm workspaces 配合 [Nx](https://nx.dev) 进行任务编排、缓存和受影响检测。 ``` pnpm install # install all workspaces pnpm run build # build all packages (Nx, cached, dependency-ordered) pnpm run check # sherif + export checks + oxfmt + oxlint + typecheck pnpm run test # vitest + vitest-pool-workers (Workers runtime) pnpm run test:react # Playwright-based React hook tests pnpm exec nx affected -t build # build only what changed pnpm exec nx affected -t test # test only what changed ``` 对 `packages/` 的更改需要添加一个 changeset: ``` pnpm exec changeset ``` 请参阅 [`AGENTS.md`](AGENTS.md) 获取更深入的贡献者指南。 ## 贡献 我们目前不接受外部 pull request — 该 SDK 正在快速发展,我们希望保持可控的表面积。话虽如此,我们非常乐意倾听你的声音: - **Bug 报告与功能请求** — [创建 issue](https://github.com/cloudflare/agents/issues) - **问题与想法** — [发起讨论](https://github.com/cloudflare/agents/discussions) ## 许可证 [MIT](LICENSE)
标签:AI智能体, Cloudflare, MITRE ATT&CK, 开发框架, 暗色界面, 状态管理, 程序员工具, 自动化攻击