[WorkBuddy] 多开实例共用 shared auth,后启动账号会覆盖所有已运行实例

Author: 3098828727Created Sep 18, 2026Updated Sep 18, 2026

环境

  • Windows 10
  • WorkBuddy 5.5.6
  • WorkBuddy 路径:E:\WorkBuddy\WorkBuddy.exe
  • Cockpit Tools:当前测试版本

问题描述

Cockpit Tools 中创建多个 WorkBuddy 实例,并分别绑定不同账号时,单独启动任意实例都可以正确登录到对应账号。

但是当两个或多个实例同时运行时,后启动实例会覆盖前一个实例的登录状态,最终所有正在运行的 WorkBuddy 都会变成最后启动实例所绑定的账号。

例如:

实例 A -> CHEN
实例 B -> 没名字

单独启动 A:

WorkBuddy -> CHEN

单独启动 B:

WorkBuddy -> 没名字

但先启动 A,再启动 B 后:

A -> 没名字
B -> 没名字

也就是后启动实例覆盖了前一个实例的登录状态。

本地排查结果

Windows 下 WorkBuddy 5.5.6 的实际登录态文件为:

C:\Users\<当前Windows用户>\AppData\Local\
CodeBuddyExtension\Data\Public\auth\
workbuddy-desktop.info

Cockpit 启动不同实例时,实际上仍然在修改这一份共享认证文件。

实际测试:

只启动实例 A / CHEN 后:

workbuddy-desktop.info
Length = 9854
SHA256 = 432C48...

再启动实例 B / 没名字:

同一路径
Length = 9824
SHA256 = 1B42BC...

文件被覆盖后,已经运行中的实例 A 也自动切换成 B 的账号。

同时递归搜索以下目录:

%LOCALAPPDATA%
%APPDATA%
%APPDATA%\.antigravity_cockpit\instances\workbuddy

只发现这一份 workbuddy-desktop.info,没有发现 per-instance 的 auth 文件。

因此当前实际结构相当于:

Cockpit WorkBuddy 实例 A ─┐
                          ├─> 当前 Windows 用户共享的
Cockpit WorkBuddy 实例 B ─┘   CodeBuddyExtension\...\workbuddy-desktop.info

而不是每个实例拥有独立 auth。

进一步验证

尝试为不同 WorkBuddy 进程分别设置:

LOCALAPPDATA
APPDATA
WORKBUDDY_CONFIG_DIR
WORKBUDDY_USER_DATA_DIR

并把独立的 workbuddy-desktop.info 放进对应的自定义 LOCALAPPDATA

结果 WorkBuddy 启动后显示“未登录”,说明 WorkBuddy 5.5.6 的 CodeBuddyExtension 登录态路径并不简单跟随进程级 LOCALAPPDATA 重定向。

随后使用两个独立 Windows 本地用户运行同一个:

E:\WorkBuddy\WorkBuddy.exe

例如:

WB_CHEN
WB_NONAME

分别产生:

C:\Users\WB_CHEN\AppData\Local\
CodeBuddyExtension\Data\Public\auth\
workbuddy-desktop.info

和:

C:\Users\WB_NONAME\AppData\Local\
CodeBuddyExtension\Data\Public\auth\
workbuddy-desktop.info

此时两个 WorkBuddy 可以长期稳定同时运行不同账号,分别提问也正常,互不串号。

这个对照实验基本可以确认问题位于“用户级认证存储未按实例隔离”。

推测根因

Cockpit 的 WorkBuddy 多开目前应该已经隔离了部分实例配置 / userData,但账号注入仍然写入 Windows 当前用户级共享认证文件:

%LOCALAPPDATA%\CodeBuddyExtension\Data\Public\auth\
workbuddy-desktop.info

因此多个 WorkBuddy 虽然进程和部分实例目录不同,但认证层仍然共享。

这会导致:

启动实例 A
-> shared auth 写入账号 A

启动实例 B
-> shared auth 被覆盖为账号 B

已运行实例 A
-> 读取到同一份 auth
-> 也切换成账号 B

期望行为

每个 WorkBuddy 多开实例应该拥有完全独立的认证状态,例如:

instance A
├─ config
├─ userData
└─ auth A

instance B
├─ config
├─ userData
└─ auth B

一个实例启动或切换账号时,不应该修改其它已经运行实例的认证状态。

建议修复方向

  1. WorkBuddy 多开除了隔离配置目录 / userData,还需要隔离 CodeBuddyExtension 的认证存储。
  2. 启动实例时,账号注入目标不应固定写当前 Windows 用户共享的:
    %LOCALAPPDATA%\CodeBuddyExtension\Data\Public\auth\workbuddy-desktop.info
  3. 如果 WorkBuddy 本身没有可用的 auth root / profile 参数,可考虑:
    • 查找 WorkBuddy/CodeBuddyExtension 是否支持独立 profile/auth root;
    • 为不同实例提供真正隔离的用户 Profile;
    • 或对 CodeBuddyExtension 的 auth storage 做 per-instance redirect / virtualization。

影响

当前 WorkBuddy 多开可以启动多个进程,但无法可靠地让多个不同账号同时运行。

也就是说,“实例绑定不同账号”在并发运行时实际上失效。