diff --git a/apps/desktop/src/renderer/src/App.tsx b/apps/desktop/src/renderer/src/App.tsx index 89f316c..b81188e 100644 --- a/apps/desktop/src/renderer/src/App.tsx +++ b/apps/desktop/src/renderer/src/App.tsx @@ -329,6 +329,32 @@ export default function App(): JSX.Element { // 浏览器插件(内置):面板 tab 按其启用态门控(禁用后 tab 与可开列表同步消失) const browserEnabled = plugins.find((p) => p.manifest.id === 'browser')?.enabled ?? true + // Agent 调用浏览器工具 → 自动展开侧面板并激活浏览器标签。 + // 每回合(agent_start)只强制一次:回合中用户手动收起面板不被反复顶开。 + const browserAutoOpenedRef = useRef(false) + useEffect(() => { + return window.api.onEvent((event) => { + if (event.type === 'agent_start') { + browserAutoOpenedRef.current = false + return + } + if ( + event.type === 'tool_start' && + event.toolName.startsWith('browser_') && + !browserAutoOpenedRef.current && + browserEnabled + ) { + browserAutoOpenedRef.current = true + setSide((s) => ({ + ...s, + open: true, + tabs: s.tabs.includes('browser') ? s.tabs : [...s.tabs, 'browser'], + active: 'browser' + })) + } + }) + }, [browserEnabled]) + // 面板标签:browser(宿主内置组件)+ manifest 声明 panel 的外置插件(iframe 页) const panelTabs = sideTabIds.flatMap((id) => { if (id === 'browser') { diff --git a/apps/desktop/src/renderer/src/components/browser/BrowserPanel.tsx b/apps/desktop/src/renderer/src/components/browser/BrowserPanel.tsx index 8ea8e9a..fbfd71d 100644 --- a/apps/desktop/src/renderer/src/components/browser/BrowserPanel.tsx +++ b/apps/desktop/src/renderer/src/components/browser/BrowserPanel.tsx @@ -384,8 +384,9 @@ export function BrowserPanel(props: BrowserPanelProps): JSX.Element { )} {/* 页面区域:原生 WebContentsView 对齐到这里的矩形。 - * 让位期(菜单/浮层打开)以冻结快照占位,快照未就绪时短暂纯白 */} -