NOirBRight/dsh-llm-cursor1

dsh-llm-cursor

Unofficial Cursor subscription login and chat for DeepSeek Harness

包名
dsh-llm-cursor
版本
0.2.21
许可证
MIT
最近更新
2026年9月12日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:NOirBRight/dsh-llm-cursor

Web configuration

Open Settings → LLM Providers → Cursor. The card subtitle is the same warning as above: unofficial private endpoints; Cursor staff treat this as against ToS; the account can be banned.

Cursor plugin card: ToS warning, sign-in, subscription usage, and saved catalog

Sign in with Cursor starts a Host-owned Deep Control PKCE flow (the same session entry the official CLI uses), opens the system browser, and polls until the login completes. The session is stored only on the Host at $DSH_HOME/cursor-oauth.json (mode 0600). The card then shows the account email when known. Sign out deletes that file. The browser never receives tokens.

This plugin does not read or write ~/.cursor or official CLI credential files. There is no paste-code box and no Dashboard crsr_… API-key login.

After sign-in, Fetch available models reads the account catalog with GetUsableModels. Cursor lists every thinking-level SKU as a separate wire id; the plugin collapses those into one family and maps the chat thinking-level picker back to the matching wire id. Fast SKUs stay their own models. Fetch offers a sibling -1m row only for families Cursor actually has Max Context for (for example claude-opus-5-1m), not for every maxMode flag; saving keeps only the rows you picked. You can then reorder, rename, or edit capability flags. Chat uses that saved catalog.

Fetch picker: choose which model families to keep in the catalog

Chat model picker after the catalog is saved

Chat itself goes through HTTP/2 Connect+protobuf POST https://api2.cursor.sh/agent.v1.AgentService/Run. DSH remains the only agent loop and tool executor. When signed in, the card also shows subscription usage from the Cursor dashboard rails (Cursor Models / Other Models, and On-Demand when it has spend or a cap). Logged-out cards do not request usage; an unrecognized surface is shown as unsupported, not as an error.

The collapsed header first-paints the last successful quota from the shared browser cache when no live reading is available (never on error or unsupported); signing in, signing out, or an authoritative signed-out status purges the cached quota in every bundle copy, even without providerDirectory.

Chat without a session fails MISSING_CREDENTIAL. A stored session whose refresh fails is cleared and fails AUTH. A request 401 force-refreshes once at the adapter; remaining AUTH failures are eligible for the bundle's eight normal retries.