修复策划 Agent 推理展示生命周期

按项目与回合绑定 reasoning 事件

保留回合结束后的思考过程并在新回合清理

补充默认折叠的展开收起交互与定向测试

更新推理与正文分离里程碑进度
This commit is contained in:
2026-09-14 14:47:33 +08:00
parent f7c8b9f217
commit 9f40f044a5
5 changed files with 119 additions and 4 deletions
+25 -1
View File
@@ -833,6 +833,11 @@ export function App({
view: DesignView;
} | null>(null);
const [planningV2Reasoning, setPlanningV2Reasoning] = useState('');
const designAgentReasoningTurnRef = useRef<{
projectPath: string;
clientTurnId: string;
text: string;
} | null>(null);
const planningV2TurnRef = useRef<{
projectPath: string;
clientTurnId: string;
@@ -1125,6 +1130,11 @@ export function App({
projectPath: nextProjectPath,
clientTurnId,
};
designAgentReasoningTurnRef.current = {
projectPath: nextProjectPath,
clientTurnId,
text: '',
};
designAgentPendingViewRef.current = null;
await designAgentEventSubscriptionReady();
setChatAgentBusy(true);
@@ -1648,6 +1658,7 @@ export function App({
setPlanningV2Session(null);
setPlanningV2TransientReplyTarget('');
designAgentPendingViewRef.current = null;
designAgentReasoningTurnRef.current = null;
setPlanningV2Reasoning('');
setPlanningV2Active(planningStartMode);
planningV2ActiveRef.current = planningStartMode;
@@ -2108,7 +2119,15 @@ export function App({
setPlanningV2TransientReplyTarget(payload.text);
}
if (payload.reasoningText != null) {
setPlanningV2Reasoning(payload.reasoningText);
const reasoningTurn = designAgentReasoningTurnRef.current;
if (
reasoningTurn &&
reasoningTurn.projectPath === payload.projectPath &&
reasoningTurn.clientTurnId === payload.clientTurnId
) {
reasoningTurn.text = payload.reasoningText;
setPlanningV2Reasoning(payload.reasoningText);
}
}
if (payload.kind === 'tool' && payload.text) {
setPlanningV2TransientReplyTarget(payload.text);
@@ -11936,6 +11955,11 @@ export function App({
projectPath: nextProjectPath,
clientTurnId,
};
designAgentReasoningTurnRef.current = {
projectPath: nextProjectPath,
clientTurnId,
text: '',
};
designAgentPendingViewRef.current = null;
setPlanningV2TransientReplyTarget('');
setPlanningV2Reasoning('');
@@ -263,8 +263,11 @@ export function ProjectSupervisorView({
</div>
))}
{designReasoning ? (
<details className="design-agent-reasoning">
<summary>显示思考过程</summary>
<details
className="design-agent-reasoning"
aria-label="策划 Agent 思考过程"
>
<summary>思考过程(点击展开)</summary>
<pre>{designReasoning}</pre>
</details>
) : null}