bernardo-bruning/ollama-copilot
Proxy that allows you to use ollama as a copilot like Github copilot
Ollama Copilot – 用于 GitHub Copilot 的本地 LLM 代理
它是什么 – 一个小型 Go 程序,位于 GitHub Copilot 客户端(VS Code、Neovim、Zed 等扩展)与任何本地运行的 LLM 服务器之间。它将 Copilot 的 HTTP 请求转换为对与 Ollama 兼容的 API(或 llmman、DeepSeek、Mistral、OpenRouter、OpenAI 等其他提供者)的调用。实际上,您可以在自己的机器上运行专注于代码的模型,并让 Copilot UI 像官方服务一样提供补全建议。
快速开始(单行指令)
# 先安装 Ollama (请参阅 https://ollama.com/download/linux)
curl -fsSL https://ollama.com/install.sh | sh
# 拉取默认代码模型
ollama pull codellama:code
# 安装代理二进制文件
go install github.com/bernardo-bruning/ollama-copilot@latest
# 运行它(默认为 localhost:11434 上的 Ollama)
ollama-copilot
现在将您的 Copilot 扩展指向 http://localhost:11435(或下方显示的 HTTPS 端口),您就可以从本地模型获得补全建议。
运作原理
| 组件 | 角色 |
|---|---|
| Ollama / llmman / 其他提供者 | 托管实际的语言模型并公开与 Ollama 兼容的 REST API。 |
| ollama-copilot | 监听一组 HTTP/HTTPS 端口,接收 Copilot JSON 负载,将其转发给选定的提供者,并以 Copilot 预期的格式返回补全结果。 |
| Copilot 客户端 (VS Code, Neovim, Zed, …) | 将其正常请求发送到代理,而不是 GitHub 的云端服务。 |
该代理可通过命令行标志进行配置,允许您:
- 选择提供者 (
-provider ollama|llmman|deepseek|mistral|openrouter|openai)。 - 提供 API 令牌 (
-token)。 - 选择模型 (
-model)。 - 调整生成参数,例如
-num-predict(生成多少个 token)和-num-ctx(上下文窗口)。 - 通过纯 HTTP 或 TLS 运行(提供
-cert/-key)。
安装选项
1. 自动化脚本(推荐)
./install.sh
该脚本:
- 构建 Go 二进制文件并将其安装到
~/.local/bin/ollama-copilot。 - 选择性地创建 Systemd 服务,以便代理在开机时启动,并让您持久化设置
num-predict。 - 检测您拥有的编辑器,并提供为 Neovim、VS Code 和 Zed 添加所需代理配置的选项。
2. 手动 Go 安装
go install github.com/bernardo-bruning/ollama-copilot@latest
确保 $HOME/go/bin (或 $GOPATH/bin) 在您的 $PATH 中。
3. 运行代理
# 默认 – 与端口 11434 上的本地 Ollama 实例通信
ollama-copilot
# 如果 Ollama 在其他地方运行(容器、远程主机)
OLLAMA_HOST="http://192.168.133.7:11434" ollama-copilot
您也可以使用 -port、-proxy-port、-port-ssl 和 -proxy-port-ssl 更改监听端口。
提供者特定说明
| 提供者 | 如何设置 | 示例指令 |
|---|---|---|
| Ollama (默认) | 安装 Ollama,拉取模型 (例如 codellama:code)。 |
ollama-copilot |
| llmman | 安装 llmman,运行 llmman serve,拉取模型,然后使用 -provider llmman 启动代理。 |
ollama-copilot -provider llmman -model hf.co/unsloth/Qwen3.5-0.8B-GGUF |
| DeepSeek | 从 DeepSeek 获取 API 密钥。 | ollama-copilot -provider deepseek -token $YOUR_KEY -model deepseek-coder |
| Mistral | 从 Mistral 获取 API 密钥。 | ollama-copilot -provider mistral -token $YOUR_KEY -model codestral-latest |
| OpenRouter / OpenAI | 提供适当的令牌和模型名称。 | ollama-copilot -provider openrouter -token $KEY -model openrouter/anthropic/claude-3.5-sonnet |
IDE 集成(手动配置)
Neovim (使用 copilot.vim)
let g:copilot_proxy = 'http://localhost:11435'
let g:copilot_proxy_strict_ssl = v:false
确保您已先登录 Copilot (:Copilot signin)。
VS Code (官方 Copilot 扩展)
添加到 settings.json:
{
"github.copilot.advanced": {
"debug.overrideProxyUrl": "http://localhost:11437"
},
"http.proxy": "http://localhost:11435",
"http.proxyStrictSSL": false
}
Zed
{
"features": {"edit_prediction_provider": "copilot"},
"show_completions_on_input": true,
"edit_predictions": {
"copilot": {"proxy": "http://localhost:11435", "proxy_no_verify": true}
}
}
PyCharm / 其他 JetBrains IDE
设置 HTTP Proxy → 主机 localhost,端口 11435,并在 Tools → Server Certificates 下启用 Accept non-trusted certificates automatically。
Emacs (实验性)
(setq copilot-network-proxy '(:host "127.0.0.1" :port 11434 :rejectUnauthorized :json-false))
(需要 copilot-emacs 软件包。)
配置标志(摘要)
| 标志 | 默认 | 含义 |
|---|---|---|
-port |
:11437 |
代理本身监听的 HTTP 端口(由 Copilot 客户端使用)。 |
-proxy-port |
:11438 |
代理端点的 HTTP 端口(某些编辑器使用单独的端口)。 |
-port-ssl |
:11436 |
-port 的 HTTPS 对应项。 |
-proxy-port-ssl |
:11435 |
-proxy-port 的 HTTPS 对应项。 |
-cert / -key |
– | HTTPS 模式的 TLS 证书和密钥路径。 |
-provider |
ollama |
要将请求转发到的后端。 |
-token |
TOKEN |
云端提供者的 API 令牌。 |
-model |
codellama:code |
所选提供者可识别的模型标识符。 |
-num-predict |
250 (建议 Copilot 使用 25) |
模型每次请求可生成多少个 token。 |
-template |
<PRE> {{.Prefix}} <SUF> {{.Suffix}} <MID> |
用于“中间填充”(fill-in-the-middle) 补全的提示模板。 |
-system |
You are a helpful... |
发送给模型的系统级指令。 |
路线图(目前状态)
- ✅ 启用补全 API 使用;中间填充。
- ✅ 灵活的配置模型 (超越
llamacode:code)。 - ✅ 自安装脚本。
- ✅ 自动配置 Neovim, VS Code, Zed。
- ✅ 文档。
- ⬜ Windows 设置 (尚待处理)。
谁会使用这个?
- 希望在不将源代码发送到云端服务的情况下获得代码补全的开发人员。
- 对隐私或安全性有要求,需要本地 LLM 的团队。
- 任何尝试不同开源代码模型 (CodeLlama, Qwen 等) 并希望使用熟悉的 Copilot UI 的人。
总结 – ollama-copilot 弥合了精致的 Copilot 编辑器体验与在本地运行您自己的代码专注型 LLM 的自由之间的差距。
相关
- 项目
- 项目
- 项目
- 项目