Skip to content

fix(ollama): use native fetch instead of Tauri HTTP plugin for Windows compatibility#366

Closed
linshanzeng wants to merge 1 commit into
codedogQBY:mainfrom
linshanzeng:fix/ollama-get-to-post
Closed

fix(ollama): use native fetch instead of Tauri HTTP plugin for Windows compatibility#366
linshanzeng wants to merge 1 commit into
codedogQBY:mainfrom
linshanzeng:fix/ollama-get-to-post

Conversation

@linshanzeng

Copy link
Copy Markdown

Problem / 问题

On Windows, Ollama connection fails with 404 error. The root cause is that Tauri's HTTP plugin is incompatible with Ollama's local API.
(Windows 下 Ollama 连接返回 404,原因是 Tauri 的 HTTP 插件不兼容)

Solution / 解决方案

Force using native fetch instead of Tauri's HTTP plugin.
(强制使用原生 fetch 绕过 Tauri)

Tested / 测试环境

  • Windows 11 + Ollama 0.24.0
  • ✅ Model list loads successfully
  • ✅ Chat requests work

@codedogQBY

Copy link
Copy Markdown
Owner

感谢你专门在 Windows + Ollama 上测这个问题,这个定位很有价值,404 这个现象我们这边之前也确实不好复现。

这个方向我觉得是对的:Ollama 本地服务在桌面端这里确实可以考虑绕开 Tauri HTTP,直接走浏览器原生 fetch。不过现在这个改法会把所有 provider 都强制切到 globalThis.fetch,可能会影响移动端的流式响应,也可能影响 OpenAI/Gemini/自定义 OpenAI-compatible 这些现有配置。

我建议我们把范围收窄一点:只针对桌面端的 Ollama 使用原生 fetch,其他 provider 继续保持现有逻辑。另外 Vite 版本升级和这个修复关系不大,最好也从这个 PR 里拆掉,避免混入不相关变更。

你这个问题提得很好,感谢测试和 PR。我们按这个方向收窄一下的话,我觉得就比较稳了。

@linshanzeng

Copy link
Copy Markdown
Author

好的,我来按你的意见修改:

  1. 只针对 Ollama 走原生 fetch,其他 provider 保持原样
  2. 不影响移动端(只改桌面端 Tauri 环境)
  3. 去掉 Vite 版本升级的变更

我会重新提交修改,只保留 Ollama 相关的改动。

@linshanzeng linshanzeng force-pushed the fix/ollama-get-to-post branch 2 times, most recently from b962403 to ffa22d8 Compare June 7, 2026 06:45
@linshanzeng

Copy link
Copy Markdown
Author

已按你的意见修改,只在 Ollama 桌面端的三个位置设置原生 fetch,其他 provider 不受影响。请 review。

@codedogQBY

Copy link
Copy Markdown
Owner

感谢你按之前的方向收窄,这个 Windows + Ollama 的定位很有价值,方向我认可:桌面端 Ollama 确实应该绕开 Tauri HTTP,直接走浏览器原生 fetch。

不过我又看了一下现在的实现,还有一个小风险:现在是通过 setStreamingFetch(globalThis.fetch) 去改全局的 _streamingFetch。这个状态是全局的,一旦 Ollama 触发过,后面其他 provider 也可能继续用 native fetch,这就不太符合“只影响桌面端 Ollama”的目标。

我建议再收一下实现方式:把判断放到 getEndpointFetch(endpoint, model) 里面做成局部策略,比如:

  • 桌面端 + Ollama:使用 globalThis.fetch
  • 其他 provider:继续保持现有的 _streamingFetch ?? globalThis.fetch

这样 listOllamaModelstestAIEndpointcreateChatModelFromEndpoint 都不用到处调用 setStreamingFetch,行为也更稳,不会影响 OpenAI / Gemini / 自定义兼容接口,以及移动端流式响应。

如果你方便的话,可以按这个方向再改一版。验证上我主要看这几项:Windows + Ollama 获取模型/测试连接/聊天都 OK;其他 provider 桌面端不受影响;移动端 AI 流式输出不回退。

@linshanzeng linshanzeng force-pushed the fix/ollama-get-to-post branch 3 times, most recently from c4a6547 to 6471a9d Compare June 7, 2026 14:58
@linshanzeng

Copy link
Copy Markdown
Author

已按你的意见修改,将判断收敛到 getEndpointFetch 内部,只针对桌面端 Ollama 替换底层 baseFetch,不影响其他 Provider 和移动端。请 review。

@linshanzeng linshanzeng force-pushed the fix/ollama-get-to-post branch from 6471a9d to 991b620 Compare June 8, 2026 03:07
@linshanzeng

Copy link
Copy Markdown
Author

@codedogQBY 还有什么问题吗?

@codedogQBY

Copy link
Copy Markdown
Owner

Closing because this PR is now stale and conflicts with the current main branch. Please reopen or submit a fresh PR rebased on latest main if this Windows/Ollama fix is still needed.

@codedogQBY codedogQBY closed this Jul 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants