本文直接通过修改cursor编译后的模式实现的cursor绕过pro检测实现本地api接入,直接将下面的所有内容复制给AI,通过AI直接进行配置Mac、Windows亲测均有效
Cursor Local Mode 配置指南
目的
让 Cursor 的 Agent/Chat 功能直连自己的 OpenAI 兼容 API,绕过 Cursor 后端的额度限制。
原理
Cursor 有一个编译时开关 ov.localMode,默认为 false。开启后:
- Agent/Chat 的 AI 推理请求直连你配置的 API 端点 (OpenAI 兼容格式
POST /chat/completions) - 工具执行(文件读写、终端、搜索、MCP)完全不受影响(本来就是本地执行)
- 请求不再经过
api2.cursor.sh,无额度检查
代价
以下功能会被禁用:
- Cursor Tab(自动补全)
- Cmd+K(内联编辑)
- 语义搜索
- Quick Actions
- Canvas 分享
配置步骤
Step 1:修改 localMode 标志
文件 :resources\app\out\vs\workbench\workbench.desktop.main.js
搜索:
cursorPredictionOptions:!1,localMode:!1
替换为:
cursorPredictionOptions:!1,localMode:!0
!1是 minified 的false,!0是 minified 的true
Step 2:更新 product.json 校验和(关键!)
Cursor 有客户端完整性校验,会对比文件 SHA-256 与 product.json 中存储的值。不更新会导致报错:
Your Cursor installation appears to be corrupt. Please reinstall.
文件 :resources\app\product.json
找到 checksums 节点中的:
json
"vs/workbench/workbench.desktop.main.js": "IFMXreIcz2orQV73+mPB5MXTlNtib3raAVGpQ+HsyVA"
需要用修改后的文件重新计算 SHA-256 并替换。以下提供自动脚本。
Step 3:配置 API 连接
在 Cursor 中(二选一):
方式 A:Settings → Models 面板
- "OpenAI API Key" → 输入你的 Key,开启 Toggle
- "Override OpenAI Base URL" → 输入你的 API 地址,如
https://your-proxy.com/v1
方式 B:系统环境变量
CURSOR_LOCAL_AGENT_API_KEY= 你的 KeyCURSOR_LOCAL_AGENT_BASE_URL=https://your-proxy.com/v1
Step 4:重启 Cursor
自动化脚本
以下 PowerShell 脚本可一键完成 Step 1 和 Step 2:
powershell
# === Cursor Local Mode Patcher ===
# 用法:在 PowerShell 中运行此脚本
# 需要安装 Python
$cursorRoot = "D:\dev\cursor\resources\app"
$jsFile = "$cursorRoot\out\vs\workbench\workbench.desktop.main.js"
$productFile = "$cursorRoot\product.json"
# Step 1: 修改 localMode
$text = [System.IO.File]::ReadAllText($jsFile)
$oldStr = "cursorPredictionOptions:!1,localMode:!1"
$newStr = "cursorPredictionOptions:!1,localMode:!0"
if ($text.Contains($newStr)) {
Write-Output "[OK] localMode 已经是 true,无需修改"
} elseif ($text.Contains($oldStr)) {
$text = $text.Replace($oldStr, $newStr)
[System.IO.File]::WriteAllText($jsFile, $text)
Write-Output "[OK] localMode 已改为 true"
} else {
Write-Output "[ERROR] 未找到 localMode 标志,可能版本已更新,请手动搜索"
exit 1
}
# Step 2: 更新 product.json 校验和
$pythonScript = @"
import hashlib, base64, json
js_path = r'$jsFile'
pj_path = r'$productFile'
with open(js_path, 'rb') as f:
content = f.read()
sha256 = hashlib.sha256(content).digest()
checksum = base64.b64encode(sha256).decode().rstrip('=')
with open(pj_path, 'r', encoding='utf-8') as f:
pj = json.load(f)
old = pj['checksums']['vs/workbench/workbench.desktop.main.js']
pj['checksums']['vs/workbench/workbench.desktop.main.js'] = checksum
with open(pj_path, 'w', encoding='utf-8') as f:
json.dump(pj, f, indent=4, ensure_ascii=False)
print(f'[OK] Checksum updated: {old} -> {checksum}')
"@
$pythonScript | python
恢复方法
如果需要恢复原样:
- 用备份文件覆盖(如果有)
- 或反向操作:将
localMode:!0改回localMode:!1,并重新计算校验和
powershell
# 恢复脚本
$cursorRoot = "D:\dev\cursor\resources\app"
$jsFile = "$cursorRoot\out\vs\workbench\workbench.desktop.main.js"
$text = [System.IO.File]::ReadAllText($jsFile)
$text = $text.Replace("cursorPredictionOptions:!1,localMode:!0", "cursorPredictionOptions:!1,localMode:!1")
[System.IO.File]::WriteAllText($jsFile, $text)
Write-Output "localMode restored to false"
# 然后重新运行 Step 2 的校验和更新
Cursor 更新后的处理
Cursor 每次更新都会覆盖这两个文件,需要重新执行 Step 1 和 Step 2。
建议将上面的自动化脚本保存为 patch-local-mode.ps1,更新后一键运行。
凭据优先级
Local Mode 下,API Key 和 Base URL 按以下优先级解析:
| 优先级 | API Key | Base URL |
|---|---|---|
| 1 | Model Details 中的 apiKey | Model Details 中的 openaiApiBaseUrl |
| 2 | Cursor 设置中存储的 openAIKey | Cursor 设置中存储的 openAIBaseUrl |
| 3 | 环境变量 CURSOR_LOCAL_AGENT_API_KEY |
环境变量 CURSOR_LOCAL_AGENT_BASE_URL |
| 4 | 环境变量 ANTHROPIC_AUTH_TOKEN |
环境变量 ANTHROPIC_BASE_URL |
已知问题与解决
| 问题 | 原因 | 解决 |
|---|---|---|
| "Your Cursor installation appears to be corrupt" | product.json 中的 SHA-256 校验和不匹配 |
执行 Step 2 更新校验和 |
| "Local Agent Not Configured" | API Key 或 Base URL 未配置 | 在 Settings → Models 中配置 |
| "Connection failed" | API 端点不可达或 Key 无效 | 检查 Base URL 和 API Key |
| Cursor 更新后失效 | 更新覆盖了修改的文件 | 重新运行补丁脚本 |
技术细节
- 修改位置:
workbench.desktop.main.js中偏移量约 542951 处 - 校验和算法:SHA-256,Base64 编码(去掉末尾
=填充) - 校验代码:
workbench.desktop.main.js中Gxo类的_isPure()方法 - 校验和存储:
product.json的checksums.vs/workbench/workbench.desktop.main.js字段