[WorkBuddy] 多开实例共用 shared auth,后启动账号会覆盖所有已运行实例
环境
- 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.infoCockpit 启动不同实例时,实际上仍然在修改这一份共享认证文件。
实际测试:
只启动实例 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一个实例启动或切换账号时,不应该修改其它已经运行实例的认证状态。
建议修复方向
- WorkBuddy 多开除了隔离配置目录 / userData,还需要隔离
CodeBuddyExtension的认证存储。 - 启动实例时,账号注入目标不应固定写当前 Windows 用户共享的:
%LOCALAPPDATA%\CodeBuddyExtension\Data\Public\auth\workbuddy-desktop.info - 如果 WorkBuddy 本身没有可用的 auth root / profile 参数,可考虑:
- 查找 WorkBuddy/CodeBuddyExtension 是否支持独立 profile/auth root;
- 为不同实例提供真正隔离的用户 Profile;
- 或对
CodeBuddyExtension的 auth storage 做 per-instance redirect / virtualization。
影响
当前 WorkBuddy 多开可以启动多个进程,但无法可靠地让多个不同账号同时运行。
也就是说,“实例绑定不同账号”在并发运行时实际上失效。
Source: jlcodes99/cockpit-tools