Claude Code的`/config`里有个thinking mode开关,Claude App的回答前也常挂一段灰色「思考过程」。这一期用claude-tap抓真实请求拆开看——这段思考到底是装饰,还是真的在影响最终答案。
先说本质。普通模式是 上下文 → 行动;thinking模式是 上下文 → 中间推理 → 行动。中间多出来那段是模型给自己行动之前写的草稿。关键在Transformer,生成下一个token时前面所有token都是上下文,所以这段先写的thinking会被自己读回去当输入。
请求体两个字段:thinking: "adaptive"让模型自己决定想不想、想多深;effort: "high"控制深度,五档low/medium/high/xhigh/max,档位越高越细越慢。
响应体content数组两块。我贴了cache.js(带TTL的内存缓存)和app.js(set一秒TTL两秒后get,期望null实际拿到值),问根因和修复。thinking block里干一件事——定位bug在get函数:取出entry但没检查过期。text block给修复:在get里对比`Date.now()`和`entry.expiry`,过期就删除返回null。thinking做诊断,text基于诊断出修复——thinking是text的地基。
这段思考怎么来的?大模型训练四步:预训练 → 指令微调 → RLHF → Reasoning Tuning。普通模型走前三步就上线,reasoning模型多走第四步。样本格式从"问题+答案"变成"问题+`