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
+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();