# 你的 Claude Code 中转，是真 Opus 还是偷偷换了小模型？——一套同时段官方基线盲测的思路


## 起因

上一篇填完 `claude code` 连自建网关的坑之后，我一直被另一个更根本的问题困扰：

**我通过中转（或者自建网关背后接的那家上游）拿到的 `claude-opus`，真的是官方的 opus 吗？**

用久了会有种模糊的体感：同一个模型名，有时候聪明、有时候明显变笨；高峰期尤其可疑。但体感不能当证据。中转商在后台把 `opus` 悄悄路由到 `sonnet`、甚至 `haiku`，或者套一层别的后端，你在客户端是**看不见**的——返回的 `model` 字段照样写着你请求的那个名字。

于是我花了段时间做了一套测法，专门回答这个问题。这篇讲思路，不卖东西——具体能不能落地、哪些地方靠谱哪些地方不靠谱，我尽量都讲清楚。

## 一个反直觉的坑：测一次、看一个分，没用

最容易想到的做法是：写个脚本打一发，测测延迟、看看回答质量，打个分。

这条路基本是死的，原因有两个：

1. **绝对分没有意义。** 延迟、缓存命中、流式粒度这些信号，全都强依赖你当时的网络、账号、上游策略。同一家中转，你在早上和晚高峰测，数字能差出一截。拿一个孤立的绝对值去下结论，等于拿体温计量室温。
2. **降级是间歇的。** 真要换模型，聪明的做法是高峰期才换、或者按比例抽着换。你单测一发正好没撞上，就误判成"没问题"。

所以单点测量天生抓不到这件事。唯一靠谱的参照系，是**在同一个时刻，让候选通道和官方基线并排跑同一组题**——把时段、网络这些共同变量抵消掉，剩下的差异才归因得到"这家中转本身"。

## 思路：把候选和官方塞进同一个时刻

核心动作就一句话：**同一时刻、同一组 prompt、同一层抓包，候选通道和官方 CLI 基线并行跑，然后量它们的差异，而不是量绝对值。**

拆开说：

- **同一组 prompt。** 所有被测通道和官方基线收到逐字节相同的题（提前锁定，不让随机性掺进来）。
- **同一层抓包。** 请求都从一个透明代理（我用的是 mitmproxy）穿过去，在传输层记录 token 用量、SSE 事件到达时刻、上游指纹这些客户端平时看不到的东西。
- **官方基线同跑。** 每组测试里，除了候选，还有一路直连官方（或已知可信的官方口）在同一时刻跑同样的题，作为对照系。

因为有了同时刻的对照，最后给出的是**相对相似度**——"这家中转和官方在哪些维度对得上、哪些对不上"，而不是一个飘忽的绝对分。

## 差异藏在哪：几个能被抓到的信号

同名不同"物"，会在这些地方露馅。这里只讲机制，具体到某家某次差在哪，得看逐维证据，不能凭一个总分拍板。

**档位思考量。** 这是我觉得最硬的一个信号。给一道需要动脑的题（比如精确数数），让模型带 thinking 跑，然后看它这一步烧了多少 thinking token。opus 档想得多、密度高；sonnet、haiku 明显更省。如果你请求的是 opus，某一步的思考量却断崖式地掉到 haiku 的量级，这就很值得警觉。

**是不是真流式。** 真流式是逐字（逐 chunk）吐出来的；有的中转/包装层是攒齐了整段、再一次性回吐给你，制造"在流式"的假象，甚至中途截断。在抓包层把每个 chunk 的到达时刻记下来，真假流式的时间曲线长得完全不一样。

**知识截止与事实召回漂移。** 换了后端，模型的知识截止、对某些事实的召回、身份指纹，往往会跟官方基线对不上。单看一次可能是偶然，持续对不上通常意味着上游被动过手脚。

**缓存行为。** 官方对重复前缀有稳定的缓存命中特征，包装层经常把这套语义弄丢或弄乱。

## 一个必须讲清楚的边界：差异 ≠ 掺假

这是我最想强调、也最容易被人误读的地方：

**上面这些差异，任何一条单独出现，都不足以断定"这家一定在掺假"。**

上游本身不稳、临时被限流、赶上一次真实的临时降级，都会造成差异。所以我这套东西**只给相对相似度分，不给"真假"的定性结论**。分数低，可能是真降级，也可能只是上游那阵子抖。样本太少时，结论更不稳。

正确的读法是：把总分当成一个"值得注意"的信号，然后点进逐维证据去看——到底是档位思考量对不上，还是流式假，还是知识漂移。逐维证据比一个孤零零的总分靠谱得多。判断留给你自己。

## 你自己怎么快速自查

不装任何东西，手动也能做几件事：

1. **同一道数数/推理题，反复问几次，看思考量稳不稳。** 如果同样的题，思考量时高时低、有时候低到不像这个档位，留个心眼。
2. **看是不是真流式。** 观察输出是逐字冒出来的，还是憋一下、整段蹦出来的。
3. **问知识截止、问身份，跟官方口径对一对。**

我正在把这套自查做成一个**开源的 relay 自检 CLI**：填自己的中转地址和模型，本地跑几个透明探针，输出一份报告，不强制你上传任何东西。做好会单独发一篇。

懒得自己折腾的，可以直接看我跑着的那个站的长期数据（下面披露）。

## 利益披露

把话说在前头，免得被当成软文：

这套方法我做成了一个在线站 **rpdiag**（`diag.relaypulse.top`），常年在跑，累计几千次盲测，每次候选和官方基线的逐维差异都公开可查。

它**靠被测的中转商赞助运营**——但赞助不参与评分、也不改排序，榜按综合分排，权重表和每一次调整都在 git 里公开。它是一台质量差异仪表，不是返佣导航，也不替你做购买决策：只测"像不像官方基线"，不测价格、不给"该买谁"的结论。

我把这层关系摊开写，是因为一个"中转检测站"最该被审视的就是它自己的立场。你完全可以带着怀疑去看它的方法和数据，这本来就是它该经得起的。

## TL;DR

- 想知道中转是不是真模型，**测一次、看一个绝对分是没用的**——降级是间歇的，绝对值又被网络时段污染。
- 唯一靠谱的做法：**同一时刻，候选和官方基线并排跑同一组题，量差异而不是量绝对值。**
- 最硬的信号是**档位思考量**（同一道题的 thinking token 量断崖式下掉）；此外还有假流式、知识漂移、缓存行为。
- **差异不等于掺假**：上游抖动/限流/临时降级都会造成差异。只给相对分，逐维看证据，结论自己下。

