Profile
Back to NewsBack
GitHub Trending 6 min
Reader Mode
omdsh-dev/DSH-better-sidebar: 开放的侧边栏底座,支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理页面 | Open sidebar foundation, supports third-party extensions to register new sidebar pages. Built-in file rendering/editing, te

omdsh-dev/DSH-better-sidebar: 开放的侧边栏底座,支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理页面 | Open sidebar foundation, supports third-party extensions to register new sidebar pages. Built-in file rendering/editing, te

13 hours ago

dsh-better-sidebar

[!IMPORTANT]
v0.19.0 起接入 DSH 原生侧边栏:右列就是 DSH 自己的右侧栏,插件把每个 tab 类型注册为原生 tab(不再自绘右侧面板),只保留自绘的底部工作台与开放给所有插件的 ctx.betterSidebar 服务。
> v0.25.0 起要求 DSH 0.2.0-rc.2+(peer 下限 ^0.2.0-rc.2,v0.26.0 不变)。0.2.0 对本插件所用的全部宿主 API 是纯增量(零导出删除、会话格式仍 v4、CLI 与客户端运行时未变),所以这条支持线上没有运行时兼容分支,只把基线整体前移。DSH 0.1.7 线的用户请固定 [email protected]——caret 范围跨 minor 不成立,^0.1.7-rc.1 在 0.2.0 宿主上会被启动预检静默禁用;按 DSH 版本选插件版本的对照表见安装。

一个服务化的侧边栏框架,一套开箱即用的完整工作台

npm version npm downloads CI GitHub stars License: MIT dshfind

支持的 DSH 版本(v0.26.0):0.2.0-rc.2+ 插件生态:GitHub topic dsh-better-sidebar

文件管理 编辑预览 底部工作台 文件变动 后台任务 侧边对话 插件接入

右侧栏 + 底部面板双工作台,并把 ctx.betterSidebar 服务开放给所有插件——
通过 registerTab / registerFileViewer 注册新的侧边栏页面与文件预览器。

🌏 中文 · English

dsh-better-sidebar 工作台截图

📑 目录

✨ 功能一览

相比 DSH 官方侧边栏,本插件补上的关键能力:

  • 🖥️ 可编辑的代码编辑器:官方文档预览是只读的 → 插件保留可编辑的 CodeMirror 编辑器(保存、语法高亮、预览切换);Markdown / HTML 也走插件自有渲染(Mermaid 图表安全渲染 + 点击放大、README 级内嵌 HTML、浮动目录大纲、HTML 沙箱预览)
  • 🗂️ 增强文件树:接管内置「文件」页——懒加载目录树、展开的目录实时 watch 自动刷新、软链接识别、全局文件名搜索(粘贴绝对路径直开、相对路径按路径匹配)、拖拽上传、悬浮 @文件 一键引用进输入框;Ctrl/Cmd 多选 + Shift 连选(批量复制路径 / 批量删除)、Git 变更着色 + 状态字母(VS Code 同款)、新建文件夹 / 新建文件(行内输入;服务端拒绝非法名、Windows 保留设备名与已存在的目标,绝不截断同名文件)、排序(名称 / 类型 + 文件夹优先开关,默认与宿主原有顺序一致)、多选右键「压缩并打包下载」(服务端流式打 ZIP,无第三方依赖);右键「打开方式」= DSH 自带 open-in-app(宿主探测到的本机关联应用 + 文件管理器显示)+ 插件自研打开方式(资源管理器 / VS Code / Cursor / Zed / 自定义编辑器 URL 模板、SSH 远端、固定到菜单)两者并存
  • 🌿 文件变动(官方侧栏没有 Git 面板):Git 视角(暂存 / 提交 / 历史 / 工作树与子仓库)+ 本轮 AI 改动视角双合一,统一 diff 渲染(行内字符级高亮、语法着色、敏感内容脱敏);两视角共用一套 28px 行、单一空态/错误通道与吸底提交条
  • 🧩 任务管理(官方没有):子代理拓扑实时预览 + 后台任务清单(退出码 / 实时输出 / 强制终止)
  • 💬 侧边对话(官方没有,beta):Codex 风格侧边线程——继承主会话完整上下文独立运行,可持续追问,一键提升为顶层会话
  • 🖥️ 底部工作台(官方没有):右列交给 DSH 原生右侧栏,插件另加自绘底部工作台(拖拽分栏 / 按会话持久化),可与原生栏同时展开
  • 📂 模型打开侧边栏(可选):sidebar_open 工具让模型主动在侧边栏打开文件 / 文件夹 / 网页
  • 🔌 服务化扩展:ctx.betterSidebar 向所有插件开放(registerTab / registerFileViewer),内置 6 tab + 3 viewer 走同一套 API,已有 28+ 生态插件(见「🌐 插件生态」)
  • ⚡ 按需加载:启动只拉 ~325KB 核心,编辑器 / Mermaid / 第三语言词典按需加载 · 🌏 多语言跟随 DSH · 🔁 会话隔离按会话持久化布局

🚀 安装

前置:已装好 DSH(dsh web 能正常运行),Node.js ≥ 20、pnpm ≥ 10。

