From 6a9bd4d349fd56cae1ef78cb91712a2c22df949f Mon Sep 17 00:00:00 2001 From: lili Date: Thu, 18 Jun 2026 09:20:49 -0700 Subject: [PATCH] =?UTF-8?q?fix(saa):=206c6g=20=E8=AF=84=E5=AE=A1=E6=95=B4?= =?UTF-8?q?=E6=94=B9=E2=80=94=E2=80=94P1=20K=5FSTATUS=20=E6=B8=85=E9=9B=B6?= =?UTF-8?q?=20+=20P2=20stage2=20fallback=20=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit P1(真修):renderNode 起手 out.put(K_STATUS,"") 清 stale 状态——checkpoint/saver 跨 run 复用 state 时, 上轮 giveup 写的 K_STATUS="failed" 会残留,下次 modify 进来 modifyRouter 首检 K_STATUS 误判失败、 把 gamedef 确定性点改错误路由到 END。 P2(语义·仅注释):generateNode fallback 处加注,说明 stage2 升档后回退档仍取廉价档(MiniMax-M3)是 「可用性优先于本次升档边际质量」的有意取舍(强档超时也要出包),非疏漏。 验证:mvn -Dtest=SaaStudioGraphTopologyTest,SaaStudioNodesRegressionTest → Topology 30/30 + Regression 8/8 全绿。 Co-Authored-By: Claude Opus 4.8 --- .../huijing/game/module/aigc/saa/SaaStudioNodes.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/game-cloud/game-module-aigc/game-module-aigc-server/src/main/java/com/wanxiang/huijing/game/module/aigc/saa/SaaStudioNodes.java b/game-cloud/game-module-aigc/game-module-aigc-server/src/main/java/com/wanxiang/huijing/game/module/aigc/saa/SaaStudioNodes.java index 169b117e..519281cd 100644 --- a/game-cloud/game-module-aigc/game-module-aigc-server/src/main/java/com/wanxiang/huijing/game/module/aigc/saa/SaaStudioNodes.java +++ b/game-cloud/game-module-aigc/game-module-aigc-server/src/main/java/com/wanxiang/huijing/game/module/aigc/saa/SaaStudioNodes.java @@ -333,6 +333,9 @@ final class SaaStudioNodes { // 救场阶梯控制面初值(§6.3):失败计数归零、模型档起 stage1(escalate 命中阈值才升 stage2)。 out.put(K_FAIL_COUNT, 0); out.put(K_MODEL_TIER, "stage1"); + // 6c6g 评审 P1:清 stale K_STATUS——checkpoint/saver 跨 run 复用 state 时,上一轮 giveup 写的 K_STATUS="failed" + // 会残留;下次 modify 进来 modifyRouter 首检 K_STATUS 会误判失败、把 gamedef 确定性点改错误路由到 END。render 起手归零。 + out.put(K_STATUS, ""); // modify 入参透传(create 路缺省空串;renderRouter 据 modifyMode 分流,§6.2)。 out.put(K_MODIFY_MODE, s.value(K_MODIFY_MODE, String.class).orElse("")); out.put(K_BASE_VERSION_ID, s.value(K_BASE_VERSION_ID, String.class).orElse("")); @@ -453,6 +456,8 @@ final class SaaStudioNodes { String pname = selectGenerateModelName(role, isStage2 ? "stage2" : "stage1", gm.codeName(), gm.fixName(), gm.codeStage2Name(), gm.fixStage2Name()); // U4 回退档(同 role;主模型耗尽 180s×3 重试后再试一档,治超时/返空/截断;接现救场体系不另起限次)。 + // 6c6g 评审 P2(有意为之·保可用降级):stage2 升档后 primary=强档,但 fallback 仍取廉价档(codeFallback=MiniMax-M3)—— + // 这是【可用性优先于本次升档边际质量】的刻意取舍:强档也超时时仍要出包(有结果好过整 job 崩),而非追求"回退档也必须强档"。 ChatModel fallback = isFix ? gm.fixFallback() : gm.codeFallback(); String fname = isFix ? gm.fixFallbackName() : gm.codeFallbackName(); int attemptNo = ((Number) s.value(K_REPAIR_COUNT, 0)).intValue(); // 当前修复轮序(首轮=0)。