国产模型写代码到底行不行,网上说法很多,但大多是聊天框里问一道题、看一眼答案。我更关心的是放进编程 Agent 里:自己读仓库、改文件、跑测试,最后能不能交出能用的代码,要等多久,花多少钱。

所以我用同一个 Agent(OpenCode)、同一套 6 道带隐藏测试的 Python 题,跑了 5 个模型:

  • Kimi K3.1 Pro
  • Kimi K3.1 Pro Highspeed(同一个模型的高速版,价格翻倍)
  • Claude Opus 5.5
  • GPT-6.1 Sol
  • Gemini 4 Argon

每个模型每道题跑 2 次,一共 60 次。先说结论:

  • 质量打平:60 次运行全部通过了全部隐藏测试,5 个模型谁都没挂过一个测试。
  • 速度差很多:平均每道题,Opus 5.5 用 82 秒,Gemini 4 Argon 134 秒,GPT-6.1 Sol 152 秒,Kimi K3.1 Pro Highspeed 166 秒,Kimi K3.1 Pro 409 秒。标准版 Kimi 的耗时是 Opus 的 5 倍。
  • Kimi 慢在想得多:Kimi K3.1 Pro 平均每道题输出约 12,800 个 token,其中约 8,100 个是推理,请求次数也最多。
  • 费用:按测试时的实际计费,每道题 Kimi K3.1 Pro 约 0.22 美元,Highspeed 约 0.33 美元,另外三个在 0.09~0.14 美元之间(Opus 的单价有特殊情况,见下文「费用怎么看」)。

怎么测的

  • Agent:OpenCode 1.19.4,非交互模式(opencode run --auto),把接口配置成一个 OpenAI 兼容的 provider,通过 /v1/chat/completions 调用。不同运行之间唯一的区别是 -m 指定的模型。
  • 配置:干净的 OpenCode 配置,没有 MCP、插件和额外 skill,其余全用默认值。OpenCode 没有发推理强度参数,所以每个模型都按自己的默认值推理。OpenCode 会按模型家族选择不同的系统提示词和工具(比如 GPT 用 apply_patch 改文件,其他模型用 edit/write),我没有改动。
  • 任务:6 个一次性的 Python 小仓库,每个有一段任务说明(需求文档或 bug 报告)、一个可见测试,以及一套 Agent 结束后才运行的隐藏测试:
    1. 跨两个文件的 bug 修复:购物车金额差一分钱、折扣被算了两次,还要遵守 README 里一条 bug 报告没提到的规则。18 个隐藏测试。
    2. 按一页规则实现时长解析器:"1h30m"、"2 hours and 5 min"、"PT1H30M",包括哪些写法必须拒绝。84 个。
    3. 不能改变行为的重构:把一个满是复制粘贴的长函数拆成小函数。隐藏测试拿新旧函数在 300 个随机输入和 16 个边界情况上对比输出,还要求函数长度至少减半。317 个。
    4. 规则互相影响的注册校验:按字段返回错误码、规则有先后顺序。84 个。
    5. 配置格式解析器:分节、带转义的引号值、行内注释、续行(报错行号要对)、${section.key} 引用和循环检测。57 个。
    6. Mustache 模板渲染器:从零写,用官方 Mustache 规范测试集评分。136 个。
  • 运行:每个模型每道题 2 次,共 60 次。Opus、Sol、Argon 是 2026-10-27 跑的,两个 Kimi 是 2026-11-02 跑的,用的是同一套任务、同一套评测脚本。同一天的模型同时跑,网络和服务端状态一致。
  • 记录:隐藏测试通过数、总耗时、请求次数、输入 / 缓存 / 输出 token,以及每次响应 usage 里返回的费用(每次运行把所有请求的费用加起来)。

结果

每道题的耗时(两次运行的平均值)

任务Kimi K3.1 ProKimi HighspeedOpus 5.5GPT-6.1 SolGemini 4 Argon
1. 跨文件 bug 修复226 秒115 秒34 秒137 秒73 秒
2. 时长解析器284 秒135 秒53 秒102 秒74 秒
3. 重构365 秒129 秒85 秒148 秒133 秒
4. 注册校验263 秒105 秒65 秒142 秒86 秒
5. 配置解析器559 秒272 秒116 秒177 秒267 秒
6. Mustache 渲染器754 秒239 秒139 秒205 秒173 秒
平均409 秒166 秒82 秒152 秒134 秒

60 次运行,每个模型的 12 次都通过了全部隐藏测试,所以这张表里没有「通过率」一列。

token 和请求(12 次运行的平均值)

每道题Kimi K3.1 ProKimi HighspeedOpus 5.5GPT-6.1 SolGemini 4 Argon
请求次数15.813.17.912.110.3
输入 token251,000200,000107,000101,000124,000
其中命中提示词缓存90%91%51%81%69%
输出 token12,80010,8007,8004,2005,600
其中推理8,1006,6000700900
单次请求耗时中位数9.0 秒5.1 秒7.6 秒11.7 秒6.2 秒
最慢的 10% 请求超过74 秒28 秒26 秒18 秒34 秒

(请求耗时只统计带工具的 Agent 请求,不含 OpenCode 每次开头生成标题的那个短请求。)

费用(按测试时的实际计费,单位美元)

每道题平均Kimi K3.1 ProKimi HighspeedOpus 5.5GPT-6.1 SolGemini 4 Argon
费用0.2210.3280.0940.0980.142
测试时单价(每百万 token,输入 / 输出)2 / 104 / 201 / 52 / 102 / 10

数字说明了什么