支持的 DSH 版本: 支持的 DSH 版本(v0.26.0):0.2.0-rc.2+

📌 通道与支持线:v0.26.0 适配 DSH 0.2.0-rc.2+(npm 的 latest / next 都是 0.2.0-rc.2)。装 DSH 请写精确版本号:npm i -g @deepseek-ai/[email protected](alpha 通道的 0.2.1-alpha.x 不在本版支持线内)。0.1.7 线的用户请固定 [email protected]:0.2.0 是宿主 minor 变更,^0.1.7-rc.1 这类 caret 范围在 0.2.0 上会被宿主的启动兼容性预检判定失败、整行静默禁用。
🧭 按你的 DSH 版本选插件版本:
> | 你的 DSH 版本 | 安装命令 | 版本 / peer 声明 |
| --- | --- | --- |
| 0.2.0-rc.2+(含之后的 0.2.0 正式版) | dsh plugin --profile web add dsh-better-sidebar@latest | 0.26.0,^0.2.0-rc.2 |
| 0.1.7-rc.1 ~ 0.1.7-rc.2(含 0.1.7 正式版) | dsh plugin --profile web add [email protected] | 0.22.1,^0.1.7-rc.1 |
| 0.1.7-alpha.1 / 0.1.7-alpha.2 | 没有可装版本——先把 DSH 升到 rc.1,再跑上一行:
npm i -g @deepseek-ai/[email protected] | — |
| 0.1.6-alpha.2 及更早、0.1.5-rc.*(含 npm latest 的 0.1.5-rc.3) | dsh plugin --profile web add [email protected] | 0.19.1,^0.1.5-rc.1 |
| 0.1.5-alpha.2 | dsh plugin --profile web add [email protected] | ^0.1.5-alpha.2 |
| 0.1.2-rc.* | dsh plugin --profile web add [email protected] | ^0.1.2-rc.1 |
| 0.1.2-alpha.2 | dsh plugin --profile web add [email protected] | ^0.1.2-alpha.2 |
| 0.1.0-rc.8 / 0.1.1 | dsh plugin --profile web add [email protected] | ^0.1.0-rc.8 |
> 命令里的 web 换成你自己的 profile 名即可。旧版本一律写精确版本号(@0.19.1 而不是 @latest),因为 latest 会随新正式版前移;反过来也不要在 0.1.7 的 alpha 上装 0.19.1,装上只会坏。
dsh plugin --profile web add dsh-better-sidebar@latest
本版不依赖任何需要构建脚本的包(终端连同 node-pty 已整体交还 DSH),安装一步到位;装完后可在 DSH 自带的 Plugins 页面直接启停。

装完硬刷新浏览器(Cmd/Ctrl+Shift+R)即可看到侧边栏(DSH 对 client 改动热加载,无需重启;仅 host 半更新时需要重启)。

方式二:让 DSH 自己装——把下面这段提示词发给任意一个 DSH 会话:

帮我安装 dsh-better-sidebar 插件(DSH 侧边栏工作台),步骤:
  1. 执行 dsh plugin --profile web add dsh-better-sidebar@latest(latest 即当前正式版)
  2. 完成后提醒我硬刷新浏览器(Cmd/Ctrl+Shift+R)
遇到报错先查 https://github.com/omdsh-dev/DSH-better-sidebar README 的常见问题表。

方式三:一键脚本——克隆本仓库后执行 bash scripts/install.sh(macOS / Linux / Windows Git Bash;Windows 原生环境用 install.ps1;-h 查看参数),自动完成安装 + bundle 注册(含幂等清理旧的手动挂载行)。

更新

dsh plugin --profile web add dsh-better-sidebar@latest

也可把 ~/.dsh/profiles/web/package.json 里的版本号改高后 pnpm install。改完硬刷新浏览器(Cmd/Ctrl+Shift+R)即可(client 改动无需重启 DSH)。

常见问题

| 现象 | 原因与解决 | |---|---| | 报 Ignored build scripts | pnpm 11 拦截了某个传递依赖的构建脚本。在 profile 目录(~/.dsh/profiles/web)跑 pnpm approve-builds 按提示放行——本插件自身已无构建脚本依赖(终端删除后 node-pty 不在依赖里)。 | | 报 minimum release age / 版本不足 24h | 装的版本发布不足 24 小时。等 24h 或重跑一次(pnpm 会自动补 minimumReleaseAgeExclude)。 | | 报「找不到 profile 目录」 | 先跑一次 dsh web,让它初始化 ~/.dsh/profiles/web。 | | 页面出现两个侧边栏 | 双挂载。旧的手动挂载行:~/.dsh/profiles/web/cordis.patch.yml 还留着 - insert: ... better-sidebar ...,删掉那段(同 id 重复挂载 loader 会直接报 duplicate loader entry id)。聚合包(如 @linxin666/dsh-web-ui-all)以不同 id 挂载本包时,0.13.x 起插件自身 bundle patch 会自动退让(检测到已有启用中的同包名挂载就不挂自己),无需手动处理;若仍双挂载,先确认聚合包的 bundle 顺序在 dsh-better-sidebar 之前。 | | 升级后设置页的值去哪了 | DSH 0.1.7 删除了插件可注册的设置命名空间:偏好现在写在 profile 里本插件的挂载行上(默认 entry id better-sidebar),不再是 ~/.dsh/settings.yaml。插件会在首次启动时把旧 settings.yaml(已被宿主改名为 settings.yaml.imported)里 dsh-better-sidebar 段一次性回迁,只迁移当前 schema 仍声明的字段、且只在该行还没有用户值时执行,不会覆盖升级后新设的值。 | | 终端无法使用 / 提示 shell 启动失败 | 右侧栏终端由 DSH 自身的 ui-sidebar-terminal 提供(本插件不再自带 PTY 与 node-pty,也没有终端相关设置项);底部工作台的那条也走同一个宿主服务(ctx.webTerminals),所以两侧的失败原因一致。遇到问题请查 DSH 侧文档;若报错提到构建脚本,见上一行。底部终端显示「宿主未提供终端能力」= 这个 DSH 部署没有挂终端控制器。 | | 提示 dsh: command not found | 先安装 DSH;或直接用 npx -y --package @deepseek-ai/dsh dsh plugin --profile web add dsh-better-sidebar@latest。 |

