2026年6月13日 2 分钟阅读

如何用 Guardian Runtime 为你的 AI 编码 Agent 搭建本地防火墙?

tinyash 0 条评论

一个被忽视的隐形成本

如果你每天都在用 Claude Code 或 Cursor 写代码,有没有想过一个问题:当 Agent 陷入死循环,一遍又一遍地读取超大日志文件、重试同一个 bug 修复时,账单在涨吗?

答案是:不仅涨,而且可能涨得很离谱。一个卡住的 Agent 一夜之间烧掉 $100 API 费用并非危言耸听。更可怕的是数据泄露——如果 .env 文件中躺着一条生产环境的 AWS Key,Agent 会毫无知觉地把它随上下文发送到 Anthropic 或 OpenAI 的服务器。

Guardian Runtime 就是为解决这两个问题而生的:一个本地优先的 FinOps 安全防火墙,在 LLM 请求离开你机器之前,对它做拦截、扫描和预算控制。

什么是 Guardian Runtime?

Guardian Runtime 是一个开源(MIT 协议)的本地代理防火墙,pip install 即可安装,无需注册、无需 API Key、零配置启动。它在你的机器上以 HTTP 代理或 Python SDK 的形式运行,位于 Agent 和 LLM API 之间,对每个请求执行三道检查:

  1. 安全扫描:检测请求中是否包含 API Key、AWS 凭证、PII 等敏感信息,一旦发现立即拦截
  2. 预算检查:实时追踪每天的花费,超出设定阈值后自动熔断
  3. 输出优化:Terse Mode 通过系统提示注入强制 LLM 输出精简回答,实测可减少 40-70% 的输出 Token

一分钟安装

pip install guardian_runtime

如果要用全功能版(含 ML 扫描器、文档转换等):

pip install "guardian_runtime[all]"

对,就这么简单。所有数据都存在本地 ~/.guardian_runtime/ 目录下,不会上传任何遥测信息。

三大核心功能详解

1. 硬预算控制(Hard Budgets)

这是最实用的功能。启动代理后,Guardian 会追踪每一轮请求的 Token 消耗和费用。你可以设定每日预算上限,比如 $5/天——一旦 Agent 当天累计花费达到这个数,后续请求会被直接拦截。

guardian_runtime proxy --port 8080

启动后 Agent 的请求路由到这个本地代理,所有 Token 用量和花费都在本地实时记录。用 guardian_runtime analytics 可以查看当天的费用明细:

$ guardian_runtime analytics
  ⛨  GuardianRuntime Session Analytics (Today)
  ──────────────────────────────────────────────
  Claude Code
  Cost:       $2.3100
  Requests:   54
  Blocked:    3 (3 secret_detected)
  Tokens:     82,000

这不仅告诉你花了多少钱,还告诉你被拦截了哪些风险请求。

2. 本地密钥扫描(Secret Detection)

在 Agent 发送请求之前,Guardian 会扫描请求内容中是否包含常见的凭证模式——AWS Access Key、OpenAI API Key、GitHub Token、数据库密码等。如果检测到敏感信息,请求会在到达 LLM 之前被拦截。

$ guardian_runtime scan "My AWS key is AKIAIOSFODNN7EXAMPLE"
🛑 Scan failed! Threats detected:
  - [HIGH] secret_detected: AWS Access Key ID found.

关键区别:传统的可观测性工具(如 Langfuse)在密钥已经上传到云端之后才记录日志;Guardian Runtime 在请求离开机器之前直接拦截。

3. Terse Mode(输出简洁模式)

这是一个巧妙的设计:通过注入系统提示,引导 LLM 输出更简短、更精准的回答。对于 Agent 的日常操作(文件修改、代码生成),完整的长篇解释往往不是必需的。Terse Mode 实测可减少 40-70% 的输出 Token,直接对应 API 费用的降低。

实战:为 Claude Code 配置防火墙

这是最常见的场景。在终端中启动代理,然后通过环境变量让 Claude Code 路由到本地代理:

guardian_runtime proxy --port 8080

export ANTHROPIC_BASE_URL=http://localhost:8080
claude

发生了什么? 当 Claude Code 试图读取 .env 文件中的 AWS Key 并发送给 Anthropic 时,Guardian Runtime 会在本地拦截这个请求:

🚨 [SECRET_DETECTED] AWS key AKIAIOS... found — BLOCKED

同时如果 Agent 陷入了死循环、疯狂消耗 Token,当每日预算触达 $5 时:

🚨 [BUDGET_EXCEEDED] Daily budget of $5.00 exceeded. Current spend: $5.05 — BLOCKED

在 Cursor 中使用

对于 Cursor 这类可视化 IDE,配置同样简单:

  1. 启动代理:guardian_runtime proxy --port 8080
  2. 打开 Cursor 设置(Cmd/Ctrl + ,)
  3. 导航到 Models > Override Base URL
  4. 设置为:http://localhost:8080

之后所有 Cursor 的请求都会经过 Guardian 的保护。

Python SDK 集成

如果你在构建自己的 AI 应用,可以直接用 SDK 模式集成:

import os
from guardian_runtime import GuardianRuntime, GuardianRuntimeBlockedError

os.environ["OPENAI_API_KEY"] = "sk-proj-..."
gr = GuardianRuntime()

try:
    response = gr.complete(
        messages=[{"role": "user", "content": "My AWS Key is AKIAIOSFODNN7EXAMPLE"}],
        raise_on_block=True
    )
    print(response.content)
except GuardianRuntimeBlockedError as e:
    print(f"Blocked: {e.response.violations[0].detail}")

自定义策略配置

默认策略已经足够好用($10/天预算 + 严格密钥扫描)。如果需要定制,运行以下命令生成策略模板:

guardian_runtime init

这会生成一个 policy.yaml,你可以调整每日预算、禁用某些扫描器、或启用更严格的企业级 PII 拦截:

version: "1.0"
agents:
  default:
    cost:
      daily_budget: 5.00
      max_input_tokens: 20000
    input_guard:
      scanner_enabled: true
      jailbreak_detection: true
    optimizer:
      enabled: true
      terse_mode: true

更多命令一览

命令用途
guardian_runtime proxy启动 HTTP 代理防火墙
guardian_runtime analytics查看当天费用和拦截统计
guardian_runtime dashboard启动本地 Web 仪表盘(端口 3000)
guardian_runtime logs实时查看 JSONL 事件流
guardian_runtime scan 手动扫描一段文本中的敏感信息
guardian_runtime convert 将 PDF/DOCX 转换为 Token 优化的 Markdown
guardian_runtime status检查安装状态和存储健康

总结

Guardian Runtime 的价值在于它解决了一个真实且普遍的痛点:AI 编码 Agent 在带来效率的同时,也在悄悄产生两个巨大风险——成本失控和数据泄露。

它不是那种「看起来很酷但很少真正用上」的工具。任何一个在团队中推广 AI 编码工具的人,都应该考虑在 Agent 和 LLM 之间加一层本地防火墙。pip install guardian_runtime 一分钟就能装好,给 Claude Code、Cursor、Aider 加上预算阀门和安全闸门。在 AI 编码工具逐渐成为基础设施的今天,这种「保护层」工具只会越来越重要。

相关链接GitHub | 文档 | PyPI

发表评论

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