From cf72a14cd01e3ea77b8c9f40306e2e5f1210d935 Mon Sep 17 00:00:00 2001 From: bigcode Date: Mon, 2 Nov 2026 18:33:52 +0800 Subject: [PATCH] =?UTF-8?q?stress:=20=E6=8E=A7=E5=88=B6=E5=99=A8=20v5.5=20?= =?UTF-8?q?=E2=80=94=E2=80=94=20=E5=85=A5=E6=AE=B5/=E7=BB=AD=E7=A0=8D?= =?UTF-8?q?=E6=94=B9=2010min=20=E7=9F=AD=E7=AA=97=E7=8E=B0=E5=BD=B9?= =?UTF-8?q?=E6=88=91=E6=96=B9=E6=95=85=E9=9A=9C=E8=AF=81=E6=8D=AE(dp7f=20?= =?UTF-8?q?=E5=AE=9E=E6=B5=8B:30min=20=E7=AA=97=206=20=E4=B8=AA=E9=9B=B6?= =?UTF-8?q?=E6=98=9F=20httpErr=20=E5=9C=A8=20420/=E6=97=B6=E7=81=BE?= =?UTF-8?q?=E9=9A=BE=E6=B3=A2=E6=AC=A1=E4=B8=8B=E6=8C=81=E7=BB=AD=E8=A7=A3?= =?UTF-8?q?=E9=94=81=E7=BA=A7=E8=81=94=E5=88=B0=208/min)+=20=E6=B7=B7?= =?UTF-8?q?=E5=90=88=E8=AF=81=E6=8D=AE=E5=9C=B0=E6=9D=BF=E6=8A=AC=2040;dp7?= =?UTF-8?q?f=20=E5=B7=B2=E5=81=9C=E8=B7=91,=E8=88=B0=E9=98=9F=E4=BC=91?= =?UTF-8?q?=E5=85=BB=204h=20=E5=90=8E=E6=8E=A2=E9=92=88=E9=87=87=E6=A0=B7?= =?UTF-8?q?=E5=86=8D=E5=AE=9A=20dp8=20=E5=A4=8D=E8=B7=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stress/serp-dualpath-optimize.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/stress/serp-dualpath-optimize.ts b/stress/serp-dualpath-optimize.ts index 0f17073..5d83435 100644 --- a/stress/serp-dualpath-optimize.ts +++ b/stress/serp-dualpath-optimize.ts @@ -191,15 +191,20 @@ function controlTick(): Record | null { const successS = wS.sent > 0 ? wS.ok / wS.sent : 1; const infraFails = wH.httpErr + wH.netErr + (from < 60 ? wH.poolEmpty : 0); const googleNoiseS = wS.captcha + wS.gate; + // v5.5:入段/续砍用 10min 短窗「现役」我方故障证据 —— dp7f 实测:30min 窗里 6 个 + // 零星 httpErr 在 420/时 captcha 灾难波次下持续解锁硬规则,级联到 8/min;现役证据 + // 才配得上「正在发生的我方故障」。混合证据(联合噪声 >8)时地板抬到 SOFT_FLOOR, + // 杜绝 dp7d 式「2 个伴生池空解锁硬地板 8」 + const infraFailsS = wS.httpErr + wS.netErr + (from < 60 ? wS.poolEmpty : 0); const trickle = infraFails === 0 && googleNoiseS <= 6; if (success >= 0.99 || (trickle && successS >= 0.96)) degraded = false; - const entry = !degraded && !trickle && infraFails >= 3 && ((success < 0.99 && fails >= 8 && tot >= 200) || (success < 0.96 && fails >= 4)); - const ongoing = degraded && wS.sent >= 30 && successS < 0.96 && infraFails >= 3 && allFails - failsAtLastCut >= 2; + const entry = !degraded && !trickle && infraFailsS >= 2 && ((success < 0.99 && fails >= 8 && tot >= 200) || (success < 0.96 && fails >= 4)); + const ongoing = degraded && wS.sent >= 30 && successS < 0.96 && infraFailsS >= 2 && allFails - failsAtLastCut >= 2; if (entry || ongoing) { degraded = true; failsAtLastCut = allFails; to = success < 0.96 ? from * 0.5 : from * 0.7; - to = Math.max(HARD_FLOOR, to); + to = Math.max(googleNoiseS > 8 ? SOFT_FLOOR : HARD_FLOOR, to); reason = `success=${(success * 100).toFixed(1)}%<${success < 0.96 ? 96 : 99}%(失败 ${fails}${entry ? "" : ";短窗<96%+新失败≥2"}) ×${success < 0.96 ? 0.5 : 0.7}`; } else { // 软信号(v5.4:仅剩池空,且仅低速期 —— 高速期池空是需求伴生现象,温池自补,