
装了 6 个 DSH 插件之后,
我把踩过的坑写成了一份手册
插件生态最难的从来不是「怎么装」,而是怎么判断该不该装。DSH 的社区目录已经有 6600+ 条,星数排序的前几名大半不是插件,装错方式还会静默失败——包进去了,功能一点没有。
下面是基于 dsh 0.1.0-rc.6 的实测记录:六个插件逐个拆开看它到底改了什么,三种装法各自的坑,以及一套能反复用的筛选流程。
6 实测插件 | 6600+ 生态条目 | rc.6 测试版本 |
01
先建立空间感
每个插件在 Web UI 里占哪块地方
插件之间会不会打架,很大程度上取决于它们抢不抢同一块地方。先看这张分布图:

对应到真实界面(1600×950):右侧栏是 better-sidebar 的 Explorer,最右那条竖条是 minigames 的折叠态,输入框上方显示当前 preset。

注意:dsh-tui 是完全独立的另一套界面,不在这张图里,也不能和 Web UI 共存于同一个 profile。后面单独说。
02
六个插件,逐个拆
功能是次要的,它改了什么才是重点
① dshmarket — 插件市场
npm: dshmarket · ★733 · 800+ 插件目录
dsh plugin --profile web add dshmarket
装完重启 dsh web,入口在 设置 → 插件市场。分类筛选、星数排序、AppStore 式截图预览、主题专页、备份恢复到 WebDAV,该有的都有。

真正值得单独说的是它的热启用/禁用:它写的是官方 patch 层,用 disabled: true 覆盖,而不是删包。所以禁用是可逆的、跨重启保留的,HMR 约 1 秒内重组,不用重启。
而且它明确声明:手工编辑的 patch 行会显示成徽章、host 基础设施插件禁止切换、格式错误的 patch 文件不会被弄得更糟。作者知道这个文件是共享的,做了防御——这一点很多插件没做到。
要留心:它的能力链条比普通插件长。它能往你的 profile 装任意包,而任何 bundle 包的 patch 对 host 组合树都有完全权限。信任市场等于连带信任它之后帮你装的东西。
更实际的问题:它不做兼容性检查。只管把包塞进当前 profile,不判断会不会撞 id、版本对不对得上。从界面装完,回命令行验一次。
dsh --profile web --dump-config >/dev/null &&echo OK||echo BROKEN
② dsh-better-sidebar — VSCode 式工作台
npm: dsh-better-sidebar · ★1820 · 生态星数最高
不只是「侧边栏」,是右侧栏 + 底部面板双工作台:
它是这批里唯一有生态位意义的。核心理念是服务优先——把自己的能力开放给所有插件,别的插件可以注册新页面和文件预览器。
关键在它自己的话:内置的 7 个 tab 和 6 个 viewer,与第三方插件走的是同一套 API,能力完全对等。这意味着你写插件时想加可视化面板,挂到它上面是一等公民,比自己往页面里塞 portal 规矩得多。
值得学的一个修复:v0.12.3 起,node-pty 加载失败不再拖垮 server——插件照常挂载,终端显示修复提示横幅,agent 终端工具自动跳过。降级而非崩溃,这是判断插件成熟度的关键信号。
代价:启动只拉 ~325KB 核心,重依赖按需加载——性能上做了功课。但安装时仍然拉了 52 个包,是这批里最重的。
③ dsh-at-file — @ 路径引用
github:omdsh-dev/dsh-at-file · ★301
输入框任意位置打 @,搜索当前 workspace,插入文件或目录路径。

候选菜单浮在输入框上方,结果先显示文件名、下方显示父目录
搜索逻辑比想象中细:
▸ 精确名 > 前缀 > 紧凑匹配排序,不会把字母散落在长路径里的也算匹配
▸ 含 / 的查询按路径段顺序匹配,src/view 能找到 src/client/view.ts
▸ 结尾加 / 表示在该路径内搜索,按 → 可直接进入目录
▸ 默认跳过版本控制、IDE 元数据、依赖树、缓存、构建产物,覆盖十几种主流工具链
最容易误解的一点
从 0.3.0 起,它不再在提交时读取文件内容。现在只是追加一条简短的引用消息,只包含 workspace 相对路径和类型——插件不会打开被引用的文件,也不会列出被引用目录的内容。
也就是说 @file 是给模型一个准确的路径,不是把文件内容塞进上下文。对 token 友好得多,但如果你以为「@ 了就等于模型看过了」,会出事。要读内容得靠会话里的其他工具。
建议:这是最适合第一个装的插件——功能小、独立、日常频率最高,几乎不可能和别的插件冲突。另外粘贴的文本默认按普通文本处理,想要旧行为去设置 → 文件提及里关掉对应开关。
④ dsh-minigames — 小游戏面板
github:omdsh-dev/dsh-minigames · 18 款离线游戏
等模型回复或修 bug 时的摸鱼神器。折叠态是浏览器右缘一条小竖条,展开后占窗口右半部分(360px–80vw 可拖)。18 款游戏全部离线、零资源文件、Canvas 绘制:恐龙跳一跳、俄罗斯方块、坦克大战、华容道、贪吃蛇、2048、扫雷、五子棋 vs AI、黑白棋 vs AI……面板折叠时自动暂停,最高分存本地。

展开后占据窗口右半部分,每款游戏都标了操作说明和最高分
但它真正的价值是当范本
它是「零依赖插件」的教科书:往页面注入 DOM portal,不依赖任何 host 服务,也不占用任何布局槽位。这是它几乎不可能和别的插件冲突的根本原因——它不参与 DSH 的布局系统,只是浮在上面。
代价是它也享受不到布局系统的好处,和 better-sidebar 同时展开时会争右侧空间。另外它同时提供两套注册文件(市场注册表用的和官方 bundle 机制用的),README 明确说二选一,别同时用。
⑤ dsh-liquid-glass — 壁纸与液态玻璃
github:xingyingyuzhui/dsh-liquid-glass
装完重启 dsh web,然后 设置 → 通用 → Liquid Glass。提供冰原(浅色)、深水(深色)两套壁纸预设,也能导入自己的图;壁纸透明度和玻璃模糊分开调——前者只改壁纸本身,后者只糊每个玻璃岛背后那一层。

