Skip to content

fix(grokpool): 导入新凭据不再触发全量巡检,避免搞坏已有账号 - #11

Merged
1parado merged 1 commit into
1parado:mainfrom
shiaho777:pr3-fix-cpa-import-inspection
Aug 13, 2026
Merged

fix(grokpool): 导入新凭据不再触发全量巡检,避免搞坏已有账号#11
1parado merged 1 commit into
1parado:mainfrom
shiaho777:pr3-fix-cpa-import-inspection

Conversation

@shiaho777

Copy link
Copy Markdown
Collaborator

问题

铸造(mint)或导入一个新账号后,importFiles 会立即触发 signalWake() + nextRun = now,导致全量巡检遍历号池中所有账号。巡检时如果遇到网络波动 / 代理不稳 / Cloudflare 挑战,好账号会被误判为 reauth / delete,凭据被标记为异常甚至删除。

用户反馈:铸造一个需要重新登录的账号后,号池里其他所有账号都被重新巡检了一遍,导致很多好账号也被搞坏了。

根因

// manager.go importFiles() 原逻辑:
if changed > 0 {
    m.signalWake()          // ← 唤醒调度器
    m.nextRun = time.Now()  // ← 立即安排下一次巡检
}

导入 1 个凭据 → 立即全量巡检 → 遍历全部账号 → 网络波动时好账号被误杀。

修复

  • 去掉 importFiles 中的 signalWake() + nextRun = now + rerunRequested = true
  • 新增 inspectAccountsOnly(ids []string),只对刚导入的账号做单独探测 + recordInspection
  • 定时巡检不受影响(按设置的间隔正常运行)
之前:导入 1 个 → 全量巡检遍历所有账号 → 好账号可能被误杀
现在:导入 1 个 → 只巡检这 1 个 → 已有账号完全不受影响

安全性

  • 每个账号的凭据文件(accounts/<id>.json)和 Store 完全隔离
  • inspectAccountsOnly 与正在运行的全量巡检可安全并发(recordInspection 有 mutex 保护)
  • inspectAccount 调用的 accountStore(id).Token() 是每个账号独立的

问题:铸造/导入一个账号后,importFiles 会立即触发 signalWake() +
nextRun=now,导致全量巡检遍历号池中所有账号。巡检时网络波动或
Cloudflare 挑战会导致好账号被误判为 reauth/delete,搞坏已有账号。

修复:
- 去掉 importFiles 中的 signalWake + nextRun=now + rerunRequested
- 新增 inspectAccountsOnly(ids),只对刚导入的账号做单独探测
- 定时巡检不受影响(按设置的间隔正常运行)
- 每个账号的凭据文件和 Store 完全隔离,不会串号
@1parado

1parado commented Aug 13, 2026

Copy link
Copy Markdown
Owner

全量巡检这个功能是我设计的不周到,因为每次巡检都是凭空消耗额度,所以我一般都是注册成功之后关闭巡检功能,直接使用,取消全量巡检是很有必要的,感谢你的贡献

@1parado
1parado merged commit c81137e into 1parado:main Aug 13, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants