上周三我们项目要把 Cursor 里的 Kimi 模型切到最新版 K2(对,Moonshot 这命名属实反直觉,版本号不是线性递增的),结果填了两遍才跑通。问题出在两个地方:base_url 末尾路径格式,以及 max_tokens 不显式声明的话默认会截断输出。这篇把两个坑的具体填法逐步演示一遍,五分钟搞定。

这篇适合谁

  • 已经在 Cursor 里用过 Kimi,现在想切到最新版或重新配置的
  • 第一次在 Cursor 配 Moonshot API,搜到这篇想一步到位的
  • 遇到 Failed to fetch 或者输出莫名被截断、怀疑是配置问题的
  • 团队里多人共用 API Key,需要统一配置规范的

整体流程

  1. 在 platform.moonshot.cn 确认模型 ID 和 Key
  2. Cursor 里打开 Settings > Models > Add Model
  3. 填 Base URL(末尾不加斜杠)
  4. 填 Model Name + API Key
  5. 显式声明 max_tokens(不填可能被截断)
  6. 用一条消息验证连通
graph LR
 A[platform.moonshot.cn 拿 Key] --> B[Cursor Settings > Models]
 B --> C[填 Base URL]
 C --> D[填 Model Name]
 D --> E[显式声明 max_tokens]
 E --> F[发一条消息验证]

先说结论

配置项 填法 注意事项
Base URL https://api.moonshot.cn/v1 末尾不加斜杠,这是所有 OpenAI 兼容接口的通用规范
Model Name kimi-k2-0528(以 platform.moonshot.cn 模型列表为准) 区分大小写,别手抖写成 Kimi-K2-0528
max_tokens 建议显式填 8192 或更高 不填时默认值较低,长输出容易被截断;具体默认值以 Moonshot 官方文档为准

第一步:确认你的 API Key 和模型 ID

先去 platform.moonshot.cn 控制台,在模型列表里确认你有权限访问的模型 ID(如 kimi-k2-0528),并复制好 API Key。

如果想用 curl 快速验证 Key 是否有效,可以参考 Moonshot 官方文档中的示例请求。注意:直接在终端硬编码 Key 有泄露风险,验证完记得清除命令历史。

如果请求返回:

Error: 400 Bad Request - model not found

说明你的 Key 还没开通该模型权限,或者模型 ID 填错了,回控制台确认一下。

第二步:Cursor 里填 Base URL(坑在这里)

打开 Cursor > Preferences > Cursor Settings > Models,点 Add Model。

Base URL 填:

https://api.moonshot.cn/v1

末尾不要加 /。这是所有 OpenAI 兼容接口的通用规范——据实测,Cursor 在拼接路径时会在 base_url 后追加 /chat/completions,如果末尾已有斜杠,就会拼成 /v1//chat/completions 双斜杠,导致请求失败:

Error: Failed to fetch - TypeError: Failed to fetch

这个报错信息毫无帮助,第一次排查很容易花很长时间才意识到是末尾多了个 /。养成不加末尾斜杠的习惯,对接任何 OpenAI 兼容接口都适用。

第三步:填 Model Name

Model Name 填(以 platform.moonshot.cn 模型列表显示的 ID 为准):

kimi-k2-0528

Moonshot 采用版本化命名规则,带发布日期后缀。这个 ID 区分大小写,别手抖写成 Kimi-K2-0528。如果后续 Moonshot 发布新版本,模型 ID 会变,以控制台列表为准。

第四步:显式声明 max_tokens(第二个坑)

不显式声明 max_tokens 时,Moonshot API 会使用默认值(具体数值以 Moonshot 官方文档 为准)。实测中这个默认值偏低,写代码时经常一个函数还没写完就被截断了,体验极差。

在 Cursor 的 model settings 里找到对应模型的参数配置区域(Settings > Models > 选中模型后的 Advanced 选项),在请求参数里加上:

{
  "max_tokens": 8192
}

注意:max_tokens 是模型请求参数,应在 Cursor 的模型设置 UI 中配置,而不是写入 ~/.cursor/mcp.json——那个文件是 MCP(Model Context Protocol)服务器的配置文件,写进去对模型请求无效。

Kimi K2 支持最大 128K 上下文,但 max_tokens(输出上限)建议设 8192 或 16384,够用就行。设太大响应会变慢。

第五步:验证

在 Cursor 里随便开个文件,Cmd+K 调出 AI,问一句"用 Python 写一个快排",看输出是否完整、没有中途截断。

如果报 401:

Error: 401 Unauthorized - Invalid API key

大概率是 Key 复制的时候末尾被截断了,重新复制一次。

不同场景怎么选

个人开发者,就自己用:直接填 Moonshot 官方 api.moonshot.cn/v1,简单直接。Kimi K2 编码能力不错,写业务逻辑比较流畅。

团队多人共用,需要看每个人调了多少:如果你们团队超过 3 个人,建议走聚合 API 网关。OpenRouter、ofox.io 这类平台支持按成员维度查看 Token 消耗和费用明细,省得月底一个个对账。Cursor 里把 base_url 换成聚合平台的地址就行,模型 ID 保持一致。

想同时用 Kimi K2 和 Claude Sonnet 切换:Cursor 支持配多个 custom model,两个都配好,根据任务类型手动切——Kimi K2 写业务代码,Claude 做重构和代码审查,互补效果不错。

预算敏感,想控制日花费:具体定价以 platform.moonshot.cn 官方公告 为准,博客里的数字可能过时。如果觉得贵,可以把上下文窗口缩小或者选用更小的模型规格。

踩坑记录 / 常见问题 FAQ

Q: Cursor 里 Base URL 到底要不要加 /chat/completions

A: 不要加。据实测 Cursor 会自动拼接这个路径。你只填到 /v1 即可,末尾不带斜杠。

Q: 填了模型 ID 报 model not found,怎么排查?

A: 去 platform.moonshot.cn 的模型列表确认你的 Key 有权限访问的模型 ID,以控制台显示为准。Moonshot 后续可能还会更新模型 ID,建议定期核对。

Q: 输出总是在中间断掉,像是被截断了?

A: 大概率是 max_tokens 没显式声明,默认值偏低。在 Cursor model settings 里加上 "max_tokens": 8192 或更高。具体默认值以 Moonshot 官方文档为准。

Q: Kimi K2 系列版本号怎么理解?

A: Moonshot 的版本号不是线性递增的,命名规则比较反直觉,社区也普遍吐槽过。建议以 platform.moonshot.cn 控制台的模型列表和官方公告为准,不要凭版本号大小判断新旧。

Q: 能用 Kimi 的 Function Calling 吗?

A: 可以。Kimi API 支持 tools/function calling,Cursor 在 Agent 模式下会自动调用。K2 系列的 function calling 稳定性有待持续观察,有新结论了再更新。

小结

两个坑:base_url 末尾别加斜杠(这是所有 OpenAI 兼容接口的通用规范),max_tokens 建议显式声明。折腾半天其实就这两行的事,但报错信息太模糊,不看文档根本猜不到原因。配置过程有问题评论区聊。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