fix(browser): Agent 调用浏览器工具自动展开面板 + 页面区让出拖拽把手

This commit is contained in:
Rick Ye
2026-09-11 16:25:25 +08:00
parent 403b3b3ca1
commit 038339f2fe
2 changed files with 29 additions and 2 deletions
+26
View File
@@ -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') {
@@ -384,8 +384,9 @@ export function BrowserPanel(props: BrowserPanelProps): JSX.Element {
)}
{/* 页面区域:原生 WebContentsView 对齐到这里的矩形。
* 让位期(菜单/浮层打开)以冻结快照占位,快照未就绪时短暂纯白 */}
<div className="relative min-h-0 flex-1 bg-page">
* 让位期(菜单/浮层打开)以冻结快照占位,快照未就绪时短暂纯白。
* 左内缩 4px:原生视图盖住一切 DOM,必须让出侧面板左缘的拖拽把手 */}
<div className="relative min-h-0 flex-1 bg-page pl-1">
{activeTab && !slotHidden ? (
<BrowserSlot key={activeTab.tabId} tabId={activeTab.tabId} />
) : activeTab ? (