codecamp

Ollama 集成 概述

写代码的、聊天的、跑工作流的工具,现在大多支持接自己的模型源。Ollama 把这些接入简化成一条命令 ollama launch——它负责装软件、配 provider、选模型、拉起界面,你只需要回答几个选择题。

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

一、四个接入入口

官方把集成场景归成四类,每一类有对应的操作方式:

场景 操作方式 对应章节
在终端里跑编码代理 ollama launch <工具名> 12.5 – 12.16
在桌面应用里用模型 Ollama App → Apps → 连接 12.1、12.10
跑个人助手 ollama launch openclaw / hermes 12.2 – 12.4
在编辑器里写代码 装扩展后选 Ollama 模型 12.17 – 12.22

二、ollama launch 做了什么

一条 ollama launch codex 背后包含五步:

  1. 安装 —— 目标工具没装时提示安装(多数走 npm)
  2. 安全提示 —— 首次启动的工具访问权限说明
  3. 选模型 —— 从选择器挑本地模型或云端模型
  4. 配置 provider —— 把工具指向 Ollama,设为默认模型
  5. 启动 —— 拉起工具界面或对话

配置不会污染工具原有设置:Ollama 用独立的 profile 或独立配置文件,卸载时用 --restore 可还原。

三、两种连接目标

不管哪个工具,最终都是连到下面两个地址之一:

目标 Base URL 需要登录
本地 Ollama http://localhost:11434 或 /v1 否
Ollama 云端 https://ollama.com 或 /v1 是(ollama signin 或 API Key)

本地模型不需要账号、不联网。云端模型需要 ollama signin 或 OLLAMA_API_KEY,部分模型要付费订阅。

具体到某个工具用 /v1 还是裸地址,取决于它的协议实现——OpenAI 兼容的填 /v1,Anthropic 兼容的填裸地址。

四、上下文长度:集成最容易踩的坑

编码类工具几乎都要求大上下文,这是集成失败最常见的原因(表现为工具报错、回答截断、或反复重试)。

工具类型 建议上下文
编码代理(Codex、OpenCode、Claude Code、Droid 等) ≥ 64k
IDE 插件(Cline、Roo Code) ≥ 32k
对话类(Claude Desktop、ChatGPT Desktop) 默认可用

本地模型默认上下文按显存分档(可能只有 4k),必须手动调大,否则工具会认为模型「不可用」。调整方法见 6.1 Ollama 上下文长度。

五、模型选择建议

  • 本地跑:优先选带 tools 能力的模型(工具调用是编码代理的硬需求),参数量按显存匹配
  • 云端跑:kimi-k2.5:cloud、glm-5.3:cloud、qwen3-coder:480b-cloud 这类带 :cloud 后缀的模型
  • 不确定选哪个:先在 ollama.com/search 按 tools 能力筛选

六、本章怎么读

26 个集成按「终端代理 → 桌面应用 → 编辑器」的顺序排列。如果你只想知道某一个怎么配,直接跳到对应小节;如果是第一次接,建议按下面顺序:

  1. 12.5 Ollama Claude Code —— 最典型的「命令行编码代理」接入范式
  2. 12.17 Ollama VS Code —— 最常用的「编辑器内」接入
  3. 12.1 Ollama Claude Desktop —— 桌面应用侧的 App 一键连接

动手试

先看看你的机器上能直接拉起哪些工具:

## 看 ollama launch 支持的目标
ollama launch --help

## 直接试一个,不需要预装
ollama launch claude

如果提示模型上下文不足,回到第四节调大 num_ctx 再来。

Ollama 故障排查
Ollama Claude Desktop
温馨提示
下载编程狮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; }