dsh-workbuddy-xdpool 0.4.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.en.md CHANGED
@@ -1,163 +1,163 @@
1
- # DSH WorkBuddy XD Pool
2
-
3
- <p align="center">
4
- <a href="https://www.npmjs.com/package/dsh-workbuddy-xdpool"><img src="https://img.shields.io/npm/v/dsh-workbuddy-xdpool?style=flat-square&label=npm&color=cb3837" alt="npm version"></a>
5
- <a href="https://www.npmjs.com/package/dsh-workbuddy-xdpool"><img src="https://img.shields.io/npm/d18m/dsh-workbuddy-xdpool?style=flat-square&label=downloads&color=cb3837" alt="npm downloads"></a>
6
- <a href="LICENSE"><img src="https://img.shields.io/github/license/aosi526/dsh-workbuddy-xdpool?style=flat-square" alt="MIT license"></a>
7
- <a href="https://github.com/aosi526/dsh-workbuddy-xdpool/stargazers"><img src="https://img.shields.io/github/stars/aosi526/dsh-workbuddy-xdpool?style=flat-square" alt="GitHub stars"></a>
8
- </p>
9
-
10
- English | [中文](./README.md)
11
-
12
- Merge **every WorkBuddy account** you have ever signed into on this machine into a single **DeepSeek Harness model pool**. No manual setup: each account you sign in on the WorkBuddy desktop app automatically becomes a pool member, and when one account gets rate-limited (HTTP 429), requests automatically fail over to the next healthy account.
13
-
14
- > Unlike single-account connectors (e.g. `dsh-workbuddy-connect`), XD Pool treats multi-account as the norm — it never picks or imports an account by hand. It scans every historical sign-in snapshot left by the WorkBuddy desktop app, merges them all into one shared pool, and exposes them as a single `workbuddy-xdpool` provider group whose requests auto-fail-over across members.
15
-
16
- **Settings card (Settings → Plugins → DSH WorkBuddy XD Pool)**
17
-
18
- ![WorkBuddy pool settings card: domestic/international tab strip, pool health, per-account panels, credit packages and totals, per-account daily check-in, and model management (enable, image input, context window)](assets/settings-card.png)
19
-
20
- **Model picker (domestic and international appear as two separate supplier groups; the rate multiplier is baked into model.name because the DSH 0.1.2 composer only reads name)**
21
-
22
- ![Model picker: the domestic and international suppliers each form their own group, with the credit rate and promo badge shown next to every model name](assets/model-picker.png)
23
-
24
- **Domestic / international dual suppliers (each with its own accounts, credits and models, usable at the same time)**
25
-
26
- ![Switching between the domestic and international tabs: the side with no sign-in lists the steps for that region](assets/region-tabs.png)
27
-
28
- ## Features
29
-
30
- - **Zero-config**: install, enable, done. Every account signed into the WorkBuddy desktop app is auto-discovered into the rotation pool on first use.
31
- - **Automatic failover**: the pool tracks each account's `429` cooldown. A cooling account is skipped in favor of the next healthy one; cooldowns expire automatically. Requests pause only when every account is cooling at once.
32
- - **Pool health at a glance**: the settings card shows pool health (N accounts / X cooling, which account is next), each account's token expiry, and cooldown countdowns.
33
- - **Live remaining credits**: per-account credit packages (`package · remain / size`) and a big green total, refreshed from upstream in real time.
34
- - **Annotated model catalog**: the card lists pool models with their credit multiplier (e.g. `GLM-5.2 · x0.79`), free / limited-free / night-discount tags, image-input capability, and context window — kept live from upstream `credits` / `tags`.
35
- - **Daily check-in**: below each account's credits the card offers a check-in button showing the current streak, the per-day credit, and any milestone bonus. Collect an account's reward with one click — several accounts can be collected in turn, with no need to switch the pool's preferred account first. The status is re-read before claiming, so an account that already collected today is **never double-collected**. Also available as the `checkin` CLI command.
36
- - **CN / global region auto-detection**: the upstream origin is picked per account from its login domain — a global sign-in (`workbuddy.ai`) uses `www.workbuddy.ai`, while a CN sign-in (the default) uses `copilot.tencent.com` and `www.codebuddy.cn`. Both regions can coexist in one pool, each account talking to its own region, with rotation and failover working across both.
37
- - **Three manual actions**: re-detect desktop sign-ins, clear all cooldowns, and daily check-in — available both on the card and via the CLI.
38
-
39
- ## Install
40
-
41
- Prerequisite: WorkBuddy desktop app installed and signed in (the plugin reuses the app's sign-in state; adding accounts = signing in / switching accounts in the desktop app — each is absorbed into the pool automatically). Tested against DSH Desktop host `0.1.2`; compatible with `0.1.1-rc.2` / `0.1.2` (the settings-section install picks `settings.installSection` on `0.1.2-rc.1+`, or the older free function earlier).
42
-
43
- **Option A — install from npm (recommended)**
44
-
45
- ```sh
46
- # if dsh is not on PATH, use node ~/.dsh/profiles/node_modules/@deepseek-ai/dsh/lib/bin.js instead
47
- dsh plugin --profile desktop add dsh-workbuddy-xdpool
48
- ```
49
-
50
- > npm is the fast path: the only dependency pulled in is the plugin itself (**roughly 1 package, a few seconds**).
51
- > Installing from GitHub source also installs the dev toolchain (bundler, test runner, hundreds of packages), which is markedly slower.
52
-
53
- **Option B — install from GitHub source**
54
-
55
- ```sh
56
- dsh plugin --profile desktop add github:aosi526/dsh-workbuddy-xdpool
57
- ```
58
-
59
- **Option C — manual bundle registration**
60
-
61
- ```sh
62
- # 1) install the package (npm or GitHub)
63
- dsh plugin --profile desktop add dsh-workbuddy-xdpool
64
-
65
- # 2) register the bundle: edit ~/.dsh/profiles/desktop/package.json and append
66
- # "dsh-workbuddy-xdpool" to the end of the "dsh" → "profile" → "bundles" array
67
-
68
- # 3) restart DSH Desktop
69
- ```
70
-
71
- **Build locally** (developers):
72
-
73
- ```sh
74
- pnpm install
75
- pnpm build # outputs lib/index.js + lib/index.d.ts + lib/bin.js + lib/client.js
76
- pnpm test # 26 tests (failover rotation, per-(account,model) cooldowns, check-in guards)
77
- pnpm typecheck # host side
78
- pnpm typecheck:client # client side
79
- ```
80
-
81
- > `pnpm install` needs pnpm 11 (`npx pnpm@11`); add `--config.confirmModulesPurge=false --config.minimumReleaseAge=0` if the supply-chain age policy blocks freshly published rc packages.
82
-
83
- > **The built output is committed** (`lib/` is no longer ignored). A GitHub install therefore runs
84
- > no install-time script and never hits pnpm's "build scripts are blocked" prompt. **After changing
85
- > `src/`, re-run `pnpm build` and commit `lib/` too**, or users would receive the old build.
86
-
87
- After install: a **WorkBuddy XD Pool** group appears in the model picker; Settings → Plugins → **DSH WorkBuddy XD Pool** card shows pool health, per-account tokens/credits/check-in/cooldowns, plus "Detect accounts again" and "Clear all cooldowns" buttons. Works on Web / TUI profiles too (`--profile web` / `--profile dsh-tui`).
88
-
89
- ## CLI
90
-
91
- ```sh
92
- dsh plugin --profile desktop exec dsh-workbuddy-xdpool status # pool accounts/cooldown + shim state (--credits, --json, --rates)
93
- dsh plugin --profile desktop exec dsh-workbuddy-xdpool accounts # discovered accounts (--json)
94
- dsh plugin --profile desktop exec dsh-workbuddy-xdpool doctor # diagnose discovery/cooldown/upstream
95
- dsh plugin --profile desktop exec dsh-workbuddy-xdpool reset # clear all 429 cooldowns now
96
- dsh plugin --profile desktop exec dsh-workbuddy-xdpool checkin # today's check-in state per account (--json)
97
- dsh plugin --profile desktop exec dsh-workbuddy-xdpool checkin all
98
- # collect every account's daily reward (or pass one label)
99
- dsh plugin --profile desktop exec dsh-workbuddy-xdpool login # guide to adding another desktop account
100
- ```
101
-
102
- ## How accounts get into the pool
103
-
104
- Auto-discovery. Every sign-in on the WorkBuddy desktop app leaves a token-bearing snapshot; XD Pool scans them and absorbs each into the pool. So multi-account = sign in / switch accounts in the desktop app, then hit "Detect accounts again" or restart DSH.
105
-
106
- To snapshot an extra login explicitly (e.g. to pin one account for verification):
107
-
108
- ```sh
109
- dsh plugin --profile desktop exec dsh-workbuddy-xdpool import myKey
110
- dsh plugin --profile desktop exec dsh-workbuddy-xdpool accounts
111
- dsh plugin --profile desktop exec dsh-workbuddy-xdpool remove myKey
112
- ```
113
-
114
- Snapshots are stored under `~/.dsh/.workbuddy-xdpool/` named by the **MD5-8 prefix** of their key (so keys with Chinese, `/`, or spaces are safe). Long-lived use relies on refresh-token auto-renewal; if it lapses, re-sign-in on the desktop and `import <key> --force`.
115
-
116
- ## Configuration
117
-
118
- Effective config is read from the plugin settings section (`settings.workbuddy-xdpool`), editable on the Models settings page and applied live:
119
-
120
- | Field | Description | Default |
121
- | --- | --- | --- |
122
- | `authFile` | Override the WorkBuddy desktop auth-file path (equiv. to `WORKBUDDY_AUTH_FILE`) | auto-probed |
123
- | `cooldownMs` | Per-account 429 cooldown in milliseconds | `60000` |
124
-
125
- Or set it directly in `~/.dsh/settings.yaml`:
126
-
127
- ```yaml
128
- workbuddy-xdpool:
129
- cooldownMs: 120000
130
- ```
131
-
132
- ## Architecture
133
-
134
- - **Host side** (`src/`): registers the `workbuddy-xdpool` provider, the `workbuddy-xdpool` settings section (`settings.installSection`), four same-origin routes (status / re-scan / clear cooldowns / check-in), and account discovery + catalog seeding. The upstream client picks the CN or global origin per credential from its login domain.
135
- - **Client** (`src/client/`): the browser card loaded via `dsh.client`; the collapsible shell reuses the host's `dsm-plugin-card*` style language (`--dsw-alias-*` theme tokens), with content classes namespaced `dsm-workbuddy-xdpool-*`. Check-in is the plugin's only mutating route: POST-only, loopback-origin-only, an explicit per-account `accountId`, and a pre-claim status re-check.
136
- - **Build**: `tsdown` produces `lib/index.js` (host entry) + `lib/index.d.ts` (types) + `lib/bin.js` (CLI) + `lib/client.js` (CJS browser bundle wrapped in `window.__ModuleLoader__.load`). All four are committed, so an install needs no build-time script.
137
-
138
- ## Known limitations
139
-
140
- - **Only accounts on this machine**: the pool cannot and will not perform WorkBuddy sign-in / QR auth for you (tokens are minted by the WorkBuddy desktop app's own Tencent SSO and are device-bound). Add accounts by signing in on the desktop app.
141
- - Depends on WorkBuddy client endpoints (not an official public API); may need updates when WorkBuddy changes.
142
- - If Windows/Linux usernames differ and Windows env vars aren't forwarded into WSL, point `WORKBUDDY_AUTH_FILE` or the config `authFile` at the real location.
143
-
144
- ## Disclaimer
145
-
146
- - For **personal study and research only** — drives your own WorkBuddy accounts on your own machine. Do not use commercially or beyond reasonable personal use.
147
- - You are responsible for complying with WorkBuddy's terms of service; any consequences (account limits, emptied quotas, outages) are your own.
148
- - The authors are not liable for any direct or indirect loss from using or misusing this project.
149
- - This project is not affiliated with, endorsed by, or authorized by Tencent, WorkBuddy, or DeepSeek; all names belong to their respective owners.
150
-
151
- ## Acknowledgments
152
-
153
- This project was built with reference to the following public projects, whose copyright notices are retained as their licenses require. The reference is to **design ideas and established findings**; the code is an independent implementation, and the modules that draw on an existing pattern say so in their file headers:
154
-
155
- - [corrinehu/dsh-workbuddy-connect](https://github.com/corrinehu/dsh-workbuddy-connect) (MIT) — the core reference for settings-section registration (`settings.installSection`) and the DSH plugin structure, client-card loading, desktop credential refresh, and loopback shim hardening.
156
- - [dingminhua/dsh-connect-workbuddy](https://github.com/dingminhua/dsh-connect-workbuddy) (MIT, Copyright (c) 2026 LaoDing) — the reference for the `dsm-plugin-card*` card style language and `--dsw-alias-*` theme tokens; the **daily check-in** endpoints (`/v2/billing/meter/checkin-activity-status` and `/v2/billing/meter/daily-checkin`), the credit-package aggregation rules (monthly-cycle vs one-off gift), and picking the upstream origin per credential domain for CN/global follow interface shapes that project had already validated.
157
- - [Sliverkiss/workbuddy2api](https://github.com/Sliverkiss/workbuddy2api) (MIT) — reference implementation of the upstream WorkBuddy protocol (`copilot.tencent.com` wire behavior) and credits endpoints.
158
-
159
- All copyrights belong to their respective authors. This project takes the **reference-the-design, implement-independently** approach and does not wholesale copy any reference project's source. If an attribution is missing or wrong, please open an issue.
160
-
161
- ## License
162
-
163
- [MIT](./LICENSE)
1
+ # DSH WorkBuddy XD Pool
2
+
3
+ <p align="center">
4
+ <a href="https://www.npmjs.com/package/dsh-workbuddy-xdpool"><img src="https://img.shields.io/npm/v/dsh-workbuddy-xdpool?style=flat-square&label=npm&color=cb3837" alt="npm version"></a>
5
+ <a href="https://www.npmjs.com/package/dsh-workbuddy-xdpool"><img src="https://img.shields.io/npm/d18m/dsh-workbuddy-xdpool?style=flat-square&label=downloads&color=cb3837" alt="npm downloads"></a>
6
+ <a href="LICENSE"><img src="https://img.shields.io/github/license/XDTrees/dsh-workbuddy-xdpool?style=flat-square" alt="MIT license"></a>
7
+ <a href="https://github.com/XDTrees/dsh-workbuddy-xdpool/stargazers"><img src="https://img.shields.io/github/stars/XDTrees/dsh-workbuddy-xdpool?style=flat-square" alt="GitHub stars"></a>
8
+ </p>
9
+
10
+ English | [中文](./README.md)
11
+
12
+ Merge **every WorkBuddy account** you have ever signed into on this machine into a single **DeepSeek Harness model pool**. No manual setup: each account you sign in on the WorkBuddy desktop app automatically becomes a pool member, and when one account gets rate-limited (HTTP 429), requests automatically fail over to the next healthy account.
13
+
14
+ > Unlike single-account connectors (e.g. `dsh-workbuddy-connect`), XD Pool treats multi-account as the norm — it never picks or imports an account by hand. It scans every historical sign-in snapshot left by the WorkBuddy desktop app, merges them all into one shared pool, and exposes them as a single `workbuddy-xdpool` provider group whose requests auto-fail-over across members.
15
+
16
+ **Settings card (Settings → Plugins → DSH WorkBuddy XD Pool)**
17
+
18
+ ![WorkBuddy pool settings card: domestic/international tab strip, pool health, per-account panels, credit packages and totals, per-account daily check-in, and model management (enable, image input, context window)](assets/settings-card.png)
19
+
20
+ **Model picker (domestic and international appear as two separate supplier groups; the rate multiplier is baked into model.name because the DSH 0.1.2 composer only reads name)**
21
+
22
+ ![Model picker: the domestic and international suppliers each form their own group, with the credit rate and promo badge shown next to every model name](assets/model-picker.png)
23
+
24
+ **Domestic / international dual suppliers (each with its own accounts, credits and models, usable at the same time)**
25
+
26
+ ![Switching between the domestic and international tabs: the side with no sign-in lists the steps for that region](assets/region-tabs.png)
27
+
28
+ ## Features
29
+
30
+ - **Zero-config**: install, enable, done. Every account signed into the WorkBuddy desktop app is auto-discovered into the rotation pool on first use.
31
+ - **Automatic failover**: the pool tracks each account's `429` cooldown. A cooling account is skipped in favor of the next healthy one; cooldowns expire automatically. Requests pause only when every account is cooling at once.
32
+ - **Pool health at a glance**: the settings card shows pool health (N accounts / X cooling, which account is next), each account's token expiry, and cooldown countdowns.
33
+ - **Live remaining credits**: per-account credit packages (`package · remain / size`) and a big green total, refreshed from upstream in real time.
34
+ - **Annotated model catalog**: the card lists pool models with their credit multiplier (e.g. `GLM-5.2 · x0.79`), free / limited-free / night-discount tags, image-input capability, and context window — kept live from upstream `credits` / `tags`.
35
+ - **Daily check-in**: below each account's credits the card offers a check-in button showing the current streak, the per-day credit, and any milestone bonus. Collect an account's reward with one click — several accounts can be collected in turn, with no need to switch the pool's preferred account first. The status is re-read before claiming, so an account that already collected today is **never double-collected**. Also available as the `checkin` CLI command.
36
+ - **CN / global region auto-detection**: the upstream origin is picked per account from its login domain — a global sign-in (`workbuddy.ai`) uses `www.workbuddy.ai`, while a CN sign-in (the default) uses `copilot.tencent.com` and `www.codebuddy.cn`. Both regions can coexist in one pool, each account talking to its own region, with rotation and failover working across both.
37
+ - **Three manual actions**: re-detect desktop sign-ins, clear all cooldowns, and daily check-in — available both on the card and via the CLI.
38
+
39
+ ## Install
40
+
41
+ Prerequisite: WorkBuddy desktop app installed and signed in (the plugin reuses the app's sign-in state; adding accounts = signing in / switching accounts in the desktop app — each is absorbed into the pool automatically). Tested against DSH Desktop host `0.1.2`; compatible with `0.1.1-rc.2` / `0.1.2` (the settings-section install picks `settings.installSection` on `0.1.2-rc.1+`, or the older free function earlier).
42
+
43
+ **Option A — install from npm (recommended)**
44
+
45
+ ```sh
46
+ # if dsh is not on PATH, use node ~/.dsh/profiles/node_modules/@deepseek-ai/dsh/lib/bin.js instead
47
+ dsh plugin --profile desktop add dsh-workbuddy-xdpool
48
+ ```
49
+
50
+ > npm is the fast path: the only dependency pulled in is the plugin itself (**roughly 1 package, a few seconds**).
51
+ > Installing from GitHub source also installs the dev toolchain (bundler, test runner, hundreds of packages), which is markedly slower.
52
+
53
+ **Option B — install from GitHub source**
54
+
55
+ ```sh
56
+ dsh plugin --profile desktop add github:XDTrees/dsh-workbuddy-xdpool
57
+ ```
58
+
59
+ **Option C — manual bundle registration**
60
+
61
+ ```sh
62
+ # 1) install the package (npm or GitHub)
63
+ dsh plugin --profile desktop add dsh-workbuddy-xdpool
64
+
65
+ # 2) register the bundle: edit ~/.dsh/profiles/desktop/package.json and append
66
+ # "dsh-workbuddy-xdpool" to the end of the "dsh" → "profile" → "bundles" array
67
+
68
+ # 3) restart DSH Desktop
69
+ ```
70
+
71
+ **Build locally** (developers):
72
+
73
+ ```sh
74
+ pnpm install
75
+ pnpm build # outputs lib/index.js + lib/index.d.ts + lib/bin.js + lib/client.js
76
+ pnpm test # 26 tests (failover rotation, per-(account,model) cooldowns, check-in guards)
77
+ pnpm typecheck # host side
78
+ pnpm typecheck:client # client side
79
+ ```
80
+
81
+ > `pnpm install` needs pnpm 11 (`npx pnpm@11`); add `--config.confirmModulesPurge=false --config.minimumReleaseAge=0` if the supply-chain age policy blocks freshly published rc packages.
82
+
83
+ > **The built output is committed** (`lib/` is no longer ignored). A GitHub install therefore runs
84
+ > no install-time script and never hits pnpm's "build scripts are blocked" prompt. **After changing
85
+ > `src/`, re-run `pnpm build` and commit `lib/` too**, or users would receive the old build.
86
+
87
+ After install: a **WorkBuddy XD Pool** group appears in the model picker; Settings → Plugins → **DSH WorkBuddy XD Pool** card shows pool health, per-account tokens/credits/check-in/cooldowns, plus "Detect accounts again" and "Clear all cooldowns" buttons. Works on Web / TUI profiles too (`--profile web` / `--profile dsh-tui`).
88
+
89
+ ## CLI
90
+
91
+ ```sh
92
+ dsh plugin --profile desktop exec dsh-workbuddy-xdpool status # pool accounts/cooldown + shim state (--credits, --json, --rates)
93
+ dsh plugin --profile desktop exec dsh-workbuddy-xdpool accounts # discovered accounts (--json)
94
+ dsh plugin --profile desktop exec dsh-workbuddy-xdpool doctor # diagnose discovery/cooldown/upstream
95
+ dsh plugin --profile desktop exec dsh-workbuddy-xdpool reset # clear all 429 cooldowns now
96
+ dsh plugin --profile desktop exec dsh-workbuddy-xdpool checkin # today's check-in state per account (--json)
97
+ dsh plugin --profile desktop exec dsh-workbuddy-xdpool checkin all
98
+ # collect every account's daily reward (or pass one label)
99
+ dsh plugin --profile desktop exec dsh-workbuddy-xdpool login # guide to adding another desktop account
100
+ ```
101
+
102
+ ## How accounts get into the pool
103
+
104
+ Auto-discovery. Every sign-in on the WorkBuddy desktop app leaves a token-bearing snapshot; XD Pool scans them and absorbs each into the pool. So multi-account = sign in / switch accounts in the desktop app, then hit "Detect accounts again" or restart DSH.
105
+
106
+ To snapshot an extra login explicitly (e.g. to pin one account for verification):
107
+
108
+ ```sh
109
+ dsh plugin --profile desktop exec dsh-workbuddy-xdpool import myKey
110
+ dsh plugin --profile desktop exec dsh-workbuddy-xdpool accounts
111
+ dsh plugin --profile desktop exec dsh-workbuddy-xdpool remove myKey
112
+ ```
113
+
114
+ Snapshots are stored under `~/.dsh/.workbuddy-xdpool/` named by the **MD5-8 prefix** of their key (so keys with Chinese, `/`, or spaces are safe). Long-lived use relies on refresh-token auto-renewal; if it lapses, re-sign-in on the desktop and `import <key> --force`.
115
+
116
+ ## Configuration
117
+
118
+ Effective config is read from the plugin settings section (`settings.workbuddy-xdpool`), editable on the Models settings page and applied live:
119
+
120
+ | Field | Description | Default |
121
+ | --- | --- | --- |
122
+ | `authFile` | Override the WorkBuddy desktop auth-file path (equiv. to `WORKBUDDY_AUTH_FILE`) | auto-probed |
123
+ | `cooldownMs` | Per-account 429 cooldown in milliseconds | `60000` |
124
+
125
+ Or set it directly in `~/.dsh/settings.yaml`:
126
+
127
+ ```yaml
128
+ workbuddy-xdpool:
129
+ cooldownMs: 120000
130
+ ```
131
+
132
+ ## Architecture
133
+
134
+ - **Host side** (`src/`): registers the `workbuddy-xdpool` provider, the `workbuddy-xdpool` settings section (`settings.installSection`), four same-origin routes (status / re-scan / clear cooldowns / check-in), and account discovery + catalog seeding. The upstream client picks the CN or global origin per credential from its login domain.
135
+ - **Client** (`src/client/`): the browser card loaded via `dsh.client`; the collapsible shell reuses the host's `dsm-plugin-card*` style language (`--dsw-alias-*` theme tokens), with content classes namespaced `dsm-workbuddy-xdpool-*`. Check-in is the plugin's only mutating route: POST-only, loopback-origin-only, an explicit per-account `accountId`, and a pre-claim status re-check.
136
+ - **Build**: `tsdown` produces `lib/index.js` (host entry) + `lib/index.d.ts` (types) + `lib/bin.js` (CLI) + `lib/client.js` (CJS browser bundle wrapped in `window.__ModuleLoader__.load`). All four are committed, so an install needs no build-time script.
137
+
138
+ ## Known limitations
139
+
140
+ - **Only accounts on this machine**: the pool cannot and will not perform WorkBuddy sign-in / QR auth for you (tokens are minted by the WorkBuddy desktop app's own Tencent SSO and are device-bound). Add accounts by signing in on the desktop app.
141
+ - Depends on WorkBuddy client endpoints (not an official public API); may need updates when WorkBuddy changes.
142
+ - If Windows/Linux usernames differ and Windows env vars aren't forwarded into WSL, point `WORKBUDDY_AUTH_FILE` or the config `authFile` at the real location.
143
+
144
+ ## Disclaimer
145
+
146
+ - For **personal study and research only** — drives your own WorkBuddy accounts on your own machine. Do not use commercially or beyond reasonable personal use.
147
+ - You are responsible for complying with WorkBuddy's terms of service; any consequences (account limits, emptied quotas, outages) are your own.
148
+ - The authors are not liable for any direct or indirect loss from using or misusing this project.
149
+ - This project is not affiliated with, endorsed by, or authorized by Tencent, WorkBuddy, or DeepSeek; all names belong to their respective owners.
150
+
151
+ ## Acknowledgments
152
+
153
+ This project was built with reference to the following public projects, whose copyright notices are retained as their licenses require. The reference is to **design ideas and established findings**; the code is an independent implementation, and the modules that draw on an existing pattern say so in their file headers:
154
+
155
+ - [corrinehu/dsh-workbuddy-connect](https://github.com/corrinehu/dsh-workbuddy-connect) (MIT) — the core reference for settings-section registration (`settings.installSection`) and the DSH plugin structure, client-card loading, desktop credential refresh, and loopback shim hardening.
156
+ - [dingminhua/dsh-connect-workbuddy](https://github.com/dingminhua/dsh-connect-workbuddy) (MIT, Copyright (c) 2026 LaoDing) — the reference for the `dsm-plugin-card*` card style language and `--dsw-alias-*` theme tokens; the **daily check-in** endpoints (`/v2/billing/meter/checkin-activity-status` and `/v2/billing/meter/daily-checkin`), the credit-package aggregation rules (monthly-cycle vs one-off gift), and picking the upstream origin per credential domain for CN/global follow interface shapes that project had already validated.
157
+ - [Sliverkiss/workbuddy2api](https://github.com/Sliverkiss/workbuddy2api) (MIT) — reference implementation of the upstream WorkBuddy protocol (`copilot.tencent.com` wire behavior) and credits endpoints.
158
+
159
+ All copyrights belong to their respective authors. This project takes the **reference-the-design, implement-independently** approach and does not wholesale copy any reference project's source. If an attribution is missing or wrong, please open an issue.
160
+
161
+ ## License
162
+
163
+ [MIT](./LICENSE)