fix(identity): Agent详情面板监听Rust身份更新事件刷新名称
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled

问题: Rust端post_conversation_hook写回soul.md后emit Tauri事件,
但前端RightPanel未监听该事件,导致面板不刷新。

修复: RightPanel添加zclaw:agent-identity-updated事件监听,
收到后调用updateClone更新AgentConfig.name并刷新clone列表。
This commit is contained in:
iven
2026-04-23 10:28:12 +08:00
parent 08812e541c
commit e64a3ea9a3

View File

@@ -9,6 +9,7 @@ import { toChatAgent, useChatStore, type CodeBlock } from '../store/chatStore';
import { useConversationStore } from '../store/chat/conversationStore';
import { intelligenceClient, type IdentitySnapshot } from '../lib/intelligence-client';
import { invoke } from '@tauri-apps/api/core';
import { listen, type UnlistenFn } from '@tauri-apps/api/event';
import type { AgentInfo } from '../lib/kernel-types';
import {
Wifi, WifiOff, Bot, BarChart3, Plug, RefreshCw,
@@ -195,6 +196,23 @@ export function RightPanel({ simpleMode = false }: RightPanelProps) {
return () => window.removeEventListener('zclaw:agent-profile-updated', handler);
}, [currentAgent?.id]);
// Listen for Tauri identity update events (from Rust post_conversation_hook)
// When agent name changes in soul.md, update AgentConfig.name and refresh panel
useEffect(() => {
let unlisten: UnlistenFn | undefined;
listen<{ agentId: string; agentName?: string }>('zclaw:agent-identity-updated', (event) => {
const { agentName } = event.payload;
if (agentName && currentAgent?.id) {
updateClone(currentAgent.id, { name: agentName })
.then(() => loadClones())
.catch(() => {});
}
})
.then(fn => { unlisten = fn; })
.catch(() => {});
return () => { unlisten?.(); };
}, [currentAgent?.id]);
const handleReconnect = () => {
connect().catch(silentErrorHandler('RightPanel'));
};