Featured image of post 别把API密钥和银行卡号贴给AI中转站:自建隐私网关的开源方案全梳理

别把API密钥和银行卡号贴给AI中转站:自建隐私网关的开源方案全梳理

中转站能看到你发给LLM的全部明文——428个站暗访实测:9个注入恶意代码、17个偷凭证、1个盗币。本文盘点开源防线:密钥不进聊天、自建网关、脱敏代理、本地推理与机密计算,把隐私主权拿回来。

用第三方"中转站"访问 Claude、GPT、Gemini,确实便宜又方便——但你有没有意识到一件事:中转站运营者能看到你发给模型的每一个字

包括你随手贴进去的 API key、银行卡号、登录密码、身份证号、病历……全在人家的服务器日志里躺着,明文。

这不是阴谋论,是架构使然。中转站本质是反向代理——你的请求先到它的服务器,它解包、转发给上游厂商,再把响应传回来。这个过程中你的内容对运营者完全透明。更别提有些中转站还开请求日志用于计费审计。

今天这篇文章,我把 GitHub 上能用的开源方案全梳理了一遍,按隐私强度从低到高分三层讲清楚。数据均来自 GitHub API 实时核实(2026-08-31)。


先说风险:428 个中转站实测

“架构上可行"只说明运营者能作恶——已经有安全研究团队把它测成了实锤数字:对手里的 428 个中转站(28 个付费站 + 400 个免费站)做了暗访:

  • 9 个站主动注入恶意代码,往返回给用户的内容里插私货;
  • 17 个站偷凭证——窃取了测试者故意埋在 prompt 里的 AWS 蜜罐凭证;
  • 1 个站直接盗走了测试用的加密资产

428 个中转站暗访:主动作恶的站点数量
428 个中转站暗访实测数据|来源:涉事研究团队的公开报告

这还不是全部:

  • **记录你的全文,只需一行配置。**开源转发软件 openai-forward 的文档写明,LOG_CHAT=true 就会把完整对话落盘;one-api 这一系默认已经在记录 token 消耗、时间和 IP,改成记全文不过几行代码。
  • **泄露的凭证有地下供应链。**你贴在 prompt 里的 key 被搜刮后,会被二次封装、转卖,用户全程不知情。Sysdig 披露的 LLMjacking 攻击链是同一逻辑的镜像:攻击者用偷来的云凭证刷 LLM,再用 oai-reverse-proxy 搭转售通道——被盗 key 的变现出口,正是各路中转站。
  • **跑路与降智是常态。**电商平台"44.9 元包月不限量"的站,不到一个月商家失联、售后群解散;高峰期动态路由到便宜模型、多租户限流——另一项实测称 45% 的站是假模型。“1 元 = 285 万 Token"的定价低于官方成本,账上只有三种解释:盗刷信用卡开的号、免费白嫖号、卖你的数据。
  • **底座软件自己也有洞。**90% 的中转站挤在同一套开源壳(one-api 及其二开)上,而 one-api 的 issue #2409 披露了微信登录配置导致的二阶 SSRF 与 Token 泄露——2026 年 6 月报告,至今未关闭。

下面按三道防线展开:密钥不进聊天、自建网关替换中转站、本地推理与机密计算。每一层提到的项目,star、许可和最近提交时间都经我逐个核验过。


第一层:密钥根本不该进聊天

在说网关之前,先说一个更根本的问题:你的 API key 和密码,压根就不应该出现在任何 prompt 里——哪怕你自建了网关,也只是把明文从自己手换到了自己服务器上,日志和上下文照样有。

给 Agent 配密钥的正确姿势

以下工具全部开源且活跃维护:

工具Stars一句话定位
direnv15.4k进目录自动加载环境变量,密钥不落聊天
sops23.0k加密 .env 文件,sops exec-env 解密进环境再拉起 agent
Infisical29.0k集中式密钥管理,infisical run -- claude 运行时注入
Bitwarden CLI13.7kbw get password key-name 命令行取密码库条目
gitleaks29.0k提交前扫密钥,防止写进 git 历史
Vault36.2k企业级密钥中心(注意:BSL 许可,非 OSI 开源)

