fix(dsh): use native sidebar with floating fallback - #236
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
问题与结果
BrowserSkill 的观测入口此前依赖 better-sidebar 的布局快照和标签打开语义。better-sidebar 0.19 将右栏交给 DSH 原生实现后,这些假设失效:缺失的布局树可能引发渲染异常,观测标签使用的占位
path会被当作真实文件打开,原生标签状态也无法从旧布局树正确判断,导致错误标签反复出现。本 PR 将观测入口直接接入 DSH 原生右栏,并保留悬浮窗兜底。例如,当前会话开始浏览器任务时,会打开正常的 Browser Skill 页面标签;不会再尝试读取名为
browser-skill:observation的文件。关联:#233、#232、#229、#228。
**范围说明:**本分支基于
main的5241450,其中 #231 已补充缺失splits的空值保护。本 PR 在此基础上移除旧接入及其布局树遍历,解决剩余的标签打开、状态判断和故障兜底问题。#228 另外提到的browser_tabs等工具重名注册冲突未在本 PR 中处理,因此此处使用关联链接,不自动关闭全部 issue。用户可见行为
自动打开按 DSH 会话记录:当前会话有归属自己的浏览器会话时触发;全部相关浏览器会话结束后,新一轮任务可以再次触发。原生标签显示当前会话及其子代理的浏览器,悬浮窗延续显示本插件实例管理的全部浏览器会话。
实现与故障处理
sidebarRight/sidebarRightTabs服务注册页面类型及正文、标题插槽;删除对betterSidebar服务、splits/bottomSplits/panelOpen等内部布局字段和占位文件路径的依赖。openTabIn(sessionId, kind)明确指定目标会话,避免会话切换期间操作上一会话仍挂载的右栏。订阅通知通过微任务调度导航,避免同步通知重入。主要改动位于
packages/dsh-plugin-browserskill/src/client/observation-sidebar.tsx、新增的observation-presentation.ts和现有ObservationOverlay.tsx,并更新相应测试和文档。没有新增必需运行时依赖,也没有修改浏览器工具定义、执行流程、观测 HTTP 协议或会话归属规则。验证结果
验证对象:提交
934a73b。git diff --check/bsk-observation/state正常响应;安装包内容与该提交的构建一致回归测试覆盖有/无 better-sidebar、有/无原生能力、插槽延迟出现与撤销、部分注册失败、延迟挂载与超时、切换会话、关闭标签后的更新、手动切换不持久化、内容与控制按钮的会话范围、隐藏标签的截图需求,以及原生 hook 抛错后的可用悬浮窗。
可从仓库根目录复跑主要检查:
**验证边界:**真实界面测试在 macOS 上进行,DSH CLI 为
0.1.5-rc.1,实际加载的 Web/原生右栏组件为0.1.5-rc.2;观测数据来自本地测试夹具。没有在报告问题的 Windows/Linux 环境复测,也没有把该测试表述为真实模型驱动浏览器任务的完整端到端验证。原生能力缺失和故障注入主要由自动化测试覆盖。兼容边界与评审重点
openTabIn来自 DSH 0.1.5 导出的右栏控制器,并不属于较窄的ISidebarRight接口。实现使用结构化能力检测,没有静态导入该包;未来宿主改动该契约时仍需复核兼容性。兜底不是对所有第三方插件异常的全局保证。0.2.1的用户才会收到修复;本地验证使用的是该提交的构建包。建议在合并前补做 Windows 或 Linux 上的实际浏览器任务验证,尤其是首次打开、会话切换,以及安装 better-sidebar 时的共存场景。