2026年7月7日 2 分钟阅读

AI Agent 跑一个循环烧掉几百美元?Loopers 用零延迟防火墙阻止账单失控

tinyash 0 条评论

问题:你的 AI Agent 可能在几分钟内让你破产

想象一个场景:你配置了一个自主 AI Agent 来处理批量代码审查任务,设置好 prompt 后让它自动运行。Agent 调用了一个 API 去查询数据库,返回结果后继续推理,又调用下一个 API……然后不知为何,它陷入了循环——同样的 prompt 变着花样反复发送,每调用一次就要花几美分。

如果你不在旁边盯着,十分钟后账单上就多出了几十美元。这不是假设——Anthropic、OpenAI 的 API 账单上,因为 Agent 循环导致的「失控支出」已经成为用户反馈最多的问题之一。更糟的是 LLMjacking 攻击:攻击者窃取你的 API key 后,能在几小时内烧掉你数千美元的预算。

现有的监控告警方案只能事后通知——等你的预算烧完了再发一封「Your usage has exceeded the limit」邮件,为时已晚。你需要的是一个能在毫秒级实时阻断的防火墙,而不是一个事后诸葛亮。

Loopers:为 Agentic Era 设计的零延迟防火墙

Loopers 是一个用 Go 编写的开源 AI 代理防火墙(MIT 许可证,53⭐)。它的定位非常明确:在请求到达 LLM 提供商之前就拦截并检查,而不是在事后做分析。

核心架构是一个透明反向代理,所有 AI API 请求经过 Loopers 中转,它负责做预算检查、循环检测、速率限制,然后才放行到 OpenAI、Anthropic、Gemini 等 14 个提供商。整个过程只有 ~1-2ms 延迟开销。

核心特性一览

特性Loopers传统方案(如 LiteLLM)
预调用预算检查✅ 原子 Lua 事务❌ 仅事后分析
Agent 循环检测✅ 确定性 + 模糊匹配
MCP 工具调用限制✅ 基于成本
故障关闭(Fail-Closed)✅ Redis 故障即阻断
性能4,623 req/s, 41MB 内存~176 req/s, 958MB 内存

安装与配置:60 秒跑起来

Loopers 的安装非常简单,一条命令即可:

curl -sSL https://github.com/CURSED-ME/loopers-oss/releases/latest/download/loopers_Linux_x86_64.tar.gz | tar -xz && sudo mv loopers /usr/local/bin/

或者直接用 Docker:

docker pull ghcr.io/cursed-me/loopers:latest

启动代理需要 Redis 作为预算存储后端,用 docker-compose 一键启动:

git clone https://github.com/CURSED-ME/loopers-oss.git
cd loopers-oss
docker-compose up -d

创建代理 key 并设置预算

docker-compose exec loopers /app/loopers keys create --name my-app-key --provider openai

docker-compose exec loopers /app/loopers budget set  \
  --minute 0.50 \
  --hourly 2.00 \
  --daily 10.00 \
  --weekly 50.00 \
  --monthly 150.00

五个预算窗口可以任意组合,第一个被触发的窗口就会阻断请求。这种设计防止了「一分钟内打光全天预算」的突发场景。

通过 Loopers 发送请求

配置好代理 key 后,只需把 API 调用地址改为 Loopers 的地址:

curl -X POST http://localhost:8080/openai/v1/chat/completions \
  -H "Authorization: Bearer $(LOOPERS_KEY)" \
  -H "X-Loopers-Provider-Key: $(OPENAI_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{"role": "user", "content": "Hello, Loopers!"}]
  }'

真正的杀手锏:Agent 循环检测

Loopers 最有趣的功能是它的 Agent 循环检测引擎 v1.1。它通过两种方式检测 Agent 是否陷入了无限循环:

确定性断路器:当同一 key 在短时间内发出大量重复请求时,直接阻断。

模糊匹配(Bi-Gram Jaccard Similarity):能检测到攻击者或 Agent 修改了 prompt 文本但语义相同的「变形」请求。比如 Agent 每次迭代时给 prompt 加一个空格或换行符,传统速率限制无法识别,但 Loopers 的模糊匹配能抓出来。

此外还有 Stall Detector(停滞检测器)和 Velocity Limiter(速率限制器),前者检测 Agent 是否长时间无响应但仍消耗 token,后者控制单位时间内的请求速度。

MCP 工具调用的预算管控

Loopers 还支持 MCP(Model Context Protocol)流量治理。它能对每个 MCP 工具设置独立的预算上限——比如「每个 Snowflake 查询不得超过 $0.05」,防止 Agent 在数据库查询上无限制消耗资源。

MCP 的确定性断路器能检测到工具调用层面的无限循环(比如 Agent 反复执行同一个数据库查询),在循环形成之前就切断连接。

与 Claude Code、Codex 等 Agent 的集成

Loopers 提供了 Python 和 TypeScript SDK,可以轻松集成到现有的 AI Agent 工作流中:

from loopers_client import LoopersOpenAI

client = LoopersOpenAI(
    loopers_url="http://localhost:8080",
    loopers_key="lp-xxx",
    provider_key="sk-proj-...",
    session_id="agent-run-1",
    session_budget=5.00,
    max_steps=20
)

session_budget 参数指定单次 Agent 会话的预算上限,max_steps 限制最大步数——双重保护确保 Agent 不会失控。

如果不想用 SDK,也可以通过 OpenAI 客户端的 default_headers 直接配置:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8080/openai/v1",
    api_key="lp-xxx",
    default_headers={
        "X-Loopers-Provider-Key": os.environ.get("OPENAI_API_KEY"),
        "X-Loopers-Session-ID": "agent-run-123",
    }
)

观测与监控

Loopers 在独立的 admin 端口(默认 9090)暴露 Prometheus 指标,并附带预构建的 Grafana 仪表盘,可以实时查看请求吞吐量、预算阻断率和延迟百分位。所有安全事件按照 OWASP Top 10 for LLMs 标准输出,支持 OpenTelemetry 追踪,符合欧盟 AI Act 合规要求。

总结

Loopers 解决的是一个真实且急迫的问题:AI Agent 的失控支出。它不是另一个监控仪表盘——而是一个能实时阻断的防火墙。对于每天使用 Claude Code、Codex 或自定义 Agent 的开发者来说,花 5 分钟配置一个 Loopers 代理,相当于给 API 账单上了一道保险。

如果你担心 Agent 循环烧钱、API key 泄露后被滥用、或者只是想给每个项目设置预算上限,Loopers 是一个轻量、高性能的选择。53⭐ 的社区规模虽小,但代码质量和文档完整度很高,MIT 许可证也允许自由使用和修改。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。