dsh-connect-cursor:把本机 Cursor 登录态接入 DSH 模型选择器

前言

在 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 桌面应用文件:

  1. 环境变量 CURSOR_ACCESS_TOKEN
  2. 桌面应用 SQLite 库 state.vscdb 中的 JWT(需 Node 22.5+ 内置 node:sqlite)
  3. CLI 的 auth.json(macOS/Linux:~/.config/cursor/;Windows:%APPDATA%\Cursor\)
  4. 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 流式协议。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye