bug: playground tools dropdown stays open behind the create/edit tool dialog

该问题出现在 Langfuse Playground 的 Tools 菜单中:当用户从工具下拉菜单打开创建或编辑工具弹窗时,工具列表层没有关闭,仍然停留在弹窗下方或覆盖在弹窗上,属于 UI 层的弹层生命周期问题,因此应优先检查下拉菜单与弹窗的开合状态是否联动。

快速结论:该问题出现在 Langfuse Playground 的 Tools 菜单中:当用户从工具下拉菜单打开创建或编辑工具弹窗时,工具列表层没有关闭,仍然停留在弹窗下方或覆盖在弹窗上,属于 UI 层的弹层生命周期问题,因此应优先检查下拉菜单与弹窗的开合状态是否联动。

适用环境:自托管(Self-hosted)Langfuse,运行 main 分支 commit 95933f73a;Issue 标注为 UI only,SDK 与集成版本为 N/A,未提供操作系统、Python、CUDA、显卡等环境信息。

最快修复方案:暂无确认的一步修复方案。Issue 讨论给出的方向是:由代码接管 Tools Popover 的 open 状态,在弹窗打开前或打开时先关闭 Popover,并把 CreateOrEditLLMToolDialog 改为渲染在 PopoverContent 的同级,而不是嵌套其内部。

注意事项:上述方案来自 Issue 中维护方机器人分析以及相关 PR 的修复模式,并非本 Issue 已验证的结论;由于 Radix 在关闭时会卸载下拉菜单或弹窗内容,如果把弹窗仍嵌在 PopoverContent 里,关闭 Popover 时会连带销毁弹窗,因此必须同时调整渲染层级。

问题场景

用户在 Langfuse Playground 顶部工具栏点击 Tools,从下拉菜单中选择 Create new tool,点击已保存工具旁的铅笔(编辑)图标,或点击已附加的工具卡片时,会弹出创建或编辑 LLM 工具的对话框。Issue 描述的现象是:Tools 下拉层不会关闭,工具列表仍然渲染在对话框下方或覆盖在对话框内容上,导致表单难以阅读和操作。

报错原文

bug: playground tools dropdown stays open behind the create/edit tool dialog

原因分析

根据 Issue 讨论,可能原因如下:CreateOrEditLLMToolDialog 被嵌套渲染在 Tools Popover 的内容内部。DialogTrigger 和对话框自身的 open 状态都在工作,但弹窗打开时没有任何逻辑去关闭父级 Popover,于是 Popover 继续挂载在对话框遮罩层下方。Issue 将同类问题定性为弹层生命周期问题,而非 z-index 层级问题。

环境排查

  • 确认 Langfuse 版本:Issue 中为自托管 main 分支 commit 95933f73a,可对照自身版本是否包含相关修复。
  • 确认问题路径:Playground 的 Tools 下拉菜单,以及创建、编辑工具和工具卡片三种入口是否都能复现。
  • 确认前端代码结构:ConfigurationDropdowns.tsx 与 PlaygroundTools/index.tsx 中 Tools Popover 的 open 状态是否受控,CreateOrEditLLMToolDialog 是否仍嵌在 PopoverContent 内部。
  • Python、CUDA、PyTorch、显卡、SDK 版本与本问题无直接关系,Issue 已标注 UI only,无需作为排查项。

解决步骤

  1. 定位 Playground 中 Tools 组件的 Popover,将其 open 状态改为受控,由父组件持有。
  2. 在打开创建或编辑工具对话框时,先关闭该 Popover,再打开对话框。
  3. 把 CreateOrEditLLMToolDialog 从 PopoverContent 内部移到其同级位置,避免 Popover 关闭卸载内容时把对话框一起销毁。
  4. 可优先尝试迁移到已有 PopoverController 和 DialogController(PR #15893 引入)的写法,使弹层生命周期不再由下拉内容内部持有。
  5. 参考 PR #14693 中 useAddLlmConnectionSelect 协调钩子的模式,作为两个弹层联动的具体实现参考。

验证方法

在 Playground 中依次执行三条复现路径:Tools → Create new tool、点击已保存工具的铅笔图标、点击已附加工具卡片。确认这些操作都能正常打开对话框,同时 Tools 下拉层已关闭,且不再出现在对话框下方或覆盖在对话框上;关闭对话框后再次打开 Tools,菜单应能正常展开。

参考来源

langfuse/langfuse #16738

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29678

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注