约 2 分钟
Ollama Proxy —— 让 VSCode Copilot 用上任意 LLM 后端

这个项目怎么来的

VSCode Copilot 只认 Ollama 协议。但我不想在本地跑大模型,想用云端 API(SiliconFlow、Groq 之类)——快、便宜、不用占显存。问题是,Copilot 不吃这套。

偶然看到一个叫 ollama-proxy 的开源小工具,思路很对:本地起一个服务伪装成 Ollama,请求来了按 model 名路由到对应的 LLM 提供商。但功能还比较基础,缺几个我很需要的点,于是 fork 过来开改。

前前后后提了不少东西,部分已经合并回上游了。

我做了什么

流式反超时

Cloudflare 代理的上游经常会有 524 超时:客户端发了个非流式请求,上游模型半天不吐第一个 token,CF 等不及就直接断了。

解法有点取巧:

  1. 代理强制上游走流式模式(stream: true),这样连接持续活跃,不会触发 524
  2. 代理在本地把上游吐出来的流式片段拼成一个完整响应
  3. 最后以非流式 JSON 一次性回给客户端

客户端的体验不变,但彻底绕过了 Cloudflare 的超时限制。

配置热加载

原始版本用 fsnotify 监听配置文件变更,在 Docker 里挂载 config 时经常不触发。切成了轮询机制——每秒检查文件修改时间,简单粗暴但可靠。改个配置保存即生效,不用重启。

Docker 化 + API 补完

补了 Dockerfile 让服务能容器化部署,加了 /api/version 端点、ollamaVersioncapabilitiescontextLength 等配置项,填补 Ollama API 兼容性缺口。新版的VS Code在拿不到这些端点的正常返回时会直接卡住,导致界面上也没有自己配置的Ollama出现,加上这些端点之后一切正常。

技术栈

Go · Gin · Ollama API · Docker · YAML 热加载

结语

不过话说回来,用自己部署的模型做Vibe Coding到底还是差些意思。