为了方便统一管理,本仓库将不再继续维护,并于 2026-9-17 将本仓库功能集成到主项目:https://github.com/star620/TraeTools ,后续有关Trae Work客户端的便利工具的维护和新增也会围绕TraeTools项目管理,如果你有更好的意见和想法,欢迎来到TraeTools项目提交建议issue,或你的pr!
作者:星梦 一个用于在 TRAE 多个账号之间「冷切换」的 Windows 桌面小工具。先为每个账号建档一份登录态备份,之后无需验证码即可一键切换到目标账号,并内置「切换守护」在切换失败时自动回滚。
![]()
![]()
- 多账号建档:为每个账号备份一份登录态(
vault),只对“随账号切换而变化”的载体文件做字节备份。 - 自动识别当前登录账号:客户端退出后,通过判别文件哈希自动识别当前会话属于哪个账号,并在列表中标为「当前账号 ✓」。
- 一键冷切换:选中目标账号后一键完成:结束客户端 → 写回目标账号登录态 → 重新启动,免验证码进入。
- 切换守护:切换后轮询客户端登录会话写入,自动判定 Active / RolledBack / NeedsConfirm;判定失败时自动回滚到切换前的账号并重启。
- 快照自动刷新:客户端退出后,工具会静默用当前有效会话刷新该账号的备份(内容确有变化才更新),让备份保持“新鲜”。
- 建档即校验:建档后立即校验,回显载体文件数,确保备份可恢复。
- 单实例运行:仅允许启动一个实例,再次双击会自动唤起已运行的窗口。
- 单元测试:核心逻辑(守护判定、凭据探测、判别集、载体指纹)带单元测试,保证切换可靠性。
程序是一个 C# WinForms 桌面应用(.NET 9),运行流程如下:
┌─────────────────────────────────────────────────────────────┐
│ 建档(每个账号一次) │
│ 确认客户端登录该账号 → 结束客户端(解除登录态文件占用) │
│ → 自动识别当前账号 → 备份载体文件到 vault\<账号>\ │
└──────────────────────────────┬──────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ 一键切换目标账号 │
│ 结束客户端 → 把当前 live 快照到临时回滚区 → │
│ 写回目标账号 vault → 拉起客户端 │
└──────────────────────────────┬──────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────┐
│ 切换守护 │
│ 轮询 storage.json 会话写入(最长 20 秒): │
│ ├─ 写入过 + 凭据齐全 ──► Active(已进入目标账号) │
│ ├─ 凭据缺失/未起来 ──► RolledBack(自动回滚并重启) │
│ └─ 信号不足 ────────► NeedsConfirm(弹窗让用户确认) │
└─────────────────────────────────────────────────────────────┘
核心组件:
| 文件 | 作用 |
|---|---|
Program.cs |
程序入口、单实例互斥锁、窗口唤起 |
MainForm.cs |
主界面、一键建档/切换、自动识别、快照自动刷新 |
Services/VaultService.cs |
账号登录态按“载体”字节备份、恢复、判别文件识别 |
Services/SwitcherService.cs |
冷切换编排 + 切换守护(Active/RolledBack/NeedsConfirm) |
Services/AuthProbe.cs |
登录凭据键探测、会话写入判定(只读,不会误回滚) |
Services/CarrierProfiler.cs |
载体目录哈希指纹与 diff |
Services/ClientController.cs |
按进程名结束/启动客户端 |
Services/SettingsStore.cs |
本地配置 settings.json 读写 |
TraeSwitch.Probe |
Phase 0 载体定位脚本(找出随账号切换而变化的文件) |
TraeSwitch.Tests |
单元测试(守护四态、凭据探测、判别集、指纹) |
TRAE 客户端的帐号登录态保存在本地文件(User\globalStorage\storage.json、LevelDB 等)。VaultService 只对这些“随账号切换而变化”的载体做字节备份到 <vault>\<账号>\;切换时整体写回 live 目录。
自动身份识别(VaultService):计算“判别文件”集合——跨账号哈希互不相同或仅部分账号拥有的载体文件,用它来给 live 计算相似度,避免共享文件把分数拉向中间、降低区分度。同机共享、每次运行都改写的 noise/运行痕迹文件(如 LevelDB 的 LOG、config.db)会被剔除,保证识别稳定。
切换守护(SwitcherService.SwitchWithGuardAsync):
- 结束客户端进程,并把当前 live 快照到临时回滚区。
- 写回目标账号 vault,拉起客户端。
- 最多等待 20 秒,轮询
storage.json是否被写入过(云会话在工作)。 - 依据“是否写入 + 凭据是否齐全”判定 Active / RolledBack / NeedsConfirm,失败时自动回滚并重启。
注意:需要先在该账号上登录一次并建档,才能对它免验证码切换;退出的会话凭据长期有效(周级),快照自动刷新可保持其新鲜。
- Windows 10 / 11(TRAE SOLO CN 客户端已安装)
- .NET 9 运行时(或使用已发布的可执行文件)
- 登录账号 A,点「建档(自动识别+一键)」,确认后自动退出客户端并建档。
- 切到账号 B 登录,同样点一次「建档」。
- 在列表中选中要切换到的账号,点「切换到选中账号」即完成冷切换。
- 切换后确认已进入目标账号即可正常使用;退出客户端时点「刷新列表」,工具会自动用当前会话刷新该账号备份。
默认指纹可能不覆盖你的客户端版本。可先运行 TraeSwitch.Probe,在“登录前/登录后”各扫一次目录指纹,把 diff 出的变化相对路径填到 settings.json 的 Fingerprint 列表中,再行建档。
# 编译主程序(输出到 bin\TraeSwitch\)
dotnet build TraeSwitch.csproj -c Release
# 跑单元测试
dotnet test TraeSwitch.Tests\TraeSwitch.Tests.csproj| 内容 | 路径 |
|---|---|
| 配置(账号列表、客户端路径、载体指纹) | %APPDATA%\TraeSwitch\settings.json |
| 各账号登录态备份(vault) | %LOCALAPPDATA%\TraeSwitch\vault\<账号>\ |
⚠️ 安全提示:vault中保存着各账号的登录态字节(等同登录凭证),极其敏感。请勿将vault目录或包含登录态的文件提交到任何公开仓库或分享给他人。
本项目为作者个人技术学习成果,旨在研究 Windows 桌面应用开发及本地应用程序数据管理机制。
使用前提:
- 使用本工具前,请确保您已阅读并同意 Trae 官方服务条款。
- 本工具仅用于在您本人拥有的设备上,管理您本人合法持有的多个 Trae 账号的本地登录状态(例如区分工作账号与个人账号),不涉及对 Trae 客户端程序代码的任何修改、注入或破解。
- 本工具通过分析客户端本地存储文件的变化规律实现状态识别与备份,所有操作均在用户本地完成。
明确禁止:
- 禁止将本工具用于批量账号注册、账号交易、共享账号租赁、工作室多开或任何违反平台用户协议的行为。
- 禁止将
vault备份目录及其中的登录态文件上传至网络、存储于公共云盘或分享给任何第三方。 - 禁止在二次分发本工具时移除或修改本声明。
数据安全:
vault目录中存储的文件包含您的账号登录态信息,等同于账号凭证,具有极高敏感性。- 请务必确保
vault目录仅保存在您个人可控的本地设备中,并建议启用设备级加密(如 Windows BitLocker)以防止数据泄露。 - 因您未妥善保管
vault文件导致的账号被盗用、信息泄露或其他损失,作者不承担责任。
责任限制:
- 本工具按"现状"提供,作者不对因平台策略调整、账号共享、备份文件泄露或操作不当导致的账号封禁、数据丢失承担责任。
- 切换前请确保目标账号为您本人所有,因使用他人账号导致的法律纠纷与本项目无关。
- 如 Trae 官方推出官方多账号管理功能,建议立即停用本工具。
与官方关系:
- 本项目为独立开源作品,与字节跳动、Trae 或其关联公司无任何隶属、合作或授权关系。
GPL-3.0 © 星梦