dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
把本机已登录的 Cursor 桌面应用接入 dsh,原生 LlmAdapter 直连:从 state.vscdb 或 auth.json 读登录态,驱动 agent.v1.AgentService/Run 的 HTTP/2 双向流,把 InteractionUpdate 增量翻成 dsh StreamChunk,不走 loopback 代理。支持 macOS / Windows / Linux。
把本机已登录的 Cursor 桌面应用的模型接入 DeepSeek Harness(dsh),在 dsh 的模型选择器里直接使用 Cursor 账号能调用的模型。
非官方。逆向自 Cursor 的
agent.v1.AgentService/Run私有协议(ConnectRPC + Protobuf + HTTP/2 双向流),与 Cursor(Ansysphere)、DeepSeek 均无关联。仅供个人学习研究。
state.vscdb 里的 JWT),不启动额外 OAuthagent.v1.AgentService/Run,用原生 LlmAdapter 把 Cursor 的流式增量翻成 dsh 的 StreamChunk(不走 loopback 代理)AvailableModels unary 调用实时拉取CURSOR_ACCESS_TOKEN 环境变量state.vscdb(SQLite,需 Node 22.5+ 内置 node:sqlite)auth.json(macOS/Linux ~/.config/cursor/,Windows %APPDATA%\Cursor\)CURSOR_API_KEY(crsr_ 开头,换取短期 token)均为只读,不写入桌面应用文件。JWT 约 1 小时有效,由运行中的桌面应用刷新;过期时重新打开 Cursor 即可。
x-cursor-client-version 过期会被上游以误导性限流错误拒绝,用 CURSOR_CLI_VERSION 跟一个真实 CLI 版本号model_details.model_id 必须是默认 variant 的 slug(如 claude-sonnet-5-thinking-high),基础 id 会被拒为 ERROR_BAD_MODEL_NAMEUserMessageAction 必须带 request_context(缺了服务端只发心跳不产出)lib/schema.js 从 Cursor 自带的 workbench.desktop.main.js 提取 protobuf schema(约 800 个类型),供 Cursor 升级后重新核对字段号;编码本身不依赖它turn_ended,usage 可能为空dsh plugin --profile web add github:greatyao/dsh-connect-cursor
安装后重启 dsh,模型选择器出现 cursor 分组。
node --test test/*.test.js # 46 个单测
macOS / Windows / Linux。插件按平台探测 Cursor 桌面应用的安装位置:
/Applications/Cursor.app/Contents/Resources/app%LOCALAPPDATA%\Programs\cursor\resources\app/usr/share/cursor/resources/app、/opt/Cursor/resources/app非默认安装位置用 CURSOR_APP_PATH 指向应用根目录,或用 CURSOR_WORKBENCH_BUNDLE 直接指向 workbench.desktop.main.js。
凭据按平台读取:macOS ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb、Windows %APPDATA%\Cursor\User\globalStorage\state.vscdb、Linux ~/.config/Cursor/User/globalStorage/state.vscdb。需 Node 22.5+(内置 node:sqlite)。
Windows 上未实测;如遇问题请提 issue。
仅供个人学习研究使用。使用者需遵守 Cursor 的服务条款,因使用本项目产生的后果由使用者自行承担。
MIT