XG-Windsurf 激活管理工具 - VS Code 扩展
🤖 声明:本项目包含大量 AI 辅助生成的代码,主要用于学习和研究目的。代码质量和架构设计可能存在不足之处,欢迎各位大佬提出改进建议,请轻喷 🙏
- ✨ 账户激活管理 - 激活码验证和管理
- 🔄 无感换号 - 实现账号无缝切换,无需手动重新登录
- 🖥️ 多设备支持 - 支持多台设备使用同一激活码
- 🚀 自动登录 - 通过动态补丁实现自动注入认证信息
- 📂 路径管理 - 自动检测和管理 Windsurf 安装路径
- 📢 公告获取 - 获取服务器端公告信息
通过动态修补(Runtime Patching) Windsurf 的核心扩展文件,注入自定义认证命令,实现账号的无缝切换。
项目会在运行时检查 Windsurf 的核心扩展文件(extension.js)是否已应用补丁:
检查补丁特征关键字:
- "windsurf.provideAuthTokenToAuthProviderWithShit"
- "handleAuthTokenWithShit"
如果未检测到补丁,系统会自动:
- 定位原始函数 - 查找
handleAuthToken函数(Windsurf 原生的认证处理函数) - 注入新函数 - 在原函数后插入
handleAuthTokenWithShit函数 - 注册自定义命令 - 添加
windsurf.provideAuthTokenToAuthProviderWithShit命令 - 写入文件 - 将修改后的内容写回
extension.js
| 对比项 | 原生 handleAuthToken |
补丁 handleAuthTokenWithShit |
|---|---|---|
| 认证流程 | 调用 registerUser(token) 向服务器验证 |
直接接受传入的认证信息 |
| 网络请求 | 需要连接官方服务器验证 | 无需额外网络请求 |
| 适用场景 | 官方正常登录流程 | 自定义激活码系统 |
核心代码差异:
// 原生函数 - 需要服务器验证
async handleAuthToken(A) {
const e = await (0, Q.registerUser)(A); // ← 这里会请求官方服务器
const { apiKey: t, name: i } = e;
// ...
}
// 补丁函数 - 直接使用传入的凭据
async handleAuthTokenWithShit(A) {
const { apiKey: t, name: i } = A; // ← 直接使用传入参数,无需验证
// ...
}当用户点击"刷新"或激活账号时:
1. 检查补丁状态
↓
2. 如需要则应用补丁(并重启 Windsurf)
↓
3. 执行登出命令(清理旧会话)
↓
4. 调用自定义命令注入新会话
vscode.commands.executeCommand(
"windsurf.provideAuthTokenToAuthProviderWithShit",
{
apiKey: "your-api-key",
name: "[email protected]",
apiServerUrl: "https://api.example.com"
}
)
↓
5. 会话注入到 VSCode Secrets
↓
6. 触发会话变更事件,更新 UI
补丁会修改以下文件(具体路径因操作系统而异):
- Windows:
%LOCALAPPDATA%\Programs\Windsurf\resources\app\extensions\codeium.windsurf-...\dist\extension.js - macOS:
/Applications/Windsurf.app/Contents/Resources/app/extensions/codeium.windsurf-.../dist/extension.js - Linux:
~/.windsurf/resources/app/extensions/codeium.windsurf-.../dist/extension.js
由于需要修改系统文件,项目包含权限检测机制:
- Windows: 检测文件是否可写,提示以管理员身份运行 Windsurf
- macOS/Linux: 检测文件权限,提示使用
chmod修改权限
- 补丁仅修改本地文件,不涉及网络攻击或破解
- 补丁函数与原生函数逻辑几乎完全相同,仅跳过服务器验证步骤
- 每次 Windsurf 更新后,补丁可能需要重新应用
- 使用自定义激活系统替代官方认证服务器
用户只需点击账号列表中的其他账号,系统会:
- 自动登出当前账号
- 自动注入新账号的认证信息
- 自动刷新 Cascade 界面
整个过程无需手动操作,体验如同在多个官方账号间切换。
- 克隆本仓库
git clone https://github.com/your-username/xg-windsurf.git
cd xg-windsurf- 安装依赖
npm install- 编译项目
npm run build- 打包扩展
npm run package在开始使用前,你需要配置API服务器地址。编辑 src/config/api.ts 文件:
export const API_CONFIG = {
BASE_URL: 'http://your-api-server.com', // 替换为你的API服务器地址
TIMEOUT: 30000,
} as const;项目使用以下API端点(请确保你的服务器实现这些端点):
-
POST /api/account/validate-key- 激活码验证请求: { "key_code": "xxx", "device_id": "xxx" } 响应: { "code": 200, "msg": "success", "data": {...} }
-
POST /api/account/activate-refresh- 刷新激活状态请求: { "key_code": "xxx", "device_id": "xxx" } 响应: { "code": 200, "data": { "account": "{...}", // JSON字符串,包含 apiKey, name, apiServerUrl 等 "metadata": "...", "timestamp": "..." } }
POST /quota/api/key-usage- 获取配额使用状态GET /api/announcements- 获取公告列表POST /api/key/convert- Cursor密钥转换为Windsurf密钥
npm run watch这会同时启动:
- Extension 监听模式(后端)
- Webview 开发服务器(前端)
npm run build构建后的文件位于 dist/ 目录。
npm run package生成 .vsix 文件,可在 VS Code / Windsurf 中手动安装。
xg-windsurf/
├── src/
│ ├── config/ # 配置文件
│ │ └── api.ts # API服务器配置
│ ├── services/ # 核心服务
│ │ ├── apiService.ts # API请求封装
│ │ ├── storageService.ts # 本地存储
│ │ ├── windsurfPatchService.ts # 补丁注入(核心)
│ │ ├── windsurfAutoLoginService.ts # 自动登录
│ │ └── windsurfPathService.ts # 路径检测
│ ├── types/ # TypeScript 类型定义
│ ├── webview/ # 前端界面(React)
│ │ ├── components/ # React 组件
│ │ ├── provider.ts # Webview Provider
│ │ └── App.tsx # 主应用
│ └── extension.ts # 扩展入口
├── webpack/ # Webpack 配置
├── package.json # 项目配置
└── README.md # 本文件
-
后端(Extension)
- TypeScript
- VS Code Extension API
- Node.js fs/path 模块
-
前端(Webview)
- React 19
- TypeScript
- Webpack 5
- CSS 样式
-
构建工具
- Webpack
- ts-loader
- @vscode/vsce
查看 LICENSE 文件了解详情。
欢迎提交 Pull Request 和 Issue!
关于代码质量:
- 本项目大部分代码由 AI 辅助生成,可能存在不够优雅或不符合最佳实践的地方
- 非常欢迎各位大佬指出问题并提供改进建议
- 如果你有更好的实现方案,欢迎直接提交 PR
在提交 PR 前,请确保:
- 代码通过 ESLint 检查 (
npm run lint) - 所有 TypeScript 类型正确
- 测试通过(如有)
- 提交信息清晰明了
A: 检查以下几点:
- Windsurf 是否以管理员/root权限运行?
- Windsurf 版本是否兼容?(补丁基于特定版本开发)
extension.js文件是否被防病毒软件锁定?
A:
- 确保补丁已成功应用(检查日志)
- 尝试重启 Windsurf
- 检查账号的
apiKey和apiServerUrl是否正确
A: 是的。Windsurf 更新会覆盖 extension.js 文件,补丁需要重新应用。
A: 理论上支持所有包含 handleAuthToken 函数的版本,但建议使用最新稳定版。
- 本项目需要配合后端API服务器使用
- 后端API应返回明文数据(本开源版本已移除加密功能)
- 首次使用前必须在
src/config/api.ts中配置API服务器地址 - 补丁会修改 Windsurf 的系统文件,请确保有备份
- 仅供学习交流使用,请勿用于非法用途
💬 项目交流 QQ: 2395097929
欢迎添加 QQ 交流项目使用问题、提出建议或分享你的使用经验!
- 🤖 感谢 AI 编程助手(Cascade/Cursor/Claude 等)在开发过程中提供的巨大帮助
- 💻 感谢 Windsurf 团队开发了如此优秀的 AI 编程工具
- 🌟 感谢所有为开源社区做出贡献的开发者!
- 🙏 感谢每一位使用本项目并提出宝贵意见的朋友