AI Agent 跑一个循环烧掉几百美元?Loopers 用零延迟防火墙阻止账单失控
问题:你的 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 许可证也允许自由使用和修改。
相关链接