
我把同一个编码任务在两个 Flash 档模型上各算了一遍账,算完发现一件反直觉的事:工作日白天换过去,成本直接砍半;周六凌晨换过去,一分钱不省;而如果你不管住输出 token,换过去反而更贵。其实真正决定账单的,从来不是标签上那个「每百万多少钱」。这篇把这道账、一份能直接跑的脚本,和我踩到的 3 个坑放出来。
一、先说一件容易被忽略的事:这两个模型单价一模一样

MiniMax M3.1 Flash 在 2026 年 10 月 19 日发布,定价是每百万输入 token 0.15 美元、输出 0.60 美元、缓存读取 0.015 美元。来源:MiniMax 官方博客 2026-10-19 发布公告。
DeepSeek 在 10 月 17 日更新过 V4.1 Flash 的价目,非高峰时段的未缓存输入也是 0.15 美元,输出也是 0.60 美元。来源:Momenta Media 2026-10-19 报道中对 DeepSeek 价目的引述。
也就是说,如果你只用「输入多少钱、输出多少钱」这一把尺子量,两个模型完全打平。很多人(包括我一开始)到这里就下结论说「没差别」。真正的差别藏在三个地方:时段系数、缓存价、输出 token 量。
二、把价目写成常量,别记在脑子里

成本账最容易出错的地方,是价格散落在对话和网页里,隔两周就记混。我把它们写成常量,改动必须显式发生在这个文件里。
python
PRICE = {
# model: (输入 $/1M, 输出 $/1M, 缓存读取 $/1M)
"minimax-m3.1-flash": {"in": 0.15, "out": 0.60, "cached": 0.015,
"peak_factor": 1.0, "source": "MiniMax 官方博客 2026-10-19"},
"deepseek-v4.1-flash": {"in": 0.15, "out": 0.60, "cached": 0.015,
"peak_factor": 2.0, "source": "DeepSeek 价目 2026-10-17(高峰翻倍)"},
}
CST = datetime.timezone(datetime.timedelta(hours=8))
PEAK_WINDOWS = ((9, 12), (14, 18))
def is_peak(moment, holidays=frozenset()):
if moment.tzinfo is None:
raise ValueError("moment 必须带时区(用北京时间 CST)")
local = moment.astimezone(CST)
if local.date().isoformat() in holidays:
return False
if local.weekday() >= 5: # 5=周六 6=周日
return False
h = local.hour + local.minute / 60.0
return any(a <= h < b for a, b in PEAK_WINDOWS)
def task_cost(model, in_tok, out_tok, cached_ratio, moment, holidays=frozenset()):
p = PRICE[model]
f = p["peak_factor"] if is_peak(moment, holidays) else 1.0
fresh_in = in_tok * (1.0 - cached_ratio)
cached_in = in_tok * cached_ratio
# 路径 A:逐项求和
a = (fresh_in / 1e6 * p["in"] + cached_in / 1e6 * p["cached"]
+ out_tok / 1e6 * p["out"]) * f
# 路径 B:先算输入均价,再按总量加权(两条路径不等即判定算不出来)
avg_in = p["in"] * (1.0 - cached_ratio) + p["cached"] * cached_ratio
b = (in_tok / 1e6 * avg_in + out_tok / 1e6 * p["out"]) * f
if abs(a - b) > 1e-9 * max(1.0, abs(a)):
return "UNKNOWN"
return a
这里有两个我特意保留的「不近人情」的地方。其一,is_peak 拒绝不带时区的 datetime,因为一旦用服务器本地时间判时段,跨时区部署的账单会整体错位。其二,task_cost 用两条独立路径各算一遍再比对,不相等就返回 UNKNOWN。成本账上「算错了但看起来对」,比报错危险得多。
三、跑出来的账:白天省一半,半夜一分不省

