TypeError: fetch failed

该报错通常出现在企业防火墙或杀毒/恶意软件扫描器拦截 Ollama 模型下载流量的场景中:下载进度显示到 100%,随后 sha256 校验失败并提示需要重新下载。优先排查公司侧安全设备是否改写、截断或误报下载内容。

快速结论:该报错通常出现在企业防火墙或杀毒/恶意软件扫描器拦截 Ollama 模型下载流量的场景中:下载进度显示到 100%,随后 sha256 校验失败并提示需要重新下载。优先排查公司侧安全设备是否改写、截断或误报下载内容。

适用环境:Ollama 0.1.30(Issue 标题环境,Windows、AMD GPU、AMD CPU);另有评论者在 macOS 上以 Ollama 0.3.14 复现,环境日志显示 OLLAMA_MODELS:/Users/foo/.ollama/models、metal 推理库;两台环境都处在公司防火墙/代理之后。

最快修复方案:暂无确认的一步修复方案。Issue 中未给出经过验证的最终修复步骤,维护者主要建议联系管理扫描器的同事排查扫描器是否过载,并收集 Ollama server 日志判断下载块是否真的损坏、HTTP 连接是否被截断。

注意事项:把 ollama.com/* 加入白名单并不足以绕过会深度检查流量的安全设备;评论中提到的 #2006 是相关改进方向,但截至该 Issue 讨论并未确认能直接解决此问题,可优先尝试但不保证生效。

问题场景

在公司内网环境中使用 Ollama 拉取模型(如较大的模型或较小模型 tinyllama)时,下载进度能够走到 100%,但验证阶段报 sha256 摘要不匹配,模型文件被迫重新下载。用户所在公司已将 ollama.com/* 通过防火墙白名单放行,下载“基本可用”,却总在收尾阶段失败。发帖人通过抓包/扫描器日志发现,公司恶意软件扫描器对从 Cloudflare 位置返回的文件产生误报,并将该行为报告为 “Trickling”。

报错原文

verifying sha256 digest
Error: digest mismatch, file must be downloaded again: want sha256:8934d96d3f08982e95922b2b7a2c626a1fe873d7c3b06e8e56d7bc0a1fef9246, got sha256:1dd340187fa2df434fb562efa41b824c8b1ef6f3f3f3bc401280f80d8adea61e
verifying sha256 digest
Error: digest mismatch, file must be downloaded again: want sha256:2af3b81862c6be03c769683af18efdadb2c33f60ff32ab6f83e42c043d6c7816, got sha256:198c7dc595d2b1235c2ac7d54ed0f10422dbe294b5750739e133cc7b55ef6947
update check failed - TypeError: fetch failed

原因分析

可能原因:企业防火墙或恶意软件扫描器对流经的模型下载流量进行拦截、改写或延迟,导致 Ollama 收到的数据块内容与预期不一致,或 HTTP 连接被扫描器截断,而客户端误判为下载完成,最终 sha256 校验不通过。维护者在评论中指出:Ollama 为了提升吞吐会并行下载多个 chunk,这种策略可能使扫描器积压到开始拒绝请求;同时客户端具备断点续传逻辑,扫描器的异常行为可能让续传逻辑“以为下载完了”。日志中的 TypeError: fetch failed 出现在更新检查阶段,评论中没有确认它与 sha256 校验失败属于同一根因,暂不能直接归因。

环境排查

  • 确认 Ollama 版本(Issue 中出现 0.1.30 与 0.3.14)。
  • 确认操作系统与硬件平台(Issue 标题环境为 Windows + AMD GPU/AMD CPU;评论环境为 macOS + metal)。
  • 确认 Ollama 的代理相关环境变量:HTTPS_PROXY、HTTP_PROXY、NO_PROXY、http_proxy、https_proxy、no_proxy(评论日志中这些值均为空)。
  • 确认 OLLAMA_MODELS 与日志目录,以便查看 ~/.ollama/logs/server.log。
  • 确认公司防火墙是否只做了域名白名单,还是同时启用了 TLS 检查或文件内容扫描。
  • 确认恶意软件扫描器是否报告 “Trickling” 或类似的渐进式传输告警。

解决步骤

  1. 在 Ollama 服务端日志中定位每次 pull 对应的下载记录,例如 downloading <hash> in N 100 MB part(s),确认失败发生在哪个 blob、分成了多少个 part。
  2. 先尝试拉取小模型(如评论中的 tinyllama)验证:如果小模型也会 digest mismatch,说明并非模型体积导致的偶发问题,而是下载链路被统一处理,基本可排除“只有大模型才出错”的假设。
  3. 联系管理公司恶意软件扫描器的人员,询问在 Ollama 拉取模型期间扫描器是否出现过载、拒绝请求或触发误报,并确认能否对 ollama.com 相关流量或该扫描特征做例外。
  4. 请求网络/安全团队检查防火墙或代理是否对下载响应做了截断、改写或 TLS 拦截;若存在这类行为,可优先尝试在这些设备上对 Ollama 模型下载路径关闭深度检查。
  5. 若上述调整后仍不稳定,可关注 Issue 中提到的 #2006 改进项是否已随新版 Ollama 发布,并评估升级;该建议在讨论中并未被验证为解决本问题的一步修复。

验证方法

重新执行 ollama pull <模型名>,观察是否能完整通过 verifying sha256 digest 阶段而不出现 digest mismatch 或 Error: digest mismatch, file must be downloaded again。同时服务端日志中不应再出现同一次 pull 因摘要不匹配而重下的记录。由于本 Issue 没有确认的最终修复,能否彻底解决取决于公司侧安全设备策略的调整结果。

参考来源

ollama/ollama #4684

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 27283

发表回复

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