控制项就挂在官方 Appearance 下方——叠加而非替换,这一点从界面上就看得出来
它的克制是最值得学的地方
README 里两句话点明了设计边界:在官方浅色 / 深色 / 跟随系统之上「叠加」;不抢官方几何——会话滚动仍由官方管,输入区 sticky 不改。
它不替换主题系统,也不接管布局几何。这两点决定了它和其他改外观的插件冲突面很小,也解释了为什么「关掉材质官方表面就回来」。
两点代价:它标注了对照的官方基线 commit——这是诚实的做法,但也说明它依赖官方 DOM 结构,版本漂移会失效。另外模糊和壁纸都是持续的渲染开销,低配机器或长会话滚动可能掉帧,不想要就只留壁纸、关掉玻璃。
⑥ dsh-tui — 终端界面(必须独占 profile)
npm: @deepseek-harness-tui/dsh-tui · ★1727
Claude Code 风格的终端界面:像素鲸鱼顶栏、实时工作状态行、思考流式展开、双击 Esc 时间回溯、上下文分段进度条 + TPS 仪表、缓存命中率、中英切换。命令是 CC 指令全集复刻,走 DSH 官方链路。
它不是叠加项,是替代品
从 patch 就能看出来——它改写了 dsh-base 15 处,并插入自己的 storage 相关条目,注释直言要挂载和 web-app 同样的 domain stack 和 storage root。后果是装进有 web-app 的 profile 必然失败。
// 装错 profile 会看到
Error: dsh: plugin tree failed to load: duplicate loader entry id: storage// 正确姿势:独占 profile + 真 TTY
dsh plugin --profile dsh-tui add @deepseek-harness-tui/dsh-tuidocker exec -it <容器> bash -l # -t 不能少cd /your/workspacedsh --profile dsh-tui
没有真 TTY 会直接报错要求交互式终端。这是「改写多处 = 替代型 = 独占 profile」的典型样本,可以拿来当判断其他插件的参照。
⑦ 自研插件:本地 link 的两个小包
一处设计值得记:portcheck 在取消时抛出异常,而不是返回否定结果。因为「端口没开」的语义是探测完成、结果是关;而被取消是根本没探完。如果报成 closed,模型会得到一个它无法察觉的假阴性。超时介于两者之间,所以单独用标记顶到摘要行。
03
装之前:先判断它是哪一种
装错方式会静默失败——包进去了,功能一点没有
dsh plugin add,自动进列表 | |
// 一条命令判断
npm view <包名> dsh
▸ 含 bundle patch → 真插件,dsh plugin add 可用
▸ 只有 client 字段 → 纯客户端包,还要手动往组合里加一行
▸ 输出为空 → 不是 DSH 插件,装了也没用
04
四种装法与卸载
# 从 npm(可固定版本)dsh plugin --profile web add dsh-better-sidebardsh plugin --profile web add dsh-better-sidebar@0.12.3# 从 GitHub(可固定 tag)dsh plugin --profile web add github:omdsh-dev/dsh-minigamesdsh plugin --profile web add 'github:owner/repo#v1.2.3'# 本地开发(第一步不能省)cd my-plugin && npm installdsh plugin --profile web add ./my-plugin# 装到别的 profile(不存在会自动创建)dsh plugin --profile dsh-tui add <包># 卸载dsh plugin --profile web remove <包名>
git 安装的坑:会跑仓库的 prepare 脚本做构建,构建失败整个安装就失败。有些仓库同时支持多个 agent 平台,prepare 会把别的平台入口一起编译,缺依赖就炸。
本地 link 的坑:link 方式不会安装被链接包自己的依赖,所以必须先单独跑一次 npm install。好处是改代码即时生效,不用重装。
卸载后顺手看一眼 profile 目录下的 patch 文件——有些插件会往里写东西,卸载时不清理,留下的孤儿条目每次启动都会警告刷屏。
05
装完必做的两件事
整篇里最重要的一节
# 1. 组合树还能解析吗dsh --profile web --dump-config >/dev/null && echo OK || echo BROKEN# 2. 重启服务(前端插件还要浏览器强刷 Ctrl+Shift+R)
为什么第一条尤其重要
配置被改坏时当场不报错。正在跑的进程读的是内存里的树,只有下次重启才暴露——那时候你可能已经装了三个包,根本分不清是谁干的。
所以:一次只装一个包,装完立刻验。
06
去哪里找插件
★6.7k · 6600+ 条 · 14 分类 | 首选。 |
6103 仓库 | |
800+ | |
awesome 列表分 14 类,其中 UI Enhancements(300+)、Usage & Billing(70+)、Themes & Appearance(40+)三类就占了 400+。要找「给模型加能力」的插件,直奔 Tools & Capabilities 和 Development & Runtime,别在几百条界面插件里翻。
⚠️ GitHub topic 页有严重干扰
topic 标签是仓库自己贴的,谁都能贴。按星数排序看到的前几名,大半不是 DSH 插件:
▸ 87.9k ★ 的是独立设计工具,把 dsh 当成它支持的 25+ agent 之一
▸ 40.7k ★ 的是简历生成器,完全无关
▸ 28.8k ★ 的是 Agent 上下文数据库
▸ 3.9k ★ 的是 Codex 的宠物 CLI,还需要 Bun
真正的插件星数普遍是个位数到几百。
但别一刀切:topic 里还混着 Preset 和 Skill 两类真扩展,它们不能用 dsh plugin add 装,但确实属于 DSH 生态——别因为装不上就当成无关项目。
07
一套能反复用的筛选流程
五关,任何一关不过就别装

第三关的对照表可以直接拿本文这几个插件当样本:
低风险,可叠加 | |
替代型,必须独占 profile |
第五关最容易被忽略
功能性插件一定要多问一句:它失败的时候,模型或用户能知道吗?better-sidebar 那个 node-pty 修复是正面例子——降级而非崩溃,且明确告知。portcheck 取消时抛异常而非返回 closed,也是同一个道理:宁可报错,也不要给出一个对方无法察觉的假答案。
最后一条经验:星数只是参考,作者更重要。
这个生态里没有爆款,与其看星,不如看同一作者或组织的其他包质量如何。
说明
· 全部结论基于 dsh 0.1.0-rc.6 实测,时间 2026-08-17
· 插件版本迭代快,安装前请以各仓库的 INSTALL.md 为准
· 截图为本地实际运行环境

如果你想更快的看到后续内容的更新,请戳 “点赞”、“分享”、“喜欢” ,这些免费的鼓励将会影响后续有关内容的更新速度。如果有任何问题欢迎加wx交流!
夜雨聆风