@eddyskywalker/dsh-chatgpt-subscription 0.6.0 → 0.6.8
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 +2 -0
- package/README.md +3 -3
- package/lib/client.js +200 -242
- package/lib/client.js.map +1 -1
- package/lib/index.js +86 -11
- package/lib/types/client/kimi-code/KimiCodeSection.d.ts.map +1 -1
- package/lib/types/client/kimi-code/locales.d.ts +23 -2
- package/lib/types/client/kimi-code/locales.d.ts.map +1 -1
- package/lib/types/client/workbuddy/WorkBuddySection.d.ts.map +1 -1
- package/lib/types/client/workbuddy/locales.d.ts +12 -90
- package/lib/types/client/workbuddy/locales.d.ts.map +1 -1
- package/lib/types/client/workbuddy/styles.d.ts +8 -4
- package/lib/types/client/workbuddy/styles.d.ts.map +1 -1
- package/lib/types/host/kimi-code/mapper.d.ts +40 -3
- package/lib/types/host/kimi-code/mapper.d.ts.map +1 -1
- package/lib/types/host/kimi-code/routes.d.ts.map +1 -1
- package/lib/types/host/workbuddy/account-pool.d.ts.map +1 -1
- package/lib/types/host/workbuddy/adapter.d.ts.map +1 -1
- package/lib/types/shared/kimi-code-contracts.d.ts +8 -0
- package/lib/types/shared/kimi-code-contracts.d.ts.map +1 -1
- package/lib/types/shared/workbuddy-contracts.d.ts +6 -0
- package/lib/types/shared/workbuddy-contracts.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -27,6 +27,8 @@
|
|
|
27
27
|
- **账号 id 与既有设置保持一致**:号池新增 `accountId` 钩子,WorkBuddy 用它返回 `${region}:${identity}` 这个既有公开键,而不是内核默认生成的随机 `acc_xxx`。这样老用户已存下的 `selectedAccountId` / `hiddenAccountIds` 无需迁移即可继续生效。
|
|
28
28
|
- 卡片新增两个可选插槽:`renderLoginActions`(WorkBuddy 需要国区/国际区两个登录入口,单按钮表达不了)与 `renderAccountActions`(桌面账号的隐藏/恢复);`PoolAccountSummaryDto` 新增可选 `removable`(缺省即可删除)。两者对另外四条线路完全向后兼容——既有号池测试全部保持通过。
|
|
29
29
|
- 新增 `test/workbuddy-account-pool.test.ts`(14 条)与卡片/路由回归:身份与快照去重、桌面账号不可删除、隐藏不动文件、固定账号与冷却回退、轮询调度、429 换号、401 标记失效并换号、桌面 token 回写;共享卡片新增 2 条锁定「非本插件账号不出现删除按钮」。
|
|
30
|
+
- **设置页界面与另外四条线路对齐**:接入共享号池内核只统一了数据,卡片本身仍是本线路自己手搓的那套——手写的「本机凭据」账号列表排在共享卡片**前面**,随后还跟一个独立的「账号」分组堆身份字段,分组顺序、标题文案、按钮样式都与四条兄弟线路不一致。现在收敛为与四条线路**逐字一致**的分组序列(账号管理 → 连接 → 模型 → 增强功能 → 上下文窗口 → 用量与额度),标题用共享的「账号管理」,登录入口用共享的 `dsha-btn-primary`;身份信息(UIN、账号类型、区域、认证域名、凭据文件)改由共享卡片的 `renderDetails` 逐账号渲染,独立的「账号」分组整体删除,空态/路由不可达提示也移入卡片(不再与共享空态文案重复);号池摘要 DTO 因此新增 `domain` / `backend` / `accountType` 三个可选字段。
|
|
31
|
+
- **对话页模型选择器只显示模型名**:`listModels` 不再下发 `description`——五条线路里只有它带描述,DSH 的共享模型选择器会因此给这一路多渲染一行「能力说明」。设置页的模型胶囊同步只显示名称(上下文窗口 / 图片 / 思考档位改挂 `title` 提示),与四条兄弟线路的胶囊完全一致。
|
|
30
32
|
- **思考档位下拉跟随模型**:设置页此前固定渲染全部 6 档,即使当前账号的模型一个都不支持。现在选项由该账号模型**实际声明的档位**并集推导(仅部分模型支持的档位会标注,如 `High (2/5)`),没有任何模型声明档位时给出说明而不是空列表;已保存但当前无模型支持的档位会被保留并标注,不会在打开页面时被静默改写。
|
|
31
33
|
- **修正「全部返回 200 即等于全部支持」的误判**:`/v3/config` 对多数模型只报单个 `effort` 默认值(如 `deepseek-v4.1-flash` 的 `{"effort":"high"}`),此前据此推断成完整 6 档,于是 DSH 模型选择器里出现了该模型并不具备的 `minimal`/`xhigh`。逐档实测确认这类模型接受的就是 `low`/`high`/`max`——与网关为 `glm-5.3-flash`、`kimi-k2.8-preview` **显式声明**的档位完全一致,其余取值由上游收敛到最近的档位而非作为独立档位生效——因此内置兜底表与解析逻辑同步收敛为这三档(`WORKBUDDY_STANDARD_EFFORTS`)。**收紧档位后又修掉它带出的一个反向缺陷**:目录给的**默认档**也可能落在档位表之外——`minimax-m3`、`kimi-k3`、国区 `glm-5.3` 等 12 个条目都报 `medium` 却只有三档。这种「默认档不在表内」的值会被档位解析判为不支持而丢弃,于是请求不带 `reasoning_effort`,上游返回**空的 `reasoning_content`**(实测 `minimax-m3`:不带字段三次全为 0 字符,带 `medium` 为 282–659 字符)。现在默认档会收敛到表内最近的档位(`convergeWorkBuddyEffort`,平局向上取,与 kimi-code 线路 `medium`→`high` 的既有映射一致),并在 `resolveWorkBuddyModel` 这个唯一读取口统一归一化,离线兜底表同样覆盖。
|
|
32
34
|
- **合并前代码审查发现并修复的问题**(同源校验、缓存与凭据续期一致性、流式解码):`/quota` 的 POST 与其它写路由一样校验同源;`/connection/test` 与 `/catalog/refresh` 先 `ensureFresh` 续期过期 token,不再对有效账号误报 401;`loadConfigCatalog` 不再把另一区域的缓存快照当成当前区域的结果(那会让模型选择器整个空掉,而不是回落到内置表);续期回写保留原凭据文件的权限位并清理临时文件;流式请求不再附加 300s 墙钟超时(空闲超时由共享看门狗负责,长回答不会被掐断);无参工具调用同样置 `hasToolCall` 并在首个 delta 带上工具名,否则整轮会被当成普通 stop、工具永不执行;流中错误帧抛错而不是当成干净的停止;路由销毁时终止未完成的浏览器登录轮询。每条修复都有对应回归测试。
|
package/README.md
CHANGED
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
- **桌面账号归 IDE 所有,不可删除**:卡片只对插件自己添加的账号显示「删除」,桌面账号显示「隐藏 / 恢复」——隐藏只把它移出本插件的调度,绝不改动 CodeBuddy 的凭据文件;号池层同样拒绝删除桌面账号(双保险,均有测试);
|
|
76
76
|
- **续期后原子写回**原凭据文件(只改 `auth` 块),以免桌面端掉线——桌面账号的 refresh token 会轮换,若只写进插件自己的加密存储,IDE 手里就只剩一个已作废的 token。同一进程内的并发调用**共用一次刷新**,且不会二次刷新;
|
|
77
77
|
- 上游是 OpenAI 兼容的 `POST {backend}/v2/chat/completions`,但有两条硬约束:**只支持流式**(`stream:false` → 400 `code 11101`),且**首条消息必须是 system**(否则国际区返回 400 `code 11128`)。因此请求构造器始终发送 `stream:true`,并在调用方没给系统提示时补一条中性的,避免手搓的一次性请求踩到这条规则;
|
|
78
|
-
- **区域是凭据属性,不是请求属性**:`*.workbuddy.ai` / `*.codebuddy.ai` 走国际区 `https://www.<apex>`,其余走国区 `https://copilot.tencent.com
|
|
78
|
+
- **区域是凭据属性,不是请求属性**:`*.workbuddy.ai` / `*.codebuddy.ai` 走国际区 `https://www.<apex>`,其余走国区 `https://copilot.tencent.com`。账号卡片逐条标注每个账号的**国区 / 国际区**并允许选择;切换后,模型目录、额度和后续对话都使用该账号。历史凭据快照按账号身份自动去重。插件托管账号可真正删除;桌面扫描账号只能从本插件隐藏/恢复,永不删除 CodeBuddy 的原文件。两区模型清单不同,把模型发到不服务它的区会返回 400 `code 11102`,因此模型选择器**按当前账号区域过滤**;
|
|
79
79
|
- **模型目录取自网关自己的 `/v3/config`**(官方 CLI 启动时读的就是它):每个模型的真实上下文上限、输出上限、是否接受图片、以及可用的思考档位都在这里,不做任何按模型名猜测。`/v1/models` 在这条线路上是 404,所以此前只能靠内置表——现在内置表只作为离线兜底,且是**从真实 `/v3/config` 转录**的(早期手写版本把 `glm-5.3`、`kimi-k3` 的窗口猜成 200K/256K,实际都是 1M);
|
|
80
80
|
- 目录同时区分**默认服务的上下文长度**与**模型上限**(如 `deepseek-v4.1-flash` 默认 300K、最大 1M)。本线路不发送显式长度参数,所以 DSH 的压缩与溢出判断按**默认服务长度**计算,不会让请求越过后端实际接受的窗口;
|
|
81
81
|
- 思考档位**逐模型**取目录声明的档位表,回落顺序为「调用方显式指定 → 用户配置的默认档 → 目录为该模型声明的默认档」。最后一档不能省:上游在请求不带 `reasoning_effort` 时返回**空的 `reasoning_content`**(实测同一提示:不带字段 0 字符,带字段 130–215 字符),不发送就等于静默丢弃模型的思考。目录里的单个 `effort` 字段是**默认值**,既不是完整档位表也不是「只此一档」:实测这类模型接受 `low` / `high` / `max`,其余取值会被上游收敛到最近的档位,因此它们使用这三档的标准表(`WORKBUDDY_STANDARD_EFFORTS`);显式声明了 `supportedEfforts` 的模型则原样采信。目录给出的**默认档**也可能落在档位表之外(如 `minimax-m3`、`kimi-k3`、国区 `glm-5.3` 都报 `medium` 却只有三档),这种值会被收敛到最近的档位——否则默认档会被判为不支持而丢弃,请求不带 `reasoning_effort`,上游返回**空的 `reasoning_content`**。不在该模型档位集合内的取值会被忽略而不是发出去(上游对不支持的档位返回 `code 11150`);
|
|
@@ -307,8 +307,8 @@ DSH 设置页的「Subagent」卡片会把勾选的模型写成会话级的允
|
|
|
307
307
|
|
|
308
308
|
1. 重启 DSH,让 Host 加载本插件;
|
|
309
309
|
2. 打开 **设置 → WorkBuddy**;
|
|
310
|
-
3. 二选一:登录 CodeBuddy
|
|
311
|
-
4.
|
|
310
|
+
3. 二选一:登录 CodeBuddy 桌面端后点「重新扫描」,或点「账号管理」右上角的「添加国区账号 / 添加国际区账号」并在官方页面完成浏览器授权;
|
|
311
|
+
4. 在「账号管理」里选择账号(每条都标注国区 / 国际区),再按需勾选模型、设置默认思考深度与上下文窗口。
|
|
312
312
|
|
|
313
313
|
`workbuddy-subscription` 会像其他 Provider 一样出现在 DSH 模型选择器中,并可与名为 `workbuddy` 的自定义 API 同时存在。**上下文窗口**默认取网关 `/v3/config` 声明的**默认服务长度**,可逐模型覆盖(用于 DSH 的压缩与溢出判断,支持 `1M` / `300K` / `200000` 等写法);**默认思考深度**逐模型生效,选项由当前账号各模型**实际声明的档位**取并集(仅部分模型支持的档位会标注数量),档位不在该模型集合内时不会被发送。
|
|
314
314
|
|