核心模式就一句话:密钥走环境变量/进程注入,不走聊天内容。 Agent 只用 ${OPENAI_API_KEY} 占位符,真正的值由 direnv / sops exec-env / infisical run 在进程启动时注入。

如果你用的是 Claude Code,还有两道额外防线:

  1. PreToolUse hook 拦截——写个脚本匹配 sk-AKIA.env 路径,在 agent 读文件前直接 block。这是确定性防线,比在 CLAUDE.md 里写"请不要读密钥"靠谱得多。
  2. 权限 deny 规则——在 settings 里禁止 Read 访问 .env*~/.aws/credentials

如果你连"临时注入"都不放心,还有 broker 一派——明文只出现在"用它那一瞬间的那个进程"里:

  • agentsecrets(172★,MIT):面向 AI agent 的零知识凭证基础设施,agent 只操作凭证、不消费明文
  • toolhive(2.1k★,Apache-2.0):企业级 MCP 服务器托管平台,MCP 跑隔离容器、密钥只注入容器环境
  • secretless-broker(387★,Apache-2.0):经典"应用永不持密"模式——应用连 broker,broker 从 vault 取真凭证、在协议层注入

但有一条红线要记住:提示注入能让"最乖的 agent"照样泄密(2026 年 4 月已有针对性的实证研究)。输入端的 hook 拦截、输出端的脱敏、外加 broker 的"永不进上下文”,这三层是叠加关系——任何单层都可以被绕过。

银行卡号和密码呢?

根本不该发给任何 LLM。 这不仅是我的建议,是 OpenAI 和 Anthropic 官方文档的共识:

正确做法是让 agent 间接操作:支付走 Stripe SDK 的 token 化接口(模型只见 token 不见卡号),密码走 Bitwarden/1Password CLI 引用而非明文。


第二层:自建网关,让"中转站运营者"就是你自己

这是本文的重头戏。与其把明文交给陌生中转站,不如在自己的 VPS 上搭一个——你是唯一的运营者,上游官方 key 只存在你自己的数据库里。

过渡方案:本地脱敏代理(暂时不想自建网关时)

自建网关多少要维护。如果你短期还在用现成中转站,最起码可以让请求在离开本机前先被打码——这类"脱敏代理"夹在你的 agent 和上游 API 之间,把密钥、卡号、身份证号替换成占位符再放行:

项目Stars许可机制
Occludra gateway37Apache-2.0专为防泄密设计的自托管网关:30 类实体 PII 脱敏 <50ms,OpenAI 兼容、换 base_url 即用,顺带拦 prompt 注入
AegisGate62MIT夹在 agent 与上游 LLM 之间,请求/响应双向执行 PII、密钥、注入策略
promptfoo24.7kMIT评测框架出身,自带 prompt masking 与 PII 检测,可作一层薄脱敏层

GitGuardian 的网关实践演示了同一模式的最小实现:请求体里发现数据库密码,改写为 REDACTED 再上行。Claude Code 用户还有几个专用项目——claude-code-redaction-hooks(20★,Apache-2.0)在工具输入进上下文前拦截 secrets 与 PII,cc-redactclaude-code-redact 思路相近(后者脱敏时保留类型结构,模型仍能正确操作)。诚实地说:它们全是星数两位数的极早期项目,方向对,投产前请自行审计。

这类方案防的是"随手贴进去的意外”,防不了"agent 自己复述出来"——它与第一层的密钥注入、下面的自建网关是叠加关系,不是替代关系

推荐方案 A:LiteLLM Proxy + Presidio(最完整)

适合:想一步到位、不怕多配几个容器的人。

  • LiteLLM(57.6k stars,MIT)——覆盖 100+ 厂商的 AI 网关,自带虚拟 key、预算、限流
  • Presidio(10.7k stars,MIT)——微软的 PII 识别与脱敏框架,识别信用卡(带 Luhn 校验)、邮箱、电话、API key 等 30+ 实体

