快速结论:该报错通常出现在开启上下文压缩(context compaction)后,模型在单次回复中连续执行大量工具调用(tool call)的长任务里。压缩逻辑在两次工具轮次之间按粗略字符数估算对话大小,忽略了提供方每轮返回的真实 token 数,于是阈值永远达不到,最终请求撞上上下文上限。优先排查压缩阈值与模型实际 token 计数之间的偏差。
适用环境:Open WebUI v0.12.0 及当前 dev 版本;后端为 llama.cpp,上下文窗口 196608 tokens,启用原生工具调用(native tool calling),上下文压缩开启且阈值为 125000 tokens;另在 Qwen3 tokenizer 下测量过计数偏差。
最快修复方案:暂无确认的一步修复方案(Issue 中未给出被验证的单一处理步骤)。可优先尝试把上下文压缩阈值调低到明显低于模型窗口的位置,以抵消约 60% 的低估幅度;但这只是缓解,不能根治。
注意事项:调低阈值属于规避性操作,Issue 并未验证其一定有效;压缩在运行期间生成的摘要只对该次运行有效,下一条消息会从保存的聊天记录重新构建整次运行,因此可能再次触发同样的超限错误。多次重试、重新生成或 Continue 会重复发送同样的超限请求,聊天会卡住。
问题场景
用户使用 Open WebUI 搭配 llama.cpp 后端,模型具备工具调用能力,并开启上下文压缩(阈值 125000 tokens,远低于模型 196608 tokens 的窗口)。当给模型一个需要在单次回复内进行大量工具调用的长任务时(例如用终端工具搭建一个小项目),对话很快超过压缩阈值,但压缩始终不触发。最终回复以超出上下文大小的报错结束。该问题是对 #27599 的跟进,原始报告与聊天导出见 #27599 的评论。
报错原文
request (197059 tokens) exceeds the available context size (196608 tokens), try increasing it
第二条消息上的二次失败报错:
request (224324 tokens) exceeds the available context size (196608 tokens)
原因分析
在两次工具轮次之间,压缩逻辑通过粗略的字符数来估算对话大小,忽略了提供方每一轮之后返回的真实 token 计数,导致阈值判断永远偏低。
在 Issue 提供的导出中,估算值约为 90k tokens,而 llama.cpp 实际计为 196k。用 Qwen3 tokenizer 测量后,差距来源包括:
- 模型的推理内容(reasoning)约 41k tokens,完全未被计入;
- 代码和命令输出被按实际大小的约 60% 计入。
第二个失败点出现在下一条消息:一旦某次运行过程中做过压缩,下一条消息会以同样的错误失败。原因是运行期间生成的摘要只在本次运行内有效,下一条消息会从保存的聊天记录中重建整次运行;而发消息前的压缩只能在完整轮次之间裁剪,面对「第一条消息 + 整次运行 + 新消息」的结构,在任何保留设置下都没有可裁剪的位置。于是每次重试、重新生成或 Continue 都会发送同样超限的请求,聊天卡死。
环境排查
- 确认 Open WebUI 版本:v0.12.0 或当前 dev 版本。
- 确认后端为 llama.cpp,并核对实际上下文窗口大小(Issue 中为 196608 tokens)。
- 确认已启用原生工具调用(native tool calling)。
- 确认上下文压缩已开启,并记录当前阈值(Issue 中为 125000 tokens)。
- 确认模型是否会产生 reasoning 内容(Issue 中约 41k tokens 未被计入)。
- 确认任务类型是否为单次回复内大量工具调用的长任务。
解决步骤
- 先复现并确认现象:在开启压缩的情况下运行一个包含大量工具调用的长任务,观察是否出现
request (... tokens) exceeds the available context size (...)报错。 - 记录报错中实际 token 数与压缩阈值之间的差距,判断是否存在明显低估(Issue 中估算 90k、实际 196k)。
- 可优先尝试把压缩阈值调低到远低于模型窗口的水平,以部分抵消低估值;此做法为规避性尝试,Issue 未验证其有效性。
- 如仍失败,注意下一条消息可能因重建整次运行而再次超限;避免依赖反复重试、重新生成或 Continue 来恢复,因为会重复发送同样的超限请求。
- 关注相关修复进展(关联 PR #32308 及 #27599、#30268、#32006、#29872),等待针对工具轮次之间 token 计数的修复。
验证方法
在同样的长工具调用任务中,确认对话超过阈值后压缩能够在工具轮次之间触发,且运行继续推进而不再出现 request (... tokens) exceeds the available context size (...);下一条消息也不再因重建整次运行而超限。
参考来源
相关来源:#27599、#30268、#32006、#29872
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。

![[Bug]: HunYuan Dense V1 fails CUDA graph capture on v0.29 — HF dynamic RoPE does a host-side sync during capture](https://www.chat-gpts.plus/wp-content/uploads/2026/10/57890-0b89f014-768x403.jpg)
