workbuddy-switch README

The project's README from github.com/changexbc/workbuddy-switch. As one markdown file: README.md.

workbuddy-switch

WorkBuddy / CodeBuddy CLI / CodeBuddy CN IDE 账号切换桌面 App(Tauri),支持积分到期监控与自动签到。

同时提供 npm / webui 版本,方便在浏览器中使用同一套账号管理能力。

多账号共享登录态(workbuddy-desktop.info),一键切换 WorkBuddy 登录账号,并支持将当前账号的会话复制给目标账号(云端归属目标)。

WorkBuddy Switch 图标

workbuddy-switch
WorkBuddy / CodeBuddy CLI 账号切换工具

在线演示

打开 GitHub Pages 在线演示(只读演示;账号、积分与请求记录均为虚构数据,所有业务操作均已禁用。)

快速开始

npm 安装(webui)

npm i -g workbuddy-switch
workbuddy-switch              # 启动本地服务 + 自动打开浏览器
workbuddy-switch status       # 终端查看当前账号

webui 界面与桌面 App 一致:WorkBuddy / CodeBuddy CLI / CodeBuddy IDE 账号切换、积分到期监控、自动签到、会话复制、Token 统计与 token 保活。

桌面 App

前往 GitHub Releases 下载对应平台的安装包:

平台 安装包 安装方式
macOS Apple Silicon(M 系列,arm64) workbuddy-switch_<版本>_aarch64.dmg 打开 DMG,将 workbuddy-switch.app 拖入「应用程序」
macOS Intel(x86_64) workbuddy-switch_<版本>_x86_64.dmg 打开 DMG,将 workbuddy-switch.app 拖入「应用程序」
Windows x64 workbuddy-switch_<版本>_x64-setup.exe 运行安装程序并按提示完成安装
Linux x64 workbuddy-switch_<版本>_amd64.deb / workbuddy-switch_<版本>_amd64.AppImage Debian/Ubuntu 安装 .deb;其他发行版可给 AppImage 添加执行权限后直接运行

macOS 首次启动若提示无法验证开发者,先在 Finder 中按住 Control 点击应用并选择「打开」,或前往「系统设置 → 隐私与安全性」选择「仍要打开」。仅当安装包来自上述官方 Releases、且系统仍提示「已损坏」时,再执行:

xattr -rd com.apple.quarantine "/Applications/workbuddy-switch.app"

应用能启动但切换账号时提示无权限,请参阅下方 macOS 权限说明。

功能

模块 说明
账号管理 OAuth 扫码登录、从本机导入、手动添加 token、删除账号
账号切换 备份认证文件 → 关闭 WorkBuddy → 写入目标账号 → 重启,切换过程实时进度反馈
会话复制 将当前账号勾选的会话以新 id 复制给目标账号(jsonl 正文 + workbuddy.db 索引 + edge-sync 注册)
自动签到 默认开启;启动时立即检查,运行期间每 30 分钟自动补签;一键全部签到;30 天签到日志
Token 保活 惰性刷新(操作前不足阈值刷新)+ 每日保活(默认每天无条件刷新一次,阈值 >0 时仅刷新剩余不足该天数的账号),避免 refresh token 过期
积分到期查询 自动查询每个账号的 WorkBuddy 积分资源、剩余量和到期时间;7 天内到期高亮并按到期优先排序
积分统计 汇总 WorkBuddy 官方请求用量,展示每日趋势、模型分布、账号消耗和请求明细;官方数据不可用时明确回退到本地余额快照观察
Token 统计 分别查看 WorkBuddy、CodeBuddy CLI 与 CodeBuddy IDE 的 Token 总览;输入、输出、缓存读写按 K/M/B 展示,趋势图同时呈现每日 Token 构成与调用次数,并提供构成占比、热力图、项目/模型 Top 10 和会话排行
CodeBuddy CLI 与 WorkBuddy 复用同一账号库,但默认账号独立;macOS/Linux 通过 apiKeyHelper,Windows 通过 settings.json.env.CODEBUDDY_AUTH_TOKEN 设置后续会话使用的账号;任何平台都不会修改正在运行的当前会话
CodeBuddy CN IDE 复用同一账号库,向 CodeBuddy CN 桌面客户端注入 Safe Storage 凭证(state.vscdb / planning-genie.new.accessTokencn)并重启 IDE;与 CodeBuddy CLI、国际版 CodeBuddy 无关
自动轮换 后台定时把 CodeBuddy CLI 的后续启动账号设为积分最紧迫(最早到期)的账号;当前会话保持原账号,重新加载会话或重启 CLI 后使用新的账号
自动更新 配置 GitHub Releases 源检查新版本;整包更新经签名校验(tauri-updater)
权限检测 macOS 授权引导(App 管理 / 完全磁盘访问拖拽授权 + 自动检测)

