快速结论:该报错通常发生在 Windows 下用 System.Environment 或 GUI 方式设置用户级环境变量 OLLAMA_CONTEXT_LENGTH 时,由于变量名被误写成 User(命令参数顺序颠倒所致),导致 Ollama 无法读取自定义上下文长度而回退到默认值。优先排查是否在 PowerShell 中正确使用了 Environment.SetEnvironmentVariable 的参数顺序。
适用环境:Windows 操作系统、Ollama 0.33.0、NVIDIA 显卡(5090 Notebook,24GB VRAM)、Intel CPU。Issue 中未提及具体 Python、CUDA 或 PyTorch 版本,不补写。
最快修复方案:暂无确认的一步修复方案。Issue 中有一个可行替代方案:在终端内先用 $env:OLLAMA_CONTEXT_LENGTH="98304" 设置会话变量,再运行 ollama serve,可正常加载模型且不报错。
注意事项:该替代方案仅作用于当前终端会话,关闭终端后环境变量会失效;GUI 中显示默认 64K 的原因是用户级环境变量未能正确写入,需先修正 PowerShell 命令的参数顺序。
问题场景
用户在 Windows PowerShell 中执行 [Environment]::SetEnvironmentVariable("OLLAMA_CONTEXT_LENGTH", "98304", "User") 设置自定义上下文长度,但在 ollama run 时模型仍回退到默认 64K,并出现设置值被忽略的警告。用户 GPU 为 24GB VRAM,试图把上下文长度从默认 64K/128K 改为 98304 以适配模型,但未生效。
报错原文
ollama run MyQwen3.8_Hermes:latest
2026/09/05 01:15:01 config.go:263: WARN invalid environment variable, using default key=OLLAMA_CONTEXT_LENGTH value=User default=0
核心报错:Can’t set custom values for Context Length / invalid environment variable, using default key=OLLAMA_CONTEXT_LENGTH value=User default=0
原因分析
可能原因(基于 Issue 证据):
1. PowerShell 参数顺序颠倒:[Environment]::SetEnvironmentVariable 的正确语法应为 SetEnvironmentVariable(变量名, 变量值, 目标范围)。用户写成 ("OLLAMA_CONTEXT_LENGTH", "98304", "User"),本意是设置用户级环境变量,但 Ollama 日志中 value=User 表明实际写入时可能因参数格式被识别为“变量名 = OLLAMA_CONTEXT_LENGTH,值 = User”,导致上下文长度被置为 User 这一无效字符串,从而被忽略。
2. GUI 环境变量界面未实际生效:Issue 中用户提到“在用户环境变量中设置值后 GUI 仍显示默认 64K”,可能说明系统 UI 中写的环境变量和 Ollama 读取的进程级环境没有同步(需重启终端或 Ollama 服务)。
3. 上下文长度超出单次分配上限:虽然用户认为 98304 在 24GB VRAM 上可行,但 Ollama 可能对上下文长度与 KV Cache 内存分配存在内部限制,或需要配合 OLLAMA_NUM_GPU 等参数使用,Issue 未对此给出明确结论,仅作为可能原因。
环境排查
- Ollama 版本:0.33.0(Issue 中确认);若低于此版本,建议升级后再测试。
- 操作系统:Windows(具体版本未提及,PowerShell 需为 5.1 或 7.x,语法一致)。
- 检查系统环境变量面板中
OLLAMA_CONTEXT_LENGTH的实际值是否为98304,而非User或其他字符。 - 确认如何在 PowerShell 中打印环境变量:
Get-ChildItem Env:OLLAMA_CONTEXT_LENGTH或[Environment]::GetEnvironmentVariable("OLLAMA_CONTEXT_LENGTH", "User"),以验证写入是否成功。 - 显卡显存:NVIDIA 5090 Notebook(24GB VRAM),确保驱动版本支持 Ollama 所需 CUDA 能力(Issue 未提供具体驱动版本)。
解决步骤
- 修正环境变量设置命令:在 PowerShell 中正确写法应为
[Environment]::SetEnvironmentVariable("OLLAMA_CONTEXT_LENGTH", "98304", "User")——注意参数顺序是变量名、变量值、范围,不要写成("...", "...", "User")之外的其他顺位。设置后用[Environment]::GetEnvironmentVariable("OLLAMA_CONTEXT_LENGTH", "User")确认返回98304。 - 重启所有终端与 Ollama 服务:环境变量更改后,需要关闭并重新打开 PowerShell,并确保 Ollama 服务未在旧环境中运行(可执行
ollama stop或重启系统托盘 Ollama 图标)。然后启动ollama serve。 - 使用会话级变量作为快速验证:可优先尝试 Issue 中已验证的替代方案——在当前终端执行
$env:OLLAMA_CONTEXT_LENGTH="98304",再运行ollama serve,确认无警告且ollama run可按预期使用自定义上下长度。此方法不持久化,但可先定位问题是否出在环境持久化环节。 - 检查 GUI 与系统变量同步:设置用户环境变量后,重启“系统属性 → 环境变量”窗口,确认列表中出现
OLLAMA_CONTEXT_LENGTH = 98304。若 GUI 仍显示 64K,说明 Ollama 在启动时读取的是进程环境而非用户注册表,需要确保新终端继承了当前用户环境。 - 若以上均无效:检查是否需同时设置
OLLAMA_NUM_CONTEXT或OLLAMA_NUM_GPU等配套变量(Issue 中未确认,仅为可能原因)。可尝试将上下文长度降低到 65536 或 81920 等常见值,观察是否能正常加载,以排除 VRAM 限制。(此步骤为推测,未经验证)
验证方法
设置正确后,执行 ollama run MyQwen3.8_Hermes:latest 时应不再输出 config.go:263: WARN invalid environment variable 警告。若仍想验证上下文长度是否生效,可在 Ollama 日志中查看 context length 相关输出,或使用 /set parameter num_ctx 98304 在模型会话内设置以确认模型不因上下文超限报错(注意后者仅临时覆盖,不与环境变量冲突)。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug] Gmail trigger silently stops after 7 days: subscription expires_at is persisted as -1](https://www.chat-gpts.plus/wp-content/uploads/2026/09/41162-d3216684-768x403.jpg)

![[Bug]: Strict tool calling attaches no structural tag when the reasoning and tool parsers share a parser engine](https://www.chat-gpts.plus/wp-content/uploads/2026/09/53745-ee48e740-768x403.jpg)