dsh-workbuddy-xdpool 1.1.0 → 1.3.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/CHANGELOG.md CHANGED
@@ -4,6 +4,89 @@
4
4
 
5
5
  版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
6
6
 
7
+ ## 1.3.0 (2026-09-23)
8
+
9
+ 上一版把八类任务链接了进去,这一版修的是**「接进去了但你看不见」**的问题——功能在跑,界面上却没显示,等于白做。
10
+
11
+ ### 猫猫旅行一天只跑一趟,等于坏了一半
12
+
13
+ 旅行的流程是「派出去 → 回来领奖」,需要**两趟**。原来默认时段只配了 12:00 一个点,意味着猫早上出去之后,**要等到第二天**才有人管它。
14
+
15
+ 改成 **09:00 + 21:00 两趟**(早上派出去,晚上回来领)。同时把每个任务的「今天跑过了」判断从**按日期**改成**按时间点**——按日期判断会把晚上那趟直接吞掉,这个守卫跟多时点本身是冲突的。单时点任务(签到、上报、任务奖励、连登)行为不变,同一小时内重复检查仍然不会重复跑。
16
+
17
+ > 参考项目的默认值就是 `[9, 21]`,注释里写的理由是「一趟派出 + 一趟领奖闭环」。
18
+
19
+ ### 卡片现在告诉你「具体领到了什么」
20
+
21
+ 原来每个任务只显示「日期 · 账号数」,回答不了「我最在意的那个任务领到了没」。
22
+
23
+ 现在会**列出这一轮实际领到的奖励名**:
24
+
25
+ - 任务奖励 → 列出台任务标题(如「体验设计创意模式」「召唤 3 次专家团」)
26
+ - 每日签到 → `签到 +100`
27
+ - 猫猫旅行 → `猫猫旅行 +10`
28
+
29
+ 连登奖励还没到解锁天数时,会显示**还差几天**(如 `7d in 4d`)——所有档位都是未解锁属于正常状态,但只写「未解锁」会让人以为坏了。
30
+
31
+ ### 修掉「猫猫旅行永远不显示」
32
+
33
+ 有个真 bug:积分自动化面板里只显示签到 / 上报 / 任务 / 连登四行,**猫猫旅行那行永远不出现**,尽管它确实在跑。
34
+
35
+ 根因是那行任务的判断逻辑里,**列表本身就是缺的**——界面渲染一行一个任务,而列表里没有 travel,分支里也没有,类型定义里同样没有。这类「加了功能忘了加列表」的失败模式是**静默的**:任务照跑,用户看不见,也不会报错。
36
+
37
+ 除了补齐三处,还加了个**防回归测试**:卡片的任务列表必须和调度器的任务列表逐项相等、顺序一致。这个不变量之前没人守。
38
+
39
+ ### 其它
40
+
41
+ - 行内文案「未排程 / 尚未执行」改成「当天不跑 / 还没跑过」,原来的说法不好懂。
42
+ - 补上中英两份缺失的「猫猫旅行」标签(之前那行显示的是原始 key)。
43
+ - README 重写(中英双语):按「多账号池」和「积分自动化」两块组织,把 13 个任务名列出来、实测数据写进去,并把几个踩坑结论翻译成大白话。
44
+ - 截图更新:卡片全貌换成含自动化面板的新版,另加一张自动化面板特写。
45
+ - 测试从 134 增至 139。
46
+
47
+ ### 已知限制(未变)
48
+
49
+ - `Expert_Philanthropy`(公益专家)需要真实捐款,不做。
50
+ - `black_cat`(夜猫子)只在 23:00–08:00 计分且无积分奖励,不做。
51
+ - `Model_chat_GLM5.2` 与 `wb_wechat_oa_subscribe_task` 留待下个版本。
52
+ - `Expert_team_use_3` 偶发卡在 2/3(怀疑单账号当日额度,跨天恢复,未验证;新账号不受影响)。
53
+
54
+ ## 1.2.0 (2026-09-23)
55
+
56
+ 把成长中心剩下的**八类客户端任务**也接进自动化。这些任务在任务中心里写的是「升级桌面客户端后点击某个入口」,听起来只有人坐在真实客户端前才能完成;实际上计分器看的是**行为事件流**,只要事件形状对、指纹对,任务就会涨进度。这一轮把每条链都在真实账号上跑通并回读确认了计分。
57
+
58
+ ### 新增的任务链
59
+
60
+ | 任务 | 积分 | 判据 |
61
+ | --- | --- | --- |
62
+ | 探索优秀灵感 | +100 | `web_element_click` + `playbook_cta_click` + `playbook_prompt_send` 事件组(「发提示词」才是判据,不是卡片曝光) |
63
+ | 使用 5 个模板 | +100 | 五组 `agent_task_created_with_template` + `template_used`,判据是**五个不同模板**,所以一次要发五组 |
64
+ | 尝鲜热门技能 | +100 | 真实对话(**服务端** requestId)+ `skill_info`(润泽小馆·日报撰写),响应要标成 `finishReason: tool_calls` |
65
+ | 体验「和平精英」主题 | +100 | `appearance/set` 存主题 + `appearance_skin_apply` 事件,两者缺一不可 |
66
+ | 体验资料库 | +100 | 走 **web 指纹**上报 `library_doc_intro_click` |
67
+ | 召唤 5 次专家 | +100 | 专家市场真实 id + 召唤链 + 带 `X-Expert-Id` 的真实对话 |
68
+ | 召唤 3 次专家团 | +100 | 同上,`expert_type=team` |
69
+ | 体验轻量云专家 | +100 | 同上,但用事件要 `mode: LOCAL`、`type` 留空、`cost=0` |
70
+
71
+ ### 这一轮踩到并修掉的两个坑
72
+
73
+ **专家链之间必须留间隔。** 连着发两条专家使用,计分器会判成**同一次会话**,只涨一个进度。实测:间隔 300 毫秒时两条链只计一条,拉到 6 秒后每条都计。专家任务因此改为链间固定 6 秒(`EXPERT_SUMMON_GAP_MS`,测试里置 0)。
74
+
75
+ **三类指纹不能混用。** 计分器按任务认不同的指纹家族:`Library_read` 只认 web 指纹,用桌面指纹发同样的 `web_element_click` 会被接受然后丢弃。事件链现在自带「走哪个通道」,由调度器分流到 `reportDesktopEvents` 或 `reportWebEvent`。
76
+
77
+ ### 其它改进
78
+
79
+ - 事件链从调度器里搬到了独立的 `task-events.ts`:调度器决定**什么时候**发,这个模块决定**发什么**,每条链都是纯数据,好读也好测。
80
+ - `WorkBuddyScheduler` 及其常量现在从包入口导出,方便直接写脚本验证,不用绕过卡片走 HTTP。
81
+ - 新增 64 个测试(`task-events` 21 个 + 调度器链路 22 个 + 专家间隔等),全量 134 个通过。
82
+
83
+ ### 已知限制
84
+
85
+ - **`Expert_team_use_3` 有个号停在 2/3**:该账号当天已用掉两次专家团,第三次不再计分,换未用过的专家团也不涨。怀疑是该任务对单账号有当日额度,跨天恢复,暂未确认。新账号不受影响(实测 0/3 → 3/3)。
86
+ - **`Expert_Philanthropy` 不做**:需要真实捐款,没有可绕过的路径。
87
+ - **`black_cat` 不做**:只在 23:00–08:00 计分,且纯对话无收益。
88
+ - **`Model_chat_GLM5.2` 与 `wb_wechat_oa_subscribe_task` 未接入**:实现路径已明确(前者要真实 glm-5.2 对话 + 对齐模型字段上报),留下个版本。
89
+
7
90
  ## 1.1.0 (2026-09-23)
