dsh-deepseek-web-login 0.6.7 → 0.6.9
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 +58 -0
- package/README.md +16 -5
- package/lib/client.js.map +1 -1
- package/lib/index.js +59 -9
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/tools/inspect-session.mjs +5 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,64 @@
|
|
|
2
2
|
|
|
3
3
|
本项目遵循大致语义化版本;日期为本地时间。
|
|
4
4
|
|
|
5
|
+
## 0.6.9 — 2026-09-30
|
|
6
|
+
|
|
7
|
+
**补丁版:修好诊断工具(`tools/inspect-session.mjs`)在官方桌面端上的静默失效。**
|
|
8
|
+
|
|
9
|
+
不涉及运行时行为变化,装上它不会改变任何请求行为。
|
|
10
|
+
|
|
11
|
+
- 🔴 `tools/inspect-session.mjs` 原来只认 `session.jsonl.zstd`,而官方桌面端 0.2.x 已经
|
|
12
|
+
把会话日志改成 **`session.v4.jsonl.zstd`** ⇒ 会话列表与 `--search` **全都无输出**,
|
|
13
|
+
看起来像"日志被清了"。现在按 `/^session\.v\d+\.jsonl(\.zstd)?$/` 认,新旧版本都覆盖。
|
|
14
|
+
(README 里推荐用这个工具排查"回复被截断 / 工具调用泄漏"这类问题,所以它坏掉会直接卡住排查。)
|
|
15
|
+
- 更正 `src/client/index.ts` 里一段**过期注释**:原文写"刻意只提供手动切换、不做自动轮换",
|
|
16
|
+
但「自动换号」滑块(默认关闭)早就存在,0.6.8 又加了"凭证失效即换"。注释与实现不一致
|
|
17
|
+
会把排查引到错方向(README 里同款那句话今天刚修过)。
|
|
18
|
+
|
|
19
|
+
## 0.6.8 — 2026-09-30
|
|
20
|
+
|
|
21
|
+
**修「凭证被服务端作废之后不自动换号、只能手动切」+ 把 AUTH 做成条件式可重试。**
|
|
22
|
+
|
|
23
|
+
现场(用户截图 + 本机台账原文):
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
15:49:43 acc_de90f63b {ok:false, code:"AUTH", ms:7} ← 7ms=本地拦下,请求根本没发出去
|
|
27
|
+
15:49:45 同上(会话标题) {ok:false, code:"AUTH", ms:5}
|
|
28
|
+
15:49:58 ← 用户手动切到 acc_ec650e63,之后 12 次全部成功
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
界面显示「本轮运行失败 · API 密钥无效」,任务停在那里 —— 用户的期待是**它自己换号接下去**。
|
|
32
|
+
|
|
33
|
+
两个根因:
|
|
34
|
+
|
|
35
|
+
1. `auth`(凭证作废)**不在** `retryableCodes` 里 ⇒ 重试器一次都不重试。而换号检查点是
|
|
36
|
+
**请求前**检查点:没有下一次请求,就永远等不到它。所以"能换号"这件事在 AUTH 上从来没发生。
|
|
37
|
+
2. 「AUTH 一票制标记」被 0.2.0 改成"先只读复核探活、确认失效才标记"是对的(防端点级误判),
|
|
38
|
+
但**标记写完之后的下一步没人接** —— 之前只有"限流/封禁"两条路会触发换号。
|
|
39
|
+
|
|
40
|
+
改法(让"能不能换号"成为 AUTH 唯一的开关):
|
|
41
|
+
|
|
42
|
+
- `canFailover` 增加第三种 `kind`:`'auth'`。判据抽成纯函数
|
|
43
|
+
`hasFailoverCandidate`(自动换号开着 + 没在切 + 账号库里还有**别的**可用号);
|
|
44
|
+
AUTH 刻意**不过**限流那条"窗口 + 冷却" —— 死号是永久性坏状态,等多久都不会自己好。
|
|
45
|
+
- 三个 AUTH 抛出点(HTTP 401/403、信封 40003/40001、"已知失效就不发请求"的拦截)
|
|
46
|
+
都按它给退避:**能换号 ⇒ 5 秒**(留出复核探活那 0.9~3.5 秒)**重发一次,检查点换号接上**;
|
|
47
|
+
**不能换号 ⇒ 600 秒**(> `maxDelayMs`)⇒ 重试器直接放弃。
|
|
48
|
+
⚠️ 这就是"条件式可重试":AUTH 进 `retryableCodes` 是为了让那条 5 秒有路可走,
|
|
49
|
+
**"不能换号就别重试"靠的是退避值**,不是码 —— 所以两档常量各自有用例守,只改一边必红。
|
|
50
|
+
- 默认没开自动换号的用户**行为完全不变**(走 600 秒那档,与加这个功能之前一致)。
|
|
51
|
+
- 「已知失效就不发请求」那条错误的文案跟着分流:能换号时说"正在自动换到另一个账号重试",
|
|
52
|
+
不能换号时才引导去「切换」/「重登」/「校验全部」。
|
|
53
|
+
|
|
54
|
+
⚠️ 另一个同源问题(不在本版代码里):官方桌面端装在**新环境**时,旧环境的
|
|
55
|
+
`~/.dsh/web-login/gate.json` 不会跟着过来 ⇒ `autoSwitchMinutes` 落回默认 **0(关闭)**
|
|
56
|
+
⇒ 整条自动换号链不工作。若你也是从旧环境迁过来的,请检查
|
|
57
|
+
「设置 → DeepSeek 网页登录 → 防风控 → 自动换号」是不是被重置成关闭了。
|
|
58
|
+
|
|
59
|
+
用例 `tests/check-auth-failover.mjs`(14 项):两档退避跨在 `maxDelayMs` 两侧 + 纯判据六种边界
|
|
60
|
+
+ 三个抛出点的接线守卫。反向验证:把 GIVEUP 退避改小、把宿主签名里的 `'auth'` 删掉,
|
|
61
|
+
两个变异体都变红。
|
|
62
|
+
|
|
5
63
|
## 0.6.7 — 2026-09-30
|
|
6
64
|
|
|
7
65
|
**修「点切换像没反应、报错在列表底部看不见」+「探活超时被当成登录态失效」。**
|
package/README.md
CHANGED
|
@@ -400,12 +400,22 @@ cipher 列表哈希与 Chrome 逐字节一致 —— 且**零新依赖**(不
|
|
|
400
400
|
对话记录存在 DSH 本地、每一轮请求都把**整段历史完整重发**、网页端不留任何会话。
|
|
401
401
|
账号只是"通行证 + 额度归属",换它不影响对话内容。(真正会"失忆"的是在 DSH 里开一个新会话。)
|
|
402
402
|
|
|
403
|
-
> ⚠️
|
|
404
|
-
>
|
|
405
|
-
>
|
|
403
|
+
> ⚠️ **关于「自动换号」(默认关闭,滑块在「设置 → DeepSeek 网页登录 → 防风控」)**:
|
|
404
|
+
> 它会按你设的间隔(分钟,0 = 关闭)换到下一个可用账号,**0.6.8 起还有一条"失效即换"**:
|
|
405
|
+
> 某个账号的凭证被服务端判为失效(`AUTH` / `40003`)时,只要库里还有别的可用账号,
|
|
406
|
+
> 就会自动换过去并把这一轮接着跑完 —— 不需要你再手动点「切换」。
|
|
407
|
+
>
|
|
408
|
+
> 但请想清楚再打开它:真人不会在几分钟内换一个账号接着发消息 —— 那是极强的机器行为特征,
|
|
409
|
+
> 与本文档里传输层指纹、随机间隔、会话清理这些"降低机器可识别性"的努力直接冲突。
|
|
406
410
|
> 另外同一服务商会把多账号关联起来(同设备 / 同 IP / 同指纹 / 相近行为),
|
|
407
411
|
> 一旦被判定为"同一人的多开小号",处置通常比单账号超频更重。
|
|
408
|
-
> **账号库的目标是"在自己的多个正常账号之间切换更省事",不是"靠轮换把限流绕过去"
|
|
412
|
+
> **账号库的目标是"在自己的多个正常账号之间切换更省事",不是"靠轮换把限流绕过去"** ——
|
|
413
|
+
> 所以它默认是关的,间隔也别给太短(半小时起步比较稳)。
|
|
414
|
+
>
|
|
415
|
+
> ⚠️ 这个设置存在 `~/.dsh/web-login/gate.json`。**换到新环境/重装 DSH 时它不会跟着迁过去**
|
|
416
|
+
> (账号库也不会 —— 用「导出备份 / 导入备份」搬),重启后会回到"关闭",
|
|
417
|
+
> 表现为"以前会自己换号,现在不换了"。
|
|
418
|
+
>
|
|
409
419
|
> 导出的备份文件里是可完整登录的凭证,等同于账号本身 —— 别分享、别提交到仓库。
|
|
410
420
|
|
|
411
421
|
**「登录新账号」和「退出」的区别**(很容易搞混,但后果完全不同):
|
|
@@ -518,7 +528,8 @@ CI(`.github/workflows/ci.yml`)在每次推送到 `main` 与每个 PR 上跑
|
|
|
518
528
|
| 现象 | 处理 |
|
|
519
529
|
|---|---|
|
|
520
530
|
| 面板「未登录」但登录窗口里已登录 | 点「从已登录窗口恢复」;或看 `loginProgress.lastError` |
|
|
521
|
-
| `AUTH` / `40003 Authorization Failed` |
|
|
531
|
+
| `AUTH` / `40003 Authorization Failed` | 这个账号的凭证被服务端判失效了。**0.6.8 起**:自动换号开着、且库里还有别的可用账号时,会**自动换过去把这一轮接着跑完**(不再需要你手动切号;日志里会写「将自动换到另一个可用账号重试」)。否则请重新登录这个号,或点它那一行的「切换」换一个能用的号 |
|
|
532
|
+
| 以前会自己换号,现在**不换了**(尤其是刚换过 DSH 环境 / 重装过之后) | 自动换号的设置存在 `~/.dsh/web-login/gate.json`,**换环境不会跟着迁过去** ⇒ 静默回到默认的「关闭」,表现为"以前会自己换号,现在不换了"。去「设置 → DeepSeek 网页登录 → 防风控」把「自动换号」重新拉起来即可(拉动一次就会写回该文件) |
|
|
522
533
|
| `MISSING_CREDENTIAL` | 凭证文件不存在(`~/.dsh/web-login/`) |
|
|
523
534
|
| `EMPTY_RESPONSE` | 可能触发频控或长上下文截断,属于默认可重试码 |
|
|
524
535
|
| `RATE_LIMIT` | 免费额度频控,稍后重试 |
|