name: minimax-coding-plan-compat description: MiniMax Coding Plan (sk-cp- Token Plan Key) 的各种 API 调用限制和兼容方案。Coding Plan Key 只能调 MCP 工具,不能直接调 Chat Completions/文本生成 API。 version: 1.0.0 author: Hermes Agent tags: [minimax, api, llm, coding-plan]
MiniMax Coding Plan 兼容性指南
核心发现
MiniMax 有两种 API Key:
| Key 类型 | 前缀 | 用途 | 支持 Chat Completions |
|---|---|---|---|
| Token Plan Key | sk-cp-... |
Coding Plan 配额,仅限 MCP 工具 | ❌ 不支持 |
| Pay-as-you-go API Key | sk-... |
通用 API,按量计费 | ✅ 支持 |
关键规则:The Token Plan Key is not interchangeable with pay-as-you-go API Keys.
Coding Plan Key 的能力范围
sk-cp- 开头的 Key 只能用于 MiniMax Coding Plan MCP server (minimax-coding-plan-mcp) 提供的两个工具:
web_search— 网络搜索(端点:/v1/coding_plan/search)understand_image— 图片分析(端点:/v1/coding_plan/vlm)
MCP server 源码在 minimax_mcp/server.py,关键调用路径:
- 搜索:api_client.post("/v1/coding_plan/search", json=payload)
- 识图:api_client.post("/v1/coding_plan/vlm", json=payload)
"/v1/coding_plan/search", json=payload)- 识图:api_client.post("/v1/coding_plan/vlm", json=payload)`## web_search 的 REST 调用方式(关键!参数名是 q 不是 query)
当 agent 没有 web_search 工具(MCP 未注入)时,可以直接通过 Python urllib POST 到 REST 端点:
import json, urllib.request
url = "https://api.minimaxi.com/v1/coding_plan/search"
payload = json.dumps({"q": "搜索词"}).encode('utf-8') # ⚠️ 参数名是 "q" 不是 "query"!
req = urllib.request.Request(url, data=payload, headers={
"Authorization": f"Bearer {key}",
"Content-Type": "application/json"
})
try:
resp = urllib.request.urlopen(req, timeout=15)
result = json.loads(resp.read())
for item in result.get('organic', [])[:3]:
print(f" [{item['title']}]({item['link']})")
print(f" {item['snippet']}")
except urllib.error.HTTPError as e:
body = e.read().decode()
if "invalid params" in body:
# 可能参数名错了,检查源码确认
pass
为什么是 q 不是 query: MCP server 源码中 web_search 函数收到 query 参数后,构建 payload 时用的是 payload = {"q": query}(server.py 第 60-62 行)。直接调 REST API 时必须用 {"q": ...},否则返回 400 invalid params。
web_search 通过 MCP SDK 调用(当 MCP 已注入工具时)
使用 native-mcp skill(MCP tools 已注入为 mcp_minimax_coding_web_search):
from hermes_tools import mcp_call
result = mcp_call("minimax_coding", "web_search", {"query": "搜索词"})
如果 MCP 未注入工具,但 MCP server 进程已在运行(ps aux | grep minimax-coding),可以:
1. 通过 mcp.client.stdio SDK 连接
2. 但最简单的方式是直接 POST REST API(见上)
(ps aux | grep minimax-coding),可以:
1. 通过 mcp.client.stdio SDK 连接
2. 但最简单的方式是直接 POST REST API(见上)## 不能做的事
- ❌ 直接调
/v1/chat/completions→ 429Token Plan Max (0/0 used) - ❌ 走 Anthropic 协议(
api.minimaxi.com/anthropic)→ 同样 429 - ❌ 任何标准 LLM 文本生成 API → 都走不通
端点配置
| 区域 | API Host | Key 获取 |
|---|---|---|
| 国际 | https://api.minimax.io |
MiniMax Global |
| 国内 | https://api.minimaxi.com |
MiniMax |
MCP 配置(正确示例)
mcp_servers:
minimax_coding:
command: "uvx"
args: ["minimax-coding-plan-mcp"]
env:
MINIMAX_API_KEY: "sk-cp-..."
MINIMAX_API_HOST: "https://api.minimaxi.com"
如果需要在 TradingAgents 等项目中用 MiniMax
必须使用 pay-as-you-go API Key(sk- 开头),配置方式:
config = {
"llm_provider": "minimax", # 走 OpenAI 兼容协议
"deep_think_llm": "MiniMax-M2.7",
"quick_think_llm": "MiniMax-M2.7-highspeed",
}
# 环境变量需要: MINIMAX_API_KEY=sk-...
或者走 Anthropic 协议(如果 pay-as-you-go key 也支持):
config = {
"llm_provider": "anthropic",
"deep_think_llm": "MiniMax-M2.7",
"quick_think_llm": "MiniMax-M2.7-highspeed",
"backend_url": "https://api.minimaxi.com/anthropic",
}
常见错误
429: Token Plan Max (0/0 used)— 不是"用完了额度",是这个 Key 本来就不支持该 API429: 5-hour usage limit reached— Token Plan Key 的 5 小时限额,下午 3 点重置(但即使重置后也调不了 Chat Completions)
验证方法
age limit reached` — Token Plan Key 的 5 小时限额,下午 3 点重置(但即使重置后也调不了 Chat Completions)
## 验证方法
```bash# 测试 Chat Completions 是否可用(Token Plan Key 会 429)
curl -X POST "https://api.minimaxi.com/v1/chat/completions" \
-H "Authorization: Bearer sk-cp-..." \
-H "Content-Type: application/json" \
-d '{"model":"MiniMax-M2.7-highspeed","messages":[{"role":"user","content":"hi"}]}'