思考的账单:一句「Bug」花了 866 token 与 53 秒

一个思考模型花了 866 个 token 和 53 秒,只为说出 "Bug"。Ollama 里关掉思考的三个开关 —— 以及一张实测账单,告诉你什么时候该扳动它们。

HUMAN作者 @mrsaynothing1h3 分钟读完

小票 · 本地 LLM 实测 · lfm3:1.7b · 2026-10-29 · CPU 机器 · 17 tok/s 手动换算

用 ollama run <model> --think=false(命令行),在会话里敲 /set nothink,或者在 /api/chat 或 /api/generate 的请求体里带上 "think": false。--hidethinking 只在你想要"保留思考但不显示"的时候用 —— 计费器照转不误。提示词里的 /no_think 就别碰了;它只是减少思考,不是关掉。

01自己试试 —— 账单,当场打印

这是真实日志记录的一次运行,原样重放。我们实测里的两个一词提问:“Bug” 冷启动花了 866 个思考 token 和 53.5 秒;“Crash” 热启动花了 589 个 token 和 34.4 秒。然后是同一个提问、关掉思考的样子。盯着计费器。

MRSN BENCH × THINKING MODE
──────── · ────────
一个词的提问“是不是 bug?”
思考866 tokens
生成 @ 17 tok/s50.9s
模型加载 2.33s
回答“Bug”
合计53.53s
第 1 次运行,共 2 次,真实日志:eval_count 866 · total 53.53s —— 点上面的按钮重放它
计费器是诚实的·

真实日志运行的合成重放 —— lfm3:1.7b,2026-10-29 · “关思考”一行是除法换算,不是实测,并且如实标注了

用 ×1 速度看的意义在于:每秒 17 个 token,你可以一边被计费、一边读它的思考。CPU 机器上每一次“感觉好慢”的对话都在干这件事 —— 打印一张你从没想看的发票,每 59 毫秒一个 token。

02为什么我的 Ollama 模型要想那么久?

因为最新的小模型都是混合思考模型:同一份权重既做聊天也做思维链,而大多数前端默认把思考开着。你看着它滚过去的每一句“嗯,让我再想想”,都是一个真实的 token,按你真实的每秒 token 数计费 —— CPU 机器上是 17/s,不是 GPU 动辄几百的速度。算术不好看,但很清楚:866 个思考 token ÷ 17 tok/s ≈ 51 秒的计费,然后回答才开始。

你:“是不是 bug?一个词。” lfm3:1.7b 866 个 token 的内心独白 17 tok/s “Bug.” · 53.5s
我们这台机器说过的最贵的一个词。为了决定它,花了 866 个思考 token。

03在 Ollama 里怎么关掉思考?

三个开关,全部是 ollama 官方文档里的一等公民。按你所在的位置挑一个:

$ ollama run lfm3:1.7b --think=false
>>> bug or not? one word.
Crash

验证:输出里没有思考块;回答只用一小把 token —— 按我们实测的算术,大约一秒的打字时间,而不是五十秒。

POST /api/chat
{ "model": "lfm3:1.7b",
  "messages": [{"role":"user","content":"bug or not? one word."}],
  "think": false }

验证:响应里没有 thinking 字段 —— 换成 "think": true 时,同一个接口会把独白和回答分开,独白单独占一个字段。

还有那个看着像开关、其实不是的陷阱:--hidethinking。它让模型照常思考 —— 全价 —— 只是不把明细打出来。把小票藏起来,不等于没付钱。

坑位抽屉 —— 五个会咬人的地方

Modelfile 锁不住它。PARAMETER think false 会报 “unknown parameter” 错 —— think 只是请求体字段。每个客户端都得自己记得带上;服务端没有任何可以设置的默认值。

OpenAI 兼容端点说的是另一门方言。/v1/chat/completions 不认 think —— 跑在它上面的工具用的是 reasoning_effort,直接写 think:false 在那里会被静默忽略。

提示词里的 /no_think 是个提醒,不是开关。它能减少独白,但混合模型照样可以思考。请求体里的标志才是真正的关。

