codecamp

Ollama Claude Desktop

Claude Desktop 是 Anthropic 的桌面客户端。接上 Ollama 后,你可以用本地模型跑 Claude 的界面和代理能力,不必消耗云端额度。

版本基线 v0.40.12,官方 docs.ollama.com/integrations/claude-desktop。目前仅支持 macOS,Windows 支持尚未上线。

一、前置条件

  • 已安装 Ollama(macOS 版)
  • 用本地模型:先下载好模型(ollama pull),否则连接后无模型可选
  • 用云端模型:先 ollama signin 登录并启用云端模型,部分模型需付费订阅

Claude 没装也没关系——Ollama 在设置流程里会提示下载。

二、连接步骤

  1. 打开 Ollama 应用
  2. 左侧选 Apps
  3. 点击连接 Claude
  4. 按提示完成设置;若需要安装 Claude 或重启,跟着提示做

重启这一步不能省。Claude 只在启动时读取连接配置,不重启看不到 Ollama 的模型。

三、切换模型

Open Ollama Settings → Apps,选择模型,然后点 Restart Claude。

一个细节:同一个模型可以同时用于多个选项(比如普通对话和子代理都用同一个),不需要为每个位置单独准备模型。

四、接入后支持的能力

能力 说明
Subagents 把大任务拆给多个子代理并行处理
Web search 默认走 Ollama 的联网搜索服务
Cowork Claude 的协作模式,处理复杂任务
Auto mode 让代理自行判断何时需要先征求确认再改动

联网搜索是默认开启的,不需要额外配置——它走的是 Ollama 自己的 web_search,本地模型也能用(需 ollama signin)。原理见 3.9 Ollama 网络搜索。

五、断开与还原

断开后 Ollama 会把 Claude 恢复成接入前的设置。

方式一(界面):Ollama → Apps → 断开 Claude,然后在提示时重启 Claude。

方式二(命令行):

ollama launch claude-desktop --restore

方式三(意外情况):直接退出 Ollama 应用,也会触发 Claude 配置的还原。

退出 Ollama 会自动还原 Claude 设置——这一点经常让人困惑。如果你想让连接持续有效,Ollama 必须保持运行。

六、常见问题

现象 原因 处理
连接后模型列表是空的 本地没有已下载的模型 先 ollama pull <模型名>
云端模型提示需要订阅 该模型属于付费计划 换免费模型,或升级订阅
改了模型没生效 Claude 没重启 Settings → Apps 点 Restart Claude
全部设置自动失效了 Ollama 应用被退出 重新启动 Ollama 并重新连接
找不到 Apps 入口 用的是旧版 Ollama 或非 macOS 升级 Ollama;Windows 暂不支持

动手试

一条命令完成「连接 + 还原」的验证:

## 查看当前模型
ollama list

## 查看 launch 支持的桌面应用目标
ollama launch --help | grep -i desktop

从 Ollama 的 Apps 面板连上 Claude,随便问一句确认走的是本地模型(看 ollama ps 里有没有出现加载记录),再断开验证配置已还原。

Ollama 集成 概述
Ollama OpenClaw
温馨提示
下载编程狮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; }