从源码安装 / 开发(可选,替代 npm 方式)

调试本地改动或跟随开发分支时,把依赖指向本地克隆并自行构建:

1. git clone https://github.com/omdsh-dev/DSH-better-sidebar.git ~/Code/DSH-better-sidebar
   cd ~/Code/DSH-better-sidebar && pnpm install && pnpm build
  1. ~/.dsh/profiles/web/package.json 的 dependencies 写 "dsh-better-sidebar": "link:<克隆目录绝对路径>"
  2. ~/.dsh/profiles/web/cordis.patch.yml 追加挂载行(这一行的 config 就是本插件的设置表单:部署限额 listLimit 加用户偏好字段,设置页写的就是它;不写则全部用 schema 默认值。readLimit / mediaLimit / uploadLimit 三个键已在 v0.26.0 删除——上传、下载、HTML 预览与打包全部改为流式,不再有大小限制;旧 profile 里残留的这三个键会被当作未知键静默忽略,不会报错):
- insert: - id: better-sidebar name: 'dsh-better-sidebar' config: listLimit: 1000
  1. 在 ~/.dsh/profiles/web 执行 pnpm install
  2. 硬刷新浏览器(Cmd/Ctrl+Shift+R)即可看到效果(client 改动无需重启 DSH;host 半改动才需重启)
更新:git pull && pnpm install && pnpm build → 硬刷新浏览器即可(client 改动热加载生效,无需重启 DSH;host 半改动才需重启)。切回 npm 通道时,把依赖改回 npm 上的对应版本(稳定线 "^0.19.1";本线 "^0.22.1")再 pnpm install。

通过 plugin-registry 安装(可选,与上述二选一)

前置:DSH 已集成 plugin-registry(dsh registry 可用)。同时启用两个通道会双挂载(Node 半挂两次、页面两个侧边栏)。

git clone https://github.com/omdsh-dev/DSH-better-sidebar.git && cd DSH-better-sidebar
pnpm install && pnpm build
node scripts/package-registry.mjs   # 组装 registry/ 暂存(含清单 + 产物 + README,不入库)
dsh registry install ./registry     # 安装(默认禁用)
dsh registry enable dsh-external/dsh-better-sidebar

更新:git pull && pnpm install && pnpm build → node scripts/package-registry.mjs → dsh registry uninstall/install/enable。切换通道前先移除另一通道的挂载。

🖼️ 特性巡礼

以下均为真实界面实拍(每行两张,点击可放大)。

| | | |---|---| | 🗂️ 文件工作台:资源管理器
支持两种格式的资源管理器:内嵌在文件预览中 / 独立显示文件树。懒加载目录树、展开的目录由宿主按目录 watch、改动后自动重列、软链接按目标类型展示(目录软链接可展开、失效链接标红)、全局文件名搜索、上传文件/文件夹与拖放上传、右键菜单(在新 Tab 打开 / 在侧边打开 / 新建文件夹 / 新建文件 / 打开方式:宿主探测到的系统关联应用(open-in-app)+ 插件自研目标(资源管理器 / VS Code / Cursor / Zed / 自定义编辑器,支持 SSH 远端与固定到菜单)/ 复制路径 / 重命名 / 删除)、Ctrl/Cmd 多选与 Shift 连选(批量复制路径 / 批量删除 / 压缩并下载)、Git 变更按状态着色并带 M/A/D/U 字母、头部工具区可切名称 / 类型排序 + 文件夹优先开关(默认即宿主原顺序)、悬浮 @文件 一键引用进输入框。

文件资源管理器
| 📝 Markdown · HTML 内联预览
Markdown 预览支持 Mermaid 图表(securityLevel: 'strict' 安全渲染 + 二次清洗;点击图表弹窗放大、滚轮缩放、拖拽平移)、README 级内嵌 HTML(徽章墙
、
折叠块内嵌 markdown、表格单元格内联标签——DOMPurify 白名单消毒真实渲染, Chat with me