fix: 迭代计数修复 — stateChange 也携带迭代号,双通道同步

- IPC handler 将 stateChange 事件转发到渲染进程
- useAgentStream 同时监听 streamEvent 和 stateChange 更新迭代
- 切换会话/发消息时重置 currentIteration 为 0
- 添加 console.log 诊断日志
This commit is contained in:
thzxx
2026-06-27 23:06:14 +08:00
parent 4f20205aba
commit 2d276feda5
2 changed files with 16 additions and 5 deletions
+6 -2
View File
@@ -84,9 +84,13 @@ export function registerAllIPCHandlers(
}
};
const onStateChange = (data: { previous: string; current: string }) => {
const onStateChange = (data: { previous?: string; current?: string; sessionId?: string; iteration?: number; state?: string }) => {
// AGENT 层:记录状态转换
log.info(`[AGENT] State: ${data.previous}${data.current}`);
if (data.previous) log.info(`[AGENT] State: ${data.previous}${data.current}`);
// 转发到渲染进程(携带迭代号)
if (!mainWindow.isDestroyed()) {
mainWindow.webContents.send('agent:stateChange', data);
}
};
agentLoop.on('streamEvent', onStreamEvent);
+10 -3
View File
@@ -39,7 +39,8 @@ export function useAgentStream(): void {
const store = useAgentStore.getState();
// 每次收到迭代号时同步更新
if (data.iteration != null) {
if (data.iteration != null && data.iteration !== store.currentIteration) {
console.log(`[useAgentStream] iteration: ${store.currentIteration}${data.iteration} (event: ${data.type})`);
store.setCurrentIteration(data.iteration);
}
@@ -195,12 +196,18 @@ export function useAgentStream(): void {
};
}, []);
// 监听状态变化事件
// 监听状态变化事件(含迭代号)
useEffect(() => {
if (!window.metona?.agent?.onStateChange) return;
const unsubscribe = window.metona.agent.onStateChange((state: unknown) => {
// 状态变化由主进程推送,UI 已通过 streamEvent 处理
const data = state as { sessionId?: string; iteration?: number; state?: string; previous?: string; current?: string };
if (data.iteration != null) {
const store = useAgentStore.getState();
if (data.iteration !== store.currentIteration) {
store.setCurrentIteration(data.iteration);
}
}
});
return () => unsubscribe();