1. 为什么本地 Qwen2 接入 Cursor 值得折腾
如果你平时用 Cursor 写代码,大概率遇到过这几种尴尬:地铁上网络断断续续,补全转圈半天不出来;免费额度用完后想继续用高级模型,得掏订阅费;公司项目涉及业务逻辑,代码片段传到云端总有点不踏实。Ollama 本地跑 Qwen2 再接到 Cursor 上,正好把这几个问题一次性解决——推理全在本机、断网可用、调用次数不限、代码不出本地。
这套方案的核心检索词就是Ollama 本地 Qwen2 接入 Cursor,本质是让 Cursor 把 AI 请求发到本机的http://localhost:11434/v1,而不是默认的云端接口。Ollama 自带 OpenAI 兼容层,Cursor 又支持自定义 Base URL,两边一对上就通了。适合谁?学生刷题练手、独立开发者日常编码、对代码隐私敏感但又不想花钱买订阅的人。轻薄本、无独显的机器也能跑,选 1.5B 或 4B 的量化模型,响应速度完全够日常补全和问答。
我试过在 16G 内存的核显笔记本上跑 qwen2:1.5b,补全延迟基本在可接受范围,写个工具函数、解释报错、生成注释都很顺。这一期就把从拉模型到 Cursor 配置、再到验证请求的完整路径写清楚,顺带把在线模型通道用 TaoToken 统一管理的补充方案也讲一下,方便你本地和云端模型混着用。
2. 前置准备:Ollama 拉取 Qwen2 与 Cursor 环境确认
动手之前先把两件事确认好:Ollama 装好并且能跑 Qwen2,Cursor 装好并且是较新版本。Ollama 的安装各平台都有对应包,装完后终端执行ollama --version能看到版本号就说明没问题。接下来拉模型,Qwen2 在 Ollama 库里有多个尺寸,按你机器内存选:
| 模型标签 | 参数量 | 大致内存占用 | 适用场景 |
|---|---|---|---|
| qwen2:0.5b | 0.5B | 约 1GB | 极低配机器、简单补全 |
| qwen2:1.5b | 1.5B | 约 2GB | 轻薄本日常编码、问答 |
| qwen2:7b | 7B | 约 6GB | 16G 内存以上、复杂逻辑 |
| qwen2:7b-instruct | 7B | 约 6GB | 对话与指令跟随更好 |
拉取命令直接跑:
ollama pull qwen2:1.5b拉完后用ollama list确认模型已经在本地列表里。然后启动一次对话验证模型能正常推理:
ollama run qwen2:1.5b能进入交互界面、输入一句话有回复,就说明模型和服务都正常。按Ctrl+C退出对话,但注意 Ollama 的后台服务不要关,Cursor 后面要靠它。如果你之前没装过 Ollama,装完后它一般会常驻后台,端口默认11434。可以用下面命令确认服务在监听:
curl http://localhost:11434/api/tags返回一串 JSON,里面能看到qwen2:1.5b就对了。这一步很关键,很多人后面 Cursor 连不上,根源就是 Ollama 服务根本没起来。Cursor 这边去官网下免费版即可,装完先别急着登录账号,我们走自定义模型通道。
3. 可复制配置:Cursor 自定义 Base URL 与模型名
Cursor 的模型配置入口在设置里。按Ctrl + Shift + P(Mac 是Cmd + Shift + P)打开命令面板,输入Preferences: Open Settings回车,进入设置页。在搜索框里输入OpenAI,能找到几个关键项:OpenAI Base URL、OpenAI API Key、OpenAI Model Name。我们要改的就是这三项。
第一项 Base URL 填本地 Ollama 的兼容接口地址:
http://localhost:11434/v1注意结尾的/v1不能少,这是 OpenAI 兼容层的路径。第二项 API Key,Ollama 本地接口不做鉴权,但 Cursor 这个字段不能空着,随便填一串字符即可,比如ollama-local。第三项 Model Name 必须和 Ollama 里的模型标签完全一致,大小写都不能错:
qwen2:1.5b如果你拉的是 7b,就写qwen2:7b。这里有个坑:不要写Qwen2、Qwen2-7B这种带大写或额外后缀的名字,Cursor 会原样发给 Ollama,Ollama 找不到就报模型不存在。
除了在设置 UI 里填,Cursor 的配置其实落在settings.json里,你也可以直接编辑这个文件,路径大致在用户配置目录下。对应的 JSON 片段长这样:
{ "cursor.openai.baseUrl": "http://localhost:11434/v1", "cursor.openai.apiKey": "ollama-local", "cursor.openai.modelName": "qwen2:1.5b" }如果你同时想保留在线模型的通道,比如用 TaoToken 统一管理其他模型的 Key 和 API 地址,可以在需要切换时把 Base URL 换成 TaoToken 的 API 地址https://taotoken.net/api,Key 换成在控制台生成的令牌,Model Name 换成对应在线模型 ID。这样本地和在线两套配置可以按场景切换,本地负责隐私和离线,在线负责更强推理。TaoToken 的接入文档里有各客户端的配置示例,需要的时候去 API Keys 页面拿 Key、去接入文档看路径即可。
配置改完,完全退出 Cursor 再重新打开。不是关窗口,是彻底退出进程,否则旧配置可能还缓存着。重开后随便打开一个代码文件,准备做验证。
4. 验证请求:一次离线补全与对话的完整动作
验证分两步:先确认 Cursor 的请求真的打到了本地 Ollama,再确认补全和对话功能可用。第一步,保持断网状态(或者拔掉网线、关掉 WiFi),打开一个.py或.js文件,写一个函数名比如def calculate_total(items):,然后换行等补全。如果 Cursor 弹出基于本地模型的建议,说明请求走通了。这时候你可以在终端另开一个窗口看 Ollama 的日志,能看到类似POST /v1/chat/completions的记录,证明流量确实到了本机。
第二步,用 Cursor 的对话功能。按Ctrl + L打开 Chat,输入一句“解释一下当前文件里这个函数的作用”,看它是否基于本地模型给出回答。断网状态下如果还能正常回复,就彻底证明离线可用。实测 qwen2:1.5b 在这种解释类任务上表现够用,7b 会更细致一些。
如果你想更直接地验证接口,可以绕过 Cursor,直接用 curl 打 Ollama 的兼容端点:
curl http://localhost:11434/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "qwen2:1.5b", "messages": [{"role": "user", "content": "用一句话说明什么是递归"}] }'返回 JSON 里有choices字段和模型输出,就说明兼容层工作正常。这一步能帮你把问题定位清楚:如果 curl 通但 Cursor 不通,问题在 Cursor 配置;如果 curl 都不通,问题在 Ollama 服务或模型名。
验证通过后,你日常的补全、报错分析、注释生成、代码重构都可以在离线状态下跑。需要更强模型时,再切到 TaoToken 的在线通道,用同一套 Cursor 配置改 Base URL 和 Model Name 即可,不用装两套工具。
5. 常见报错排查:401、local proxy failed 与模型不存在
接入过程里最容易撞上的几个报错,我按真实遇到的情况列一下,对照着排。
报错一:401 Unauthorized。这个在本地 Ollama 场景下通常不是真的鉴权失败,而是 Cursor 把 Key 字段当成了必填且做了校验。解决办法是确认OpenAI API Key填了非空字符串,比如ollama-local。如果填了还报 401,检查 Base URL 是不是写成了http://localhost:11434而漏了/v1,路径不对时某些版本会返回鉴权类错误。
报错二:local proxy failed 或 connection refused。这说明 Cursor 连不上localhost:11434。先跑curl http://localhost:11434/api/tags确认服务活着。如果没反应,执行ollama serve手动启动服务。端口被占用的情况也有,换端口的话要同时改 Ollama 启动参数和 Cursor 的 Base URL,保持两边一致。
报错三:model not found / reading choices 报错。前者是模型名不匹配,严格用ollama list里显示的名字,比如qwen2:1.5b。后者常见于返回体解析失败,多半是 Base URL 指向了一个不返回 OpenAI 格式的端点,确认路径是/v1结尾的兼容层。
报错四:OAuth 相关提示或要求登录。Cursor 某些版本会引导你登录官方账号,如果你只想用本地模型,可以在设置里关掉相关云功能,或者忽略登录直接走自定义模型通道。配置保存后记得彻底重启 Cursor。
报错五:回答卡顿、首 token 很慢。这是本地推理的算力问题,不是配置错。换更小的模型,比如从 7b 降到 1.5b,或者确认没有其他大程序占内存。量化版本本身已经优化过,再慢就是硬件上限了。
排查时记住一个顺序:先 curl 验 Ollama,再验 Cursor 配置,最后验模型名。三件套 Base URL、Key、Model ID 任何一件对不上都会出问题,尤其是 Model ID 必须和ollama list完全一致。
6. 本地与在线模型混用:用 TaoToken 统一通道管理
本地 Qwen2 解决了离线、免费、隐私三个问题,但遇到复杂重构、长上下文推理时,小模型能力还是有边界。这时候没必要把 Cursor 配置改来改去,可以用 TaoToken 把在线模型的 Key 和 API 通道统一管起来,需要时切一下 Base URL 和 Model Name 就行。
具体做法:去 TaoToken 控制台生成一个 API Key,然后在 Cursor 里把OpenAI Base URL改成https://taotoken.net/api,OpenAI API Key填生成的令牌,OpenAI Model Name填你要用的在线模型 ID。这样本地和在线就是两套配置,按项目敏感度和任务复杂度切换。本地跑隐私代码和日常补全,在线跑重推理和 Agent 类任务。
如果你用 Claude Code 这类工具做长期编码,TaoToken 的 Coding Plan 通道也能接,配置方式类似,Base URL 和 Key 在对应文档里有说明。需要看模型列表和对话验证的话,模型对话页面可以直接试。API Keys 页面负责发 Key,接入文档页面有各客户端的完整路径示例。这样一套下来,本地 Ollama 和在线通道各司其职,Cursor 始终只有一个入口,不用来回装卸。
实际用的时候,我一般把本地qwen2:1.5b设为默认,写业务代码和敏感逻辑时全程离线;遇到需要长上下文分析或者复杂算法推导,临时切到在线模型跑完再切回来。切换成本就是改两个字段加重启,比装两套编辑器省事得多。