日期:2026-08-22
我们服务的一家零售客户做大型促销,发了一批大额券。活动开始不到半天,券池见底,正常用户抢券时全是已领完,而社群里已经有人在转卖这些券。复盘发现,券是被羊毛党用脚本批量扫走的,设备指纹雷同、下单节奏机械、地址高度聚集,这些特征单个看不明显,堆在一起就是典型的薅羊毛。客户赔了流量,还因为正常用户没抢到伤了口碑,活动复盘会开得很尴尬。
这种场景,靠人工盯后台根本来不及,脚本的速度是分钟级扫空。我们判断必须用多智能体协同做实时风控:采集、识别、决策、复核各司其职,在用户抢券的瞬间就把风险拦下来。
我们搭了一组协同智能体。采集体负责实时拉取每次请求的设备、IP、行为序列、账号关系等特征,喂给识别体。识别体用规则加模型的双引擎,规则挡已知套路(如同一设备多账号),模型抓新型变异(如放慢节奏规避规则)。决策体根据风险分做分级:低风险放行,中风险进二次校验(如短信验证),高风险直接拦截并标记。
被拦截的案例进入复核体,人工或自动复核误杀。确认误杀的正常用户通过快速回补通道恢复权益,避免"为了防羊毛把真用户也挡了"。整个链路要求在抢券请求的路径上同步完成,延迟控制在可接受范围内,不能为了风控把正常用户体验拖垮。
实时特征计算是性能关。风控要在请求路径上同步算,不能异步滞后,否则券已经被领走了。我们把高频特征预计算好常驻内存,请求来了只做轻量聚合,把决策延迟压到很低。这一步踩过坑:最初特征全量实时算,高峰期风控把自己拖慢,反而放过了批量请求,后来改成预计算加轻聚合才稳住。
脚本行为识别难在对抗。羊毛党会刻意放慢节奏、换设备伪装,纯规则很快被绕过。我们上了行为序列模型,看的是"人味",比如正常用户会浏览再领,脚本是直接冲券。模型上线后拦截率明显提升,但代价是要有持续样本喂养。
误杀平衡最考验分寸。第一版我们图省事,风险分稍高就全拦,结果把一批用老人机的正常用户也挡了,投诉比被薅还凶。后来改成分级,中风险先校验不硬拦,误杀率才下来。
复核体我们做成了人机结合。高置信度的拦截自动生效,模糊地带进人工或自动复核队列,确认误杀走快速回补,正常用户权益不隔夜。模型本身也要持续喂样本,羊毛党套路月月变,上周的模型这个月可能就漏了,我们设了周更样本回流,让识别体能跟上变异。复盘下来,风控的尽头是体验,拦截率再高,如果把真用户挡在门外,活动就失去拉新意义,所以分级和回补与识别同样重要。
活动前的压测我们也没省。风控规则上线后,先用历史羊毛流量回放一遍,看拦截率和误杀率是否在预期,再放真活动。我们吃过一次没压测的亏,规则上线当天因特征口径和离线不一致,把一批正常高频用户误判,活动刚开始就引发投诉。后来固定了上线前回放这一环,把口径不一致的坑提前堵死。
案例片段(已脱敏): 活动开始 37 分钟内,识别体标记 1243 个高风险账号,特征聚为三类:同设备指纹关联 18 个账号、领券间隔标准差低于 0.3 秒、收货地址集中在 3 个虚拟仓。决策体拦截其中 1189 个,54 个转入中风险二次校验后放行。事后复核确认误杀 41 个正常用户,经快速回补通道 2 小时内恢复权益并补偿 5 元无门槛券。该时段羊毛党实际薅走券量较无风控基线下降约 92%。
羊毛党拦截率较纯规则基线提升明显,活动期间实际被薅走的券量下降约九成。正常用户误杀率控制在约 1.5% 以内,且误杀恢复时效从原来的工单处理平均约 1 天,缩短到回补通道约 2 小时。券核销成本(被羊毛党消耗的补贴)下降约七成。人工复核量因为自动聚类标记,较全量人工巡检减少约八成。
客户复盘会这次终于能拿出干净的数据:哪些被拦、为什么拦、误杀怎么补,一目了然。
大促发券必须先布风控,等券被扫空再补救,流量和口碑都赔进去了。行为特征加模型双引擎比纯规则扛造,脚本会规避规则,但"人味"难伪装,模型看序列就比看单点准。分级拦截比一刀切 humane 也更有效,中风险先校验不硬拦,我们第一版图省事全拦,把真用户也挡了,投诉比被薅还凶,这个教训够深刻。误杀的快速回补通道一定要配套,否则防羊毛的代价是伤正常用户,那就本末倒置了。多智能体把采集识别决策复核拆开,各自迭代,比单体规则堆砌清爽太多。