LiteLLM Proxy 内置了 Presidio 集成,可以在请求发出前自动剥离或屏蔽 PII:

1
2
3
agent → LiteLLM Proxy (Presidio PII masking)
         ↓ 脱敏后的请求
      上游 LLM API (官方或中转站)

Presidio 支持 MASK(替换为占位符)和 BLOCK(直接拦截)两种模式,还能配置信度阈值。缺点是中文 PII 识别需要额外配置(默认英语最佳),且组件链最长——LiteLLM + Presidio analyzer + Presidio anonymizer + Postgres。

推荐方案 B:new-api(最省事)

适合:只想快速替换掉第三方中转站、不需要 PII 脱敏的人。

  • new-api(46.8k stars,AGPL-3.0)——one-api 的活跃增强分支

一条 Docker 命令搞定,自带 Web 管理界面,支持 OpenAI/Claude/Gemini 三种格式互转。上游官方 key 只存在你自己的 SQLite/MySQL 里,请求日志可关。

它本身没有内置 PII 脱敏,但可以在前面叠一层简单的正则中间件兜底(比如匹配 sk- 前缀、信用卡号格式)。

注意:new-api 是 AGPL-3.0 许可。如果你只是自己用没问题,但要对外提供服务就涉及传染性条款了。

两个自建提醒:其一,new-api 在 2026-02 披露过 CVE-2026-25802(High 7.6),自托管务必追新版,管理面板千万别暴露公网;其二,one-api 本体 2026-01 之后已基本停更(36.7k★),新部署直接上 new-api 这个活跃分支即可。

其他值得关注的

项目Stars定位特点
Portkey Gateway12.9k高性能 AI 网关50+ guardrails 插件,但近期更新放缓
Bifrost7.7k高性能 AI 网关Apache-2.0,单条 docker run 起,Web UI 配置,带虚拟 key 与四级预算
Langfuse33.9k观测/审计平台SDK 侧 masking 钩子,日志留自己家
CLIProxyAPI49.4kCLI 账号代理把 Claude Code/Codex 订阅转 API;⚠️ 违反各家 ToS,有封号风险

第三层:本地推理与机密计算

适合:对隐私要求极端、有好显卡的人。

如果你的内容敏感到"连自己租的 VPS 都不信任",那唯一彻底的方案是——模型跑在本机,数据根本不出网。

Ollama(179.8k stars,MIT)

最流行的本地模型运行器,一行命令启动,自带 OpenAI 兼容 API:

1
ollama run deepseek-r1:32b   # 或 qwen3:30b

2026 年的本地模型已经相当能打:

  • 24GB 显存可流畅跑 32B dense 或 30B MoE(deepseek-r1:32b、qwen3:30b),日常敏感场景(代码分析、文档改写、含密钥的日志排查)完全够用
  • 671B/235B 满血模型仍需服务器级硬件,一般玩家不用想

隐私杀手锏:零外发。模型、prompt、响应全在本机。任何第三方——包括你的 VPS 厂商——都看不到明文。

缺点是能力上限仍然不如前沿闭源模型,顶级智力任务(复杂推理、长链规划)还是会有差距。

LocalAI(48.8k stars,MIT)

和 Ollama 类似,也是纯本地 OpenAI 兼容推理引擎,但支持的模态更广(视觉/语音/图像/视频),无需 GPU 也能跑(只是慢)。适合没有显卡但想跑轻量模型的场景。

还想要云端智力,但让"跑模型的人"也看不到明文:TEE 机密推理

