星火无痕: 自己撸个 Windsurf 号池管理器
星火无痕是个管 Windsurf 账号的 Electron 桌面应用。号攒多了切来切去全是体力活,到期时间、剩余额度、哪个还能跑全靠脑子记,早晚出岔子,索性做成一个集中管理的工具:批量注册、导入导出、分组、查询、切换全塞进一个跨平台应用里。
核心是无感换号,配合配套扩展在编辑器里不重启直接切,额度用尽自动跳下一个,还支持配额轮询、消息锚定切号、快捷键换号,以前手动干的现在基本不用管。使用统计也做了可视化,额度、积分、请求趋势摊在面板上,哪个号快见底一眼看出来。这仓库放的是应用本体源码,打成正式安装包还得配 Electron 运行时外壳和打包配置,那部分没放。当前 v8.4.8 还在迭代。
结构是标准 Electron 三层。主进程 main.js 建窗口、注册全部 IPC handler、集成系统能力,顺带管版本检测和维护模式;有个坑是启动时得把 HTTP_PROXY 这类代理环境变量隔离掉,不然会串进内部请求搞事。渲染进程 renderer.js 全走 ipcRenderer.invoke 回主进程要能力。后台 src/ 里注册机、临时邮箱、机器码重置各拆一个模块。
版本授权、注册中转、商店都甩给远端,客户端老实走 HTTP,接口地址、Worker 密钥、Firebase Key 收在 js/constants.js,运行时数据写用户目录 .xinghuowindsurf/shared-data。技术栈 Electron 26 打底,收码靠 axios、cheerio、puppeteer / puppeteer-real-browser 加 chrome-launcher,临时邮箱走 imap + mailparser,本地存储 sql.js,整个东西大概六万行 JS。
收码这块最磨人,内置了好几家临时邮箱,IMAP、API、Puppeteer 抓取都写了,单一渠道太不稳,得留后手互相兜底。还有个自愈小 patch,存下来的提示词老混进字面量 \n,每次启动顺手纠回真换行,不修用着总别扭。机器码重置、注册机、GitHub OAuth 带 TOTP 这些辅助,都是自己用得着才加的。
npm install
npm run check # 逐文件 node --check 语法检查 跳过 node_modules 和 vendor
npm start # electron . 直接起
Node 18+,建议 20+。MIT,源码在上面仓库,自己去翻。