使用 Cursor 调用本地 Ollama 模型的完整踩坑实录(LiteLLM + ngrok)

最后更新: 2026-01-14

目标:在 Cursor 中,像用 OpenAI 一样,调用本地 Ollama 跑的 deepseek / qwen 模型
结果:能用,但坑非常多,这篇文章把所有关键点一次讲清


一、背景 & 目标

我本地有一台 模型机(Windows / AMD),通过 Ollama 运行了:

  • deepseek-coder-v2:16b
  • qwen3-coder:30b

目标是:

  • Cursor
  • 使用 OpenAI Compatible API
  • 直接调用这些本地模型进行代码补全 / 对话

理想状态是:

Plain
1Cursor → OpenAI-Compatible API → 本地模型

二、为什么 Cursor 不能直接连 Ollama

一开始我尝试直接在 Cursor 里配置:

Plain
1Base URL: http://<内网IP>:11434/v1

结果 Cursor 直接报错:

Plain
1ssrf_blocked 2connection to private IP is blocked

这是 Cursor 的安全策略:

  • 禁止访问内网 IP
  • 禁止 localhost
  • 禁止 192.168.x.x / 127.0.0.1

结论

Cursor 无法直连本地 Ollama


三、正确架构:LiteLLM 作为中转层

最终采用的架构是:

Plain
1Cursor 2 ↓ (OpenAI Compatible) 3公网域名(ngrok) 45LiteLLM 67Ollama 89本地模型

LiteLLM 的作用:

  • 把 Ollama 包装成 OpenAI API
  • 对外只暴露“标准模型名”
  • Cursor 可以无感接入

四、LiteLLM 的安装(Windows 直装,放弃 Docker)

为什么不用 Docker

在 Windows + AMD 环境下:

  • ghcr.io/berriai/litellm 默认拉到 arm64
  • 即使指定 linux/amd64 也会踩坑
  • 容器启动直接失败

结论
Windows 上直接用 Python 装 LiteLLM,最稳


安装 LiteLLM

Plain
1pip install litellm

启动前准备一个 config.yaml


五、LiteLLM 配置示例

Plain
1model_list: 2 - model_name: deepseek 3 litellm_params: 4 model: ollama/deepseek-coder-v2:16b 5 api_base: http://localhost:11434 6 7 - model_name: qwen 8 litellm_params: 9 model: ollama/qwen3-coder:30b 10 api_base: http://localhost:11434

启动:

Plain
1litellm --config config.yaml --port 9099 --host 0.0.0.0

注意:

  • Windows 上有些端口(如 4000)可能被系统策略拦
  • 这里换到 9099 可正常启动

六、确认 LiteLLM 是否真的“对外可用”

非常关键的一步:

Plain
1curl http://localhost:9099/v1/models

返回:

Plain
1{ 2 "data": [ 3 { "id": "deepseek" }, 4 { "id": "qwen" } 5 ] 6}

这一步决定一切。


七、最核心的坑:模型名不是 Ollama 的名字

错误写法(一定会 400)

Plain
1"model": "deepseek-coder-v2:16b"

正确写法

Plain
1"model": "deepseek"

原因:

  • deepseek-coder-v2:16bOllama 内部模型名
  • deepseekLiteLLM 对外暴露的模型名
  • Cursor / OpenAI SDK 只能使用 /v1/models 里返回的 id

八、解决 Cursor 的 SSRF:必须用公网域名

即使 LiteLLM 在本地跑通:

Plain
1curl http://localhost:9099/v1/chat/completions

Cursor 依然 不能用

解决方案:ngrok

Plain
1ngrok http 9099

得到:

Plain
1https://xxxx.ngrok-free.app

九、Cursor 最终配置

Settings → Models → Add OpenAI-Compatible

配置项
API Base URLhttps://xxxx.ngrok-free.app/v1
API Key随便填(非空即可)
Modeldeepseekqwen

注意事项:

  • 不要用 IP
  • 不要用 localhost
  • 模型名 必须来自 /v1/models
  • 如果之前填错过,删配置并重启 Cursor

十、最终效果

  • Cursor 正常补全 / 对话
  • 使用的是本地 Ollama 模型
  • 完全 OpenAI Compatible
  • 可随时切换 deepseek / qwen