如果你的诉求是"云端大模型的能力 + 链路中间人不可见",2026 年的答案是机密计算(TEE):推理跑在 GPU 的可信执行环境里,客户端先校验远程证明(attestation)再经加密通道发 prompt——云厂商、中转站全程只见密文。这条路线坑不少,按成熟度排列:

  • dstack(538★,Apache-2.0,2026-08 活跃)——“开口先验 attestation"的机密 AI 框架,是 Phala Cloud 的底座,已达生产可用;配套的 private-ai-gateway(30★)提供带证明的私密推理网关,仍属实验性。
  • Tinfoil(组件 AGPL-3.0/Apache-2.0)——机密 VM 镜像 + 客户端内置证明校验,服务已在公开运营,Red Hat 正与它共建机密 AI 参考架构;想自托管得自己拼组件。
  • Edgeless Privatemode(公开度量与工件)——核心代理闭源、“可信"靠公开度量而非源码审计,VS Code 插件演示了 Claude Code 走它的代理做端到端加密编码。
  • 反面清单:NEAR private-ml-sdk 已归档(2025-10 停更);全同态加密方向的 concrete-ml(1.5k★)只能跑小模型,在真 LLM 上还差几个数量级——谁宣传"FHE 跑大模型”,先让他亮 benchmark。

现实折中:敏感走本地,普通走中转(敏感度路由)

全本地受能力限制、全 TEE 有门槛。中间态是把敏感度路由变成常态:vLLM semantic-router(5.4k★,Apache-2.0,活跃)内置 PII/越狱分类器——检测到敏感实体的请求钉死在本地模型,只放行无害请求给外部 API;LiteLLM 也能用 ollama 做本地后端、pre-call guardrail 做脱敏,拼出同样的效果。避坑清单:RouteLLM 2024-08 后停更且不感知隐私;TensorZero 仓库已被官方归档,新项目都别选。

隐私分层防御:按敏感度分流
隐私分层防御架构:按敏感度分流|依据全文三道防线绘制


我的建议:分层组合

实际操作中,没有银弹。不同场景用不同方案:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
┌─────────────────────────────────────────────────┐
│  高敏内容(密钥、卡号、密码、病历、财务数据)      │
│  → 本地 Ollama,数据零外发                       │
├─────────────────────────────────────────────────┤
│  一般内容(写代码、翻译、日常问答)               │
│  → 自建网关(new-api 或 LiteLLM+Presidio)      │
│    上游走官方 API 或可信中转站                    │
├─────────────────────────────────────────────────┤
│  密钥管理(永远不做的事:贴到聊天里)              │
│  → direnv/sops/Infisical 环境注入               │
│  → PreToolUse hook 拦截 + gitleaks 兜底         │
└─────────────────────────────────────────────────┘

一句话总结:你的 prompt 就是你的隐私。要么让它不出你的机器,要么让它先过一层你自己控制的脱敏网关,最差最差——别把密钥和卡号贴进去。


今天就做:五件小事

  1. 今晚就戒掉:任何 API key、银行卡号、密码,不再贴进任何对话(官方模型的对话也一样)。
  2. 一刻钟防线:Claude Code 配上 permissions.deny 挡住 .env、凭证文件的读取,再加一个 PreToolUse hook 正则拦截 sk-AKIA、卡号格式。
  3. 本周内:不想折腾就用 new-api(docker compose up -d),上游官方 key 只进自己的库,之后 agent 一律指向 127.0.0.1 或自己的 VPS;记得追新版、管理面不放公网。
  4. 持续做:用 api-relay-audit(819★,AGPL-3.0,活跃)定期抽检在用的中转站——prompt 注入、换模型、偷凭证都有对应的检测项,值得装进例行巡检。
  5. 按需加码:高敏任务下放本地 ollama;对云端智能有执念再看 dstack/Phala 这类 TEE 服务。

每一层的加固都不复杂,复杂的是"意识到自己在裸奔”。看完这篇,至少别再把自己的银行卡密码,发给一个 44.9 元包月、下个月就失联的站了。


数据说明

文中 40+ 个仓库的 stars、license、维护状态均为 2026-08-31 通过 GitHub API 实时核实;428 站暗访的三个计数来自公开报道的实测数据。Presidio 仓库已迁移至 data-privacy-stack/presidio(旧地址自动跳转)。llm-guard 已被 protectai 归档停更(2026-07 后无提交,已核验),不再推荐。Lakera 已被 Check Point 收购,无开源产品。