Continue + minimax-m3 接入教程:协议、模型 ID、404 与工具调用排错
10 月 22 日晚上,我把 minimax-m3 配进 Continue。普通聊天可以回复,Agent 却不执行工具,日志里也没有明显报错。进一步排查后发现:请求能够返回文本,不代表端点、模型 ID、上下文参数和工具调用能力已经全部对齐。
先说结论:
minimax-m3是可用的准确 model ID。- 已确认
https://api.minimax.io/v1/chat/completions返回 HTTP 404,本文不再把它作为可用端点。 - 只有服务端明确支持标准 OpenAI
/chat/completions路由时,才能直接使用 Continue 的provider: openai。 apiBase必须填写对应服务实际提供的 OpenAI 兼容 Base URL,不能凭厂商域名自行拼接。- 如果 MiniMax 官方接口使用非标准路径或请求格式,就不能仅靠修改
apiBase接入 Continue 的 OpenAI Provider,需要使用兼容网关或适配层。 - 工具调用没有经过独立验证时,不要主动声明
tool_use。
本文于 2026 年 10 月 25 日核对。当前资料没有足够可靠的信息确认 MiniMax 官方直连接口的上下文长度、最大输出、价格和工具调用支持范围,因此不填写未经验证的数值。
这篇适合谁
- 想把
minimax-m3接入 Continue 的 VS Code 或 JetBrains 用户。 - 已经可以聊天,但 Agent 不调用工具、不修改文件的人。
- 正在排查 HTTP 400、401、404 或请求一直转圈的人。
- 需要在官方接口、OpenAI 兼容接口和聚合网关之间做选择的开发者。
顺手排个雷:npm:continue v0.1.0 是一个同名异步链式方法包,不是 Continue 编程助手的插件版本。排查版本问题时不要混淆两者。
整体流程
- 确认 API Key 属于哪个服务和站点。
- 从服务商文档或控制台复制准确端点,不要自行拼接路径。
- 用 cURL 验证端点、鉴权和
minimax-m3。 - 如果使用 OpenAI 兼容协议,再用 OpenAI Python SDK 验证。
- 将同一组参数写进 Continue YAML。
- 单独验证上下文和工具调用,不要一次全部开启。
- 遇到 400、401、404 或静默失败时逐项回滚。
先说结论:不同场景怎么选
如果把 OpenRouter 或 ofox.io 作为聚合网关/中转方案,仍需分别核对其 apiBase、model 映射、Bearer Key 归属以及 tools 字段是否透传,不能根据网关类型推断兼容能力。
这里需要区分三个概念:
- 显示名称:例如 Continue 界面中显示的"MiniMax M3"。
- model ID :本教程使用准确 ID
minimax-m3。 - 请求端点:由实际服务商决定,不能根据 model ID 推断。
model ID 正确,不代表端点一定正确;端点能返回 HTTP 200,也不代表工具调用一定可用。
第一步:准备环境变量
不要把 Key 直接写进仓库。可以先在终端中设置:
bash
export MINIMAX_API_KEY="替换成你的Key"
export MINIMAX_MODEL="minimax-m3"
export MINIMAX_OPENAI_BASE_URL="替换成服务商公布并验证过的OpenAI兼容Base URL"
检查变量:
bash
test -n "$MINIMAX_API_KEY" || echo "CONFIG_ERROR: MINIMAX_API_KEY is empty"
test -n "$MINIMAX_MODEL" || echo "CONFIG_ERROR: MINIMAX_MODEL is empty"
test -n "$MINIMAX_OPENAI_BASE_URL" || echo "CONFIG_ERROR: MINIMAX_OPENAI_BASE_URL is empty"
变量没有配置时,可能看到:
text
CONFIG_ERROR: MINIMAX_API_KEY is empty
CONFIG_ERROR: MINIMAX_MODEL is empty
CONFIG_ERROR: MINIMAX_OPENAI_BASE_URL is empty
这些是本地预检输出,不是服务端报错。
第二步:确认端点是否真的兼容 OpenAI
此前使用的 MiniMax Chat Completions 地址已经核查为 HTTP 404,因此不能继续作为有效示例。
不要因为某个服务的 Base URL 以 /v1 结尾,就默认它一定实现了标准 OpenAI Chat Completions 路由。正确做法是查看服务商文档,确认它明确支持以下内容:
- OpenAI Chat Completions 请求结构;
Authorization: Bearer <API_KEY>鉴权;model、messages等标准字段;- 标准聊天路由;
- 如果需要 Agent,还应确认
tools和tool_calls。
只有以上条件满足,才能将该服务视为 OpenAI Compatible。
如果服务商提供了经过确认的 OpenAI 兼容 Base URL,可以这样测试:
bash
BASE_URL="${MINIMAX_OPENAI_BASE_URL%/}"
curl "$BASE_URL/chat/completions" \
-H "Authorization: Bearer $MINIMAX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax-m3",
"messages": [
{
"role": "user",
"content": "只回复 OK"
}
]
}'
这一步只测试:
- 网络是否可达;
- URL 是否正确;
- Key 是否有效;
minimax-m3是否可用;- 文本请求格式是否兼容。
先不要加入工具定义,也不要发送超长代码。
第三步:用 OpenAI SDK 排除 Continue 配置问题
如果 cURL 已确认服务支持标准 OpenAI Chat Completions,可以继续使用 OpenAI Python SDK 验证:
python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["MINIMAX_API_KEY"],
base_url=os.environ["MINIMAX_OPENAI_BASE_URL"],
)
response = client.chat.completions.create(
model="minimax-m3",
messages=[
{
"role": "user",
"content": "只回复 OK",
}
],
)
print(response.choices[0].message.content)
如果这段代码可以返回,而 Continue 不可以,问题通常在以下位置:
- Continue YAML 缩进错误;
- 配置文件没有被当前工作区读取;
apiBase与 SDK 使用的 Base URL 不一致;- Continue 中保存的是另一个 Key;
- 配置修改后编辑器没有彻底重启;
- 添加了服务端不支持的能力声明。
环境变量不存在时,Python 可能直接抛出:
text
KeyError: 'MINIMAX_API_KEY'
看到这个错误不需要重装插件。补充环境变量后,彻底退出并重启编辑器进程。
如果 SDK 最终请求的标准聊天路由仍然返回 404,说明该地址不兼容 OpenAI Chat Completions,不能继续用相同参数配置 Continue。
第四步:写 Continue YAML
只有在上一步已经验证 OpenAI 兼容接口可用时,才使用下面的配置:
yaml
models:
- name: "minimax-m3"
provider: "openai"
model: "minimax-m3"
apiBase: "<已验证的 OpenAI 兼容 Base URL>"
apiKey: "<通过 Continue 密钥管理保存的 API Key>"
需要对齐的配置如下:
| 配置项 | 应该填写什么 | 常见错误 |
|---|---|---|
provider |
openai |
服务并不兼容 OpenAI,却强行使用该 Provider |
model |
minimax-m3 |
使用未经确认的别名或命名空间 |
apiBase |
已验证的 OpenAI 兼容 Base URL | 根据厂商域名自行猜测路径 |
apiKey |
与当前接口和站点配套的 Key | Key 与服务、区域或账号不匹配 |
不要把完整聊天请求路径填写到 apiBase:
yaml
# 错误示例
apiBase: "https://example.com/v1/chat/completions"
Continue 的 OpenAI Provider 会在 Base URL 后追加聊天路径。填写完整端点可能产生重复路径,例如:
text
POST /v1/chat/completions/chat/completions
正确形式应当是:
yaml
apiBase: "https://example.com/v1"
但这仍有一个前提:该示例服务确实在对应 Base URL 下提供标准聊天路由。路径看起来像 OpenAI,并不能证明协议真的兼容。
第五步:官方直连和兼容网关怎么选
官方直连
官方直连的优点是链路短,但必须先确认:
- 官方当前公布的请求地址;
- 请求体是否兼容 OpenAI;
- 是否支持
minimax-m3; - 是否支持流式输出;
- 是否支持结构化工具调用。
如果官方接口使用专有路径或专有请求格式,就不能直接套用 Continue 的 OpenAI Provider。此时需要:
- Continue 原生支持对应协议;
- 使用本地适配层转换协议;
- 使用明确提供 OpenAI 兼容接口的网关。
OpenAI 兼容网关
选择网关时,应核对:
- model ID 是否为
minimax-m3; - 是否明确支持标准 Chat Completions;
- 是否支持流式响应;
- 是否透传
tools和tool_calls; - 是否提供请求日志和用量记录;
- Key、Base URL 和账号是否属于同一平台。
不要把一个平台的 Base URL、另一个平台的 Key 和第三个平台的模型命名方式混在一起。
网关配置模板如下;使用 OpenRouter 或 ofox.io 这类聚合网关/中转时,应把对应平台控制台给出的 Base URL、Key 和模型标识成组写入,不能交叉复用:
yaml
models:
- name: "minimax-m3 via gateway"
provider: "openai"
model: "minimax-m3"
apiBase: "<网关公布并验证过的 OpenAI 兼容 Base URL>"
apiKey: "<通过 Continue 密钥管理保存的网关 Key>"
当前资料没有足够可靠的 minimax-m3 单价,因此不提供具体价格。费用可以按服务商当天公布的数据计算:
text
费用 =
输入 Token ÷ 1,000,000 × 输入单价
+
输出 Token ÷ 1,000,000 × 输出单价
最终金额应以实际账单为准。
第六步:上下文参数不要照搬其他模型
当前资料没有确认 minimax-m3 的上下文长度和最大输出,也无法确认不同服务是否设置了不同限制。
稳妥做法是先省略相关参数:
yaml
models:
- name: "minimax-m3"
provider: "openai"
model: "minimax-m3"
apiBase: "<已验证的 OpenAI 兼容 Base URL>"
apiKey: "<通过 Continue 密钥管理保存的 API Key>"
只有从当前服务商文档或控制台取得明确数值后,再添加:
yaml
contextLength: <服务商公布的上下文上限>
maxTokens: <服务商公布的最大输出>
不要凭印象填写 128000、1000000 或其他模型的参数。
配置值大于服务端上限时,可能收到 HTTP 400;配置值明显小于实际上限时,Continue 可能提前裁剪代码,表现为模型突然"失忆"。
建议按以下顺序测试:
- 约 2 KB 的普通提示;
- 约 20 KB 的单文件内容;
- 多文件上下文;
- 逐步增加到真实项目规模。
不要第一次测试就把整个 monorepo 塞进请求。
第七步:为什么 Chat 正常,Agent 却静默失败
Continue 的 Chat 可以回复,只能证明文本生成链路正常。Agent 还要求模型、接口、网关和客户端对工具调用格式达成一致:
任何一层没有对齐,都可能出现以下现象:
- 模型说"我将修改文件",但没有实际动作;
- HTTP 返回 200,但响应中没有
tool_calls; - 上游生成了工具调用,网关却将其转成普通文本;
- Continue 收到工具调用,但字段结构不兼容;
- 工具调用已经解析,但本地权限阻止执行。
如果当前 Continue 配置支持能力声明,不要在没有验证前直接写:
yaml
capabilities:
- tool_use
建议按以下顺序验证:
- 先省略
tool_use; - 确认普通 Chat 正常;
- 确认 Edit 可以生成可应用的修改;
- 使用只有一个工具的最小测试;
- 检查原始响应是否包含结构化工具调用字段;
- 确认后再启用 Agent 能力。
"请帮我调用工具"不是有效测试。模型回复一句"我将调用工具"仍然只是普通文本。
最小工具调用测试
如果服务商明确声称支持 OpenAI 工具调用,可以使用单个无嵌套参数的工具测试:
python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["MINIMAX_API_KEY"],
base_url=os.environ["MINIMAX_OPENAI_BASE_URL"],
)
response = client.chat.completions.create(
model="minimax-m3",
messages=[
{
"role": "user",
"content": "查询北京的天气,必须使用工具。",
}
],
tools=[
{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": ["city"],
"additionalProperties": False
}
}
}
],
)
message = response.choices[0].message
print(message)
print("tool_calls:", message.tool_calls)
只有 message.tool_calls 中出现结构化调用,才能证明工具调用链路至少到 SDK 这一层是可用的。
如果只返回类似下面的文本:
text
我将调用 get_weather 查询北京天气。
则不能算成功。
主流工具怎么配
核心四元组始终是:
- 协议;
- Base URL;
- model ID;
- API Key。
| 工具 | 协议或 Provider | Base URL | model ID | 建议 |
|---|---|---|---|---|
| Continue | OpenAI | 已验证的兼容地址 | minimax-m3 |
先不开工具能力声明 |
| Cline | OpenAI Compatible | 已验证的兼容地址 | minimax-m3 |
先关闭工具自动批准 |
| Cherry Studio | OpenAI | 已验证的兼容地址 | minimax-m3 |
先测试普通对话 |
| Zed | OpenAI Compatible | 已验证的兼容地址 | minimax-m3 |
先验证 Chat |
| Claude Code | Anthropic 协议 | 不能直接套用 OpenAI 地址 | 取决于适配服务 | 不要混用协议 |
| Codex CLI | 取决于 Provider 支持 | 核对实际请求协议 | minimax-m3 |
先检查最终请求路径 |
Cline 可以这样填写:
text
API Provider: OpenAI Compatible
Base URL: <已验证的 OpenAI 兼容 Base URL>
Model ID: minimax-m3
API Key: <对应服务的 Key>
Cherry Studio 同理:
text
Provider: OpenAI
API Host: <已验证的 OpenAI 兼容 Base URL>
Model: minimax-m3
API Key: <对应服务的 Key>
Claude Code 主要使用 Anthropic 协议,不能把 OpenAI 兼容地址直接填进去。协议不同,不是更换字段名称就能解决。
不同场景怎么选
| 场景 | 配置方案 | 原因 |
|---|---|---|
| 个人写代码,以 Chat/Edit 为主 | Continue + 已验证的 OpenAI 兼容接口 | 配置较少,容易排错 |
| 官方接口不是标准 OpenAI 格式 | 使用适配层或兼容网关 | 避免路径和请求体不匹配 |
| 需要 Agent 自动修改文件 | 先验证结构化工具调用 | 避免"文字假调用" |
| 团队需要按成员查看消耗 | 使用有 User、Key 维度日志的服务 | 方便定位异常请求 |
| 同时使用多个客户端 | 统一维护四元组 | 减少模型 ID、Key 和地址串线 |
| 接口刚开通 | cURL → SDK → Continue | 每层只增加一个变量 |
| 长仓库上下文 | 保守测试并逐步扩大 | 避免服务端拒绝或客户端裁剪 |
对比 OpenRouter、Together AI 与 ofox.io 等聚合网关/中转方案时,应以同一组 minimax-m3 请求检查 HTTP 状态码、流式分片、tool_calls 结构、请求日志和模型映射,而不是只比较界面中的模型名称。
完整报错对照表
下面的 HTTP 正文是常见响应结构示例,不代表 MiniMax 官方固定文案。监控和脚本匹配应以实际响应为准。
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
KeyError: 'MINIMAX_API_KEY' |
Python 环境变量不存在 | 导出变量并重启终端、编辑器 |
| HTTP 400,提示 model 不存在 | model ID 错误或账号无权限 | 使用 minimax-m3,并检查账号权限 |
| HTTP 400,提示上下文超限 | 输入或输出参数超过服务限制 | 删除猜测参数,按文档逐步测试 |
| HTTP 401 | Key 错误、失效或服务不匹配 | 核对 Key 所属平台和账号 |
| HTTP 404 | 端点不存在或服务不支持标准路由 | 删除失效地址,使用服务商当前公布的端点 |
| HTTP 404,路径出现两次聊天路由 | apiBase 填入了完整端点 |
Base URL 只填写服务商规定的基础地址 |
| Chat 返回,Agent 不执行 | 工具能力或响应结构不匹配 | 删除 tool_use,检查原始响应 |
| 长提示突然丢内容 | Continue 提前裁剪或服务端限制 | 使用可靠上限,逐步增加测试长度 |
| 一直转圈后超时 | 网络、流式响应或上游超时 | 暂时关闭流式输出,用 cURL 重放 |
| YAML 能保存但模型不出现 | YAML 缩进或配置读取错误 | 检查层级并彻底重启插件 |
| SDK 正常,Continue 失败 | YAML、Key、工作区覆盖或能力声明问题 | 对比两边的最终 URL 和请求参数 |
模型错误的常见结构可能类似:
text
HTTP 400
{"error":{"message":"The model does not exist or you do not have access to it.","type":"invalid_request_error"}}
重复路径可能类似:
text
POST /v1/chat/completions/chat/completions
HTTP 404
排查时重点查看最终请求 URL,不要只看状态码。
常见问题 FAQ
Q1:Continue 中怎么接入 minimax-m3?
首先找到一个经过验证、明确支持标准 OpenAI Chat Completions 的接口,然后配置:
yaml
models:
- name: "minimax-m3"
provider: "openai"
model: "minimax-m3"
apiBase: "<已验证的 OpenAI 兼容 Base URL>"
apiKey: "<对应服务的 API Key>"
如果官方接口不是标准 OpenAI 格式,则需要兼容网关或适配层,不能只修改 apiBase。
Q2:model 应该填写什么?
填写:
text
minimax-m3
不要自行增加命名空间,也不要凭界面显示名称猜测 model ID。
Q3:为什么原来的接口会返回 404?
因为该聊天路径当前不可用,或者对应服务并未实现标准 OpenAI Chat Completions 路由。HTTP 404 说明不能继续把该地址作为有效接入端点。
Q4:apiBase 应该填到哪里?
填写服务商明确公布并验证过的 OpenAI 兼容 Base URL,不要填写完整聊天端点。
例如,假设某服务的文档明确写明 Base URL 为:
text
https://example.com/v1
才填写:
yaml
apiBase: "https://example.com/v1"
不能仅因为地址以 /v1 结尾,就推断它一定兼容 OpenAI。
Q5:Continue 能聊天,为什么不能自动修改文件?
聊天只验证文本生成。自动修改文件还需要经过:
- 工具定义;
- 结构化
tool_calls; - Continue 解析;
- 本地权限检查;
- 工具实际执行。
先移除工具能力声明,再检查原始响应中是否真的存在结构化工具调用。
Q6:配置修改后为什么仍然请求旧地址?
完全退出并重启编辑器,然后检查:
- 当前工作区是否覆盖全局配置;
- 是否存在多个 Continue 配置文件;
- 环境变量是否由旧进程继承;
- 当前选择的模型是否还是旧配置;
- 网关或代理是否缓存了请求目标。
只执行"重新加载窗口"有时不足以刷新环境变量。
Q7:上下文长度和 maxTokens 应该填多少?
当前资料没有可靠数值。以当前服务商文档或控制台公布的数据为准。无法确认时先省略,不要复制其他模型的参数。
Q8:工具调用失败一定会报错吗?
不一定。服务端可能返回 HTTP 200,但把工具调用降级成普通文本。判断时不能只看状态码,还要确认响应中是否存在 Continue 可以识别的结构化工具调用字段。
Q9:可以直接把官方域名填进 OpenAI SDK 吗?
只有在官方文档明确说明该地址兼容标准 OpenAI Chat Completions 时才可以。否则 SDK 会自动请求标准路径,并可能得到 HTTP 404。
小结
把 minimax-m3 配进 Continue,需要对齐五层:
- 请求协议;
- 有效端点;
- model ID;
- API Key;
- 能力声明。
建议固定使用以下排错顺序:
- 从服务商文档复制端点;
- 用 cURL 验证;
- 用 SDK 验证;
- 接入 Continue;
- 单独测试长上下文;
- 最后测试工具调用。
最需要记住的三个坑是:
- 已返回 HTTP 404 的聊天地址不能继续使用;
model应填写minimax-m3;- 模型说"我要调用工具",不代表它真的返回了结构化工具调用。