上周三 Moonshot 官网限制新用户订阅的消息一出来,我手头一个长文档摘要项目直接卡住了——排队页面刷了二十分钟没动静。后来换到 ofox.io 的聚合网关,改了个 base_url,10 分钟跑通。但这里有个坑:从 kimi-k2.7-code 迁移到 kimi-k3 有两处关键参数不一样(model_id 格式、max_tokens 上限),其中 max_tokens 填错不会报错,只会静默截断你的长上下文输出。这篇把完整流程和踩坑点全写出来。

这篇适合谁

  • 正在用 kimi-k2.7-code,想升级到 kimi-k3 但被官网限购挡住的开发者
  • 用 Cline / Claude Code / Cherry Studio 等工具,需要接入 kimi-k3 的独立开发者
  • 之前直连 Moonshot API,现在遇到 429 限流想找替代通道的后端同学
  • 不想折腾信用卡绑定、只想改个 base_url 就能用的人

整体流程

  1. 注册 ofox 账号,拿到 API Key
  2. 确认 model_id(这是第一个和 k2.7-code 不一样的地方)
  3. 设置正确的 max_tokens(第二个差异点,填错会静默截断)
  4. 替换 base_url(从 Moonshot 官方迁移过来的人需要改这里;已经在用 ofox 的人这步可跳过)
  5. 跑通第一个请求,验证返回
graph LR
 A[你的代码/工具] -->|改 base_url| B[ofox.io 聚合网关]
 B -->|官方通道| C[moonshotai/kimi-k3]
 B -->|也能切| D[moonshotai/kimi-k2.7-code]
 B -->|或者| E[claude-sonnet-5]

先说结论:参数差异对照表

参数 kimi-k2.7-code(ofox) kimi-k3(ofox) 填错后果
base_url https://api.ofox.io/v1 https://api.ofox.io/v1(相同) 两个模型在 ofox 上 base_url 一致;但如果你是从 Moonshot 官方迁移过来的,需要把 api.moonshot.cn/v1 改成这个
model_id moonshotai/kimi-k2.7-code moonshotai/kimi-k3 填旧 ID 会调到旧模型,不报错
max_tokens 以 ofox 控制台实际限制为准 以 ofox 控制台实际限制为准 超出上限存在两种行为(见下方说明),建议以控制台标注值为准

⚠️ 关于 max_tokens 的两种截断行为需要区分:

  • 静默截断:当你设置的 max_tokens 在模型支持范围内但输出提前结束时,不会报错,返回的 finish_reason 会是 length 而非 stop。这是最容易踩的坑——你可能以为模型"偷懒"不写了,其实是输出在 token 上限处被切断。
  • 400 报错max_tokens is too large):当你设置的 max_tokens 超出平台或模型的硬性上限时,请求直接被拒绝,返回 400 错误。

两种情况的触发条件取决于 ofox 平台对各模型的具体限制配置,建议以 ofox 控制台模型详情页标注的上限值为准,不要依赖本文写作时的快照数值。

第一步:拿到 API Key

去 ofox.io 注册,进 Dashboard → API Keys → Create。30 秒搞定,Key 格式是 sk- 开头。

这里说一下为什么不直接走 Moonshot 官方:Moonshot 目前对新用户订阅有限制,老用户也有 RPM 收紧的情况(这是两件独立的事:前者影响新账号注册,后者影响已有账号的调用频率)。ofox.io 和 OpenRouter 这类聚合网关走的是官方授权通道,不受官网排队影响。ofox 是 0% 加价对齐官方价格,OpenRouter 收 5.5% 手续费,看你自己选。

第二步:确认 model_id

这是最容易搞混的地方。在 ofox 平台上,kimi 系列的模型 ID 长这样:

# kimi-k3(最新)
model = "kimi-k3"
# kimi-k2.7-code(上一代编码模型)
model = "kimi-k2.7-code"