我固定了 3 个编码任务,token 数是按我自己的任务集统计的采样估计(不是官方口径,你换成自己的真实账单再跑才对你成立):
| 任务 | 输入 token | 输出 token | 缓存命中率 |
|---|---|---|---|
| 补单测(读 3 个文件 + 生成测试) | 42,000 | 4,800 | 35% |
| 重构一个 600 行模块 | 210,000 | 26,000 | 72% |
| 按报错修 bug(多轮复述上下文) | 380,000 | 9,500 | 88% |
跑 python flash_coding_cost.py --compare,结果分两段:
工作日 10:00(DeepSeek 处在高价时段)
| 任务 | MiniMax | DeepSeek | 省下 |
|---|---|---|---|
| 补单测 | $0.0072 | $0.0144 | 50.0% |
| 重构模块 | $0.0267 | $0.0534 | 50.0% |
| 修 bug | $0.0176 | $0.0351 | 50.0% |
周六 03:00(DeepSeek 非高峰,原价)
三个任务两列数字完全相同,省下 0.0%,判定「持平」。
结论非常干脆:编码 agent 大多在工作时间被人触发,而那正是 DeepSeek 的高价时段,换到 M3.1 Flash 就是实打实省一半。反过来,如果你是夜里跑批、周末跑回归,换模型一分钱不省。
那省下来的这一半,是不是就等于「这个模型更划算」?未必。省下的钱只是把成本挪到别处,你还得看输出量会不会涨。
四、三个坑,我全踩过

坑一:只看标签价,会得出「没差别」的错误结论。 上面那张持平的表就是这个坑的产物。时段系数不在价目表显眼的位置,但它是这一段里影响量级突出的因子。
坑二:把「成本降 70%」当成单任务成本。 70% 这个数字是 MiniMax 官方对「agent 任务整体成本较上一代」的说法,官方没说明前一代是哪款模型,也没说这个幅度怎么算的。独立评测机构 Artificial Analysis 实测到的是每任务约 57% 的降幅。两个数字都能引用,但必须说清口径不同:一个是厂商自报的整体口径,一个是第三方的实测口径。别只抄 70%。这两个来源我已做交叉验证,确认 70% 出自厂商公告、57% 出自第三方评测转述,不是同一份材料。
坑三:只盯输入价,忽略输出放大。 这是我算完才意识到的。Artificial Analysis 在评测 M3.1 Flash 期间,模型一共用了 1.8 亿个输出 token(含推理),而同类模型的中位数是 9900 万个,放大了 1.82 倍。M3.1 Flash 默认带推理、分了五档 effort,输出天然更啰嗦。输出单价是输入的 4 倍,输出量一旦放大,省下的输入钱转眼被吃回去。
脚本里我把这个效应也量化了。拿「补单测」那个任务,在非高峰时段:MiniMax 原本 0.0072,把输出 token 乘上 1.82 倍之后变成 0.0096,而 DeepSeek 原价是 $0.0072。放大之后反而贵了 33%。
那多出来的推理 token 到底值不值这个价?
顺带说一句,编码任务的钱主要花在输出上。「重构 600 行模块」这一项,输出 2.6 万 token 花了 $0.0156,占这笔账的 58.4%。优化顺序应该是先压输出,再谈别的。
五、工程取舍:什么时候该换,什么时候别换

