dsh-workbuddy-xdpool 1.2.0 → 1.4.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,97 @@
4
4
 
5
5
  版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
6
6
 
7
+ ## 1.4.0 (2026-09-24)
8
+
9
+ ### 长对话不再撞死在上下文上限上
10
+
11
+ 以前聊到一定长度,就会弹出一个 `400 context_length_exceeded` 然后被送回主页,只能重开会话。
12
+ 现在会自动收缩上下文继续跑,不再打断你。
13
+
14
+ 这里其实有两层保险,各自管不同的情况:
15
+
16
+ **第一层是 Harness 自带的。** DSH 本来就装了 `compaction-basic`,它会在发请求之前先算一遍 token
17
+ 压力,超了就摘要、重试。问题是它认错误的方式是「看这段文字像不像上下文溢出」,而插件原来报的是
18
+ 一句友好英文 —— `the conversation exceeds <模型名>'s context window` —— 恰好是它唯一认不出来的
19
+ 那种写法。于是它以为这是个普通的坏请求,跳过了恢复,直接把 400 抛给你。
20
+
21
+ (顺带一个坑:上游 WorkBuddy 自己那句 `input length too long`/业务码 `11115`,同样不在它的
22
+ 识别清单里。所以「把上游原话原样透传」这条路也走不通,必须主动改写成它认得的措辞。)
23
+
24
+ 现在溢出时会输出它认得的写法,Harness 的自动摘要就接上了。
25
+
26
+ **第二层是插件自己的。** 就算 Harness 那层没兜住(比如窗口值报得不准,或者你一口气粘了个巨大
27
+ 文件),插件会自己压缩一遍再重试一次:先丢最旧的回合,保留 system 和最近几轮;还放不下就把被丢
28
+ 掉的回合交给模型做个摘要塞回去;再不行才硬截断。摘要这一步哪怕失败也只会降级成直接截断,绝不
29
+ 会反过来让你的这一轮请求失败。
30
+
31
+ ### 「API 密钥无效」不再把所有账号卡死在第一个上
32
+
33
+ 账号池的本意是:某个号不行就换下一个。但错误分类里有个漏洞 —— HTTP 401 只有在响应体里恰好
34
+ 出现两条特定标记之一时,才会被认成「登录态失效」(可刷新、可轮换)。上游换个说法,比如
35
+ 「api密钥无效」、`invalid api key`、`unauthorized`,就掉进了兜底的 `client` 类。
36
+
37
+ 而 `client` 在轮换循环里是**终态**:直接 `break`,不再试后面的号。结果就是一个坏掉的号把整个池
38
+ 钉死在第一个账号上,2/3/4 号全都白装着。
39
+
40
+ 现在 401 和 403 无条件算「登录态失效」—— 刷新 token 然后换下一个号。另外把常见的中英文失效措辞
41
+ 也补进了标记清单,这样即便状态码不是 401(比如被包在 200 信封里)也还能认出来。
42
+
43
+ ### 其它
44
+
45
+ - 顺手修了个压缩逻辑里的真 bug:它用同一个变量同时表示「留下来的」和「被丢掉的」,结果明明已经
46
+ 砍到只剩几条,却报告「没有变化」,导致摘要功能整个跳过、根本没执行。
47
+ - 新增两组测试:`context-overflow-contract.test.ts` 逐字复刻了 Harness 的错误匹配规则(它将来改
48
+ 措辞时这个测试会变红,提醒你同步改);`upstream-error-classification.test.ts` 钉住了上面那个
49
+ 401 分类回归。
50
+
51
+ ## 1.3.0 (2026-09-23)
52
+
53
+ 上一版把八类任务链接了进去,这一版修的是**「接进去了但你看不见」**的问题——功能在跑,界面上却没显示,等于白做。
54
+
55
+ ### 猫猫旅行一天只跑一趟,等于坏了一半
56
+
57
+ 旅行的流程是「派出去 → 回来领奖」,需要**两趟**。原来默认时段只配了 12:00 一个点,意味着猫早上出去之后,**要等到第二天**才有人管它。
58
+
59
+ 改成 **09:00 + 21:00 两趟**(早上派出去,晚上回来领)。同时把每个任务的「今天跑过了」判断从**按日期**改成**按时间点**——按日期判断会把晚上那趟直接吞掉,这个守卫跟多时点本身是冲突的。单时点任务(签到、上报、任务奖励、连登)行为不变,同一小时内重复检查仍然不会重复跑。
60
+
61
+ > 参考项目的默认值就是 `[9, 21]`,注释里写的理由是「一趟派出 + 一趟领奖闭环」。
62
+
63
+ ### 卡片现在告诉你「具体领到了什么」
64
+
65
+ 原来每个任务只显示「日期 · 账号数」,回答不了「我最在意的那个任务领到了没」。
66
+
67
+ 现在会**列出这一轮实际领到的奖励名**:
68
+
69
+ - 任务奖励 → 列出台任务标题(如「体验设计创意模式」「召唤 3 次专家团」)
70
+ - 每日签到 → `签到 +100`
71
+ - 猫猫旅行 → `猫猫旅行 +10`
72
+
73
+ 连登奖励还没到解锁天数时,会显示**还差几天**(如 `7d in 4d`)——所有档位都是未解锁属于正常状态,但只写「未解锁」会让人以为坏了。
74
+
75
+ ### 修掉「猫猫旅行永远不显示」
76
+
77
+ 有个真 bug:积分自动化面板里只显示签到 / 上报 / 任务 / 连登四行,**猫猫旅行那行永远不出现**,尽管它确实在跑。
78
+
79
+ 根因是那行任务的判断逻辑里,**列表本身就是缺的**——界面渲染一行一个任务,而列表里没有 travel,分支里也没有,类型定义里同样没有。这类「加了功能忘了加列表」的失败模式是**静默的**:任务照跑,用户看不见,也不会报错。
80
+
81
+ 除了补齐三处,还加了个**防回归测试**:卡片的任务列表必须和调度器的任务列表逐项相等、顺序一致。这个不变量之前没人守。
82
+
83
+ ### 其它
84
+
85
+ - 行内文案「未排程 / 尚未执行」改成「当天不跑 / 还没跑过」,原来的说法不好懂。
86
+ - 补上中英两份缺失的「猫猫旅行」标签(之前那行显示的是原始 key)。
87
+ - README 重写(中英双语):按「多账号池」和「积分自动化」两块组织,把 13 个任务名列出来、实测数据写进去,并把几个踩坑结论翻译成大白话。
88
+ - 截图更新:卡片全貌换成含自动化面板的新版,另加一张自动化面板特写。
89
+ - 测试从 134 增至 139。
90
+
91
+ ### 已知限制(未变)
92
+
93
+ - `Expert_Philanthropy`(公益专家)需要真实捐款,不做。
94
+ - `black_cat`(夜猫子)只在 23:00–08:00 计分且无积分奖励,不做。
95
+ - `Model_chat_GLM5.2` 与 `wb_wechat_oa_subscribe_task` 留待下个版本。
96
+ - `Expert_team_use_3` 偶发卡在 2/3(怀疑单账号当日额度,跨天恢复,未验证;新账号不受影响)。
97
+
7
98
  ## 1.2.0 (2026-09-23)
8
99
 
9
100
  把成长中心剩下的**八类客户端任务**也接进自动化。这些任务在任务中心里写的是「升级桌面客户端后点击某个入口」,听起来只有人坐在真实客户端前才能完成;实际上计分器看的是**行为事件流**,只要事件形状对、指纹对,任务就会涨进度。这一轮把每条链都在真实账号上跑通并回读确认了计分。
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