# CursorPro 用户体系分析

## 用户区分

从反混淆代码分析，CursorPro 并非简单的 "auto/pro" 用户区分，而是基于**激活码类型**和**积分系统**：

### 1. 激活码属性

每个激活码包含以下属性：
- `switchLimit` - 换号次数上限（默认100次）
- `expireDate` - 到期时间
- `membership_type` - 会员类型（对应 Cursor 官方的 Pro/Free）

### 2. 功能权限

| 功能 | 说明 |
|------|------|
| **一键换号** | 消耗1积分，切换到新的 Cursor 账号 |
| **无感换号** | 自动轮换账号池，需要激活码未过期 |
| **免魔法** | SNI 代理功能，无需翻墙使用 |
| **重置机器码** | 重置设备ID，需要管理员权限 |

### 3. 核心机制

```
┌─────────────────────────────────────────────┐
│           CursorPro 工作原理                 │
├─────────────────────────────────────────────┤
│                                             │
│  用户激活码 ──→ 服务器验证                    │
│       │                                     │
│       ▼                                     │
│  获取 Cursor 账号信息：                       │
│  • accessToken                              │
│  • refreshToken                             │
│  • WorkosCursorSessionToken                 │
│  • membership_type (Pro/Free)               │
│       │                                     │
│       ▼                                     │
│  写入本地 Cursor 配置：                       │
│  • state.vscdb (SQLite)                     │
│  • storage.json                             │
│  • machineid                                │
│       │                                     │
│       ▼                                     │
│  重启 Cursor ──→ 使用新账号                   │
│                                             │
└─────────────────────────────────────────────┘
```

### 4. Pro 账号获取

从代码中可以看到：
- 服务器端维护一个**账号池**
- 账号池包含 Cursor 官方的 Pro 账号
- 用户通过激活码访问这些共享账号
- `membership_type` 字段标识账号是 "pro" 还是 "free"

### 5. UI 元素

```css
.pro-badge {
    background: linear-gradient(90deg, #8b5cf6, #d946ef);
    /* 紫色渐变徽章，标识 PRO 功能 */
}
```

UI 显示内容：
- 剩余换号次数：`{switchRemaining} / {switchLimit}`
- 当前账号邮箱
- 会员类型（Pro/Free）
- 到期时间

### 6. 无感换号（Seamless Mode）

这是核心付费功能：
- 自动在多个账号间切换
- 当一个账号额度用完，自动切换到下一个
- 用户无感知，保持连续使用

```javascript
// 切换模式
mode: 'auto'    // 自动切换（当额度低于阈值）
mode: 'manual'  // 手动切换

// 切换阈值
switchThreshold: 10  // 剩余额度低于10%时自动切换
```

## 总结

**用户等级实际上是由激活码决定的**：
- 不同激活码有不同的 `switchLimit`（换号次数）
- 服务器决定给用户分配 Pro 还是 Free 账号
- "Pro 用户能拿 Pro 号" 取决于服务器的分配策略，而非插件本身