有些模型收的是档位,不是布尔值。新的思考元数据接受命名档位(low、medium、high)—— 由模型自己定义,所以去查模型卡片,别靠愿望。

num_predict 是预算上限,不是开关。它限制的是 token 总数,连思考一起算 —— 思考还没结束,你的回答可能先被截肢。用错工具了。

04思考到底花多少钱?看小票。

实测日志里未删改的原始行 —— 名字带 _ms 的字段装的是纳秒(日志自己的单位在骗人;我们手动除的),速率字段返回的是 null,所以每秒 token 数是我们自己做的长除法:866 ÷ 50.9 ≈ 17。

{"model":"lfm3:1.7b","load_ms":2326837325,"eval_count":866,"total_ms":53533988331,"response":"Bug"}
{"model":"lfm3:1.7b","load_ms":530219,"eval_count":589,"total_ms":34362526621,"response":"Crash"}
↑ 红色下划线:计费行 —— 53.5s 和 34.4s 的生成时间,866 和 589 个 token,换来两个一词回答

来源:我们的实测日志,2026-10-29 · lfm3:1.7b · 纯 CPU 虚拟机 · context 4096

小票上的行冷启动提问热启动提问思考关闭
生成 token 数866589≈ 一小把
生成时间 @ 17 tok/s≈ 51s≈ 34s≈ 1s 或更少
总耗时(实测)53.5s34.4s— 未实测*
模型加载2.33s0.53ms同一个模型,同一次加载
回答“Bug”“Crash”同一类词

* 诚实线:思考那一侧是实测;“关思考”一列是按同样的 tok/s 做的除法,并标注为算术 —— 小票法则覆盖实测的那一半,这句话覆盖剩下的。

“Bug” 是我们这台机器产出过的最贵的词。为了决定它,花了五十秒的思考。

05什么时候该让思考开着?

当回答比等待更值钱的时候 —— 整个契约就这一句。下面这些场景,账单能买到真东西:

  • 数学和多步推理 —— 独白就是工作本身;砍掉它,砍掉的是你冲着来的准确率。
  • 代码审查和规划 —— 模型需要它的草稿纸;反正都要付钱,--hidethinking 在这里是名正言顺的好选择。
  • 任何“50 秒好过答错”的场景 —— 每晚批量跑的分诊,而不是交互式的。

当提问是分类形状的时候,把它关掉:一个词的回答、路由、查询、抽取、“这行日志里有没有失败”。花 866 个 token 在两个词之间做决定,等于租了一间空房 —— 房子不错,但你不在里面。

06这笔诚实的交易

这是还没解决的那件事。关掉思考,模型在你买它来干的那些活上变得更快、也更笨;开着思考,每次随口一问都要坐等五十秒。本地 AI 真正的旋钮不是模型大小,而是计费器握在谁手里。云把这张账单藏进订阅费里;在你自己的机器上,每个 token 打出来你都看得见。

我真正想要但还没得到的:一行 Modelfile,按模型锁死 think,让 “Bug” 只花一秒,而不用每个客户端都记得带标志。Ollama 的 issue 里已经挂着这个请求。在它落地之前,计费器归你看着 —— 也归你去扳。

两问收尾,家规如此:1) 你在自己的机器上抓到过最长的思考账单是多少?2) 你有没有抓到它给一个根本不需要思考的问题计了费?

传输结束
溯源
选题:“ollama turn off thinking” —— DDG 自动补全,引用于 2026-10-31(法则 3c)· 家族需求:“best ollama model for reasoning” 相邻
凭证:lfm3:1.7b 实测日志 2026-10-29 —— eval_count 866 / 589 · 总耗时 53.53s / 34.36s · 加载 2.33s / 0.53ms · 17 tok/s 手动换算(API 速率字段为 null)· 语法对照 ollama.com/blog/thinking + docs.ollama.com/capabilities/thinking 核实,就在今天
预测(预注册):“ollama turn off thinking” 的展示将在发布后 ≤7 天内出现在 GSC
站内形态:交互账单 = app 通道;静态孪生版绘制这张小票 · 翻译 ×5 同批 · dev.to 先讨论