8
91
 
9
92
  新增**积分自动化**:插件可以在后台替你完成成长中心的日常动作,不用每天手动点一遍。
package/README.en.md CHANGED
@@ -9,36 +9,83 @@
9
9
 
10
10
  English | [中文](./README.md)
11
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.
12
+ Every account you've signed into the WorkBuddy desktop app, merged into one DSH model pool. However many accounts you've used, that's how many the pool holds — no forms, no manual import.
13
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.
14
+ An account gets rate-limited or runs out of credits? The request just moves to the next one that works. You keep asking; it keeps handling the rest.
15
15
 
16
- **Settings card (Settings → Plugins → DSH WorkBuddy XD Pool)**
16
+ **It also throws in a full points-automation suite**: check-ins, task rewards, streak redemption, the buddy trip — all the chores you'd otherwise click through every day, done in the background.
17
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)
18
+ > **How this differs from the single-account connectors**: plugins like `dsh-workbuddy-connect` handle one account at a time. XD Pool treats **multiple accounts as the normal case** — it doesn't pick favourites or ask you to import anything. Every sign-in snapshot on this machine goes into one shared pool, exposed as a single `workbuddy-xdpool` provider group, with automatic failover inside.
19
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)**
20
+ ## Screenshots
21
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)
22
+ **The plugin card (Settings → Plugins → DSH WorkBuddy XD Pool)**
23
23
 
