摘要
从一次我自己撞的墙讲起:网关把上游的 4xx 改写成了 502,而终止分支缺日志,我完全看不到发生了什么。顺着这个坑,我把 /v1/chat/completions 这条链路从头到尾捋了一遍,这篇记录其中的选择——哪些是当初顺手写下的、哪些是返工回来的、哪些我到现在也还没底。
从一次我自己撞的墙讲起:网关把上游的 4xx 改写成了 502,而终止分支缺日志,我完全看不到发生了什么。顺着这个坑,我把 /v1/chat/completions 这条链路从头到尾捋了一遍,这篇记录其中的选择——哪些是当初顺手写下的、哪些是返工回来的、哪些我到现在也还没底。
这个项目还没上线。我在开发过程中把结构翻了一遍,而且方向还相反:第一次是把一个 2391 行的 internal/relay/server/http.go 拆开,第二次是把拆出去的九个服务收进 Kratos 大仓结构、抽出共享层,并写脚本卡住服务之间互相 import。这篇讲哪些线是我真的按需要切的,哪些只是抄了微服务的目录形状。
v0.28.0 是 micro-one-api 项目在模型可观测性方向的一个重要版本。本版新增按来源与上游模型粒度的被动模型健康监测与管理台看板,修复了多轮 /v1/responses Websocket 连接按累计 usage 重复计费的问题,并把 404 模型不可用判定收窄到 API 形状响应体,避免误配 base_url 把整渠道模型标红。
v0.27.0 是 micro-one-api 项目面向个人部署者与运维审计场景的一个收口版本。本版修复了 SQLite Lite 从空环境到首个聊天请求之间的结算死锁与方言 schema 缺口,补齐了可重复验证的部署 Quickstart,新增只读的历史账务审计工具,并把 K3 canonical charge 灰度的验收 SQL 口径与安全依赖基线彻底固化。
micro-one-api 是一个 LLM API 网关,对外同时暴露 OpenAI ChatCompletions(/v1/chat/completions)、OpenAI Responses(/v1/responses)和 Anthropic Messages(/v1/messages)三个端点,对内要对接二十多家协议各异的上游渠道。客户端协议和上游协议任意组合,协议转换就成了网关的核心能力。
本文从“一次调用为什么产生这笔费用”出发,介绍 Token、价格、缓存、订阅和最终入账之间的关系,适合项目使用者、运营人员和开发者阅读。
本文整理 micro-one-api 从 v0.24.0 到 v0.26.5 共 8 个版本的发布内容。这个周期先完成控制台可用性、双语界面与用户协议和隐私协议基础,随后补齐模型模态与每 1M tokens 定价注册表,再进入用量语义与计费审计的核心建设,最后收口 Go 1.27 工具链、Relay 路由、控制台性能和 Responses 来源归因。范围覆盖 v0.23.3..v0.26.5,共 436 个文件变更、+18.1k/-5.7k 行。
micro-one-api v0.23.x 系列(v0.23.0 / v0.23.1 / v0.23.2)是项目在 relay-gateway 执行架构上的一个重要里程碑。这个系列为 /v1/chat/completions 与 /v1/responses 引入了一套 transport-neutral 的 executor 执行层,并通过 token allowlist 灰度门禁、失败矩阵测试和生产 canary 观察,在小流量、可回滚的前提下完成了新旧路径的验证与切换准备。与此同时,三个补丁版本持续加固了渠道健康、用量日志安全、协议兼容和失败边界。