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/CHANGELOG.md +220 -153
- package/LICENSE +1 -1
- package/README.en.md +163 -163
- package/README.md +181 -181
- package/lib/bin.js +110 -10
- package/lib/client.js +109 -13
- package/lib/index.d.ts +72 -8
- package/lib/index.js +186 -27
- package/package.json +126 -109
package/CHANGELOG.md
CHANGED
|
@@ -1,153 +1,220 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
本项目的所有重要变更都会记录在此文件。
|
|
4
|
-
|
|
5
|
-
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
6
|
-
|
|
7
|
-
## 0.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
###
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
###
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
本项目的所有重要变更都会记录在此文件。
|
|
4
|
+
|
|
5
|
+
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
6
|
+
|
|
7
|
+
## 1.0.0 (2026-09-21)
|
|
8
|
+
|
|
9
|
+
这一版把「账号」和「用号方式」都交给你控制。
|
|
10
|
+
|
|
11
|
+
### 一、可以停用不想用的账号了
|
|
12
|
+
|
|
13
|
+
账号列表里每个账号右侧新增一个开关,关掉它这个账号就**不再参与请求**。
|
|
14
|
+
|
|
15
|
+
- 关掉的账号仍然显示在列表里(变灰),随时可以再打开
|
|
16
|
+
- 设置会被保存,**重启 DSH 后依然有效**
|
|
17
|
+
- 只影响路由,不会删除或改动你的登录凭据
|
|
18
|
+
|
|
19
|
+
### 二、新增「均衡」用号模式
|
|
20
|
+
|
|
21
|
+
原来的两种方式都保留,另加一种:
|
|
22
|
+
|
|
23
|
+
| 模式 | 行为 |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| **优先**(默认,行为不变) | 一直用同一个账号,直到它被限流才换下一个 |
|
|
26
|
+
| **均衡**(新增) | 每个可用账号都参与抽取,**闲置越久权重越高** |
|
|
27
|
+
| **轮换** | 严格轮流,把额度摊平 |
|
|
28
|
+
|
|
29
|
+
**为什么需要「均衡」**:默认的「优先」会死磕第一个账号,把它打到限流才换 —— 如果你有 5 个号,其余 4 个基本闲着。切到「均衡」后请求会自然分散到各个账号,**更不容易撞限流**,可用时间更长。
|
|
30
|
+
|
|
31
|
+
在卡片顶部「账号使用方式」里切换,即时生效。
|
|
32
|
+
|
|
33
|
+
### 其他
|
|
34
|
+
|
|
35
|
+
- 显式选定的账号(如卡片上「下一个」标记的那个)在三种模式下**都会被优先使用**
|
|
36
|
+
- 处于冷却中的账号在「均衡」模式下**一定不会被选中**,冷却结束自动回到抽取池
|
|
37
|
+
|
|
38
|
+
## 0.4.5 (2026-09-21)
|
|
39
|
+
|
|
40
|
+
本版**功能与 0.4.4 完全相同**,只是换了一条发布通道。
|
|
41
|
+
|
|
42
|
+
### 为什么会有这个版本
|
|
43
|
+
|
|
44
|
+
0.4.4 的改动没能通过 npm 发出去:账号的两步验证绑的是**安全密钥(passkey)**,而 npm 命令行发布只接受**认证器 6 位数字码**,两者不通用。
|
|
45
|
+
|
|
46
|
+
现在改为由 **GitHub Actions 自动发布**:给仓库打一个 `v*` 标签,GitHub 就用 OIDC 直接把当前版本发到 npm —— **不需要任何 token,也不再需要验证码**。
|
|
47
|
+
|
|
48
|
+
所以请以 0.4.5 为准,它包含了 0.4.4 的全部修复(图文模型贴图、国内版/国际版模型勾选各自独立)。
|
|
49
|
+
|
|
50
|
+
### 顺带修好的构建问题
|
|
51
|
+
|
|
52
|
+
有 3 个依赖此前只在开发机上"碰巧"存在(靠历史安装残留),别人克隆仓库后跑测试会直接失败。现已正式写进 `package.json`,干净环境也能正常构建与测试。
|
|
53
|
+
|
|
54
|
+
## 0.4.4 (2026-09-21)
|
|
55
|
+
|
|
56
|
+
这一版修两个毛病:给「支持图片」的模型贴图会报错,以及国内版和国际版的模型勾选会互相覆盖。
|
|
57
|
+
|
|
58
|
+
### 一、贴图报错
|
|
59
|
+
|
|
60
|
+
选「图文」模型贴图时,会报 `pi-ai image input requires the durable attachment service`。
|
|
61
|
+
|
|
62
|
+
上一版把模型真正的图片能力修对了,贴图于是改走「原生图片通道」。但这条通道要求插件把宿主的**图片存取服务**接上,而插件一直没接 —— 以前所有模型都被当成「不支持图片」,这条路根本走不到,所以问题一直藏着。
|
|
63
|
+
|
|
64
|
+
现在把这一步补上了:插件接上宿主的附件服务与文件服务,图片能被正常读取并随请求发出去。这只是「把该接的线接上」,图片本身仍是原样发给模型。
|
|
65
|
+
|
|
66
|
+
### 二、国内版和国际版的模型勾选不再互相覆盖
|
|
67
|
+
|
|
68
|
+
之前两个版本共用同一份模型勾选,所以:在国内版勾好几个模型保存,再切到国际版勾另一套保存,**前面那份就被覆盖了**,两边最终都变成后保存的那一套。
|
|
69
|
+
|
|
70
|
+
原因是两边的选择存在同一处,写入时也是往同一个地方写。现在改成**各自独立保存**:国内版一套、国际版一套,互不影响。切 tab 时未保存的改动也不会串到另一边。
|
|
71
|
+
|
|
72
|
+
升级后原来的那份勾选会被两边同时沿用,不用担心配置丢失 —— 之后各改各的即可。
|
|
73
|
+
|
|
74
|
+
## 0.4.2 (2026-09-19)
|
|
75
|
+
|
|
76
|
+
这次主要修了三个毛病。
|
|
77
|
+
|
|
78
|
+
### 一、国际版账号终于能被识别了
|
|
79
|
+
|
|
80
|
+
之前国际版账号一直检测不到。原因是筛选登录文件时只认「点号」拼出来的文件名,而国际版客户端登录后生成的文件是 `workbuddy-desktop-ai.info`(中间是连字符),于是被整个跳过了。
|
|
81
|
+
|
|
82
|
+
现在改成只看文件后缀,不管文件名长什么样都能收进来。实测国内版 4 个、国际版 1 个账号都能正常识别。
|
|
83
|
+
|
|
84
|
+
### 二、国内版和国际版不再共用同一份模型列表
|
|
85
|
+
|
|
86
|
+
之前两个版本共用同一份模型清单,而且这份清单只从国内版账号拉取 —— 换句话说,国际版看到的其实一直是国内版的模型。
|
|
87
|
+
|
|
88
|
+
现在两个版本各查各的:
|
|
89
|
+
|
|
90
|
+
- 国内版:16 个模型
|
|
91
|
+
- 国际版:21 个模型(之前只有凑数的 10 个,而且内容还是国内版的)
|
|
92
|
+
|
|
93
|
+
国际版独有的 Auto / Fast / Balanced 这些模型现在也能正常显示。
|
|
94
|
+
|
|
95
|
+
顺带修了国际版读取模型的方式:它的接口地址和客户端标识跟国内版都不一样,之前照搬国内版的写法,国际版那边会直接报错,所以才一直退回那份凑数的清单。
|
|
96
|
+
|
|
97
|
+
### 三、模型选择器里同一个供应商不再被拆成两组
|
|
98
|
+
|
|
99
|
+
之前模型选择器里「WorkBuddy XD Pool(国内版)」「(国际版)」会各出现两次,免费模型和付费模型被分到不同的组,中间还夹着别的插件,看着像重复注册了。
|
|
100
|
+
|
|
101
|
+
根因是插件把每个模型都上报成「不支持图片」。宿主上如果装了图片增强类插件,它会给这些模型再补一条**名字一模一样**的条目,于是同一个名字就出现了两遍。
|
|
102
|
+
|
|
103
|
+
现在按上游真实的能力上报,分组就合并回来了。
|
|
104
|
+
|
|
105
|
+
另外卡片里的「图片输入」勾选也改了语义:勾选只表示**额外**支持图片,不会再反过来把没勾选的模型降级成「不支持」。
|
|
106
|
+
|
|
107
|
+
## 0.4.0 (2026-09-16)
|
|
108
|
+
|
|
109
|
+
本次更新来自两条用户反馈与一次上游兼容性对齐:账号现在可以**按顺序逐个用尽**(不再平均分摊),积分包**逐条显示具体到期时刻**,并修掉了一处会让所有接口返回 401 的凭据选择缺陷。
|
|
110
|
+
|
|
111
|
+
### 新增
|
|
112
|
+
|
|
113
|
+
- **账号使用方式可切换(优先 / 轮换)**:卡片状态行下方新增开关,默认**优先模式**。
|
|
114
|
+
|
|
115
|
+
- **优先模式**:始终由同一个账号服务,直到它被限流才顺延到下一个;冷却结束后它**立刻回到队首**接管 —— 该账号的积分在冷却期间并未被消耗,所以无需从头排队。
|
|
116
|
+
- **轮换模式**:保留原来的平均分摊行为,供希望把额度摊平到各账号的用户选择。
|
|
117
|
+
- 切换**即时生效**并写入插件设置,**对所有账号、所有切换状态通用**,不需要重启宿主。
|
|
118
|
+
- 优先级顺序是确定性的:桌面 App 当前登录的账号 → 上游签发时间较新者 → 存储过期时间较晚者。此前顺序取决于文件名字典序,实际会出现 `0, 2, 1` 这类非预期排列。
|
|
119
|
+
|
|
120
|
+
- **积分包逐条显示到期时刻**:原先只给出「3 天内到期」的合计数,看不到具体时间;现在每个积分包单独标注它的到期时刻(精确到分钟,例如「到期 09/19 15:36」),3 天内到期的以琥珀色高亮。月度周期套餐显示下次刷新时刻(「刷新 10/01 00:00」)。
|
|
121
|
+
|
|
122
|
+
- 之所以精确到分钟而不是只给日期:上游发放一次性礼包的到期时刻是**任意的钟点**,并非「过 0 点即失效」,只显示日期会让人误判。
|
|
123
|
+
|
|
124
|
+
### 布局
|
|
125
|
+
|
|
126
|
+
- **积分包列表改为两行网格**:包名与数量在首行左右分栏,到期时刻在次行跨栏并与包名左对齐。此前到期时刻被挤到第二行且从容器左边缘起排,列表看起来参差不齐。
|
|
127
|
+
|
|
128
|
+
### 修复
|
|
129
|
+
|
|
130
|
+
- **同一账号存在多个凭据文件时会选中已失效的那一个,导致积分 / 签到 / 模型全部返回 401**。此前按**存储的 `expiresAt` 最大**来挑选凭据,但 `expiresAt` 描述的是「签发时有效期有多长」,**不代表上游仍然接受** —— 上游吊销 token 时不会同步改写该字段,于是一个早已失效的备份可以声称比真实可用的文件**更晚过期**,从而被长期选中。
|
|
131
|
+
|
|
132
|
+
- 现改用 **`auth.lastRefreshTime`(上游自己的签发时间)** 作为新鲜度判据,并在解析凭据时读入该字段。排序优先级:① 桌面 App 当前登录的 live 文件 → ② 签发时间较新者 → ③ 存储过期时间(仅作为文档缺少签发时间时的回退,保证比较是全序的)。
|
|
133
|
+
|
|
134
|
+
- **国际版登录域名识别不全**:参考桌面客户端自身的国际域名清单(`workbuddy.ai`、`workbuddy.cc`),并补充 CodeBuddy CLI 使用的 `codebuddy.ai`。此前只识别 `workbuddy.ai`,落在其他拼写上的国际账号会被误判为国内版,token 被发往国内网关而在 openresty 层被拒绝。
|
|
135
|
+
|
|
136
|
+
- **国际网关写死单一域名**:国际版账号按品牌域名区分且**互不通用**(在 `codebuddy.ai` 签发的 token 会被 `workbuddy.ai` 网关拒绝,反之亦然),因此网关地址改为**跟随凭据自身的域**,未识别的域名回落至桌面端网关。chat / billing / referer / 模型目录四处一并生效。
|
|
137
|
+
|
|
138
|
+
- **上游以 HTML 页面拒绝凭据时给出可执行提示**:识别 openresty / APISIX 的鉴权拒绝(401/403 且响应体是 HTML),改为提示「凭据已被上游网关拒绝,通常说明用的是旧登录留下的失效凭据;请重新登录 WorkBuddy 桌面端后在卡片中选择该账号」,不再原样抛出 HTML 片段。非鉴权类的非 JSON 响应保持原有的通用提示。
|
|
139
|
+
|
|
140
|
+
- **部分模型不显示思考档位**:上游部分模型的推理元数据使用**单数形式**(`effort` 而非 `supportedEfforts`),此前该形态会被直接丢弃。现将其规范化为插件已理解的复数形状,并携带声明的档位到 `defaultEffort`。
|
|
141
|
+
|
|
142
|
+
### 测试
|
|
143
|
+
|
|
144
|
+
- 新增 `tests/pool-priority.test.ts`(10 例):优先模式下连续请求命中同一账号、仅在该账号冷却后顺延、冷却结束后回归队首、按模型冷却不影响其他模型;轮换模式的轮转与运行时切换;凭据新鲜度的四类排序(live 优先、签发时间优先、缺失签发时间时回退过期时间、秒/毫秒单位归一化)。
|
|
145
|
+
- 修正 `tests/failover.test.ts` 中依赖轮转顺序的限流桩:改为按**已出现的不同凭据数**计次,不再假设「token 序号即账号位置」,因此与账号排序解耦。
|
|
146
|
+
- 全套 **36 个测试通过**。
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
## 0.3.0 (2026-09-16)
|
|
150
|
+
|
|
151
|
+
本次更新把卡片界面按参考插件的形态重做了一遍,并补齐了国内版 / 国际版的完整分离。
|
|
152
|
+
|
|
153
|
+
### 新增
|
|
154
|
+
|
|
155
|
+
- **国内版 / 国际版 拆成两个独立供应商**:`workbuddy-xdpool`(国内版)与 `workbuddy-xdpool-global`(国际版)分别注册为独立 provider,模型选择器里各占一个分组。两条链路各有独立的回环端点(各自端口与密钥),互不影响;账号按登录域名严格归属各自区域,国内版请求绝不会走国际版账号,反之亦然。
|
|
156
|
+
|
|
157
|
+
- **卡片顶部新增「国内版 / 国际版」切换栏**:两个 tab 固定显示,各自带一个健康状态指示点。未登录的那一侧显示明确的空状态与**该区域的登录步骤**(含国际版客户端名称、可用的登录方式、网络环境要求),而不是一片空白。
|
|
158
|
+
|
|
159
|
+
- **模型管理**:模型列表支持逐项操作 —— **勾选启用 / 停用**、**图片输入**单独开关、**上下文窗口**在「默认上限」与「模型原生上限」之间切换(仅对原生窗口超过默认值的模型显示)。改动为草稿式,需点「保存」生效,另有「放弃修改」。保存后**无需重启宿主**即可在选择器里生效。
|
|
160
|
+
|
|
161
|
+
- 卡片截图新增「国内版 / 国际版切换」一张(中英 README 均已引用)。
|
|
162
|
+
|
|
163
|
+
### 变更
|
|
164
|
+
|
|
165
|
+
- **账号区与积分区重做排版**:账号信息、积分包明细、合计大数字与签到按钮改为分区网格布局,数字更醒目,签到按钮位于合计下方,不再多个区块横向挤在一起。
|
|
166
|
+
- 模型行现在同时展示输出上限与推理档位(上游提供时)。
|
|
167
|
+
|
|
168
|
+
### 修复
|
|
169
|
+
|
|
170
|
+
- **切换 tab 后仍显示另一区域账号**:`refresh` 回调此前在依赖数组为空的情况下闭包引用了当前区域,导致切换后请求的始终是首次的区域。现改为把区域作为参数传入(回调身份稳定),并**按区域分别保存各自最近一次状态** —— 切换 tab 时不再闪空白,隐藏 tab 的状态指示点也持续有效。
|
|
171
|
+
- **国际版域名识别不全**:桌面客户端把 `workbuddy.ai` 与 `workbuddy.cc` 同列为国际版域名,此前只识别前者,登录落在 `.cc` 的账号会被误判为国内版并请求错误网关。现已一并识别。
|
|
172
|
+
- **模型勾选控件不可用(显示为灰色)**:客户端注册时未注入设置作用域,导致卡片判定为只读。现注入 `settingsScope` 并通过它写入模型选择 —— 该选择保存在插件设置中,**对所有账号、所有切换状态通用**,设定一次即可。
|
|
173
|
+
- 保存的模型选择改由宿主的**模型发现接口**下发,使保存结果即时反映到模型选择器,而无需重启。
|
|
174
|
+
|
|
175
|
+
- **两个 provider 一直显示「加载失败」**:注册适配器时构造的 provider profile 漏了 modelErrors 字段。宿主解析每个模型时都会读这个 Map,于是每次解析都抛 `Cannot read properties of undefined`,模型目录把它渲染成「{provider} 加载失败」。现已补上该字段(与参考插件一致),两个区域的模型解析全部恢复正常。
|
|
176
|
+
- **provider 注册后设置页读不到配置作用域**:插件未在顶层 inject 中声明 settings 服务,宿主不会为该插件挂载设置视图,其 provider 行渲染时读取命名空间视图会得到 undefined。现已声明,并改为同步直接调用 ctx.settings.installSection。
|
|
177
|
+
|
|
178
|
+
### 说明
|
|
179
|
+
|
|
180
|
+
- 额度/限流自动切换能力保持不变,并按 (账号, 模型) 粒度冷却:一个模型被限流不影响该账号其它模型;账号令牌失效会自动刷新重试;全部账号耗尽后才向调用方返回 429。
|
|
181
|
+
|
|
182
|
+
## 0.2.0 (2026-09-16)
|
|
183
|
+
|
|
184
|
+
本次更新在既有的多账号自动容错池基础上,补齐了每日签到、国内/国际版双区域适配,并把做签到的多账号体验做成了「一个账号一个按钮」的形态。
|
|
185
|
+
|
|
186
|
+
### 新增
|
|
187
|
+
|
|
188
|
+
- **每日签到**:设置卡片在每个账号的积分区下方新增签到区块,显示当前连签天数、每日可领积分与里程碑额外奖励,并提供一键领取按钮。
|
|
189
|
+
|
|
190
|
+
- 多账号**逐个领取**:池里每个账号各有一个签到按钮,可一次领完所有账号的当日奖励,**不需要先把池的优先账号切过去**。
|
|
191
|
+
- **不会重复领取**:领取前会先重新查询该账号的签到状态;今日已领取的账号直接返回「今日已签到」,不会再打一次领取接口。按钮在已领取 / 未开通签到活动时自动置灰。
|
|
192
|
+
- **失败不拖垮卡片**:某个账号的签到查询失败时,只在该账号下显示一行错误提示,其余账号与整个池状态照常渲染。
|
|
193
|
+
- 新增 CLI 子命令 `checkin`:不带参数查询所有账号今日签到状态,`checkin all` 领取全部账号奖励,`checkin <账号标签>` 只领指定账号;支持 `--json` 输出机器可读结果。
|
|
194
|
+
|
|
195
|
+
- **国内版 / 国际版自动适配**:按每个账号凭据里的登录域名自动选择上游域名——国际版登录(`workbuddy.ai`)走 `www.workbuddy.ai`,国内版(默认)走 `copilot.tencent.com` 与 `www.codebuddy.cn`。同一池内可以混用两种区域的账号,各自请求各自区域的接口,账号切换与自动容错轮换对两种区域一并生效。
|
|
196
|
+
|
|
197
|
+
- **签到按钮的连签奖励提示**:到达连签里程碑时,签到区块额外显示里程碑天数与额外奖励积分。
|
|
198
|
+
|
|
199
|
+
### 安全
|
|
200
|
+
|
|
201
|
+
- 签到是本插件唯一的写操作,按四重守卫保护:仅接受 `POST`、仅接受回环(same-origin)来源、请求必须显式携带目标 `accountId`(缺失返回 400、未知账号返回 404),且在领取前二次确认当日状态。请求体读取带 64 KB 上限,避免超大/挂起请求占用宿主内存。
|
|
202
|
+
- 签到状态进入卡片文档前同样经过脱敏处理,令牌类文本不会外泄到浏览器。
|
|
203
|
+
|
|
204
|
+
### 修复
|
|
205
|
+
|
|
206
|
+
- 修正测试中两处已过期的断言:一是 provider 名(`workbuddy-pool` → `workbuddy-xdpool`);二是限流断言仍按「账号级冷却」校验,与现有的**按 (账号, 模型) 粒度冷却**语义不符——现按 `modelCooldowns` 校验,并断言账号级冷却未被误置。这两处修正让多账号自动容错的回归测试重新可用(测试总数 17 → 26)。
|
|
207
|
+
|
|
208
|
+
### 安装体验
|
|
209
|
+
|
|
210
|
+
- **已发布到 npm**:`dsh-workbuddy-xdpool` 现可从 npm 安装,安装只需约 10 秒、仅拉取插件自身一个包(依赖已全部标记为 optional,见下条)。推荐用 `dsh plugin --profile desktop add dsh-workbuddy-xdpool`。
|
|
211
|
+
|
|
212
|
+
- **安装速度优化(约 140 秒 → 数秒)**:把 6 个由 DSH 宿主进程提供的运行时包(`@deepseek-ai/dsh-llm`、`dsh-llm-pi-ai`、`dsh-settings`、`cordis`、`schemastery`、`@earendil-works/pi-ai`)在 `peerDependenciesMeta` 中标记为 **optional**。插件自身从不拉取它们;此前未标记 optional,包管理器会自动解析并安装它们的整棵依赖树(含 AWS / Google / Anthropic / Mistral SDK 等),实测安装 112 个包、耗时约 140 秒 —— 现在只需约 1 个包、数秒完成。
|
|
213
|
+
|
|
214
|
+
- **构建产物随仓库提交**:`lib/`(`index.js` + `index.d.ts` + `bin.js` + `client.js`)不再被忽略,直接从 GitHub 安装时**不需要任何安装期脚本**,因此不会再出现 pnpm 的「构建脚本被拦截,请放行后重试」提示,装完即用。
|
|
215
|
+
- 相应地,`prepare` 脚本改为 `prepublishOnly`(发布到 npm 前仍会自动构建),安装路径上不再有脚本触发点。
|
|
216
|
+
- 新增 `lib/index.d.ts` 类型声明(此前 `package.json` 的 `types` 指向该文件但构建未产出)。
|
|
217
|
+
|
|
218
|
+
### 说明
|
|
219
|
+
|
|
220
|
+
- 保留了原有的额度/限流自动切换能力,并在本次改动后重新做了回归验证:单账号限流时同请求内轮换到下一个健康账号、按 (账号, 模型) 粒度冷却(一个模型限流不影响该账号其它模型)、令牌失效自动刷新重试、全部账号耗尽后才向调用方返回 429。
|