使用

  1. 添加账号:账号页 →「扫码登录」(OAuth device flow)或「从本机导入」「手动添加」
  2. 切换账号:账号卡片 →「切换」,可勾选复制当前会话
  3. 自动签到:账号页可直接开关;设置页可调整保活参数、立即签到并查看日志
  4. 查看积分到期:账号页会自动查询各账号积分资源;点击「刷新积分」可手动更新,临近到期的资源会高亮,并把快过期账号按最近到期时间排序,最前面的标记为「建议优先使用」
  5. 查看积分统计:侧栏进入「积分统计」,查看总览、近 30 天趋势、模型分类、账号消耗与请求明细;筛选账号或时间范围不会重复请求官方接口,点击「刷新统计」才会重新采集
  6. 查看 Token 统计:侧栏进入「Token 统计」,选择 WorkBuddy、CodeBuddy CLI 或 CodeBuddy IDE,查看输入、输出、缓存读写和调用次数。图表使用 K/M/B 单位,趋势图将每日 Token 总量与构成、调用次数合并展示;项目、模型和会话排行默认显示 Top 10,不足 10 项时按实际数量展示。
  7. CodeBuddy CN IDE:账号卡片可一键切换国内版桌面客户端(www.codebuddy.cn)。切换会关闭并重启 CodeBuddy CN,把所选账号写入本机 ~/Library/Application Support/CodeBuddy CN 的登录态;首次使用前请先手动打开并登录一次以生成 Keychain Safe Storage。与下方 CLI 切换相互独立。
  8. CodeBuddy CLI:账号页可一键接入/更新认证。macOS/Linux 使用 apiKeyHelper,Windows 使用 ~/.codebuddy/settings.json 的 env.CODEBUDDY_AUTH_TOKEN(保留其他配置,不依赖 .cmd 跳板)。「切换 CodeBuddy」只更新后续加载会话使用的默认账号,当前运行会话不会切换;请由 ACP 重新加载会话,或重启 CodeBuddy CLI 后生效。普通 CLI 在同一进程中执行 /resume 不保证重新读取认证配置。
  9. 自动轮换:设置 → CodeBuddy CLI 自动轮换,开启后后台按间隔检查,并把积分最紧迫的账号设为后续会话的默认账号(策略见下);正在运行的当前会话不会被自动切换。Windows 会同步最新 Token 到 settings,但仍需重新加载会话或重启 CLI。
  10. 更新:应用会自动检查公开 GitHub Releases;发现新版本后可在左下角直接升级,也可从设置页打开 Release 页面手动下载。

界面预览

管理 WorkBuddy 与 CodeBuddy 账号

账号卡片集中展示登录状态、签到状态、积分余额和到期资源,支持切换 WorkBuddy 当前账号,并设置 CodeBuddy CLI 后续会话的默认账号。临期积分会直接标注在对应卡片内,并按紧迫程度优先排列。

浅色模式 深色模式
账号管理页面(浅色模式,账号信息已脱敏) 账号管理页面(深色模式,账号信息已脱敏)

积分统计

积分统计页展示官方请求用量、每日趋势、模型分布、账号消耗和请求明细。数据来源和更新时间会明确显示。

浅色模式 深色模式
积分统计趋势页面(浅色模式) 积分统计趋势页面(深色模式)

Token 统计

Token 统计页按来源展示 Token 总览和每日趋势,覆盖 WorkBuddy、CodeBuddy CLI 与 CodeBuddy IDE:输入、输出、缓存读写使用 K/M/B 紧凑单位,趋势图用堆叠柱表示每日 Token 总量与构成,用虚线表示调用次数;同时提供 Token 构成占比、活跃热力图、项目/模型 Top 10 和会话排行,帮助快速定位主要消耗来源。

自动轮换策略

