这个项目怎么来的
VSCode Copilot 只认 Ollama 协议。但我不想在本地跑大模型,想用云端 API(SiliconFlow、Groq 之类)——快、便宜、不用占显存。问题是,Copilot 不吃这套。
偶然看到一个叫 ollama-proxy 的开源小工具,思路很对:本地起一个服务伪装成 Ollama,请求来了按 model 名路由到对应的 LLM 提供商。但功能还比较基础,缺几个我很需要的点,于是 fork 过来开改。
前前后后提了不少东西,部分已经合并回上游了。
我做了什么
流式反超时
Cloudflare 代理的上游经常会有 524 超时:客户端发了个非流式请求,上游模型半天不吐第一个 token,CF 等不及就直接断了。
解法有点取巧:
- 代理强制上游走流式模式(
stream: true),这样连接持续活跃,不会触发 524 - 代理在本地把上游吐出来的流式片段拼成一个完整响应
- 最后以非流式 JSON 一次性回给客户端
客户端的体验不变,但彻底绕过了 Cloudflare 的超时限制。
配置热加载
原始版本用 fsnotify 监听配置文件变更,在 Docker 里挂载 config 时经常不触发。切成了轮询机制——每秒检查文件修改时间,简单粗暴但可靠。改个配置保存即生效,不用重启。
Docker 化 + API 补完
补了 Dockerfile 让服务能容器化部署,加了 /api/version 端点、ollamaVersion、capabilities 和 contextLength 等配置项,填补 Ollama API 兼容性缺口。新版的VS Code在拿不到这些端点的正常返回时会直接卡住,导致界面上也没有自己配置的Ollama出现,加上这些端点之后一切正常。
技术栈
Go · Gin · Ollama API · Docker · YAML 热加载
结语
不过话说回来,用自己部署的模型做Vibe Coding到底还是差些意思。