前言¶
在 DeepSeek Harness(dsh)里跑智能体时,模型通常走各家 API 或 dsh 自带的适配层。若你本机已经用 Cursor 桌面端登录,账号能调用的模型却没法直接在 dsh 的模型选择器里选,就要单独配密钥或换通道。
社区插件 greatyao/dsh-connect-cursor 针对的是这条路径:复用本机 Cursor 的登录态,通过原生 LlmAdapter 直连 Cursor 私有的 agent.v1.AgentService/Run 双向流,把流式结果翻成 dsh 的 StreamChunk,不走 loopback 代理。下面介绍它是什么、怎么装、用之前需要知道什么。
这是什么¶
- 名称:dsh-connect-cursor(仓库 greatyao/dsh-connect-cursor)
- 维护者:greatyao
- 分类:联网工具(社区目录 SkillHub 条目)
- 定位:把本机已登录的 Cursor 桌面应用能用的模型,挂到 dsh 的模型选择器里使用。
README 明确说明:非官方项目;协议逆向自 Cursor 的 ConnectRPC + Protobuf + HTTP/2 实现,与 Cursor(Anysphere)、DeepSeek 均无关联,仅供个人学习研究。许可证为 MIT。
工作原理(与凭据)¶
插件按优先级只读获取凭据,不写入 Cursor 桌面应用文件:
- 环境变量
CURSOR_ACCESS_TOKEN - 桌面应用 SQLite 库
state.vscdb中的 JWT(需 Node 22.5+ 内置node:sqlite) - CLI 的
auth.json(macOS/Linux:~/.config/cursor/;Windows:%APPDATA%\Cursor\) CURSOR_API_KEY(crsr_开头,用于换取短期 token)
JWT 约 1 小时有效,一般由运行中的桌面应用刷新;过期时可重新打开 Cursor。
运行时行为要点:
- 通过 HTTP/2 双向流调用
agent.v1.AgentService/Run,用原生LlmAdapter做流式增量到StreamChunk的映射。 - 模型列表通过
AvailableModels一元调用实时拉取,安装并在 dsh 重启后,模型选择器会出现cursor分组。
安装与启用¶
安装命令来自仓库 README(使用 web profile):
dsh plugin --profile web add github:greatyao/dsh-connect-cursor
安装完成后重启 dsh,在模型选择器里确认是否出现 cursor 分组及对应模型。
插件以当前 dsh 进程的权限运行,安装前建议浏览仓库源码与 MIT 许可证,并知悉 README 中的免责声明:使用者需遵守 Cursor 服务条款,后果自行承担。
平台与路径¶
支持 macOS、Windows、Linux。插件会按平台探测 Cursor 桌面应用安装位置,例如:
- macOS:
/Applications/Cursor.app/Contents/Resources/app - Windows:
%LOCALAPPDATA%\Programs\cursor\resources\app - Linux:
/usr/share/cursor/resources/app、/opt/Cursor/resources/app
非默认安装位置可设置:
CURSOR_APP_PATH:指向应用根目录CURSOR_WORKBENCH_BUNDLE:直接指向workbench.desktop.main.js
state.vscdb 的典型路径:
- macOS:
~/Library/Application Support/Cursor/User/globalStorage/state.vscdb - Windows:
%APPDATA%\Cursor\User\globalStorage\state.vscdb - Linux:
~/.config/Cursor/User/globalStorage/state.vscdb
README 注明 Windows 上未实测,遇问题可在 GitHub 提 issue。
典型用法¶
文档侧没有单独的「对话示例」脚本;可复现的用法就是:安装插件 → 重启 dsh → 在模型选择器选择 cursor 分组下的模型,与使用其他 dsh 模型一样驱动 Harness 里的智能体流程。
开发与自测(仓库内):
node --test test/*.test.js
README 写明当前有 46 个单测。
已知限制与排错¶
使用前建议通读 README「已知限制」,避免把时间耗在协议细节上:
| 现象 / 约束 | 说明 |
|---|---|
| 客户端版本门控 | 请求头 x-cursor-client-version 过期时,上游可能以误导性限流错误拒绝;可用 CURSOR_CLI_VERSION 设为真实 CLI 版本号 |
| 模型 ID | model_details.model_id 须为默认 variant 的 slug(如 claude-sonnet-5-thinking-high),基础 id 可能被拒为 ERROR_BAD_MODEL_NAME |
| 用户消息 | UserMessageAction 必须带 request_context,否则服务端可能只发心跳、无产出 |
| Schema 维护 | lib/schema.js 从 Cursor 自带的 workbench.desktop.main.js 提取 protobuf schema(约 800 类型),Cursor 升级后宜重新核对字段号;编码本身不依赖该文件 |
| 用量统计 | Cursor 不总发 turn_ended,usage 可能为空 |
适用场景与注意¶
适合:本机已登录 Cursor 桌面端、希望在 dsh 里统一选模型跑 Harness、愿意接受私有协议逆向带来的版本与合规风险的个人学习研究场景。
不适合或需谨慎:生产环境强依赖稳定 SLA、需要官方支持的 Cursor 集成、或无法接受 token 从本机状态库/环境变量读取的场景。
DSH 生态强调「一切皆插件」;SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系,本插件同样属于社区维护的联网工具类扩展。
结尾¶
dsh-connect-cursor 的价值可以概括为:在不大改 dsh 的前提下,把本机 Cursor 账号可用的模型接进 Harness 的模型选择器,并用原生 LlmAdapter 对接 agent.v1.AgentService/Run 流式协议。