自动轮换的目标是防止积分过期浪费:后台定时查询所有账号的积分到期情况,把 CodeBuddy CLI 后续会话的默认账号设为「最紧迫」的账号(最早到期且仍有剩余积分)。macOS/Linux 的 apiKeyHelper 与 Windows 的 settings env 都不会替换正在运行会话已经持有的 token;轮换结果需在 ACP 重新加载会话或重启 CLI 后生效。为避免默认账号频繁变化,每次检查按以下顺序决策:

  1. 有效账号:查询成功、未过期、有剩余积分的账号才可被选为目标
  2. 紧迫度检查:所有账号到期都还早(最紧迫的剩余超过 min_urgency_hours,默认 72 小时)→ 不切
  3. 已是目标:CLI 默认账号就是最紧迫账号 → 不切
  4. 冷却期:切换后 cooldown_minutes(默认 120)内不重复切
  5. 活跃保护:最近 active_guard_minutes(默认 30)内 CLI 会话有写入(正在对话)→ 不切
  6. 价值过滤:目标账号剩余积分低于 min_remaining_credits → 不值得切(默认 0 关闭;每次检查会把各账号剩余积分写入日志,可据此调整)
  7. 防抖动:目标比当前早到期但差异小于 min_gap_hours(默认 24)→ 不切

生效边界:自动轮换只更新后续 restore/load 使用的默认账号,不会热切换当前会话。macOS/Linux 下一次 helper 执行会读取最新账号;Windows 会把最新 Token 写入 settings。正在运行的会话继续使用启动或加载时取得的账号;请由 ACP 重新加载会话,或重启 CodeBuddy CLI。普通 CLI 在同一进程内执行 /resume 不保证重新读取认证配置。

配置项:check_interval_minutes(检查间隔,默认 5)、cooldown_minutes、min_urgency_hours、active_guard_minutes、min_remaining_credits、min_gap_hours。可在设置页调整,或直接编辑 ~/.wb-switch/auto_rotate_config.json。

macOS 权限说明

切换账号需要写入 WorkBuddy 认证文件,macOS 要求授权「App 管理」(或「完全磁盘访问」):

  1. 首次切换报「无权限」时,点「打开系统设置」
  2. 优先在 App 管理 里打开 workbuddy-switch 开关;若没有,则去 完全磁盘访问 把 workbuddy-switch 拖进带箭头的框
  3. 授权后重启本应用生效;设置页「权限检测」可随时验证

webui 模式:由启动服务的终端进程权限决定;若终端已授权完全磁盘访问则无需额外操作。

致谢

感谢 Linux.do 社区。

许可

MIT

workbuddy-switch (changexbc/workbuddy-switch)

token-usage
Searching Database…

What is this?A desktop app (and webui/npm alternative) for switching between multiple WorkBuddy, CodeBuddy CLI, and CodeBuddy CN IDE accounts, with credit-expiry monitoring, auto check-in, and token usage statistics.
Is this a desktop app, or can I use it from the browser too?It is primarily a Tauri-based desktop app for macOS/Windows/Linux, but the same account-management features are also available as an npm package that serves a webui in the browser.
Do I need anything besides the app itself to switch accounts?No extra toolchain is required beyond Node/npm for the webui variant; the desktop build ships as a self-contained Tauri binary. You just need existing WorkBuddy/CodeBuddy accounts to log into via OAuth scan or manual token import.
Any gotchas when switching accounts?Switching only updates the default account for the next session load — a running CodeBuddy CLI session won't pick up the change until it's reloaded or restarted, and on first macOS launch the app may need manual Gatekeeper approval plus Full Disk Access to write auth files.
Which operating systems are supported?macOS (Apple Silicon and Intel), Windows x64, and Linux x64 via .deb or AppImage, plus a browser-based webui from the npm package on any OS.
How does the automatic account rotation decide which account to switch to?It periodically checks all accounts' credit expiry and picks the most urgent one (soonest expiring with remaining credits) as the default for future CodeBuddy CLI sessions, with cooldown, activity-guard, and minimum-gap rules to avoid flapping.
What does the session copy feature do?It duplicates the checked conversation sessions from the current account to a target account, copying the jsonl session files, the workbuddy.db index, and the edge-sync registration.
What kind of token statistics does it show?It breaks down input, output, and cached-read/write tokens separately for WorkBuddy, CodeBuddy CLI, and CodeBuddy IDE, with daily trend charts, composition ratios, heatmaps, and top-10 rankings by project, model, and session.
Does the app auto-update itself?Yes, it checks GitHub Releases for new versions and can apply signed updates via tauri-updater, or you can download manually from the Releases page.
Creator
changexbc
Size
36.6 MB
Stars
1.4K
Age
2mo
Commits · 90 Days