Skip to content

fix(runtime): 跨账号限速定时签到与 Keepalive - #373

Merged
caigee-cmd merged 1 commit into
mainfrom
feat/checkin-keepalive-rate-limit
Oct 23, 2026
Merged

caigee-cmd merged 1 commit into
mainfrom
feat/checkin-keepalive-rate-limit

Conversation

@caigee-cmd

Copy link
Copy Markdown
Owner

Summary

用户怀疑一次性打太猛触发上游风控。跨账号本已是顺序 for,但无账号间隔;09:00 过点后一个 tick 会背靠背打完所有 due,Keepalive 在 ≥22 点第一次 tick 一次扫完。

本 PR 在现有顺序循环上加保守突发限速(不引入新限流框架、不改签到成功/already/额度语义、不默认改 CheckinTime):

  • runScheduledCheckins:每 30s tick 最多处理 2 个 due 账号;账号之间 baseDelay=2s + FNV 小 jitter(0~999ms);剩余 due 留到后续 tick。
  • KeepaliveWorkBuddy:同样 per-tick cap=2 + 间隔;RunMaintenanceLoop 在 22:00 后跨 tick 续跑,用 done map 记当日已刷账号;单次调用超时由 2min 改为按批 90s。
  • 测试:due 很多时单 tick ≤ cap;Keepalive 跨调用续跑;gap/cancel 可测。
  • changelog unreleased 中英短记;python3 scripts/release-notes.py validate 已过。

默认:maintenancePerTickCap=2,maintenanceAccountGap=2s(+0~999ms jitter),keepalive 单 tick 超时 90s。

Test plan

  • go test ./internal/runtime/ -count=1(含新增 TestRunScheduledCheckinsCapsPerTick / TestKeepaliveWorkBuddyCapsPerTickAndResumes)
  • python3 scripts/release-notes.py validate
  • 等 PR CI 绿

不要 merge(按需求仅开 PR)。

…unts

Each 30s maintenance tick processes at most 2 due accounts, with ~2s +
FNV jitter between them, so a large AutoCheckin fleet no longer bursts
upstream after the configured time or after 22:00 keepalive.
@caigee-cmd
caigee-cmd merged commit 27bae13 into main Oct 23, 2026
6 checks passed
@caigee-cmd
caigee-cmd deleted the feat/checkin-keepalive-rate-limit branch October 23, 2026 10:13
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.

1 participant