dsh-sidebar-enhancement-folder
给 dsh-better-sidebar 的每个文件编辑标签页加一个「打开所在文件夹」按钮:按钮内嵌在该标签自己的工具栏里(md/html 在「预览/编辑」旁边,PDF/图片/二进制查看器在标题栏),永远指向该标签自己的文件,不依赖哪个窗格是活动的。
English: One "open containing folder" button per editor tab in dsh-better-sidebar, embedded in that tab's own toolbar. Each button targets its own tab's file regardless of the active pane.
⚠️ 免责声明(请先读)
本插件是 vibecoding(与 AI 协作、边聊边写)出来的作品,作者纯自用,没有经过大规模测试,也没有在其他人的环境里验证过。
- 它直接操作 better-sidebar 的 DOM(向编辑器工具栏插入按钮、MutationObserver 自愈),better-sidebar 升级后可能失效;
- 安装与使用有风险:可能出现按钮错位、残留等问题,请自行评估后再装;
- 作者不对任何数据丢失、功能异常或使用后果负责;
- 如果遇到问题,欢迎提 issue,但不保证修复时间。
English: This plugin was vibecoded (built collaboratively with AI). It is for personal use, not battle-tested, and injects buttons into better-sidebar's DOM — install at your own risk. No warranty of any kind.
功能
- 每标签一个按钮:内嵌在工具栏行内(md/html 在预览/编辑旁边;PDF/图片/二进制在标题栏),非活动标签也有效,切换到它就显示
- 指向自己的文件:按钮路径取自该标签自己的
editorPathInput[title=路径](0.14 起),没有"活动窗格"判断逻辑
- 跟随布局:按钮活在窗格自己的 DOM 里,拖标签/拆分窗格/调宽度都跟着走;自愈机制每轮清理重复/残留按钮
- Windows 定位可靠:
explorer /select 参数经过真实窗口标题验证(windowsVerbatimArguments + 引号),支持带空格/中文的文件名;文件缺失时自动上溯到最近存在的目录
- 宿主侧路径解析:剥离
file:// 前缀,相对路径按会话工作目录解析
依赖
- DeepSeek Harness(DSH)Web GUI
- dsh-better-sidebar ^0.14(v1.0.2+ 适配 0.14 的
editorPathInput 路径源;v1.0.6+ 适配 0.19.1 的 dockkit 布局)
- 仅 Windows(使用
explorer.exe /select)
安装
# 从 GitHub release 安装(tarball)
dsh plugin --profile web add https://github.com/mastereal/dsh-sidebar-enhancement-folder/archive/refs/tags/v1.0.7.tar.gz
装完重启 dsh web,浏览器硬刷新(Ctrl+Shift+R),并关闭所有旧 DSH 窗口/标签页(旧实例会残留旧代码,造成按钮重复)。
使用
在侧边栏打开任意文件,每个编辑标签页的工具栏里会出现一个文件夹按钮;点击即在系统资源管理器中打开该文件所在文件夹并选中文件。
排障
控制台日志前缀 [dsh-sidebar-enhancement-folder]:
client loaded (v1.0.7) —— 浏览器端已加载
editors=N buttons=M —— 按钮同步计数(每个携带路径的 editorPathInput 算一个 editor)
reveal clicked: <路径> —— 发送给宿主的路径
宿主窗口会打印 [dsh-sidebar-enhancement-folder] reveal select/open <路径>。定位到错误文件夹时,看 reveal clicked 一行就知道标签携带的路径是什么。
工作原理(简)
better-sidebar 会把每个编辑器的内容渲染进 DOM(非活动标签只是 display:none),且每个编辑器必有 input[class*="editorPathInput"][title=路径](0.14 起,旧版是 span.editorTitle)。v1.0.6 起同步以该路径输入框本身为锚点全文档遍历——0.19.1 把编辑器移出了 paneTab 树(新 dockkit 布局:[data-dsh-panel-host] > section[data-dockkit-pane] > … > editorHeader > editorPathInput,[data-dsh-better-sidebar] 退化为空壳),旧的 paneTab 扫描在新版下找不到任何编辑器。客户端把按钮嵌入该编辑器自己的 header 行;自愈由 store 订阅 + MutationObserver(挂 document.body)+ 2 秒心跳组成,同步无防抖(requestAnimationFrame 合并),因此宿主重建 header 时按钮会在同一帧补回、不产生可见闪烁(v1.0.7)。宿主路由为 /dsh-sidebar-enhancement-folder/reveal;v1.0.5 起 reveal 后会把资源管理器窗口激活到前台(模拟 Alt + SetForegroundWindow,解决后台进程打开不置顶),v1.0.3 起按钮图标为文件夹+放大镜(与原生「文件树面板」按钮的纯文件夹图标区分)。
许可
MIT © 2026 mastereal
Vibecoded with DeepSeek Harness · 纯自用作品,谨慎安装