diff --git a/apps/ai-game-creator-shell/src-tauri/src/agent/design_runtime.rs b/apps/ai-game-creator-shell/src-tauri/src/agent/design_runtime.rs index 1907ea4d3..0f6b61662 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/agent/design_runtime.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/agent/design_runtime.rs @@ -59,6 +59,8 @@ pub(crate) struct DesignEvent { kind: String, message_id: Option, text: Option, + #[serde(skip_serializing_if = "Option::is_none")] + reasoning_text: Option, view: Option, } @@ -97,6 +99,7 @@ fn design_event( kind: kind.to_string(), message_id: id.map(str::to_string), text, + reasoning_text: None, view, } } diff --git a/apps/ai-game-creator-shell/src/App.tsx b/apps/ai-game-creator-shell/src/App.tsx index f404ddd84..e6d659cea 100644 --- a/apps/ai-game-creator-shell/src/App.tsx +++ b/apps/ai-game-creator-shell/src/App.tsx @@ -742,6 +742,7 @@ export function App({ ); planningV2SessionRef.current = planningV2Session; const [planningV2TransientReply, setPlanningV2TransientReply] = useState(''); + const [planningV2Reasoning, setPlanningV2Reasoning] = useState(''); const planningV2TurnRef = useRef<{ projectPath: string; clientTurnId: string; @@ -1915,6 +1916,9 @@ export function App({ if (payload.kind === 'text' && payload.text != null) { setPlanningV2TransientReply(payload.text); } + if (payload.reasoningText != null) { + setPlanningV2Reasoning(payload.reasoningText); + } if (payload.kind === 'tool' && payload.text) { setPlanningV2TransientReply(payload.text); } @@ -11641,6 +11645,7 @@ export function App({ ? directCodexTransientReply : projectSupervisorTransientReply } + designReasoning={planningV2Reasoning} visibleMessages={visibleMessages} visibleProfessionalAgentCards={visibleProfessionalAgentCards} showProfessionalCollaboration={ diff --git a/apps/ai-game-creator-shell/src/app/types.ts b/apps/ai-game-creator-shell/src/app/types.ts index 81b84b326..cf57ba3a4 100644 --- a/apps/ai-game-creator-shell/src/app/types.ts +++ b/apps/ai-game-creator-shell/src/app/types.ts @@ -993,6 +993,7 @@ export interface DesignEvent { kind: string; messageId?: string | null; text?: string | null; + reasoningText?: string | null; view?: DesignView | null; } diff --git a/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx b/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx index 17499d5a9..10a3c515c 100644 --- a/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx +++ b/apps/ai-game-creator-shell/src/features/project-workspace/ProjectSupervisorView.tsx @@ -90,6 +90,7 @@ type ProjectSupervisorViewProps = RuntimePanelProps & { projectPath: string; showProfessionalCollaboration?: boolean; transientReply: string; + designReasoning?: string; visibleMessages: ChatMessage[]; visibleProfessionalAgentCards: AgentStatusCard[]; workspaceStatus: string; @@ -142,6 +143,7 @@ export function ProjectSupervisorView({ projectPath, showProfessionalCollaboration = true, transientReply, + designReasoning = '', visibleMessages, visibleProfessionalAgentCards, workspaceStatus, @@ -245,6 +247,12 @@ export function ProjectSupervisorView({ /> ))} + {designReasoning ? ( +
+ 显示思考过程 +
{designReasoning}
+
+ ) : null} {directCodex && (runtimePanelProps.controlBusy || Boolean(directProcessDetail)) ? (