Alejandro Rioja.
AI Agents

我用来运行30个以上生产Agent的技术栈(无Python)

Alejandro Rioja
Alejandro Rioja
1 分钟阅读
TL;DR

我使用TypeScript、Cloudflare Workers/Queues/KV和Claude模型运行30个以上的生产AI Agent——无Python,无Agent框架。这个技术栈故意保持简单:Workers处理调度和队列,KV存储状态,Anthropic SDK直接驱动模型调用。真正的约束不是AI层——而是围绕它的基础设施。

免费新闻通讯

每周三。28,400+ 读者。纯干货。

目录

2026年5月更新。

TL;DR: 我使用TypeScript、Cloudflare Workers/Queues/KV和Claude模型运行30个以上的生产AI Agent——无Python,无Agent框架。这个技术栈故意保持简单:Workers处理调度和队列,KV存储状态,Anthropic SDK直接驱动模型调用。真正的约束不是AI层——而是围绕它的基础设施。

[运营者视角] 我经营两个业务:一个AI咨询品牌和Pickleland——德克萨斯州普弗卢格维尔的一个匹克球设施。两者加在一起,今天在生产中运行着30个以上的Agent。这是真实的技术栈,不是演示。

为什么不用Python

说实话:我每天都在为网站和产品工作写TypeScript。为Agent添加第二种语言意味着两个运行时、两个依赖树、两个部署流水线。生产力成本不是理论上的——我在之前的项目中付出过,并决定不再重复。

第二个原因是Cloudflare。Workers在边缘原生运行TypeScript,内置了Queues、KV、Durable Objects和Cron Triggers。我需要的所有Agent基础设施——调度、状态、异步任务处理——只需一个wrangler deploy命令。没有Python等价物具有相同的运营简单性。

第三个原因:大多数”Python更适合AI”的论点实际上是在说”Python有更多ML库”。我不训练模型。我调用API。Anthropic SDK是一流的TypeScript。LangChain及其同类是我不想要的复杂性。当你在部署Agent而不是研究它们时,简单性获胜。

核心基础设施:三个Cloudflare原语

我运行的每个Agent至少接触这三个中的一个:

Cloudflare Workers — 计算层。Worker是Agent的运行时:它接收触发器(cron、Queue消息、HTTP),运行模型调用,并将输出写到某处。冷启动低于5ms。免费计划CPU时间限制30秒,付费计划15分钟。我构建的几乎所有内容都能在30秒内完成;不能的则使用Queues进行扇出。

Cloudflare Queues — 异步任务处理。当任务可能比请求花费更长时间,或当我需要扇出(并行生成12个翻译)时,我将消息推送到Queue,让绑定的消费者独立处理它们。无轮询,无setTimeout黑客。

Cloudflare KV — 轻量级状态。Agent运行历史、最后处理的时间戳、缓存的API响应。KV是最终一致的,这对Agent来说没问题——我不运行事务。它给了我一个简单的键值存储,我可以从任何Worker读写,无需启动数据库。

模型层:Anthropic SDK,两个模型

我只使用两个Claude模型:

TypeScript中的Anthropic SDK很直接。以下是我用于每次模型调用的模式:

typescript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ apiKey: env.ANTHROPIC_API_KEY });

async function runAgent(prompt: string, systemPrompt: string): Promise<string> {
  const message = await client.messages.create({
    model: "claude-sonnet-4-6",
    max_tokens: 2048,
    system: systemPrompt,
    messages: [{ role: "user", content: prompt }],
  });

  const block = message.content[0];
  if (block.type !== "text") throw new Error("Unexpected content type");
  return block.text;
}

这就是整个模型接口。上面没有抽象。当我需要工具使用时,添加tools数组。当我需要流式传输时,将messages.create换成messages.stream。没有框架在为我管理这些——我也不想要。

真实Agent:内容流水线

我运行的最复杂的Agent是内容流水线。它生成博客文章,将其翻译成12种语言,渲染OG卡片SVG,并起草LinkedIn推广——全部作为草稿,在我审核之前什么都不发布。

Worker入口点如下:

typescript
// src/workers/content-pipeline.ts
export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const { topic, slug } = await request.json<{ topic: string; slug: string }>();

    // 步骤1:生成EN文章
    const enPost = await generatePost(topic, env);
    await env.CONTENT_KV.put(`draft:${slug}:en`, enPost);

    // 步骤2:通过Queue扇出翻译
    const locales = ["ar", "de", "es", "fr", "hi", "it", "ja", "ko", "nl", "pt", "ru", "zh"];
    for (const locale of locales) {
      await env.TRANSLATION_QUEUE.send({ slug, locale, content: enPost });
    }

    return Response.json({ status: "queued", slug });
  },
};

每个翻译都在自己的Worker调用中运行。如果一个失败,Queue会自动重试。我得到12个并行翻译,无需自己管理线程、Promise或速率限制退避。

真实Agent:活动推广者

Pickleland举办匹克球活动。我构建了一个Agent,扫描预订平台寻找未来4天的活动,为每个活动起草Facebook群组帖子,并在任何内容发出之前提交给我审核。

系统提示:

typescript
const systemPrompt = `You are a community manager for a pickleball facility.
Write Facebook group posts for upcoming events.
Rules:
- Max 150 words per post
- Lead with what's fun about the event, not the price
- Include the booking URL exactly as provided
- Do not use exclamation marks more than once per post
- Tone: friendly, local, not corporate`;

这里真正的约束不是模型——是工作流程。Agent每天早上8点通过cron触发器运行。草稿帖子落入审核队列。我批准或编辑,然后单独的发布Worker触发。没有任何活动在人看到之前就发布。

如何管理30个以上Agent而不失去理智

Cloudflare的控制面板是我的控制平面。每个Worker向我显示调用次数、错误率和CPU时间。每个Queue显示消息吞吐量和失败。KV显示存储使用情况。

除此之外:

规律不是技术性的。它是决定Agent可以自主做什么,以及什么需要我的批准。内容草稿:自主。任何涉及客户的事:人工审核。任何涉及资金的事:不是Agent的工作。

如果今天重新开始我会改变什么

一件事:我会从第一天就设置结构化输出(JSON模式),而不是在已发布的Agent上事后改造。解析Claude的自由文本是一种税。当你定义一个Zod schema并将其作为预期响应形式传递时,你会得到类型化数据,下游Workers不需要猜测。

typescript
import { z } from "zod";

const EventPostSchema = z.object({
  headline: z.string().max(80),
  body: z.string().max(600),
  bookingUrl: z.string().url(),
  suggestedPostTime: z.enum(["morning", "afternoon", "evening"]),
});

运营者的结论

在生产中有效的Agent技术栈是你在深夜10点出问题时可以调试的那个。对我来说,那就是TypeScript + Cloudflare + Anthropic SDK——不是因为它是最华丽的组合,而是因为每一层都是独立可观察的、可部署的、可替换的。框架是对抽象的赌注。我宁愿拥有管道本身。

继续阅读

将AI实战手册发送到您的邮箱

每周三。28,400+ 读者。纯干货。

↵ 查看全部结果 esc esc 关闭