在 Webhook 里运行的 LangChain 智能体。

Stripe 大约等到 20 秒就不再等了(未公布)。你的 LangChain 智能体串起三次工具调用需要 60 秒。AnyHook 约 1 秒就应答,并让智能体在套餐的投递超时内跑完。

时限问题

一个带两三次工具调用(向量检索、数据库查询、模型调用)的 LangChain 智能体,通常要跑 30 到 90 秒。大多数 Webhook 发送方只给你 5 到 30 秒。这笔账算不过来。

常见的变通做法是把工作推到你自己维护的队列里:Redis、SQS、Inngest、Trigger.dev、Vercel cron、BullMQ。每一个都意味着一个新依赖、一个新控制台、一套新的死信策略。AnyHook 就是那个不用你来运维的队列。

20–90 秒
LangChain 智能体一次调用的典型耗时
约 20 秒
Stripe 的响应时限(未公布;社区通用的经验值)
5 分钟
Scale 套餐的投递超时
1 行
接入 AnyHook 所需的改动

跑你的智能体。AnyHook 守住这条线。

你现有的 Next.js 或 Fastify 路由保持不变。只需改为验证 AnyHook-Signature,而不是发送方的签名,然后在没有超时压力的情况下运行智能体。

import { verifyWebhook } from "anyhook-verify";
import { AgentExecutor } from "langchain/agents";

export async function POST(req: Request) {
  const ok = await verifyWebhook(req, process.env.ANYHOOK_SIGNING_SECRET!);
  if (!ok) return new Response("invalid", { status: 401 });

  const event = await req.json();

  // Stripe / GitHub / Shopify already saw a 200 from AnyHook.
  // You have up to 5 minutes (Scale plan) to finish.
  const result = await agentExecutor.invoke({
    input: `Process this event: ${JSON.stringify(event)}`,
  });

  await persistToDb(result);
  await maybeNotify(result);

  return new Response("ok", { status: 200 });
}

团队常问的问题

AnyHook 也支持 LangGraph 吗?
支持,见 /for/langgraph-webhooks。LangGraph 的有状态工作流也是同样的形态:一个 Webhook 回调需要再触发后续的模型调用。
如果智能体跑到一半失败了怎么办?
让处理程序返回 5xx。AnyHook 会把它视为可重试错误,按配置的退避计划重试。原始事件以静态加密方式保存,修好 bug 后可以在控制台重放。
这和 Inngest、Trigger.dev 比有什么区别?
它们是持久化执行平台:你用它们的 DSL 编写工作流,由它们来执行。AnyHook 位于上游:它只是把同步的 Webhook 变成可靠的异步投递。你仍然可以用 Inngest 跑工作流;AnyHook 只负责让触发事件可靠地到达 Inngest。

只改一个 URL。LangChain 处理程序不用动。

Free 套餐包含每月 10,000 个事件。无需 SDK:把 LangChain 指向你的 AnyHook 接收 URL。