24
- **Domestic / international dual suppliers (each with its own accounts, credits and models, usable at the same time)**
24
+ ![WorkBuddy pool card: CN/global tabs, pool health, account panels with credit packages, per-account check-in, the points-automation panel, and the model directory](assets/settings-card.png)
25
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)
26
+ **The points-automation panel**
27
+
28
+ ![Points automation: the master switch, a Run now button, each job's last run with the tasks it actually collected, and the streak countdown](assets/automation-panel.png)
29
+
30
+ **Model picker (CN and global as two separate groups)**
31
+
32
+ ![Model picker: the CN and global groups each list their own models with credit multipliers and promo tags](assets/model-picker.png)
33
+
34
+ **CN / global dual provider (separate accounts, credits and models, usable at the same time)**
35
+
36
+ ![Switching between CN and global; the side that is not signed in shows that region's sign-in steps](assets/region-tabs.png)
27
37
 
28
38
  ## Features
29
39
 
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.
40
+ ### 1. The multi-account pool
41
+
42
+ - **Zero config**: install it, turn it on, done. Every account signed into the WorkBuddy desktop app is discovered and pooled automatically — nothing to enter by hand.
43
+
44
+ - **Automatic failover**: the pool tracks each account's rate-limit state. Hit a 429 and that account cools down while later requests land on the next healthy one; it rejoins automatically once the cooldown ends. Requests only wait when every account is cooling.
45
+
46
+ - **Pool health at a glance**: the card shows how many accounts there are, how many are cooling, which one is next, plus each account's token expiry and cooldown countdown.
47
+
48
+ - **Live credit balances**: per-account credit packages (`package · remaining / total`) with a large total, refreshed from upstream as it changes.
49
+
50
+ - **An annotated model catalog**: pool models with their credit multiplier (e.g. `GLM-5.2 · x0.79`), free / limited-free / night-discount tags, image-input support and context window — all tracking upstream live.
51
+
52
+ - **CN / global auto-detection**: the upstream origin is picked per account from its login domain — a global sign-in (`workbuddy.ai`) goes to `www.workbuddy.ai`, CN (the default) to `copilot.tencent.com`. Both kinds can live in the same pool.
53
+
54
+ - **Manual controls when you want them**: re-detect accounts, clear all cooldowns, and daily check-in — on the card and in the CLI.
55
+
56
+ ### 2. Points automation
57
+
58
+ One switch on the card, and the plugin works through your growth-centre routine for you. **On by default, and you can hit "Run now" to force a pass whenever you like.**
59
+
60
+ Five jobs:
61
+
62
+ | Job | Default time | What it does |
63
+ | --- | --- | --- |
64
+ | Daily check-in | 09:00 | Collect today's check-in reward |
65
+ | Activity report | 10:00 | Report activity so the growth centre counts the day |
66
+ | Task rewards | 11:00 | Enrol in open tasks and collect every reward that's ready |
67
+ | Streak bonus | 12:00 | Redeem streak tiers and spend the lottery draws |
68
+ | Buddy trip | 09:00 · 21:00 | Send the cat out, collect it when it's back |
69
+
70
+ **The task-rewards pass covers 13 board tasks**, including the ones that read as "somebody has to sit at the desktop and click these menus":
71
+
72
+ > Browse inspiration · Use 5 templates · Try a hot skill · Apply the "Peacekeeper Elite" theme · Read the library · Summon 5 experts · Summon 3 expert teams · Try the Tencent Lighthouse expert · Open any assistant app · Enter the QQ teacher assistant · Create a design canvas · Create a scheduled task · Chat with the cat
73
+
74
+ Measured across four accounts, one pass collected **3300 credits and 135 energy**.
75
+
76
+ **The card tells you what a pass actually collected** — it lists the task names rather than reporting a bare count. The streak countdown is spelled out too ("7d in 4d"), so a locked tier doesn't look like a failure.
77
+
78
+ **"Earned today"** breaks the day down by source — task rewards, check-in, streak, buddy trip — and resets at midnight.
79
+
80
+ **Credit floor per account**: set a minimum balance and an account below it stops being given work, so you can keep some credits in reserve.
81
+
82
+ > **The global region doesn't show this panel** — that gateway has no growth system at all.
38
83
 
39
84
  ## Install
40
85
 
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).
86
+ Prerequisite: the WorkBuddy desktop app installed and signed in (the plugin reuses the sign-in state it stores locally). Multi-account = sign in and out a few times in the desktop app; each sign-in is absorbed into the pool. Built against DSH Desktop host `0.1.2`.
87
+
88
+ > Compatible with the `0.1.1-rc.2` / `0.1.2` host line: the settings section installs via `settings.installSection` (0.1.2-rc.1+) or the earlier free-function form, whichever the host supports.
42
89
 
43
90
  **Option A — install from npm (recommended)**
44
91
 
@@ -48,15 +95,15 @@ dsh plugin --profile desktop add dsh-workbuddy-xdpool
48
95
  ```
49
96
 
50
97
  > 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.
98
+ > Installing from the GitHub source drags in the dev dependencies (bundler, test runner, hundreds of packages) and is much slower.
52
99
 
53
- **Option B — install from GitHub source**
100
+ **Option B — install from the GitHub source**
54
101
 
55
102
  ```sh
56
103
  dsh plugin --profile desktop add github:XDTrees/dsh-workbuddy-xdpool
57
104
  ```
58
105
 
59
- **Option C — manual bundle registration**
106
+ **Option C — register the bundle by hand**
60
107
 
61
108
  ```sh
62
109
  # 1) install the package (npm or GitHub)
@@ -68,26 +115,28 @@ dsh plugin --profile desktop add dsh-workbuddy-xdpool
68
115
  # 3) restart DSH Desktop
69
116
  ```
70
117
 
71
- **Build locally** (developers):
118
+ **Building locally (developers)**
72
119
 
73
120
  ```sh
74
121
  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
122
+ pnpm build # produces lib/index.js + lib/index.d.ts + lib/bin.js + lib/client.js
123
+ pnpm test # 138 tests
124
+ pnpm typecheck # host side
125
+ pnpm typecheck:client # client side
79
126
  ```
80
127
 
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.
128
+ > **The build output is committed** (`lib/` is not gitignored), so a GitHub install needs no install-time script and never trips pnpm's "build scripts were blocked" prompt. **After changing `src/`, re-run `pnpm build` and commit `lib/` too** — otherwise users get the old build.
129
+
130
+ > Note: `pnpm install` wants pnpm 11 (`npx pnpm@11`), and may need `--config.confirmModulesPurge=false --config.minimumReleaseAge=0` — pnpm 11's default `minimumReleaseAge` supply-chain policy blocks just-published rc packages.
82
131
 
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.
132
+ Once installed: a **WorkBuddy XD Pool** group appears in the model picker, and Settings → Plugins → **DSH WorkBuddy XD Pool** shows pool health, each account's token / credits / check-in / cooldown state, the "Detect accounts again" and "Clear all cooldowns" buttons, and a check-in button per account.
86
133
 
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`).
134
+ It also works under the Web / TUI profiles (`--profile web` / `--profile dsh-tui`).
88
135
 
