ollama launch claude – wrong model context window

这个报错通常出现在用 ollama launch claude 启动 Claude Code 并长时间对话、上下文逐渐填满时。Claude Code 侧按自己的默认上下文窗口做统计,而 Ollama 服务端实际只加载了更小的 num_ctx ,两者不一致,服务端就会截断输入。优先排查 Ollama

快速结论:这个报错通常出现在用 ollama launch claude 启动 Claude Code 并长时间对话、上下文逐渐填满时。Claude Code 侧按自己的默认上下文窗口做统计,而 Ollama 服务端实际只加载了更小的 num_ctx,两者不一致,服务端就会截断输入。优先排查 Ollama 服务端的上下文长度配置。

适用环境:Issue 中确认的复现环境为 macOS + Apple GPU/CPU,Ollama version is 0.18.2,使用 ollama launch claude --model qwen3.5:0.8b。评论中还提到了 Linux kernel 7.0.0-28、Ollama 0.32.15(cloud 模型)与 Claude Code v2.1.266 的复现记录,但属于后续补充信息。

最快修复方案:暂无确认的一步修复方案。Issue 中给出的方向是为 Ollama 服务端设置 OLLAMA_CONTEXT_LENGTH 环境变量来指定上下文窗口大小;但维护者同时指出 Claude Code 使用的 Anthropic API 不支持设置上下文大小,因此该做法是否能完全对齐 200k 上下文并未在本 Issue 中得到验证。

注意事项:不要把上下文长度只当成 Claude Code 侧的显示问题;真正导致 truncating input prompt 的是服务端加载窗口小于对话长度。通过环境变量调大上下文会显著增加显存/内存占用,在 Apple 统一内存或小显存设备上可能导致加载失败或性能下降。此外,评论区记录了 ollama launch 会对模型 ID 做归一化、剥离 [1m] 后缀的行为,这会绕过 Claude Code 的窗口标记,属于相关但尚未在本 Issue 中定论的问题。

问题场景

用户通过 ollama launch claude --model qwen3.5:0.8b 启动 Claude Code,并在会话里持续对话以填满上下文窗口。用 ollama ps 可以看到模型已加载,CONTEXT 列为 32768;但 Claude Code 的 /context 面板按 200k tokens 计算用量,显示已用 24k/200k。两者不一致,最终在请求进入 Ollama 时触发输入截断。

报错原文

ollama launch claude - wrong model context window

❯ ollama ps
NAME            ID              SIZE      PROCESSOR    CONTEXT    UNTIL
qwen3.5:0.8b    f3817196d142    2.8 GB    100% GPU     32768      4 minutes from now

 /context
  ⎿  Context Usage
     ⛀ ⛁ ⛁ ⛀ ⛀   qwen3.5:0.8b · 24k/200k tokens (12%)
     ...
                 ⛁ Messages: 32.5k tokens (16.3%)
                 ⛶ Free space: 111k (55.4%)
                 ⛝ Autocompact buffer: 33k tokens (16.5%)

time=2026-03-22T18:17:43.929Z level=WARN source=runner.go:187 msg="truncating input prompt" limit=32768 prompt=55247 keep=4 new=32768

原因分析

最可能的原因是 Claude Code 与 Ollama 对“上下文窗口”的认知不一致。Ollama 实际为 qwen3.5:0.8b 加载的 num_ctx 是 32768(见 ollama ps 的 CONTEXT 列和 limit=32768),而 Claude Code 按它自己的默认窗口(200k)来做用量统计和自动压缩,于是会话累积的 prompt 达到 55247 tokens,超过服务端的 32768,触发 truncating input prompt

Issue 评论中,维护者给出的方向是为 Ollama 服务端设置 OLLAMA_CONTEXT_LENGTH 环境变量;同时指出 Claude Code 使用的 Anthropic API 本身不支持设置上下文大小,也就是说客户端无法把期望窗口传给服务端。另有评论质疑为何 ollama launch 不自动处理这一差异,这一点在 Issue 中没有得到实现层面的确认。

环境排查

  • 确认 Ollama 版本:Issue 复现为 ollama version is 0.18.2
  • 确认操作系统与硬件:macOS,Apple GPU / Apple CPU。
  • 确认 Ollama 服务端是否设置了 OLLAMA_CONTEXT_LENGTH,以及服务端是否重启以使其生效。
  • ollama ps 查看模型实际加载的 CONTEXT 值,与 Claude Code /context 显示的窗口上限是否一致。
  • 确认 Claude Code 版本;后续评论中的复现记录使用 Claude Code v2.1.266。
  • 确认是否通过 ollama launch 启动、模型 ID 是否带有 [1m] 之类的窗口后缀,以及 ~/.ollama/config.jsonintegrations.claude.models 的值是否被改写。

解决步骤

  1. 先用 ollama ps 记录模型当前加载的 CONTEXT 值,确认问题发生时服务端窗口确实小于会话长度。
  2. 按 FAQ 的说明,在 Ollama 服务端环境中设置 OLLAMA_CONTEXT_LENGTH,将其调整为与预期上下文窗口一致的值。这是 Issue 评论中给出的方向,可优先尝试。
  3. 重启 Ollama 服务,使新的服务端环境变量生效。
  4. 重新执行 ollama launch claude --model qwen3.5:0.8b 发起会话。
  5. 再次用 ollama ps 检查 CONTEXT 列是否已变为目标值;如果仍是 32768,说明环境变量未作用到实际服务进程。
  6. 如果目标是让 Claude Code 使用 1M 窗口,注意 ollama launch 会剥离模型 ID 的 [1m] 后缀并改写 ~/.ollama/config.json(见评论中的复现),需要在每次启动后手动在会话内用 /model 切换,或在启动前做好配置备份。

验证方法

重新加载模型后运行 ollama ps,确认 CONTEXT 不再是 32768,而是预期的窗口大小;然后在 Claude Code 中继续对话使累计 tokens 超过原 32768 上限,观察 Ollama 日志中是否还出现 msg="truncating input prompt"。如果不再出现该 WARN,且 /context 显示的窗口上限与 ollama ps 的 CONTEXT 一致,说明配置已对齐。

参考来源

ollama/ollama #15013

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 22782

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注