[ PROMPT_NODE_23916 ]
Agents SDK 配置说明
[ SKILL_DOCUMENTATION ]
# 配置
## Wrangler 设置
c
{
"name": "my-agents-app",
"durable_objects": {
"bindings": [
{"name": "MyAgent", "class_name": "MyAgent"}
]
},
"migrations": [
{"tag": "v1", "new_sqlite_classes": ["MyAgent"]}
],
"ai": {
"binding": "AI"
}
}
## 环境绑定
**类型安全模式:**
typescript
interface Env {
AI?: Ai; // Workers AI
MyAgent?: DurableObjectNamespace;
ChatAgent?: DurableObjectNamespace;
DB?: D1Database; // D1 数据库
KV?: KVNamespace; // KV 存储
R2?: R2Bucket; // R2 存储桶
OPENAI_API_KEY?: string; // 密钥
GITHUB_CLIENT_ID?: string; // MCP OAuth 凭据
GITHUB_CLIENT_SECRET?: string;
QUEUE?: Queue; // 队列
}
**最佳实践:** 在 Env 接口中定义所有 DO 绑定以确保类型安全。
## 部署
bash
# 本地开发
npx wrangler dev
# 生产环境部署
npx wrangler deploy
# 设置密钥
npx wrangler secret put OPENAI_API_KEY
## 智能体路由
**推荐: 使用路由助手**
typescript
import { routeAgent } from "agents";
export default {
fetch(request: Request, env: Env) {
return routeAgent(request, env);
}
}
助手根据 URL 模式自动将请求路由到智能体。
**手动路由 (高级):**
typescript
export default {
async fetch(request: Request, env: Env) {
const url = new URL(request.url);
// 命名 ID (确定性)
const id = env.MyAgent.idFromName("user-123");
// 随机 ID (来自 URL 参数)
// const id = env.MyAgent.idFromString(url.searchParams.get("id"));
const stub = env.MyAgent.get(id);
return stub.fetch(request);
}
}
**多智能体设置:**
typescript
import { routeAgent } from "agents";
export default {
fetch(request: Request, env: Env) {
const url = new URL(request.url);
// 按路径路由
if (url.pathname.startsWith("/chat")) {
return routeAgent(request, env, "ChatAgent");
}
if (url.pathname.startsWith("/task")) {
return routeAgent(request, env, "TaskAgent");
}
return new Response("Not found", { status: 404 });
}
}
## 邮件路由
**代码设置:**
typescript
import { routeAgentEmail } from "agents";
export default {
fetch: (req: Request, env: Env) => routeAgent(req, env),
email: (message: ForwardableEmai