Repository navigation
v2.2.0 — 账号池重启不再失忆,CLI 修好,快照真正回读
2.2.0 — 账号池重启不再失忆,CLI 修好,快照真正回读
群友报的三个问题一起收掉:重启 DSH 后账号池只剩当前登录账号;
dsh-xdpool命令行任何子命令都报ERR_MODULE_NOT_FOUND;import写进去的快照写了就忘,永远读不回来。
重启后账号还在:账号池持久化
现象:在桌面端来回切换登录,攒了一池账号;重启 DSH,池里只剩当前登录的那一个。
根因:账号池的账号列表是纯内存——scan() 只合并不落盘。而上游桌面端在磁盘上只保留当前登录的凭据文件(每次登录覆盖同一个文件),所以「重启 = 磁盘上有什么就是什么」,磁盘上永远只有一个。
修法:新增 account-store.ts,池的扫描从 ~/.dsh/.xdpool/accounts.json 播种、每次扫描后原子回写(先写 .tmp 再改名,崩溃不会留半个文件)。桌面端只记得最后一次登录,池子自己记账。生产入口(宿主和 CLI 共用的 createCore())默认开启;测试构造的池默认关闭,不会把 fixture 写进真实目录。
import 的快照终于有人读了
dsh-xdpool import 一直把 <md5前8>.json 快照写进 ~/.dsh/.xdpool/,但没有任何代码路径读回它——写了就忘。现在插件数据目录本身就是一个扫描源,快照里的每个凭据都会在下次扫描时收进池子;插件自己的状态文件(accounts.json、ignored.json、preferred.json)明确排除,绝不会被当成凭据解析出幻影账号。
CLI 能跑了
lib/bin.js 顶部带着四个打包时从 index.ts 一路带入的副作用 import(@earendil-works/pi-ai 等 optional peer),绑定里零引用——后果是所有 CLI 子命令直接 ERR_MODULE_NOT_FOUND。这四个包改为 external(源码里本来就没有绑定引用),bin.js 加载即净,只有命令真正走到 adapter 才会解析。
文档对齐
README 里「历史登录快照」的四处描述与实际行为不符,一并改写为如实口径:桌面端只保留当前登录,池子自己把攒到的账号持久保存到 ~/.dsh/.xdpool/accounts.json,重启不丢;import 快照同目录,每次扫描收进池。