diff --git a/apps/ai-game-creator-shell/src/view/project-development/chat/components/AgentReasoning/AgentReasoning.tsx b/apps/ai-game-creator-shell/src/view/project-development/chat/components/AgentReasoning/AgentReasoning.tsx index c3d7da397..99d32d69c 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/chat/components/AgentReasoning/AgentReasoning.tsx +++ b/apps/ai-game-creator-shell/src/view/project-development/chat/components/AgentReasoning/AgentReasoning.tsx @@ -18,10 +18,16 @@ function AgentReasoningImpl({ text, label = '思考过程', testId, + turnKey, }: { text: string; label?: string; testId?: string; + /** + * 所属回合的 `DirectChatTurn.key`:写进 `data-turn-key`,供会话滚动的前插锚点按 + * 「回合 key + 块序号」定位这一块(见 `DirectProjectConversation/conversationScrollAnchor.ts`)。 + */ + turnKey?: string; }) { const [expanded, setExpanded] = useState(false); /* @@ -37,6 +43,7 @@ function AgentReasoningImpl({ className="design-agent-reasoning" aria-label={label} data-testid={testId} + data-turn-key={turnKey} onToggle={(event) => setExpanded((event.currentTarget as HTMLDetailsElement).open) } diff --git a/apps/ai-game-creator-shell/src/view/project-development/chat/components/DirectProjectConversation/DirectProjectTurn.tsx b/apps/ai-game-creator-shell/src/view/project-development/chat/components/DirectProjectConversation/DirectProjectTurn.tsx index 8ac6cb5f9..dce1a4c56 100644 --- a/apps/ai-game-creator-shell/src/view/project-development/chat/components/DirectProjectConversation/DirectProjectTurn.tsx +++ b/apps/ai-game-creator-shell/src/view/project-development/chat/components/DirectProjectConversation/DirectProjectTurn.tsx @@ -58,7 +58,11 @@ function renderTurnProcess(turn: DirectChatTurn, streamingKey: string | null) { ); if (turn.state !== 'finished') return blocks; return ( -
+
执行过程
{blocks}
@@ -78,6 +82,7 @@ function DirectProjectTurnUsage({ turn }: { turn: DirectChatTurn }) { className="message-turn-usage" data-testid="turn-usage" data-turn-running="false" + data-turn-key={turn.key} > {`本轮结束于 ${new Date(endedAt).toLocaleTimeString('zh-CN', { hour12: false, @@ -99,17 +104,27 @@ function renderBlock( calls={block.calls} active={turn.state === 'running'} className="message-tool-call" + turnKey={turn.key} /> ); } if (block.kind === 'reasoning') { return ( - + ); } const role = block.kind === 'user' ? 'user' : 'assistant'; return ( -
+