Local Motion 实战:让 Cursor 用上本地大模型,macOS 一键切换
你打开 Cursor,想在聊天中用本地模型跑一跑代码审查,不用等 API 响应也不担心隐私泄露。然后你打开 Ollama,拉模型,配置 Cursor 的 OpenAI Base URL,折腾一圈发现 Cursor 拒绝 127.0.0.1,必须开隧道,隧道又不知道怎么配——每次换模型都要重来一遍。
这就是 Local Motion 要解决的问题。它是一个 VS Code 扩展,让你在 Cursor(和原生 VS Code)上一键开关本地编码模型,自动选兼容的 GGUF 量化版本、自动管理内存、自动打通 Cursor 的隧道访问。
它做什么
Local Motion 的核心任务只有一件:在 macOS 上把你的本地模型变成 Cursor 和 VS Code 能直接使用的编码助手。
具体来说:
- 自动检测你的 Mac 架构、统一内存大小、可用磁盘空间,从 Hugging Face 上选一个兼容的量化版本
- 通过 Homebrew 自动安装或复用已有的
llama-server,加载模型后暴露一个 loopback OpenAI 兼容端点 - 在 Cursor 中自动开启
cloudflared隧道,让 Cursor 的云后端能访问到你的本地模型(因为 Cursor 不允许直接连 127.0.0.1) - 用完一键释放内存,下次启动时如果模型文件还在磁盘上,几秒就可恢复
默认安装两套模型:Max(Qwen3-Coder-30B-A3B)和 Mini(Gemma 4 26B A4B),分别适配大内存和日常使用场景。你也可以手动更换任意 Hugging Face GGUF 仓库。
快速上手
安装
在 VS Code 或 Cursor 的扩展市场搜索 “Local Motion” 安装即可。如果你从源码安装:
git clone https://github.com/mattmireles/local-motion.git cd local-motion npm install npm run package
启动
- 安装后,Local Motion 会自动打开本地 Agent 开关面板
- 点击 Turn On Local Agent
- 扩展会自动安装
llama.cpp(通过 Homebrew),下载兼容的 GGUF 模型文件(支持断点续传) - 模型加载完成后,在 Cursor 中运行
Local Motion: Connect Cursor to Local Agent - 命令面板会复制完整的 Cursor 设置块:API Key、Base URL、模型 ID
- 打开 Cursor Settings → Models,粘贴设置,开启 OpenAI API Key 开关
整个过程大约 5-15 分钟(取决于你的网络速度),之后每次启动 Cursor 都可以一键恢复上次使用的模型。
内存管理细节
Local Motion 在内存管理上做得比多数工具更细致:
- 自动按统一内存的 80% 设定预算,考虑到 Metal wired-memory 的实际上限
- 默认启用双模型配置:Max 用满预算,Mini 用一半
- 从磁盘重新加载已下载的模型只需几秒(模型文件缓存在扩展的全局存储目录中)
Local Motion: Free Memory立即卸载模型,释放 GPU 显存
如果你的 Mac 有 16GB 统一内存,Mini 配置(Gemma 4 26B A4B)可以流畅运行。32GB 以上可以跑 Max(Qwen3-Coder-30B-A3B)。
Cursor 隧道说明
这是 Local Motion 最值得注意的设计取舍。
Cursor 出于安全和架构原因,不开放 VS Code Language Model API(vscode.lm)——这意味着任何本地模型都不能像在 VS Code 中那样通过 loopback 直连。Cursor 将所有自定义模型请求路由到自己的云后端,再转发到你的端点,而云后端拒绝私有地址(127.0.0.1、localhost)。
Local Motion 的解决方案是自动启动一个 cloudflared 隧道,在本地代理前面暴露一个公网 HTTPS URL。Cursor 的请求经过:
你的 Mac → llama-server → Local Motion 代理 → cloudflared 隧道 → Cursor 云后端 → Cursor 编辑器
这有两个重要的注意事项:
- 不是完全私有的。虽然计算在本地,但提示词会经过 Cursor 云后端和隧道运营商的网络。Cursor 的零数据留存策略(Zero Data Retention)不适用于自定义 API Key
- 仅 Chat 模式官方支持。Cursor 的自定义 API Key 只对 Chat 模型生效。Tab 自动补全、Apply、Inline Edit 和 Agent 模式可能不使用自定义端点,需实测验证
在真正的 VS Code 中不存在这个问题——vscode.lm 路径完全走 loopback,100% 本地。
模型切换与自定义
默认的 Max/Mini 配置通过一个两槽的快捷切换面板管理。点击槽位旁的 Replace,粘贴 Hugging Face GGUF 仓库地址,扩展会自动验证兼容的 Q4+ 量化版本并下载替换。
支持任意 GGUF 格式的模型,只要兼容 llama-server。扩展内置了从 Hugging Face 实时搜索和排序的模型选择器,按你的 Mac 兼容性自动筛选。
局限与适用场景
| 场景 | 适合? | 说明 |
|---|---|---|
| VS Code + 本地编码助手 | ✅ | vscode.lm 全本地,零隧道 |
| Cursor Chat 本地模型 | ✅ | 需 cloudflared 隧道,提示词经 Cursor 后端 |
| Cursor Agent/Composer | ⚠️ | 自定义端点对 Agent 是 best-effort,需实测 |
| 完全离线/零信任环境 | ❌ | Cursor 路径必须用隧道,无法完全离线 |
| Windows/Linux | ❌ | 仅 macOS |
同类工具对比
| 工具 | 平台 | 模型管理 | Cursor 支持 | 一键安装 |
|---|---|---|---|---|
| Local Motion | macOS 仅 | 自动选型 + 双槽切换,开箱即用 | ✅ cloudflared 隧道 | ✅ VS Code 扩展市场 |
| Ollama | macOS/Linux/Windows | 手动 ollama pull,需自行配置 | ⚠️ 需手动配 tunnel | ❌ brew/手动 |
| LM Studio | macOS/Windows | GUI 下载,手动选型 | ⚠️ 需手动配 tunnel | ✅ 独立 App |
| LocalAI | Linux/macOS | Docker | ❌ 无 Cursor 集成 | ❌ Docker 手动 |
Local Motion 的独特价值在于自动化程度——它把模型选型、内存预算计算、Homebrew 依赖安装、Cursor 隧道打通和设置代码块复制,全部打包成一个 Turn On Local Agent 按钮。如果你在 macOS 上用 Cursor/VS Code 并想跑本地模型,这是目前最省心的选择。