diff --git a/apps/ai-game-creator-shell/src/App.tsx b/apps/ai-game-creator-shell/src/App.tsx index 77ea9afae..eed5fe807 100644 --- a/apps/ai-game-creator-shell/src/App.tsx +++ b/apps/ai-game-creator-shell/src/App.tsx @@ -2075,6 +2075,7 @@ export function App({ const agentRuntimeResumeProjectPathRef = useRef(null); const agentRunHistoryLoadingMoreRef = useRef(false); const initialProjectOpenedRef = useRef(false); + const supervisorChatDraftHydratedRef = useRef(false); const pendingUiConfirmationActionRef = useRef<(() => void) | null>(null); const queueRunLocalShortcutRef = useRef<() => void>(() => undefined); const executeRunLocalRef = useRef<(announceToChat: boolean) => void>( @@ -3078,6 +3079,16 @@ export function App({ if (!supervisorChatOnly) { return; } + // 独立总控聊天窗口的挂载路径直接走 loadProjectConversation,不经过 + // openWorkspace,所以草稿的读取要在这里补一次;只回填一次,之后的渲染不再 + // 覆盖用户正在输入的内容。输入框尚未挂载时不移除守卫,等它出现再水合。 + if (!supervisorChatDraftHydratedRef.current) { + const persistedDraft = readSupervisorChatDraft(initialProjectPath); + if (persistedDraft && chatComposerRef.current) { + supervisorChatDraftHydratedRef.current = true; + chatComposerRef.current.replaceText(persistedDraft); + } + } const draft = chatComposerRef.current?.getDraft(); if (!draft || !hasMeaningfulDirectCodexContent(draft.content)) { return;