为什么 AI 智能体需要一个本地 LLM 网关
同时在用 Codex、Claude Code 和 Gemini CLI?本地 LLM 网关为所有智能体提供统一入口,并带来模型路由、故障转移、协议转换、可观测性和隐私保护。本文讲清原理与搭建方法。
一年前,大多数开发者只用一个 AI 编程助手、对接一个模型。如今常见的情形已经变了:这个任务用 Codex,那个任务用 Claude Code,再加上 Gemini CLI 或 OpenCode,外加几个直接调模型的脚本。每个智能体都有自己的配置文件、自己偏好的协议,也各自保存着一份你的 API 密钥。
平时这样还能凑合,可一旦想改点什么就麻烦了:换个新模型试试,要改四份配置;某个服务商出故障,所有指向它的智能体一起停摆;上周花了多少钱、钱花在哪个智能体上,谁也说不清。
本地 LLM 网关的思路是:在你的电脑上放一个统一入口,横在所有智能体和所有服务商之间。本文会介绍本地网关是什么、它解决的五个问题、与其他方案的区别,以及如何用 AutoJev 搭建一个。
什么是本地 LLM 网关?
本地 LLM 网关是运行在你电脑上的一个小型服务,只监听本机地址,负责把智能体发出的模型请求转发给上游服务商。你不再让每个智能体各自指向某个服务商,而是让它们统一指向网关:
Codex / Claude Code / Gemini CLI / OpenCode / Hermes / 你的脚本
│
http://127.0.0.1:9527/v1
│
AutoJev 本地网关
│
固定模型 / 负载均衡 / 智能选择 / 故障转移
│
OpenAI / DeepSeek / OpenRouter / Ollama / 任意兼容接口网关决定每个请求交给哪个模型,在需要时转换 API 格式,失败时自动重试,并记录发生了什么。由于它运行在本地,请求会用你自己的密钥从你的电脑直接发往服务商,中间没有第三方中转。
AutoJev 在 127.0.0.1:9527 上提供以下接口:
| 接口 | 使用方 |
|---|---|
POST /v1/responses | Codex 及其他 Responses 客户端 |
POST /v1/chat/completions | 大多数 OpenAI 兼容客户端 |
POST /v1/messages | Claude Code 及其他 Anthropic 客户端 |
POST /v1beta/models/... | Gemini CLI(通过 Gemini 桥接) |
GET /v1/models | 模型发现 |
GET /health | 健康检查 |
一、路由:每个请求配上合适的模型
不是每个请求都值得用最贵的模型。改个变量名和设计一次涉及安全的数据迁移,完全是两回事。有了网关,你只需要把这种取舍用路由表达一次,而不必把模型写死在每个智能体里。
在 AutoJev 中,路由是一组候选模型加一个调度策略,对智能体暴露为 autojev/<路由 ID>:
- 固定模型:始终使用同一个模型。
- 负载均衡:新会话在最高优先级组内按权重分配。
- 智能选择:按决策偏好选模型——
- 速度优先:根据实测速度在本地决定,不发出任何外部调用;
- 成本优先:选出满足能力要求、费用最低的候选;
- 质量优先和均衡:使用你自己的 OpenRouter 密钥,调用 OpenRouter 上的 Jev 决策模型。只发送路由元数据,绝不发送对话内容。Jev 不可用或置信度低于 0.5 时,回退到加权负载均衡。
会话保持让同一会话中的请求始终使用同一个模型(只要它仍可用),智能体不会在重构到一半时换模型。
速度路由的前提是有测速数据。AutoJev 的模型测速会记录首字延迟和每秒输出 token 数,默认每 30 分钟定时运行一次,每个模型最多保留 30 个样本。
延伸阅读:智能路由、AI 编程智能体场景、成本控制场景。
二、故障转移:一家服务商出问题,不该让你停工
任何服务商都有状态不好的时候:限流、密钥过期、区域过载。如果智能体直接指向某一家,它出故障就等于你出故障。
网关可以换一个候选再试。AutoJev 在遇到连接错误以及 HTTP 401、402、403、408、429、5xx 时会进行故障转移——但只在尚未开始输出时进行。这条规则对智能体至关重要:重放一个输出到一半的流,可能导致文本重复,甚至同一个工具调用执行两次。因此已经开始输出的响应永远不会换模型重试。
可调整的默认值:
- 每个请求最多尝试 4 次,每个候选最多尝试一次;
- 连续失败 3 次进入冷却;401、402、403、429 会立即进入冷却;
- 冷却 30 秒(可设 1–3600 秒),并遵循服务商返回的
Retry-After; - 冷却结束后只放行一个探测请求,成功后才标记为正常。
延伸阅读:故障转移与负载均衡。
三、协议转换:任意智能体,搭配任意模型
不同智能体说不同的协议:Codex 说 OpenAI Responses,Claude Code 说 Anthropic Messages,而大多数服务商和本地推理服务提供的是 Chat Completions。没有协议转换,选了哪个智能体,就等于限定了能用哪些模型。
AutoJev 支持这三种格式之间全部六个方向的转换,涵盖流式输出、带稳定 ID 的函数工具与工具调用、Responses 自定义工具、图片、用量和错误。模型的 API 类型只描述它的上游,智能体发来什么格式,交给网关处理即可。
它也坦诚说明边界:转换无法让模型凭空获得工具、视觉、推理能力或更大的上下文。没有对应物的功能——previous_response_id、联网搜索等托管工具、音频和文件内容——会被明确拒绝,而不是悄悄丢掉;各家专有的 thinking 块会被省略。
两篇实操教程:
延伸阅读:协议转换。
四、可观测性:知道智能体在做什么
当请求分散在多个智能体和服务商之间时,一些最基本的问题都很难回答:这个请求是哪个模型回的?为什么这么慢?这周智能体一共花了多少钱?
网关能看到每一个请求,自然能回答这些问题。AutoJev 会记录:
- 日志:时间、智能体、模型、服务商、路由 ID、输入 / 输出 / 缓存 token、首字节与总耗时、预估费用和状态,可按日期、智能体、服务商、状态筛选。详情页列出每一次上游尝试,故障转移的过程一目了然。
- 用量:请求数、token、缓存读写、缓存命中率、预估费用、成功率和平均耗时,附每日图表,并可按智能体、模型、服务商拆分。
调试台可以向任意模型或路由发送测试请求,支持对话模式和 cURL 模式,查看实际选中的模型、耗时、token、费用和原始 JSON。
费用是根据你配置的价格和服务商返回的用量估算的。延伸阅读:用量与日志、调试台、模型评测场景,以及 LLM 费用计算器。
五、隐私:网关就该留在你的电脑上
网关能看到智能体发出的一切,所以它运行在哪里非常重要。
AutoJev 坚持本地优先:
- 网关只监听本机地址;
- 请求用你自己的密钥从你的电脑直接发往服务商,没有 AutoJev 云端中转,不需要 AutoJev 账号,也不加价;
- 请求日志只保存元数据,完整的提示词、回复和 API 密钥不会写入请求日志;
- 智能选择调用 Jev(质量优先或均衡)时,只发送路由元数据,不发送对话内容;
- 通过 Ollama 运行的本地模型完全不出本机;路由可以开启「优先使用本地模型」。
需要坦白的一点:配置和服务商密钥保存在 ~/.autojev/autojev.db,密钥目前以明文形式存储,请像保护其他凭据文件一样保护它。
延伸阅读:本地模型场景。
一键接入智能体,随时可以还原
只有接入足够省事,网关才真正有用。为每个智能体手改 TOML、JSON、YAML,恰恰是网关应该替你省掉的活。
AutoJev 会检测已安装的智能体,一键写入各自的原生配置:
| 智能体 | 配置文件 | 协议 |
|---|---|---|
| Codex | ~/.codex/config.toml + autojev-models.json | Responses |
| Claude Code | ~/.claude/settings.json | Anthropic Messages |
| Gemini CLI | ~/.gemini/settings.json + .env | Gemini 桥接 |
| OpenCode | ~/.config/opencode/opencode.json | Chat 或 Messages |
| Hermes | ~/.hermes/config.yaml | Chat |
| OpenClaw | ~/.openclaw/openclaw.json | Chat 或 Messages |
| Kimi Code CLI | ~/.kimi-code/config.toml | Chat 或 Messages |
| Grok Build | ~/.grok/config.toml | Chat 或 Messages |
| oh-my-pi | ~/.omp/agent/models.yml | Chat 或 Messages |
每次连接前都会先备份原文件;断开时恢复原配置,同时保留你之后做的、不冲突的修改。「停止并恢复配置」可以一次还原所有智能体。其他工具可以使用自定义智能体,或通过「连接参数」对话框拿到 Base URL、占位密钥和模型 / 路由 ID:
OPENAI_BASE_URL=http://127.0.0.1:9527/v1
OPENAI_API_KEY=autojev-local-my-script本地网关与其他方案的区别
管理多智能体、多模型的方案有好几种,它们解决的问题各不相同:
- 托管模型聚合平台:一个 API Key 用遍众多模型,路由发生在平台服务器上。本地网关可以把它当作众多服务商之一——AutoJev 内置了 OpenRouter 预设。参见 AutoJev 与 OpenRouter 对比。
- 配置切换工具:负责切换智能体指向哪个服务商,但不在请求链路上,因此无法按请求路由、故障转移或转换协议。AutoJev 支持从 CC Switch 导入服务商。参见 AutoJev 与 CC Switch 对比和 CC Switch 替代方案。
- 自部署代理服务:适合运营共享基础设施的团队,功能强大,但需要你把它当作一项服务来运维。参见 AutoJev 与 LiteLLM 对比。
- 单一智能体路由工具:专注于某一个客户端。参见 AutoJev 与 Claude Code Router 对比和 Claude Code Router 替代方案。
AutoJev 的定位是刻意收窄的:一款面向个人开发者电脑的桌面应用,用图形界面管理服务商、模型、路由和智能体,并让所有智能体共用一个本地入口。
动手搭建
- 安装:从下载页获取 AutoJev,支持 macOS、Windows x64、Linux x64,免费开源(MIT 协议)。
- 添加服务商:OpenAI、DeepSeek、OpenRouter、Ollama,或任意 OpenAI 兼容 / Anthropic 兼容接口;也可以从 CC Switch 或 Termany 导入。
- 添加模型:填写上游 API 类型和价格,然后测速。
- 创建路由:例如
fast、cheap、quality。 - 接入智能体:在「智能体」中一键连接,在「调试」中发一条测试请求,再去「日志」查看结果。
AutoJev 仍处于早期开发阶段,功能可能随版本变化。各项设置的详细说明见使用文档。
小结
只要你同时用着不止一个智能体、不止一个模型,本地 LLM 网关就值得一试。它为所有智能体提供统一入口,把每个请求路由到合适的模型,扛住服务商故障,在 Responses、Chat Completions、Messages 之间自由转换,清楚展示发生了什么、花了多少钱,并让流量只在你的电脑和服务商之间流动。
了解更多功能:智能路由 · 一键接入智能体 · 协议转换 · 模型测速 · 故障转移与负载均衡 · 用量与日志 · 调试台 · 服务商管理