From 30f35e3bcb5375f2706d2cc5363f3db4c26bc77c Mon Sep 17 00:00:00 2001 From: xintaofei Date: Mon, 23 Mar 2026 15:06:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E4=BC=9A=E8=AF=9D=E9=BB=98=E8=AE=A4ag?= =?UTF-8?q?ent=E5=8F=96Agents=E7=AE=A1=E7=90=86=E9=87=8C=E6=8E=92=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E7=9A=84Agent=EF=BC=8C=E8=80=8C=E4=B8=8D=E6=98=AF?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E8=A1=A8=E9=87=8C=E9=9D=A2=E7=9A=84=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E4=B8=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/chat/agent-selector.tsx | 24 +++++++++---------- .../conversation-detail-panel.tsx | 8 +++++-- src/contexts/folder-context.tsx | 14 ++++------- src/contexts/tab-context.tsx | 4 ++-- 4 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/components/chat/agent-selector.tsx b/src/components/chat/agent-selector.tsx index 209a087..91c96fb 100644 --- a/src/components/chat/agent-selector.tsx +++ b/src/components/chat/agent-selector.tsx @@ -31,6 +31,7 @@ export function AgentSelector({ const [selected, setSelected] = useState( defaultAgentType ?? null ) + const selectedRef = useRef(selected) const onSelectRef = useRef(onSelect) const onAgentsLoadedRef = useRef(onAgentsLoaded) @@ -58,23 +59,19 @@ export function AgentSelector({ const visible = sorted.filter((a) => a.enabled) setAgents(visible) onAgentsLoadedRef.current?.(visible) - if (defaultAgentType) { - const found = visible.find( - (a) => a.agent_type === defaultAgentType && a.available - ) - if (found) { - setSelected(found.agent_type) - } else { - const first = visible.find((a) => a.available) - if (first) { - setSelected(first.agent_type) - onSelectRef.current(first.agent_type) - } - } + // Keep current selection if still available; otherwise pick first. + const preferred = defaultAgentType ?? selectedRef.current + const found = preferred + ? visible.find((a) => a.agent_type === preferred && a.available) + : null + if (found) { + setSelected(found.agent_type) + selectedRef.current = found.agent_type } else { const first = visible.find((a) => a.available) if (first) { setSelected(first.agent_type) + selectedRef.current = first.agent_type onSelectRef.current(first.agent_type) } } @@ -119,6 +116,7 @@ export function AgentSelector({ const handleSelect = (agentType: AgentType) => { setSelected(agentType) + selectedRef.current = agentType onSelect(agentType) } diff --git a/src/components/conversations/conversation-detail-panel.tsx b/src/components/conversations/conversation-detail-panel.tsx index 74da482..c59cd01 100644 --- a/src/components/conversations/conversation-detail-panel.tsx +++ b/src/components/conversations/conversation-detail-panel.tsx @@ -866,7 +866,9 @@ const ConversationTabView = memo(function ConversationTabView({
{ setAgentsLoaded(true) @@ -917,7 +919,9 @@ const ConversationTabView = memo(function ConversationTabView({
{ setAgentsLoaded(true) diff --git a/src/contexts/folder-context.tsx b/src/contexts/folder-context.tsx index 2786458..7bdf0e7 100644 --- a/src/contexts/folder-context.tsx +++ b/src/contexts/folder-context.tsx @@ -25,7 +25,6 @@ interface SelectedConversation { } interface NewConversationState { - agentType: AgentType workingDir: string } @@ -44,7 +43,7 @@ interface FolderContextValue { clearSelection: () => void newConversation: NewConversationState | null - startNewConversation: (agentType: AgentType, workingDir: string) => void + startNewConversation: (workingDir: string) => void cancelNewConversation: () => void stats: AgentStats | null @@ -205,13 +204,10 @@ export function FolderProvider({ setSelectedConversation(null) }, []) - const startNewConversation = useCallback( - (agentType: AgentType, workingDir: string) => { - setNewConversation({ agentType, workingDir }) - setSelectedConversation(null) - }, - [] - ) + const startNewConversation = useCallback((workingDir: string) => { + setNewConversation({ workingDir }) + setSelectedConversation(null) + }, []) const cancelNewConversation = useCallback(() => { setNewConversation(null) diff --git a/src/contexts/tab-context.tsx b/src/contexts/tab-context.tsx index 41d985e..3915df4 100644 --- a/src/contexts/tab-context.tsx +++ b/src/contexts/tab-context.tsx @@ -322,7 +322,7 @@ export function TabProvider({ children }: TabProviderProps) { cancelNewConversation() return } - startNewConversation(tab.agentType, workingDir) + startNewConversation(workingDir) } }, [ @@ -588,7 +588,7 @@ export function TabProvider({ children }: TabProviderProps) { setTabs((prev) => [...prev, newTab]) setActiveTabId(tabId) - startNewConversation(agentType, workingDir) + startNewConversation(workingDir) activateConversationPane() }, [activateConversationPane, startNewConversation, syncFolderContext, t]