Account Survival Upgrade Implementation Plan
结论
当前阶段不再把问题定义成"继续扩大指纹池".
最新实验已经证明:
- 注册与 probe 的 UA 指纹不一致, 确实是问题, 但已经修正.
- 即使
fingerprint_consistent = true, fresh 号仍可能在几十秒内 401 no_organization.
- 当前更强的根因是:
- fresh 注册出口节点质量
- 首用 probe 没有绑定注册代理
add_phone 成功号质量显著更差
- 实验 cohort 混入旧号, 导致判断失真
因此, 本计划调整为先修 fresh 首用与实验卫生, 再做长期评分与健康状态机.
0. 约束与非目标
必须保持
- 保持当前主线:
- 单池 + backend API
main.py 统一入口
lite + cfmail + register
full + cpa
full + sub2api
- 保持当前 cfmail 多活动域 runtime 语义.
- 保持当前 add_phone token 恢复链:
- direct session token
- workspace flow
- fresh login fallback
- pending retry sidecar
- 不恢复旧候选池 / 晋升池 / 两阶段池叙事.
这轮明确不做
- 不做浏览器自动化重写.
- 不做无限随机指纹.
- 不把 add_phone 成功号直接改成另一套后端主线.
- 不承诺"代码改了就一定长寿", 必须靠实验验证.
1. 当前阶段目标
G1. 修正 fresh 实验样本质量
responses_survival 只优先追踪带注册 provenance 的 recent accounts.
- 减少旧号污染 cohort.
G2. 让首用尽量复用注册代理语义
- 首次
responses 探测优先复用:
registration_proxy_key
- 不可用时至少复用
registration_proxy_region
G3. 收紧 fresh 注册节点
- fresh 注册优先只走
tw,sg.
- 不再让
us 自然落入 fresh 主路径.
G4. 显式标记 add_phone 风险
- 单池内新增 warmup 风险字段, 但不恢复候选池.
- add_phone 成功号进入
warmup_required 状态.
- survival probe 负责把它更新为:
G5. 为下一阶段打基础
这轮完成后, 再决定是否进入:
- cfmail domain score
- account health state machine
- bounded fingerprint profile pool
2. 实现顺序
Task 1. Fresh 实验卫生
目标:
responses_survival reseed 时优先选择:
- recent accounts
- 带
registration_fingerprint_profile 的号
文件:
ops/responses_survival.py
core/settings.py
scripts/run_responses_survival.py
- 对应 pytest
验收:
- cohort 优先由新日志时代的 fresh 号组成
- 旧号只在无 fresh provenance 样本时才补位或被跳过
Task 2. 首用绑定注册代理
目标:
- probe 时优先复用
registration_proxy_key
- 不可直接命中时, 至少按
registration_proxy_region 选代理
文件:
core/proxy_pool.py
ops/responses_survival.py
- 对应 pytest
验收:
- survival probe 对带 provenance 的账号能记录:
first_use_proxy_key
first_use_proxy_region
first_invalid_proxy_key
first_invalid_proxy_region
Task 3. Fresh 注册区域收敛
目标:
- fresh 注册 worker 从代理池取节点时, 默认优先
tw,sg
文件:
core/settings.py
core/registration.py
- 对应 pytest
验收:
- register worker 从 proxy pool
acquire() 时传入 fresh 区域偏好
- 设置缺失时安全回退当前行为
Task 4. Add-phone warmup 风险标记
目标:
- 单池内显式标记 add_phone 成功号风险, 但不改变单池主线
文件:
platforms/chatgpt/pool.py
ops/responses_survival.py
dashboard/api.py
- 对应 pytest
字段:
warmup_required
warmup_state
warmup_passed
warmup_completed_at
successful_probe_count
状态:
not_required
pending
passed
failed
验收:
- add_phone 成功号默认
warmup_required = true
- survival 连续成功后可转
passed
- 首次 invalid 时可转
failed
Task 5. 文档与可观测性
目标:
文件:
docs/CONFIG_REFERENCE.md
docs/TROUBLESHOOTING.md
3. 这轮不做的任务
以下内容保留为下一阶段候选, 本计划不直接实现:
core/cfmail_domain_score.py
ops/account_health.py
- bounded fingerprint profile pool
- dashboard 大改版
原因:
- 当前最强根因不在这三块.
- 必须先用更干净的 fresh cohort 把代理与 add_phone 风险验证清楚.
4. 验收标准
必须满足
- fresh cohort 优先使用带 provenance 的 recent accounts.
- first-use / first-invalid 能带上 probe 代理信息.
- register worker 默认优先
tw,sg.
- add_phone 成功号有明确 warmup 字段.
- targeted pytest 通过.
- 关键回归 pytest 通过.
实验输出
本轮完成后要能稳定回答:
tw 与 sg 的寿命是否显著优于 us.
add_phone 组是否比非 add_phone 组更短命.
- 首用代理与注册代理是否一致.
5. 风险
风险 1. strict fresh 区域偏好降低短时吞吐
接受这个风险. 当前目标是先提寿命质量, 不是继续放大低质量产号.
风险 2. 旧号 provenance 不完整
这轮通过 cohort 过滤减轻, 不试图补写旧历史事实.
风险 3. warmup 标记不等于业务隔离
这轮只做风险标记与实验分层, 不直接改变 CPA 主线语义.
6. 交付物
本轮交付物只包括:
- revised plan
- fresh cohort hygiene
- proxy affinity reuse
- fresh region preference
- add_phone warmup metadata
- docs update
不包含第二阶段长期评分与完整健康状态机.