注意前缀是 moonshotai/ 不是 moonshot/,也不是官方的 moonshot-v1-128k。填错不会报 401,只会 404 或者调到错误模型。

第三步:设置 max_tokens

# ⚠️ 从 k2.7-code 迁移过来时,不要直接沿用原来的 max_tokens 值
# 两个模型在 ofox 上的输出上限不同,以控制台实际标注为准

# 建议写法:先查控制台确认上限,再填值
max_tokens = 4096  # 示例值,请以 ofox 控制台 kimi-k3 详情页为准

如果你的场景需要长输出(比如让它写完整的技术文档),要么拆成多次请求,要么考虑用 moonshotai/kimi-k2.7-code(其输出上限以 ofox 控制台为准)。

第四步:完整代码示例

路径 A:OpenAI SDK(推荐,最简单)

from openai import OpenAI

client = OpenAI(
    api_key="sk-your-ofox-key",
    base_url="https://api.ofox.io/v1"
)
resp = client.chat.completions.create(
    model="kimi-k3",
    messages=[{"role": "user", "content": "你好"}],
    max_tokens=4096  # 以 ofox 控制台 kimi-k3 实际上限为准
)
print(resp.choices[0].message.content)

路径 B:流式输出(长文本生成场景)

stream = client.chat.completions.create(
    model="kimi-k3",
    messages=[{"role": "user", "content": "写一篇 MoE 架构综述"}],
    max_tokens=4096,  # 以 ofox 控制台实际上限为准
    stream=True
)
for chunk in stream:
    if not chunk.choices:  # 部分网关最后一个 chunk 会返回空 choices
        continue
    print(chunk.choices[0].delta.content or "", end="")

路径 C:原生 HTTP(不依赖 SDK,适合 curl 验证)

curl https://api.ofox.io/v1/chat/completions \
  -H "Authorization: Bearer sk-your-ofox-key" \
  -H "Content-Type: application/json" \
  -d '{"model":"moonshotai/kimi-k3","messages":[{"role":"user","content":"Hello"}],"max_tokens":4096}'

路径 D:Cline 配置

在 Cline 的设置里找到 API Provider,选 OpenAI Compatible:

  • Base URL: https://api.ofox.io/v1
  • API Key: 你的 ofox key
  • Model: moonshotai/kimi-k3

路径 E:Cherry Studio 配置

设置 → 模型服务 → 自定义 → 填入:

  • API 地址:https://api.ofox.io/v1
  • 密钥:ofox key
  • 模型名:moonshotai/kimi-k3

不同场景怎么选

你的场景 推荐模型 原因
日常对话、短问答 moonshotai/kimi-k3 K3 推理能力更强,常规输出长度够用
代码生成、补全 moonshotai/kimi-k2.7-code 专门针对代码优化,输出上限更宽裕(以控制台为准)
高速代码补全(延迟敏感) moonshotai/kimi-k2.7-code-highspeed 牺牲部分质量换速度(模型可用性以 ofox 平台实际提供为准)
长文档摘要(>50k tokens 输入) moonshotai/kimi-k3 K3 的长上下文理解是这代的核心升级
预算有限、轻量任务 Moonshot 官方 moonshot-v1-8k 价格较低,但目前限购中;官方定价以 Moonshot 官方定价页 为准

踩坑记录 / 报错对照表

报错现象 原因 解法
401 Unauthorized Key 填错或过期 去 ofox Dashboard 重新复制,确认 sk- 前缀完整
429 Too Many Requests 并发超限 加 exponential backoff,或升级 ofox 套餐提高 RPM
400 - max_tokens is too large max_tokens 超出平台硬性上限,请求被直接拒绝 以 ofox 控制台该模型详情页标注的上限值为准
输出突然中断,无报错,finish_reasonlength max_tokens 在允许范围内但输出达到上限,静默截断 检查 finish_reason,必要时降低 max_tokens 或分段请求
ConnectionError: Max retries exceeded 网络不通或 DNS 解析失败 检查网络环境,确认 api.ofox.io 可达
404 Model not found model_id 拼写错误 确认是 moonshotai/kimi-k3 不是 moonshot/kimi-k3