89
136
  ## CLI
90
137
 
138
+ All commands run through `dsh plugin --profile desktop exec dsh-workbuddy-xdpool <subcommand>`:
139
+
91
140
  ```sh
92
141
  dsh plugin --profile desktop exec dsh-workbuddy-xdpool status # pool accounts/cooldown + shim state (--credits, --json, --rates)
93
142
  dsh plugin --profile desktop exec dsh-workbuddy-xdpool accounts # discovered accounts (--json)
@@ -131,32 +180,50 @@ workbuddy-xdpool:
131
180
 
132
181
  ## Architecture
133
182
 
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.
183
+ - **Host side** (`src/`, inside the DSH main process)
184
+ - `index.ts` — registers the `workbuddy-xdpool` provider, the `workbuddy-xdpool` settings section, the same-origin routes (status / re-scan / clear cooldowns / check-in / automation run / credit reserve), plus account discovery and catalog seeding.
185
+ - `accounts.ts` — `WorkBuddyAccountPool`: reads the desktop auth snapshots, 429 cooldowns, rotation and token refresh; account disabling and credit reserves live here too.
186
+ - `scheduler.ts` — the points-automation scheduler: runs five jobs on local time points (check-in / report / tasks / streak / travel), persists the daily earnings ledger, and backs the card's "Run now" button with the same code path.
187
+ - `task-events.ts` — builds the 13 task event chains. Each chain is plain data plus the fingerprint channel it must go out on (desktop or web); the tasks that need a REAL conversation (skill, experts) open one here to get the server-side id.
188
+ - `catalog.ts` / `upstream.ts` — the upstream client: model catalog (with per-model multipliers and free / image tags), credits, check-in, and every automation endpoint, switching CN/global by credential domain.
189
+ - `web-status.ts` / `status-paths.ts` — the same-origin status document and routes the card reads. Mutations are gated on POST + loopback origin + an explicit `accountId`.
190
+ - `bin.ts` — the CLI above.
191
+ - **Client** (`src/client/`, the browser card loaded via `dsh.client`)
192
+ The collapsible shell reuses the host's `dsm-plugin-card*` style language (`--dsw-alias-*` theme tokens); content classes are namespaced `dsm-workbuddy-xdpool-*`, and copy lives under the `settings.workbuddy-xdpool` namespace.
193
+ - **Build**
194
+ `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
195
 
