codecamp

Ollama Copilot CLI

GitHub Copilot CLI 是 GitHub 的终端编码代理,能理解代码库、改代码、跑命令。它支持通过 Ollama 使用开源模型,比如 qwen3.5、glm-5.3:cloud、kimi-k3:cloud。

版本基线 v0.40.12,官方 docs.ollama.com/integrations/copilot-cli。

一、安装 Copilot CLI

按平台任选一种:

## macOS / Linux(Homebrew)
brew install copilot-cli

## 全平台(npm)
npm install -g @github/copilot

## Windows
winget install GitHub.Copilot

二、快速启动

ollama launch copilot

指定模型:

ollama launch copilot --model kimi-k2.5:cloud

三、无交互模式

ollama launch copilot --model kimi-k2.5:cloud --yes -- -p "how does this repository work?"

  • --yes:自动拉模型、跳过选择器,必须带 --model
  • -- 之后的参数原样传给 Copilot CLI

四、手动配置:四个环境变量

Copilot CLI 通过 OpenAI 兼容 API + 环境变量连 Ollama:

export COPILOT_PROVIDER_BASE_URL=http://localhost:11434/v1
export COPILOT_PROVIDER_API_KEY=
export COPILOT_PROVIDER_WIRE_API=responses
export COPILOT_MODEL=qwen3.5

然后运行:

copilot

或者写成一行:

COPILOT_PROVIDER_BASE_URL=http://localhost:11434/v1 COPILOT_PROVIDER_API_KEY= COPILOT_PROVIDER_WIRE_API=responses COPILOT_MODEL=glm-5:cloud copilot

四个变量逐个说明:

变量 值 说明
COPILOT_PROVIDER_BASE_URL http://localhost:11434/v1 带 /v1
COPILOT_PROVIDER_API_KEY 空 本地无鉴权,留空即可
COPILOT_PROVIDER_WIRE_API responses 用 Responses 协议,别用 chat
COPILOT_MODEL 如 qwen3.5 要支持工具调用

五、上下文要求

Copilot 需要大上下文,建议至少 64k tokens。这是官方明确提示的点,不够会直接影响可用性。

OLLAMA_CONTEXT_LENGTH=65536 ollama serve

六、常见问题

现象 原因 处理
连接失败 BASE_URL 漏 /v1 补上
协议错误 WIRE_API 用了默认值 显式设成 responses
模型不可用 模型不支持 tools 换支持工具调用的模型
长任务中断 上下文不足 调到 64k 以上
Windows 上命令找不到 winget 没装或 PATH 未刷新 重开终端

动手试

## ① 确认兼容端点
curl http://localhost:11434/v1/models

## ② 一条命令配好并进入
ollama launch copilot

## ③ 或直接给任务
ollama launch copilot -- -p "总结这个仓库的架构"
Ollama ChatGPT Desktop
Ollama Droid
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Ollama Cloud

Ollama CLI 命令行参考

Ollama Modelfile 参考

Ollama 上下文长度

Ollama 导入自定义模型

Ollama 常见问题

Ollama 硬件支持

Ollama 故障排查

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }