如果你同时用着 DeepSeek、商汤、硅基流动、OpenCode 好几家 AI 服务,每天在哪个用哪个中间来回切换,或者用一个 One API 做统一入口,但发现流式响应偶尔丢字、工具调用莫名断掉、配置改了要重启……那这篇文章就是写给你的。
璇玑(Xuanji),一个 18MB 的 Go 二进制 AI 网关。
它只有一个二进制文件加一个 SQLite 数据库文件,不需要 MySQL、不需要 Redis、不需要 Python 运行时,没有任何外部依赖。复制到服务器上直接跑,然后浏览器打开管理页面配置上游和路由规则,就完事了。
但轻量不是它唯一的卖点。
先说路由。璇玑的路由规则是"优先级内置"的——你不需要手动配置每条路由的策略。它自动按"免费渠道、包月渠道、按量付费渠道"三级分流,同层内按权重、折扣时段、实时网络延迟逐级优选。免费渠道有余量就先走免费的,免费用完了自动升到包月,包月超了再用按量付费。只要你配置了上游,璇玑自动帮你选最省钱的那个。同一个模型你可以绑定多个上游,一个上游挂了自动切下一个,整层全挂就自动升到下一计费层级。不会因为任何一个上游故障导致请求中断。
再说协议。璇玑同时接入 OpenAI 和 Anthropic 两个协议,Claude Code 可以直接指向璇玑的地址,不需要额外适配。而且流式响应的 SSE 是逐行透传的,不丢字段。做过 AI 网关开发的人都知道,流式响应丢字段是 One API 和 LiteLLM 的通病,尤其是工具调用和 multi-modal 场景。璇玑在这个问题上做了严格处理。
最近几个版本,璇玑加了不少新能力。
多模态自动兜底。这是 v1.2.0 的重头戏。很多模型是纯文本的,比如 DeepSeek,客户端一发带图片的请求就直接 400。璇玑现在会自动检测请求里有没有图片,如果命中的模型不支持多模态,自动把请求转发到你配置的视觉模型上。你只需要在路由规则里勾一下"支持多模态",再填一个兜底模型名,剩下的事网关全包了。带图请求自动走视觉模型,纯文本请求走原来的省钱模型,两边都不耽误。
老接口兼容。OpenAI 的 /v1/completions 老接口已经废弃了,但有些老程序还在用。璇玑现在兼容这个接口:接收老的 text 补全格式,自动转换成 chat 格式转发给上游,再把响应转回老格式返回。老程序不用改一行代码,无缝迁移。顺带在请求日志里加了个按端点筛选的功能,一眼就能看出还有哪个程序在调用废弃接口。
Cloudflare 上游修复。Cloudflare 的 Workers AI 有免费的 BGE-M3 向量模型可以用,但它的 OpenAI 兼容端点不支持 GET /models 健康检查,导致网关把它误判成死节点、永远不路由过去。璇玑现在做了回退探测:健康检查遇到 405/404 时,自动改用 POST /embeddings 发一个最小请求真实测一下向量能力,能用就标记为健康。修复之后,Cloudflare 免费额度(每天 1 万个 Neurons,够跑 900 多万 token 的 embedding)就能稳定吃到了。
上游优先级修复。之前网关的候选排序只认权重不认优先级,你辛辛苦苦把某个上游设成"优先级第一",结果它排在最后面。现在权重和优先级都参与排序,你想让谁优先就真的让谁优先。
请求日志端点筛选。管理页的请求日志现在可以按端点类型筛选(chat、embeddings、completions、rerank、图片、语音),配合客户端地址和 User-Agent,一眼看出哪个程序在用哪个接口、各占多少比例,方便追踪成本和用量。
管理页体验。所有弹窗改成模态了,不会鼠标一点弹窗外就消失;登录表单补上了 name 和 autocomplete 属性,浏览器会正常提示保存密码。
思考深度归一化。不同模型的思考参数五花八门——OpenAI 叫 reasoning_effort,DeepSeek 叫 reasoning_effort 加 thinking type,商汤叫 thinking budget,Qwen 只有一个 thinking 开关,Gemini 系列是 enable_thinking 加 thinking_budget。客户端要挨个适配的话,代码量不小。璇玑在网关层做了归一化:客户端永远发 OpenAI 标准协议,网关按目标模型自动翻译。你传一个 reasoning_effort,璇玑自动转成目标模型需要的格式。如果客户端不会传 reasoning_effort,网关什么都不做,零开销。
最佳思考等级自动推荐。我们在 75 道测试题上实测了主流免费模型的效果,给每个模型预置了最优思考等级。DeepSeek-V4-Flash 推荐 high(得分 55/75,94.7%);商汤 Sensenova-6.7-Flash-Lite 推荐 low(得分 35/75,93.0%);Qwen-2.5 免费渠道推荐 medium(得分 35/75,93.0%)。管理页面有一个思考等级 Tab,你可以查看和编辑这些推荐值,支持模型通配符。系统设置里有两个开关:自动推荐——客户端没传思考等级时自动补上推荐值,零侵入;强制覆盖——不管客户端传了什么,一律用你指定的等级。适合统一管理所有客户端的思考策略。
统计页 API Key 模型饼图。在请求统计页面,每个 API Key 的统计表里,点击展开行可以看到这个 Key 使用的模型分布饼图。这有什么用?你创建了多个下游 API Key 给不同的 AI 工具用,比如一个给 Claude Code,一个给 OpenCode,一个给 Hermes Agent。通过饼图你一眼就能看出每个工具分别用了哪些模型、各占多少比例。方便追踪成本和用量。
系统设置页。以前配置项分散在数据库里,现在统一到了一个页面。账号安全(修改密码)、思考等级自动推荐和强制覆盖开关、视频透传开关、重试策略(熔断时长、探测间隔、超时时间、重试状态码、重试触发关键词)、渠道优惠时段配置,全部在一个页面里改,改完立即生效。
Preheat 冷却队列。商汤的免费渠道有并发限制,同一个 API Key 短时间请求太多会被 429 限流。璇玑现在会在成功请求后标记这个 Key 进入 1 秒冷却,避免同一 Key 被并发打爆。这个冷却只对商汤的 Key 生效,不影响其他渠道。
视频透传。有些模型支持视频输入(比如 SenseNova 6.3 多模态),但经过网关时 video_url 字段可能被过滤。璇玑现在加了一个视频透传开关,开启后原样转发视频字段给上游。
上游失败率。统计页之前只显示请求数和成功数,现在直接显示失败数,方便排查问题。
v-cloak 防闪烁。Vue 加载期间模板语法短暂可见的问题已经修复,现在页面加载过程中不会看到 {{ }} 和 v-for 之类的原始代码了。
和同类产品对比一下。
One API(new-api)是目前最流行的服务端网关,但问题是镜像体积大(200MB),需要 MySQL 或 Redis,流式响应偶尔丢字段,配置改了要重启。璇玑 18MB 单二进制,零外部依赖,流式逐行透传,改配置立即热重载。
LiteLLM 是 GitHub 10k+ stars 的 Python 网关,但依赖 Python 运行时,镜像 1GB+,部署成本高,管理 UI 简陋。璇玑部署就是复制一个二进制加一个 SQLite 文件,不需要懂 Python。
New API 和 Kong AI Gateway 功能全面,但面向企业,配置复杂,价格不菲。璇玑适合个人和小团队自用,无计费,短期不加计费。
璇玑目前有 18 个自动化测试,覆盖协议转换、路由选择、熔断、思考归一化、最佳等级注入等核心路径。生产环境持续运行验证。
项目地址:https://github.com/icefairy/xuanji (Gitee 镜像:https://gitee.com/icefairy/xuanji-gateway)
如果你在用的网关太重、配置改了要重启、或者流式响应经常丢字段,不妨试试璇玑。18MB,复制即跑,零配置部署。
觉得有用的话,给项目点个 Star,支持一下作者。谢谢!
作者:玄凌子
夜雨聆风