Python · 合规 · LLM-Bridge

抽 token 是条死路——个人 AI 网关的合规红线

LLM-Bridge 复盘:从 CLI 里抠 OAuth token 直连后端,是最短的路,也是最先死的路。为什么最后全部退回官方 harness。

要把订阅版的 Claude、Codex 塞进一个自己的 API 网关,最直接的写法只有一条:找到 CLI 登录后把 OAuth token 存在哪,读出来,拿着它自己去打后端的 /v1/messages

LLM-Bridge 第一版就是这么写的。它跑得通,快,延迟低。然后它死了。这篇讲它为什么必须死,以及退回来之后的形态。

最直接的写法,最先死

抽 token 直连的诱惑很实在:跳过 CLI 那一层子进程,直接 HTTP 打后端,延迟从几秒降到几百毫秒,还能拿到完整的流式事件、token 计数、采样参数。功能上,它是最完整的方案。

问题是它违反供应商的服务条款,而且供应商开始动真格地封。

Anthropic 从 2026 年 1 月起在服务端加了拦截——识别出「不是官方 harness 发出的、却带着订阅 token」的请求,2026 年 4 月全面强制执行。到这一步,抽出来的 token 打过去,后端直接回 403。不是限速,不是警告,是拒绝。

这类拦截只会越来越严,不会松。任何依赖「replay 订阅 token」的方案,寿命都以供应商下一次收紧为上限。 你今天写的每一行绕过逻辑,都是在给一个注定被关的门缝糊纸。

退回官方 harness,代价是什么

于是整个项目做了一次收敛:三家后端,全部退回各自的官方 harness。

  • claudeclaude-agent-sdk,SDK 自带 CLI、自己管订阅登录;
  • codexcodex exec --json 子进程;
  • agyagy -p - 子进程。

网关自己一个 token 都不碰。认证、刷新、计费,全部是各家 harness 的事,网关只负责把 OpenAI 格式的请求喂进去、把输出转回来。

这条路是有代价的,而且代价不小:

  • 延迟高。走 CLI 子进程,每个请求 3–8 秒起步,比直连慢一个数量级;
  • 只能聊天。CLI/SDK 不暴露 temperaturemax_tokens 这些旋钮,也不给 tool calling 的结构化通道,于是网关只能是 chat-only;
  • 并发低。每个 provider 只放 2 个在途请求——它是个人网关,不是服务栈;
  • claude 的用量记在 Agent SDK credits 上,是月度的那份额度,不是你交互式敲 claude 时用的池子。

这些代价换来的,是一个不会在下个季度被 403 掉的形态。慢一点、窄一点,但它能一直跑。工具的第一属性是「还活着」,其它都排在后面。

「个人网关」这四个字的合法边界

退回 harness 不等于就万事大吉,还得守住「个人」这两个字。LLM-Bridge 的定位是:复用你自己已经付费的订阅登录,给你自己一个人用。 这条定位划出几条具体的线:

  • 单用户、本地优先:默认只听 127.0.0.1,不做多租户、不存别人的凭证;
  • 不重放 token:走官方 harness,认证留在 harness 里,网关不经手;
  • 不越过订阅条款对外分享:这些是个人账号,把它开成一个给一群人用的服务,基本就踩了订阅条款——哪怕技术上做得到。

就算要在自己的几台设备间用(--host 0.0.0.0),README 里也把话说死:先设 API Key 再开监听,否则同网段任何人都能烧你的配额;而且流量是明文 HTTP,只能待在可信网络里,绝不要往公网做端口转发。合规不是加一句免责声明就完事,它得落到默认配置和文档的每一处提醒里。

把红线写进代码,而不是写进记忆

最容易复发的错误,是「反正直连更快,先加回来临时用一下」。为了让这个念头没有落脚点,红线是写进项目约定里的——CLAUDE.md 里那一行原话是:

用抽取的 CLI token 直连后端 API 的方式已于 2026 年 7 月移除——供应商封禁、端点返回 403。不要重新引入。

配套还有一个专门的 provider 适配层审查角色,把「禁 token 直连」列为红线之一,任何新增 provider、任何改动都要过一遍。架构不变量如果只活在写它的人脑子里,下一个人(包括三个月后的你自己)就会把它改掉。 写进文档、写进审查清单、写进「不要做什么」的显式列表,它才真的是个约束。

小结

一个个人 AI 网关,最短的路是抽 token 直连,而这条路是死的:

  • 供应商在动真格:Anthropic 1 月上线服务端拦截、4 月强制,直连后端回 403,靠 replay token 的方案寿命到此为止;
  • 官方 harness 有代价但能活:延迟高、只能聊天、并发低、记 Agent SDK credits——换来的是不会被下一次收紧一键关掉;
  • 守住「个人」二字:单用户、本地、不重放、不对外分享,合规落到默认配置和文档里;
  • 红线写进代码:不变量进 CLAUDE.md 和审查清单,而不是靠人记。

一句话:能绕过的合规,供应商迟早会让你绕不过;从一开始就走正门,是唯一能长期跑的选择。

留言

  • 加载中…

留言先审后发,通过后公开显示;邮箱只有站主可见。