Add MiniMax as an Anthropic-compatible AI provider
MiniMax-M3[1m] via api.minimaxi.com/anthropic per the official Claude Code token-plan docs; the claude-code combo enters the compatibility matrix as stable with mock regression coverage, including the Haiku-slot fallback to the single model. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QKxGW1raAWaqeU8WdHsMsp
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"_verified": "2026-08-24. level=stable: adapter 渲染由 test/shell.d/omarchycn-ai-test.sh mock 回归覆盖; level=official-doc: 官方集成文档存在,native CLI 自管配置",
|
"_verified": "2026-08-25. level=stable: adapter 渲染由 test/shell.d/omarchycn-ai-test.sh mock 回归覆盖; level=official-doc: 官方集成文档存在,native CLI 自管配置",
|
||||||
"combos": {
|
"combos": {
|
||||||
"claude-code": {
|
"claude-code": {
|
||||||
"deepseek": {
|
"deepseek": {
|
||||||
@@ -16,6 +16,11 @@
|
|||||||
"level": "stable",
|
"level": "stable",
|
||||||
"doc": "https://docs.z.ai/devpack/tool/claude",
|
"doc": "https://docs.z.ai/devpack/tool/claude",
|
||||||
"adapter": true
|
"adapter": true
|
||||||
|
},
|
||||||
|
"minimax": {
|
||||||
|
"level": "stable",
|
||||||
|
"doc": "https://platform.minimax.io/docs/token-plan/claude-code",
|
||||||
|
"adapter": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"codex": {
|
"codex": {
|
||||||
|
|||||||
+118
-12
@@ -1,44 +1,150 @@
|
|||||||
{
|
{
|
||||||
"_verified": "2026-08-24, from official docs (see OmarchyCN PRD §27)",
|
"_verified": "2026-08-25, from official docs (see OmarchyCN PRD §27; minimax: platform.minimax.io/docs/token-plan/claude-code)",
|
||||||
"providers": {
|
"providers": {
|
||||||
"deepseek": {
|
"deepseek": {
|
||||||
"display_name": "DeepSeek",
|
"display_name": "DeepSeek",
|
||||||
"auth": ["api_key"],
|
"auth": [
|
||||||
|
"api_key"
|
||||||
|
],
|
||||||
"key_url": "https://platform.deepseek.com/api_keys",
|
"key_url": "https://platform.deepseek.com/api_keys",
|
||||||
"endpoints": {
|
"endpoints": {
|
||||||
"anthropic": "https://api.deepseek.com/anthropic",
|
"anthropic": "https://api.deepseek.com/anthropic",
|
||||||
"openai": "https://api.deepseek.com"
|
"openai": "https://api.deepseek.com"
|
||||||
},
|
},
|
||||||
"models": [
|
"models": [
|
||||||
{ "id": "deepseek-v4-pro[1m]", "aliases": ["default-coding"], "capabilities": ["tools", "streaming", "reasoning"] },
|
{
|
||||||
{ "id": "deepseek-v4-flash", "aliases": ["fast"], "capabilities": ["tools", "streaming"] }
|
"id": "deepseek-v4-pro[1m]",
|
||||||
|
"aliases": [
|
||||||
|
"default-coding"
|
||||||
|
],
|
||||||
|
"capabilities": [
|
||||||
|
"tools",
|
||||||
|
"streaming",
|
||||||
|
"reasoning"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "deepseek-v4-flash",
|
||||||
|
"aliases": [
|
||||||
|
"fast"
|
||||||
|
],
|
||||||
|
"capabilities": [
|
||||||
|
"tools",
|
||||||
|
"streaming"
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"kimi": {
|
"kimi": {
|
||||||
"display_name": "Kimi (Moonshot)",
|
"display_name": "Kimi (Moonshot)",
|
||||||
"auth": ["api_key"],
|
"auth": [
|
||||||
|
"api_key"
|
||||||
|
],
|
||||||
"key_url": "https://www.kimi.com/code",
|
"key_url": "https://www.kimi.com/code",
|
||||||
"endpoints": {
|
"endpoints": {
|
||||||
"anthropic": "https://api.kimi.com/coding/",
|
"anthropic": "https://api.kimi.com/coding/",
|
||||||
"openai": "https://api.moonshot.cn/v1"
|
"openai": "https://api.moonshot.cn/v1"
|
||||||
},
|
},
|
||||||
"models": [
|
"models": [
|
||||||
{ "id": "kimi-for-coding", "aliases": ["default-coding"], "capabilities": ["tools", "streaming", "reasoning"] },
|
{
|
||||||
{ "id": "kimi-for-coding-highspeed", "aliases": ["fast"], "capabilities": ["tools", "streaming"] },
|
"id": "kimi-for-coding",
|
||||||
{ "id": "kimi-k2.6", "aliases": ["general"], "capabilities": ["tools", "streaming"], "protocol": "openai" }
|
"aliases": [
|
||||||
|
"default-coding"
|
||||||
|
],
|
||||||
|
"capabilities": [
|
||||||
|
"tools",
|
||||||
|
"streaming",
|
||||||
|
"reasoning"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kimi-for-coding-highspeed",
|
||||||
|
"aliases": [
|
||||||
|
"fast"
|
||||||
|
],
|
||||||
|
"capabilities": [
|
||||||
|
"tools",
|
||||||
|
"streaming"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "kimi-k2.6",
|
||||||
|
"aliases": [
|
||||||
|
"general"
|
||||||
|
],
|
||||||
|
"capabilities": [
|
||||||
|
"tools",
|
||||||
|
"streaming"
|
||||||
|
],
|
||||||
|
"protocol": "openai"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"zai": {
|
"zai": {
|
||||||
"display_name": "Z.AI / GLM",
|
"display_name": "Z.AI / GLM",
|
||||||
"auth": ["api_key"],
|
"auth": [
|
||||||
|
"api_key"
|
||||||
|
],
|
||||||
"key_url": "https://z.ai/manage-apikey/apikey-list",
|
"key_url": "https://z.ai/manage-apikey/apikey-list",
|
||||||
"endpoints": {
|
"endpoints": {
|
||||||
"anthropic": "https://api.z.ai/api/anthropic"
|
"anthropic": "https://api.z.ai/api/anthropic"
|
||||||
},
|
},
|
||||||
"models": [
|
"models": [
|
||||||
{ "id": "glm-5.2[1m]", "aliases": ["default-coding"], "capabilities": ["tools", "streaming", "reasoning"] },
|
{
|
||||||
{ "id": "GLM-5.3", "aliases": ["latest"], "capabilities": ["tools", "streaming", "reasoning"] },
|
"id": "glm-5.2[1m]",
|
||||||
{ "id": "GLM-4.7", "aliases": ["fast"], "capabilities": ["tools", "streaming"] }
|
"aliases": [
|
||||||
|
"default-coding"
|
||||||
|
],
|
||||||
|
"capabilities": [
|
||||||
|
"tools",
|
||||||
|
"streaming",
|
||||||
|
"reasoning"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "GLM-5.3",
|
||||||
|
"aliases": [
|
||||||
|
"latest"
|
||||||
|
],
|
||||||
|
"capabilities": [
|
||||||
|
"tools",
|
||||||
|
"streaming",
|
||||||
|
"reasoning"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "GLM-4.7",
|
||||||
|
"aliases": [
|
||||||
|
"fast"
|
||||||
|
],
|
||||||
|
"capabilities": [
|
||||||
|
"tools",
|
||||||
|
"streaming"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"minimax": {
|
||||||
|
"display_name": "MiniMax",
|
||||||
|
"auth": [
|
||||||
|
"api_key"
|
||||||
|
],
|
||||||
|
"key_url": "https://platform.minimaxi.com/user-center/payment/token-plan",
|
||||||
|
"endpoints": {
|
||||||
|
"anthropic": "https://api.minimaxi.com/anthropic"
|
||||||
|
},
|
||||||
|
"models": [
|
||||||
|
{
|
||||||
|
"id": "MiniMax-M3[1m]",
|
||||||
|
"aliases": [
|
||||||
|
"default-coding"
|
||||||
|
],
|
||||||
|
"capabilities": [
|
||||||
|
"tools",
|
||||||
|
"streaming",
|
||||||
|
"reasoning"
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export PATH="$TEST_HOME/stubs:$PATH"
|
|||||||
for reg in ai-providers ai-harnesses ai-compatibility; do
|
for reg in ai-providers ai-harnesses ai-compatibility; do
|
||||||
jq -e . "$ROOT/cn/registry/$reg.json" > /dev/null || fail "$reg.json parses"
|
jq -e . "$ROOT/cn/registry/$reg.json" > /dev/null || fail "$reg.json parses"
|
||||||
done
|
done
|
||||||
for p in deepseek kimi zai; do
|
for p in deepseek kimi zai minimax; do
|
||||||
jq -e --arg p "$p" '.providers[$p].endpoints.anthropic // .providers[$p].endpoints.openai' \
|
jq -e --arg p "$p" '.providers[$p].endpoints.anthropic // .providers[$p].endpoints.openai' \
|
||||||
"$ROOT/cn/registry/ai-providers.json" > /dev/null || fail "provider $p has an endpoint"
|
"$ROOT/cn/registry/ai-providers.json" > /dev/null || fail "provider $p has an endpoint"
|
||||||
done
|
done
|
||||||
@@ -67,13 +67,16 @@ declare -A bases=(
|
|||||||
[deepseek]="https://api.deepseek.com/anthropic"
|
[deepseek]="https://api.deepseek.com/anthropic"
|
||||||
[kimi]="https://api.kimi.com/coding/"
|
[kimi]="https://api.kimi.com/coding/"
|
||||||
[zai]="https://api.z.ai/api/anthropic"
|
[zai]="https://api.z.ai/api/anthropic"
|
||||||
|
[minimax]="https://api.minimaxi.com/anthropic"
|
||||||
)
|
)
|
||||||
for p in deepseek kimi zai; do
|
for p in deepseek kimi zai minimax; do
|
||||||
out=$(cn_ai_render_env claude-code "$p" test-model sk-x)
|
out=$(cn_ai_render_env claude-code "$p" test-model sk-x)
|
||||||
grep -qF "ANTHROPIC_BASE_URL=${bases[$p]}" <<<"$out" || fail "claude-code $p base url" "$out"
|
grep -qF "ANTHROPIC_BASE_URL=${bases[$p]}" <<<"$out" || fail "claude-code $p base url" "$out"
|
||||||
grep -q "ANTHROPIC_AUTH_TOKEN=sk-x" <<<"$out" || fail "claude-code $p auth token"
|
grep -q "ANTHROPIC_AUTH_TOKEN=sk-x" <<<"$out" || fail "claude-code $p auth token"
|
||||||
grep -q "ANTHROPIC_API_KEY=sk-x" <<<"$out" || fail "claude-code $p api key"
|
grep -q "ANTHROPIC_API_KEY=sk-x" <<<"$out" || fail "claude-code $p api key"
|
||||||
done
|
done
|
||||||
|
out=$(cn_ai_render_env claude-code minimax "MiniMax-M3[1m]" sk-x)
|
||||||
|
grep -qF "ANTHROPIC_DEFAULT_HAIKU_MODEL=MiniMax-M3" <<<"$out" || fail "minimax haiku slot falls back to default-coding"
|
||||||
out=$(cn_ai_render_env opencode deepseek test-model sk-x)
|
out=$(cn_ai_render_env opencode deepseek test-model sk-x)
|
||||||
grep -q "DEEPSEEK_API_KEY=sk-x" <<<"$out" || fail "opencode deepseek env"
|
grep -q "DEEPSEEK_API_KEY=sk-x" <<<"$out" || fail "opencode deepseek env"
|
||||||
if cn_ai_render_env opencode zai m k > /dev/null 2>&1; then
|
if cn_ai_render_env opencode zai m k > /dev/null 2>&1; then
|
||||||
|
|||||||
Reference in New Issue
Block a user