| 场景 | 建议 | 理由 |
|---|---|---|
| 工作日 9:00-12:00 / 14:00-18:00 被人触发的编码 agent | 换 | 高价时段,直接省一半 |
| 夜间 / 周末的批量回归、跑测试 | 不换 | 同价,切换只带来适配成本 |
| 长上下文反复读同一份代码库、缓存命中率高 | 先查价目再定 | 缓存价差有 10 倍(0.15 对 0.015),两边都可能再调 |
| 输出 token 压不住的任务(多轮推理、长链修复) | 先压输出 | 换模型省下的钱会被 1.82 倍的输出吃掉 |
| 等着权重开源自建 | 再等等 | 官方博客只写了 later,社媒口径是 10 月 23 日,许可条款尚未公布 |
你自己的场景里,缓存命中率到底是多少,有真实数字吗?
最后一行值得展开。M3.1 Flash 仍是 428B 总参、约 23B 激活,靠更激进的稀疏度换速度,官方称输出能到 200+ TPS、P50 稳定在 170 以上;另有综述援引 Artificial Analysis 实测约 120 TPS,与官方口径有不小差距(二手转述,谨慎引用)。这种体量即便权重放出,自建要打平每百万 0.15 美元的 API 价,得先算清卡时成本与利用率。
六、辩证:这些数字哪些不能直接拿来用
- 跑分基本都是厂商自报。 DeepSWE v1.1 的 73.7%、OSWorld V2 的 61.7、CyberGym 的 82%、BankerToolBench 的 76.2,均出自 MiniMax 自己的公告,无独立复现。
- 它现在还不是硬编码场景的头部选手。 官方自己给的数字里,Terminal Bench 4.0 是 38.1,对比 Opus 5 的 51.8,差距不小。把它当成一个「agent 类任务的成本解」,比当成「编码能力天花板」要准确。
- Artificial Analysis 的智能指数 42 分是独立口径,比 M3 高 13 分,加权平均单任务成本约 0.22 美元。这个 0.22 是它评测集上的加权平均,不等于你自己任务的成本。
- DeepSeek 的缓存价我没有写死进脚本,因为本轮能查到的素材只说「缓存输入更便宜」,没给出确定数字。缺参数就让脚本报错,而不是拿 MiniMax 的 0.015 顶上去。缺失不是零。
七、复制这两段命令就能自己算
bash
cd output/gen/2026-10-22
python flash_coding_cost.py --selftest # 先跑自检:15 项(正控 6 / 负控 6 / 边界 3)
python flash_coding_cost.py --compare # 内置 3 个任务样本,分高峰与非高峰两段对账
想换成自己的真实账单,把 usage 记成 JSON 传进去就行:
bash
cat > usage.json <<'EOF'
[
{"name": "我的真实任务 A", "in_tok": 52000, "out_tok": 6100, "cached_ratio": 0.28, "hour": 11},
{"name": "我的真实任务 B", "in_tok": 180000, "out_tok": 31000, "cached_ratio": 0.65, "hour": 15}
]
EOF
python flash_coding_cost.py --usage usage.json
自检里我留了三组负控:参数传 None 抛错、缓存命中率传 1.5 抛错、datetime 不带时区抛错。这三件事若在真实账单里被静默吞掉,你会拿到一个漂亮但错误的结论。
数据与事件来源
- 来源:MiniMax 官方博客《MiniMax M3.1 Flash: Redefining Agent Performance and Cost》(2026-10-19):定价 0.15 / 0.60 / $0.015,DeepSWE v1.1 73.7%、OSWorld V2 61.7、CyberGym 82%、BankerToolBench 76.2、输出 200+ TPS 与 P50 170+,以上均为厂商自报
- 来源:Momenta Media《MiniMax Releases M3.1 Flash》(2026-10-19):Artificial Analysis 智能指数 42 分、加权平均每任务成本约 $0.22、评测期输出 1.8 亿 token 对比同类模型中位 9900 万;DeepSeek V4.1 Flash 高峰时段(北京时间周一至周五 9:00-12:00、14:00-18:00,法定节假日除外)价格翻倍、缓存输入更便宜;MiniMax 2026 上半年营收 1.166 亿美元、开放平台与企业服务占 63.4%
- 来源:openaimaster《MiniMax M3.1 Flash Guide》(2026-10-20 核证):官方称 agent 成本降 70%、Artificial Analysis 实测约 57%;Terminal Bench 4.0 38.1 对比 Opus 5 的 51.8;权重放出日期为社媒口径,许可条款未公布
- 来源:本仓随文脚本
output/gen/2026-10-22/flash_coding_cost.py:自检 15 项全绿(正控 6 / 负控 6 / 边界 3),文中对账表格均由该脚本--compare实际输出
说明:3 个任务的 token 数为我按固定任务集统计的采样估计,非厂商官方口径;价格与基准均来自上述来源,性能数字为厂商自报或第三方评测。
你手上的编码 agent,一天里有多少比例的请求落在工作日的高价时段?
如果先把输出 token 压掉三成,和换一个模型相比,哪个更划算?欢迎在评论区聊聊你的答案。