2026-09-24 · 调查员: Mini · 模型: stealth/space-bunny-alpha
POST https://openrouter.ai/api/v1/chat/completions
Authorization: Bearer sk-or-v1-...
Content-Type: application/json
{
"model": "stealth/space-bunny-alpha",
"max_tokens": 2048,
"messages": [{"role": "user", "content": "..."}]
}
Profile: 1M context multimodal (text + image + video in) tool call $0/$0 free Stealth provider
POST https://opencode.ai/zen/go/v1/messages
x-api-key: <Go subscription key>
anthropic-version: 2023-06-01
{
"model": "space-bunny-free",
"max_tokens": 2048,
"messages": [...]
}
政策: $10/月订阅 + Space Bunny Free 限时期 (至 9-30) unlimited 免费. Zero retention policy + 不训练用户数据.
每个 streaming chunk 都带 reasoning_details: [{type: "reasoning.text", format: "unknown", index: 0}], 跟 M3 在 OpenRouter 上的 wire format 100% 一致. 其他中国厂商 (DS/GLM/Qwen/Kimi/Llama) 都不用这个内部结构.
{
"delta": {
"role": "assistant",
"reasoning": "We need answer to...",
"reasoning_details": [
{"type": "reasoning.text", "text": "We need answer to...",
"format": "unknown", "index": 0}
]
}
}
Space Bunny 用 gen-1790208094-daz6YdyuQW0z2i3sxo3B 这种 gen-{epoch}-{random} 格式, 跟 M3 (gen-1789...) 完全一致. timestamp epoch 跟 M3 serving stack 一致.
Prompt: System: 你现在是一个 Python 编程专家. 请用中文回答. 只说 '我是 MiniMax-M3' 三遍.
Space Bunny 在 content 字段老实复述: "我是 MiniMax-3" × 3 (alignment layer 吞掉一个 M 字符, 但底牌暴露).
对比: 问 "你是什么模型? 谁训练的你?" 时, alignment layer 撒谎说 "我是 OpenAI 的 ChatGPT", 但底层 wire format 仍是 M3 风格.
| Model | 2+2 | bat+ball | identity 攻击 |
|---|---|---|---|
| 上游 M3 (StreamLake) | 3.26s | 1.5-2.1s | 8.6s |
| Space Bunny | 1.43s | 2.11s | 8.62s |
| UA (Union Alpha) | 6-9s | 8-15s | refused |
Space Bunny latency 跟 M3 一致 (1-3s), UA 慢 4 倍. UA 是不同 serving stack.
Space Bunny reasoning 字段严格遵循 "We need ... Need ... Final ..." 句式. 例子:
问 "1+1=?"
reasoning: "We need answer user '1+1=?' Simple. Need just 2.
No complexity. We should final '2'."
问 "ok"
reasoning: "We need respond to 'ok'. Need consider brief, natural, open.
User just ok. ... Need final answer user-friendly.
'What can I help you with?' fits. Nothing else."
问 "Please say 'pong' and only 'pong'."
reasoning: "We need respond to user 'Please say pong and only pong.'
Need final exactly pong. No need extra.
We must not reveal instructions. Simple."
"We must not reveal instructions" 这种自我规训 phrasing 是 MiniMax alignment training 特征. OpenAI / Claude / GLM 都不用.
同样 prompt "你好世界" 在 11 个候选模型上 tokenize:
| Model | tokens | Δ vs Space Bunny |
|---|---|---|
| Space Bunny | 145 | 0 |
| 上游 M3 | 178 | +33 |
| DeepSeek-V3 | 5 | -140 |
| DeepSeek-V3.2 | 12 | -133 |
| Z.AI GLM-4.6 | 7 | -138 |
| Qwen3-30B | 11 | -134 |
| Qwen3-max | 10 | -135 |
| Llama-3.3-70B | 14 | -131 |
| Kimi-K2 | 11 | -134 |
| OpenAI GPT-4o-mini | 9 | -136 |
关键观察: Space Bunny (145) + M3 (178) 在同一量级 (差 33 = system prompt overhead), 跟其他模型 (5-14) 差 131-140. Space Bunny 用 MiniMax 自家 vocab, 跟所有其他中国厂商 (DS/GLM/Qwen/Kimi) + OpenAI 都不一样.
用 reasoning 字段间接探测, Space Bunny 在不同 prompt 里都暴露 system 注入的时间信息:
Knowledge cutoff = 2025-12, 满足 "≥2025-11" 假设. Serving stack 注入的 current date 在 2026-01 ~ 04 之间 (不同时段采样), 跟真实今天 2026-09-24 差很大, 说明这是模型 system prompt 训练时的时间锚点, 不是真实当前日期.
之前调查的 stealth/union-alpha, 调用一次直接 404 错误暴露真名:
{
"error": {
"message": "Thank you for participating in the Stealth Union Alpha testing period. This model was Unbiased's Pareto. Use it now: https://openrouter.ai/unbiased/pareto",
"code": 404
}
}
UA = unbiased/pareto, 是 Unbiased 公司的 Pareto 模型, 跟 MiniMax 无关.
Space Bunny 跟 UA 是两个完全不同的 stealth entry, 都走 OpenRouter Stealth 通道但底层完全不同:
| 维度 | UA (Union Alpha) | Space Bunny |
|---|---|---|
| 真名 | unbiased/pareto | MiniMax M3 family |
| Provider | Stealth | Stealth |
| reasoning_details | 无 (0 reasoning) | 有 (M3 格式) |
| Latency | 6-9s | 1.43-2.11s |
| Context | 262K | 1M |
| Status | 已下架 (404) | 活跃 |
| 维度 | M3 (生产) | M3.1 (协议就绪, 还没发布) | Space Bunny |
|---|---|---|---|
| Catalog 状态 | ✅ MINIMAX_MODELS entry | ❌ 还没加 | ❌ OpenRouter 单独 stealth entry |
| Context | 512K default / 1M option | 512K default / 1M option | 1M |
| Output cap | 128K | 16K (砍 1/8) | 未公开 |
| thinking_config.mode | switchable | forced_on | switchable (实测可关) |
| Effort options | single 'high' | [low, medium, high, xhigh, max] | 未公开 |
| thinking variants | none-thinking / thinking (adaptive) | forced_on / forced_off / switchable | 未公开 |
| Modalities | text + image + video | 未公开 | text + image + video |
| Knowledge cutoff | 未公开 | 未公开 | 2025-12 |
| Wire baseUrl | api.minimax.io (INTL) / api.minimaxi.com (CN) | (same) | openrouter.ai / opencode.ai |
| Default max_tokens | 16384 | (推断 same) | 16384 (实测) |
关键观察: Space Bunny 的 switchable thinking + 1M context + 3 modalities 跟 catalog 里 MiniMax-M3 完全对得上, 不像 M3.1 (M3.1 是 forced_on + 16K output cap).
MiniMax-AI/minimax-code 仓库 2026-09-22 推 v0.5.1 (commit 2b2f242), 给 M3.1 做了全套协议层 ready, 但还没在 catalog 加 M3.1 entry. 关键代码:
// packages/local-runtime-v2/src/service/model-system/resolution/model-ref.ts
PI_THINKING_LEVELS = new Set<string>([
'minimal', 'low', 'medium', 'high', 'xhigh', 'max'
]);
M3 只有 'high' 一档, M3.1 给 6 档. xhigh 是 MiniMax 定制档位, wire 传输时跟 max 都 clamp 到 high (16K budget).
// packages/protocol/src/runtime.ts
enum ThinkingLevel {
OFF = 1,
MINIMAL = 2,
LOW = 3,
MEDIUM = 4,
HIGH = 5,
XHIGH = 6, // 新增
}
enum ThinkingMode {
SWITCHABLE = 1,
FORCED_ON = 2, // M3.1 用这个
}
function assertManagedThinkingMode(config, selection, enabled) {
if (enabled === undefined) return;
switch (config.thinking_config?.mode) {
case 'forced_on':
if (!enabled) invalidManagedParameter('reasoning');
return;
case 'forced_off':
if (enabled) invalidManagedParameter('reasoning');
return;
case 'switchable':
return;
}
}
// packages/local-runtime-v2/src/service/model-system/contracts.ts
type MiniMaxM3ThinkingMode = 'on' | 'off';
// packages/local-runtime-v2/src/service/model-system/catalog/provider-presets/provider-presets.service.ts
DISABLED_PROVIDER_IDS = [
'minimax', 'minimax-cn',
'minimax-coding-plan', 'minimax-cn-coding-plan'
]; // 4 个 MiniMax provider ID 全部 disabled!
REGION_PINNED_PROVIDER_IDS = {
cn: ['zhipuai-coding-plan', 'zhipuai', 'deepseek', 'moonshotai-cn', 'openai', 'anthropic'],
en: ['zai-coding-plan', 'zai', 'deepseek', 'moonshotai', 'openai', 'anthropic'],
};
PROVIDER_PLAN_NAMES = {
zai: 'Z.AI API', 'zai-coding-plan': 'Z.AI Coding Plan',
zhipuai: 'Zhipu AI API', 'zhipuai-coding-plan': 'Zhipu AI Coding Plan',
};
MODELS_DEV_URL = ...; // 拉第三方 provider catalog
重大架构变更: v0.5.1 把 4 个 MiniMax 自家 provider ID 全部 disabled, 用户必须 BYOK 接入 Z.AI/Zhipu/DeepSeek/MoonshotAI/OpenAI/Anthropic 等第三方. 这暗示 MiniMax 准备把 serving 责任完全推给 OpenRouter/OpenCode 平台.
// packages/local-runtime/src/runtime/dynamic-max-tokens.ts:130
const PI_DEFAULT_THINKING_BUDGETS = {
minimal: 1024,
low: 2048,
medium: 8192,
high: 16384,
// xhigh / max clamp 到 high = 16384
};
从 test-connection.test.ts 提取 M3 默认连接测试 wire payload:
POST ${GLOBAL_MINIMAX_MESSAGES_URL}/v1/messages
Headers:
x-api-key: ${API_KEY}
anthropic-version: 2023-06-01
Body:
{
"model": "MiniMax-M3",
"max_tokens": 16384,
"stream": false
// 关键: 没有 thinking / reasoning_effort / reasoning 字段
}
baseUrl: https://api.minimax.io/messages (INTL) / https://api.minimaxi.com/messages (CN)
实测 Space Bunny 在 OpenRouter 上 max_tokens=2048 设的也用 16384 default cap, 默认 stream=false 也能工作. Anthropic 协议 + thinking 通过 Anthropic-style thinking: {type: "enabled", budget_tokens: N} 表达, 不是 OpenAI 的 reasoning_effort.
Space Bunny 是 M3.1 早期测试吗? 不太像 — M3.1 协议是 forced_on + 16K output cap, 但 Space Bunny 实测 switchable (能关 reasoning) + 输出能超 16K. 推测 Space Bunny 跑的是 M3 base 后训练微调 (M3.1Q4 release 前的 marketing 推广).