138
196
  ## Known limitations
139
197
 
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.
198
+ - **Only accounts on THIS machine's desktop app**: the pool cannot — and will not — sign you in or scan a QR code (tokens are minted by the WorkBuddy desktop app's own Tencent SSO and bound to the device). Adding an account = signing in on the desktop app; XD Pool absorbs it.
199
+
200
+ - **A few automation tasks are deliberately not implemented**
201
+ - `Expert_Philanthropy` (charity expert): requires a real donation; there is no way around it.
202
+ - `black_cat` (night owl): only scores between 23:00 and 08:00, and pays **no credits** — all-nighters for nothing.
203
+ - `Model_chat_GLM5.2` (chat with a specific model) and `wb_wechat_oa_subscribe_task` (follow the official account): the path is mapped out, deferred to the next release.
204
+
205
+ - **`Expert_team_use_3` occasionally sticks at 2/3**: on one account, after two expert teams had been used that day, the third would not register (using a different, unused team didn't help either). Suspected per-account daily quota that resets the next day, unconfirmed. **Fresh accounts are unaffected** (measured 0/3 → 3/3).
206
+
207
+ - **Depends on WorkBuddy's client APIs** (not an official public API), so a WorkBuddy update may require a matching plugin update. If an account's refresh token lapses, sign in again on the desktop.
208
+
209
+ - If your Windows and Linux usernames differ and the Windows environment variable doesn't reach WSL, point `WORKBUDDY_AUTH_FILE` (or `authFile`) at the real location.
143
210
 
144
211
  ## Disclaimer
145
212
 
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.
213
+ - This project is **for personal study and research only**. It drives only your own WorkBuddy accounts from your own machine — do not use it commercially or beyond reasonable personal use.
214
+ - You are responsible for complying with WorkBuddy's terms of service. Any consequences of using this project (including but not limited to account restrictions, cleared balances, or service interruption) are yours to bear.
215
+ - The authors accept no liability for any direct or indirect loss arising from the use or misuse of this project.
216
+ - This project is not affiliated with, authorised by, or endorsed by Tencent, WorkBuddy, or DeepSeek. Product names appear only to describe compatibility; trademarks belong to their respective owners.
150
217
 
151
218
  ## Acknowledgments
152
219
 
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:
220
+ This project draws on the following public projects and keeps their copyright notices as their licences require. What was taken is **design approach and established findings**; the code is an independent implementation. The modules that lean on a specific source say so in their file headers:
154
221
 
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.
222
+ - [corrinehu/dsh-workbuddy-connect](https://github.com/corrinehu/dsh-workbuddy-connect) (MIT) — the primary reference for settings-section registration (`settings.installSection`) and the DSH plugin structure, the client card loading mechanism, and desktop credential refresh plus loopback-shim hardening. This project follows its "host mounts the card via installSection" path.
223
+ - [dingminhua/dsh-connect-workbuddy](https://github.com/dingminhua/dsh-connect-workbuddy) (MIT, Copyright (c) 2026 LaoDing) — the reference implementation for the `dsm-plugin-card*` card style language and `--dsw-alias-*` theme tokens; **daily check-in** (`/v2/billing/meter/checkin-activity-status` and `/v2/billing/meter/daily-checkin`), the credit-package aggregation rules (monthly vs one-off packs), and picking the upstream origin per credential `domain` all follow interface shapes that project verified.
224
+ - [Sliverkiss/workbuddy2api](https://github.com/Sliverkiss/workbuddy2api) (MIT) — the reference for the WorkBuddy upstream protocol (`copilot.tencent.com` wire behaviour) and the credits APIs; **points automation** (growth-centre check-in, activity report, streak redemption, the buddy-trip state machine, the 13 task event chains, and the expert summon chains) was ported wholesale from that project's Go reverse-engineering, including the scoring criteria and measured conclusions behind every event chain.
158
225
 
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.
226
+ All copyright in the above belongs to their respective authors. This project uses a **reference-the-approach, implement-independently** method and does not copy any reference project's source wholesale. If anything is mis-attributed or missing, please open an issue.
160
227
 
161
228
  ## License
162
229