用 OpenClaw 跑复杂任务的时候,你可能遇到过一个让人头疼的报错:
Unhandled stop reason: model_context_window_exceeded。说白了就是模型的上下文窗口被撑爆了。解决思路其实不复杂——限制 thinking budget,也就是控制模型的"思考深度"。OpenClaw 内置了一套 Thinking Levels 机制,专门干这个事。
Thinking Levels 是 OpenClaw 的内置工具,允许你通过指令控制模型在每次推理时投入多少"思考预算"。你可以在消息中直接插入指令,格式很灵活:/t
、/think:
或者 /thinking
都行。
支持的级别和对应的效果:
off— 关闭思考minimal— 对应 "think",最低限度思考low— 对应 "think hard"medium— 对应 "think harder"high— 对应 "ultrathink",最大预算xhigh— 对应 "ultrathink+",仅限 GPT-5.2 和 Codex 模型adaptive— 由模型提供商自动管理推理预算,Anthropic Claude 4.6 系列支持
别名方面也很宽松,x-high、x_high、extra-high、extra high、extra_high 都映射到 xhigh;highest 和 max 映射到 high。
这里有个坑要注意——不是所有模型都支持全部级别:
- Anthropic Claude 4.6 系列:默认就是
adaptive,不设的话自动走自适应模式,体验最好。 - Z.AI(
zai/*):只支持开/关两档,任何非off的级别都当on处理,映射到low。 - Moonshot(
moonshot/*):/think off映射为thinking: { type: "disabled" },其他级别映射为thinking: { type: "enabled" }。开启思考后,Moonshot 只接受tool_choice为auto或none,OpenClaw 会自动把不兼容的值转成auto。
当你在多个地方都设了 thinking level,OpenClaw 按这个顺序决定最终生效的配置:
- 消息内联指令 — 只对当前这条消息生效,优先级最高
- 会话级覆盖 — 发送一条只包含指令的消息来设置,整个会话生效
- 全局默认值 — 在配置中设置
agents.defaults.thinkingDefault - 兜底策略 — Anthropic Claude 4.6 模型用
adaptive,其他支持推理的模型用low,不支持的直接off
回到最开始那个上下文窗**掉的问题。如果你跑的是长对话或者复杂的 Agent 工作流,模型的 thinking token 可能占掉大量上下文空间。这时候把 thinking level 调低,比如设成 minimal 或 low,能有效缓解这个问题。
最简单的做法是在消息前面加一句 /t low,或者干脆在配置里设个全局默认值,省得每次都手动指定。对于不需要深度推理的日常任务,low 或 minimal 完全够用;只有在真正需要模型深度思考的场景(比如复杂代码重构、多步推理),再拉到 high。
说实话,这种按需调节思考深度的设计挺实用的。一人公司搭 Agent 工作流,token 就是成本,能省则省。建议把 adaptive 作为日常默认,遇到上下文超限再手动降级,这样既保证质量又不浪费预算。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/281700.html