这套题对 5 个模型都不算难。 60 次运行没有一次挂测试,包括 Mustache 官方规范的全部 136 个用例和重构题的 316 次新旧对比。所以这次比不出「谁能做出别人做不出的题」,能比的是速度、消耗和做事的方式。

Kimi K3.1 Pro 慢,主要慢在推理。 它平均每道题输出约 12,800 个 token,是 Opus 的 1.6 倍,其中约 8,100 个是推理(Opus 在这条路径上没有开推理)。单次请求的中位数是 9.0 秒,看起来不算慢,但最慢的 10% 请求超过 74 秒,最慢的一次 241 秒:遇到要想的地方,它会一口气想很久。再加上请求次数最多(15.8 次),每道题就要将近 7 分钟。

Highspeed 把 Kimi 拉到了和 GPT-6.1 Sol 差不多的速度。 平均 166 秒对 152 秒。推理量没少多少(6,600 对 8,100),快在生成速度:慢请求从 74 秒降到 28 秒。

Kimi 的平均值里有一次异常。 标准版 Kimi 有一次 Mustache 运行开了子 Agent,发了 41 个请求,用了 18 分钟、0.65 美元,其他 Mustache 运行是 11~18 个请求。这一次把 Mustache 那一格的平均值拉高了很多,但就算去掉它,标准版 Kimi 剩下 11 次的平均耗时也有 348 秒,还是 5 个模型里最慢的。

提示词缓存差别很大。 两个 Kimi 有 90% 以上的输入命中缓存,GPT-6.1 Sol 81%,Gemini 69%,Opus 只有 51%:Opus 每个请求命中的都是同样的 8,028 个 token,大约就是 OpenCode 的系统提示词加工具定义,后面不断变长的对话每轮都按全价算。Agent 每轮都会把整段对话重发一遍,缓存命中率直接影响账单。Kimi 输入量是 Opus 的两倍多,靠缓存兜住了一大半。

自查的方式不一样。 重构题里,Opus 和 Sol 都自己写了新旧函数的随机对拍脚本才收工;Gemini 只靠那一个可见测试,也全过了。Mustache 题里,Opus、Sol 和全部 4 次 Kimi 运行都自己从 GitHub 下载了官方规范测试来跑,而我的隐藏测试就是这些文件,所以它们在这道题上的得分不算独立;Gemini 没下载,也全过了。

费用怎么看

表里的费用是测试时接口实际扣的钱,有一点要单独说明:Opus 5.5 的单价不是 Anthropic 官方标价。 测试用的接口上 Opus 5.5 是每百万 token 输入 1 美元、输出 5 美元,官方标价是 4 美元、20 美元。如果你直接用官方 API,Opus 那一列的费用会高得多,排名也会变。

撇开单价,只看消耗:两个 Kimi 每道题用的输入和输出 token 都是最多的,标准版的输入量大约是 Opus 和 Sol 的 2.4~2.5 倍。所以 Kimi 的单价虽然不高,每道题的费用却是 5 个里最高的两个。

怎么选

  • 最看重速度:这套题里 Opus 5.5 最快,每道题平均 82 秒。
  • 想用 Kimi:交互式写代码建议直接用 Highspeed,速度和 GPT-6.1 Sol、Gemini 4 Argon 在一个档次;标准版每道题要等将近 7 分钟,更适合不赶时间的后台任务。
  • 想要一个非 Anthropic 的第二意见:GPT-6.1 Sol 和 Gemini 4 Argon 都全对,用来交叉检查改动都可以。
  • 这套题选不出最强的模型。5 个都全对,说明题目还不够难。哪个模型在大仓库、长任务上更强,这次的数据回答不了。

这次测试的局限

  • 6 道题、每题 2 次。都是 30 秒到 18 分钟的小型 Python 任务,不是大仓库里几个小时的改动。
  • 6 套隐藏测试里有 5 套是我自己写的,反映的是我对需求的理解;每一套都先用参考答案跑通、用原始代码确认会失败,才拿来评分。
  • Kimi 和另外三个模型不是同一天跑的(11-02 和 10-27)。服务速度和负载有关,换一天数字可能不同。
  • 同一个模型同一道题跑两次,耗时最多能差一倍以上(标准版 Kimi 的 Mustache 两次分别是 429 秒和 1,079 秒),耗时请当成大致参考。
  • 只用了 OpenCode 一个 Agent,全部默认参数。OpenCode 对不同模型用的系统提示词不一样;Opus 在这条路径上没有开推理,Kimi 默认推理很多。换个 Agent、调一下推理强度,速度和费用都会变。
  • 耗时包含从我的客户端到接口、再到上游服务商的网络时间。

自己测一下

在项目里放一个 opencode.json,加一个 OpenAI 兼容的 provider,模型名按你的服务商填:

{
  "provider": {
    "myapi": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "My API",
      "options": {
        "baseURL": "{env:BASE_URL}",
        "apiKey": "{env:API_KEY}"
      },
      "models": {
        "kimi-k3.1-pro": { "name": "Kimi K3.1 Pro" },
        "kimi-k3.1-pro-highspeed": { "name": "Kimi K3.1 Pro Highspeed" },
        "claude-opus-5-5": { "name": "Claude Opus 5.5" }
      }
    }
  }
}

然后用同一个提示词分别跑:

opencode run --auto -m myapi/kimi-k3.1-pro "Fix the failing test in tests/"
opencode run --auto -m myapi/kimi-k3.1-pro-highspeed "Fix the failing test in tests/"
opencode run --auto -m myapi/claude-opus-5-5 "Fix the failing test in tests/"

--auto 会自动批准 Agent 的改文件和执行命令,只在可以随时重置的项目里用。拿自己的真实任务跑几次,比看任何人的跑分都准。

Logo

更多推荐