用途
CrabTrap 是一个透明的 HTTP/HTTPS 正向代理,位于 AI 智能体与外部 API 之间。它的目标是在智能体发出的请求真正到达外部服务之前进行拦截与安全评估,从而约束智能体的出站行为。每个出站请求都会被拦截,先经过确定性的静态规则检查,再由 LLM 裁判依据自然语言安全策略进行评估。被阻止的请求返回 403 及原因,所有决策都会记录到 PostgreSQL。
主要能力
- 静态规则:确定性的前缀、精确、glob URL 匹配,优先检查,不调用 LLM。deny 规则始终优先于 allow 规则。
- LLM 裁判:仅当没有静态规则匹配时,才依据自然语言策略进行评估。
- 审计日志:每个请求、决策和响应都存储在 PostgreSQL 中,可按用户或决策过滤查询。
- SSRF 防护:阻止 RFC 1918、回环、链路本地及其他私有地址范围,并支持 CIDR 允许列表。
- 速率限制:可配置每秒请求数与突发量。
- TLS 拦截:生成 CA 证书用于 HTTPS 中间人拦截,支持按主机证书缓存。
- 管理 UI 与 API:用户管理、静态规则、LLM 策略、审计日志等管理端点,均需 Bearer 管理员令牌。
- 策略构建器:分析观测到的流量,通过智能体循环自动起草策略草案。
- 评估系统:将历史审计条目针对某策略回放,报告准确率、误报率与漏报率。
- 熔断与回退:LLM 不可用时可按配置回退为拒绝或放行,并带熔断器。
使用方式
推荐使用 Docker Compose 部署,暴露 8080(代理)与 8081(管理 UI)端口,配置 DATABASE_URL、OPENAI_API_KEY 等环境变量,并挂载 gateway.yaml 配置文件。启动后需复制生成的 CA 证书用于 HTTPS 拦截。
初始设置包括:创建管理员用户并获取令牌;通过管理 API 创建智能体用户并获取 gateway_auth_token;使用 curl 测试代理。
智能体接入方式:
- 标准代理环境变量:HTTP_PROXY、HTTPS_PROXY,以及 REQUESTS_CA_BUNDLE、SSL_CERT_FILE、NODE_EXTRA_CA_CERTS 等证书变量。
- Python:使用 httpx.Client 配置 proxies 与 verify。
- Node.js:使用 HttpsProxyAgent。
- LangChain / OpenAI SDK:通过自定义 http_client 将 LLM 调用也路由经代理,以便审计。
配置项涵盖代理端口、超时、速率限制、SSRF 允许列表、TLS 证书路径与缓存、审批模式(llm 或 passthrough)、LLM 裁判提供商/模型/回退模式/熔断器、数据库 URL、审计输出与日志级别。
CLI 命令包括 serve、create-admin-user、migrate、eval、gen-certs 等。管理 API 覆盖用户管理、静态规则、LLM 策略、策略版本、审计查询、策略构建与评估。
策略以自然语言字符串编写,建议先说明智能体职责范围,列出显式 ALLOWED 模式,再列 DENIED,最后加兜底拒绝。静态规则中的 deny 在 LLM 之前评估,适合硬性限制。
适用场景
- 需要约束 AI 智能体出站请求、防止越权访问或数据外泄的场景。
- 需要对智能体访问外部 API 进行审计与合规记录的团队。
- 需要为不同智能体配置差异化访问策略(如仅允许读取特定组织仓库、仅允许向特定频道发消息)的场景。
- 需要在不改动智能体代码的前提下,通过标准代理方式统一管控出站流量的环境。
限制
- 资料未提供具体收费、价格或商业授权信息。
- 资料未提供性能基准、并发上限或支持的 LLM 提供商完整列表(仅示例 OpenAI 与 Anthropic 环境变量)。
- 资料未提供除 Docker Compose 外的其他部署方式细节。
- 资料未提供策略语言的形式化语法规范,策略为自然语言,由 LLM 裁判解释。
- 资料未提供对非 HTTP/HTTPS 协议的支持说明。