下面只看“哪里过滤了什么状态”,方便本地排查。
| 任务 | 过滤位置 | 过滤条件 | 被跳过的状态/结果 | 说明 |
|---|---|---|---|---|
| 用量轮询线程 | crates/service/src/usage/refresh/batch.rs | status = disabled,以及最新事件命中封禁或刷新受阻原因 |
disabled,account_deactivated,workspace_deactivated,refresh_token_region_blocked |
先把这些账号放进 skipped_ids,再从 token 列表里过滤掉 |
| 网关保活线程 | crates/core/src/storage/accounts.rs | status = active,且满足网关可用条件 |
非 active 的账号直接不进入候选集 |
不是遍历所有账号,而是先筛候选账号,再做保活 |
| 令牌刷新轮询 | crates/core/src/storage/tokens.rs | refresh_token 不能为空;最新状态不能是停用类原因或 refresh_token_region_blocked |
没有 refresh_token,account_deactivated,workspace_deactivated,refresh_token_region_blocked |
只处理能刷新且未被暂停的 token;修正代理后手动恢复账号会重新进入轮询 |
| 现象 | 常见原因 |
|---|---|
| 看起来“上一秒能用,下一秒过期” | 服务端在下一次刷新时才返回 refresh_token_expired |
| 网关保活没有动作 | 候选账号为空,或者没有 active 可用账号 |
| 用量轮询没动静 | 账号都被过滤掉了,或者当前批次没有可处理账号 |
用量轮询 和 令牌刷新 都会按状态过滤账号;网关保活 只认 active 的候选账号。