返回博客

为什么 AI 智能体需要一个本地 LLM 网关

2026年10月14日AutoJev

同时在用 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/responsesCodex 及其他 Responses 客户端
POST /v1/chat/completions大多数 OpenAI 兼容客户端
POST /v1/messagesClaude 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.jsonResponses
Claude Code~/.claude/settings.jsonAnthropic Messages
Gemini CLI~/.gemini/settings.json + .envGemini 桥接
OpenCode~/.config/opencode/opencode.jsonChat 或 Messages
Hermes~/.hermes/config.yamlChat
OpenClaw~/.openclaw/openclaw.jsonChat 或 Messages
Kimi Code CLI~/.kimi-code/config.tomlChat 或 Messages
Grok Build~/.grok/config.tomlChat 或 Messages
oh-my-pi~/.omp/agent/models.ymlChat 或 Messages

每次连接前都会先备份原文件;断开时恢复原配置,同时保留你之后做的、不冲突的修改。「停止并恢复配置」可以一次还原所有智能体。其他工具可以使用自定义智能体,或通过「连接参数」对话框拿到 Base URL、占位密钥和模型 / 路由 ID:

bash
OPENAI_BASE_URL=http://127.0.0.1:9527/v1
OPENAI_API_KEY=autojev-local-my-script

延伸阅读:一键接入智能体、智能体配置生成器。

本地网关与其他方案的区别

管理多智能体、多模型的方案有好几种,它们解决的问题各不相同:

AutoJev 的定位是刻意收窄的:一款面向个人开发者电脑的桌面应用,用图形界面管理服务商、模型、路由和智能体,并让所有智能体共用一个本地入口。

动手搭建

  1. 安装:从下载页获取 AutoJev,支持 macOS、Windows x64、Linux x64,免费开源(MIT 协议)。
  2. 添加服务商:OpenAI、DeepSeek、OpenRouter、Ollama,或任意 OpenAI 兼容 / Anthropic 兼容接口;也可以从 CC Switch 或 Termany 导入。
  3. 添加模型:填写上游 API 类型和价格,然后测速。
  4. 创建路由:例如 fast、cheap、quality。
  5. 接入智能体:在「智能体」中一键连接,在「调试」中发一条测试请求,再去「日志」查看结果。

AutoJev 仍处于早期开发阶段,功能可能随版本变化。各项设置的详细说明见使用文档。

小结

只要你同时用着不止一个智能体、不止一个模型,本地 LLM 网关就值得一试。它为所有智能体提供统一入口,把每个请求路由到合适的模型,扛住服务商故障,在 Responses、Chat Completions、Messages 之间自由转换,清楚展示发生了什么、花了多少钱,并让流量只在你的电脑和服务商之间流动。

了解更多功能:智能路由 · 一键接入智能体 · 协议转换 · 模型测速 · 故障转移与负载均衡 · 用量与日志 · 调试台 · 服务商管理