From 1019403f40c7087d8becda55922255141d690878 Mon Sep 17 00:00:00 2001 From: Linghong Date: Sat, 5 Sep 2026 09:41:20 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=AD=96=E5=88=92GDD?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=8E=E8=87=AA=E5=8A=A8=E7=BB=AD=E8=B7=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 审批 revise 后继续同一 V2 Session 避免修订意见重复写入历史 保留独立修订回合身份 --- .../runtime_protocol/planning_policy_v2.rs | 28 ++++++++++--------- .../runtime_protocol/planning_session_v2.rs | 2 +- apps/ai-game-creator-shell/src/App.tsx | 7 +++++ 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_protocol/planning_policy_v2.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_protocol/planning_policy_v2.rs index f9f5ac6d1..4245ea33a 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_protocol/planning_policy_v2.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_protocol/planning_policy_v2.rs @@ -1467,19 +1467,21 @@ pub(crate) fn decide_planning_artifact_v2_at( }; approval.receipt_fingerprint = approval_fingerprint(&approval)?; write_approval_v2(root, &approval)?; - append_planning_message_v2( - root, - &PlanningMessageV2 { - schema_version: PLANNING_MESSAGE_V2_SCHEMA_VERSION.to_string(), - message_id: format!("msg-{}", Uuid::new_v4().simple()), - client_turn_id: input.decision_id.clone(), - turn_index: session.turn_index, - at_utc: approval.decided_at_utc.clone(), - role: "user".to_string(), - kind: "text".to_string(), - payload: serde_json::json!({"text": format!("审批:{} {}", input.action, comment.as_deref().unwrap_or_default()), "approvalAction": input.action, "artifactId": gdd.gdd_id, "version": gdd.version}), - }, - )?; + if input.action != "revise" { + append_planning_message_v2( + root, + &PlanningMessageV2 { + schema_version: PLANNING_MESSAGE_V2_SCHEMA_VERSION.to_string(), + message_id: format!("msg-{}", Uuid::new_v4().simple()), + client_turn_id: input.decision_id.clone(), + turn_index: session.turn_index, + at_utc: approval.decided_at_utc.clone(), + role: "user".to_string(), + kind: "text".to_string(), + payload: serde_json::json!({"text": format!("审批:{} {}", input.action, comment.as_deref().unwrap_or_default()), "approvalAction": input.action, "artifactId": gdd.gdd_id, "version": gdd.version}), + }, + )?; + } update_index_v2( root, &gdd, diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_protocol/planning_session_v2.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_protocol/planning_session_v2.rs index 27292a10e..bf4fd1850 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_protocol/planning_session_v2.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_protocol/planning_session_v2.rs @@ -810,7 +810,7 @@ fn build_provider_request_v2( let request = platform_llm::LlmRunRequest::new(messages) .with_api_kind(api_kind) .with_model(llm.model.clone()) - .with_max_output_tokens(4_096) + .with_max_output_tokens(16_384) .with_request_timeout_ms(llm.request_timeout_ms) .with_function_tools(planning_v2_function_tools()) .with_tool_choice(platform_llm::LlmToolChoice::Auto); diff --git a/apps/ai-game-creator-shell/src/App.tsx b/apps/ai-game-creator-shell/src/App.tsx index 3d39bf6ca..6a259becf 100644 --- a/apps/ai-game-creator-shell/src/App.tsx +++ b/apps/ai-game-creator-shell/src/App.tsx @@ -831,6 +831,13 @@ export function App({ replayed: approval.replayed, }); setPlanGddError(null); + if (action === 'revise' && comment?.trim()) { + await executePlanningV2Turn( + targetProjectPath, + `审批:revise ${comment.trim()}`, + `planning-v2-revision-${crypto.randomUUID()}`, + ); + } return; } await invokeDiagnostic(invoke, 'decide_game_creator_plan_gdd', {