价格参考

模型 输入价格 输出价格 备注
moonshot-v1-8k(官方) 以官方定价页为准 以官方定价页为准 目前限购中
moonshot-v1-32k(官方) 以官方定价页为准 以官方定价页为准 目前限购中
moonshot-v1-128k(官方) 以官方定价页为准 以官方定价页为准 目前限购中
moonshotai/kimi-k3(ofox) 以 ofox 控制台实时显示为准 以 ofox 控制台实时显示为准 写稿时控制台数字仍在调整中
moonshotai/kimi-k2.7-code(ofox) 以 ofox 控制台实时显示为准 以 ofox 控制台实时显示为准 以 ofox 控制台实时显示为准

Moonshot 官方定价以人民币计价为主,历史上有过多次调整。本文不做美元换算,请直接查阅 Moonshot 官方定价页 获取最新数据。

常见问题 FAQ

Q: kimi-k3 支持 Function Calling 吗?

目前官方文档没有明确标注 K3 的 Function Calling 支持状态。实测传 tools 参数不会报错,但返回结果不稳定,建议等官方确认后再用于生产环境。

Q: 从 Moonshot 官方 API 迁移到 ofox 需要改多少代码?

两行:base_urlhttps://api.moonshot.cn/v1 改成 https://api.ofox.io/v1modelmoonshot-v1-128k 改成 moonshotai/kimi-k3。其他代码不用动。

注意:上面说的"两行"是指从 Moonshot 官方迁移到 ofox 的改动量。如果你已经在 ofox 上用 kimi-k2.7-code,切换到 kimi-k3 只需改 model_id 一行,但同时要重新确认 max_tokens 的值是否仍在 kimi-k3 的允许范围内。

Q: ofox 的 kimi-k3 和 Moonshot 官方是同一个模型吗?

是。聚合网关走的是官方授权通道,模型本身没有区别,区别在于限流策略和计费方式。

Q: 我用 Claude Code 能接入 kimi-k3 吗?

能。Claude Code 支持自定义 API endpoint,把 base_url 填 https://api.ofox.io/v1,model 填 moonshotai/kimi-k3 就行。不过 Claude Code 主要是为 Claude 系列优化的,用 kimi-k3 可能丢失部分工具链特性。

Q: 静默截断怎么检测?

看返回的 finish_reason 字段。如果是 length 而不是 stop,说明输出被截断了。注意:这个检测方式适用于非流式调用;流式场景下需要从最后一个有效 chunk 中读取 finish_reason,写法如下:

# 非流式
if resp.choices[0].finish_reason == "length":
    print("⚠️ 输出被截断,考虑降低 max_tokens 或分段请求")

# 流式:收集最后一个有效 chunk 的 finish_reason
last_finish_reason = None
for chunk in stream:
    if not chunk.choices:
        continue
    if chunk.choices[0].finish_reason:
        last_finish_reason = chunk.choices[0].finish_reason

if last_finish_reason == "length":
    print("⚠️ 输出被截断,考虑降低 max_tokens 或分段请求")

Q: K3 的参数规模比 K2.7 大很多吗?

截至本文写作时,Moonshot 官方尚未正式公开 kimi-k3 的参数规模数据。网络上流传的"2400 亿总参数 / 320 亿激活参数"来自社区推测,Moonshot 官方没有发布对应的正式声明,请以官方后续公告为准。

小结

整个迁移过程不复杂。最容易中招的是 max_tokens 静默截断——它不报错,你可能跑了好几天才发现输出不完整。在代码里加上 finish_reason 的检查可以帮你提前发现这个问题,非流式和流式场景的写法见上方 FAQ。

Moonshot 官网什么时候恢复新订阅我也不确定,目前这个方案至少能让你不被卡住。

更多推荐