乐于分享
好东西不私藏

老吴严选:6 个真正好用的 DSH 插件,附避坑清单

老吴严选:6 个真正好用的 DSH 插件,附避坑清单

装了 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 · 生态星数最高

不只是「侧边栏」,是右侧栏 + 底部面板双工作台

文件工作台
懒加载目录树 + CodeMirror 编辑器;图片 / MD / HTML / PDF / Office 内联预览;失效软链接标红
真实终端
xterm.js + node-pty,断线重连回放;可选为模型注入终端工具
Git 面板
真 diff + VSCode 式 diff tab、历史、右键暂存/提交/还原
内嵌浏览器
多开 tab、沙箱 iframe;HTTP 在侧栏开、HTTPS 走系统浏览器
后台任务页
subagent 拓扑 + 后台任务(退出码 / 实时输出 / 强制终止)
会话隔离
布局 / Tab / 面板按会话持久化,陈旧状态自动净化

它是这批里唯一有生态位意义的。核心理念是服务优先——把自己的能力开放给所有插件,别的插件可以注册新页面和文件预览器。

关键在它自己的话:内置的 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 的两个小包

dsh-plugin-hello
打招呼,验证插件加载的最小示例
dsh-plugin-portcheck
TCP 端口探测,逐端口报开 / 关 / 无应答

一处设计值得记:portcheck 在取消时抛出异常,而不是返回否定结果。因为「端口没开」的语义是探测完成、结果是关;而被取消是根本没探完。如果报成 closed,模型会得到一个它无法察觉的假阴性。超时介于两者之间,所以单独用标记顶到摘要行。

03

装之前:先判断它是哪一种

装错方式会静默失败——包进去了,功能一点没有

Bundle 插件
有 bundle patch 声明 → dsh plugin add,自动进列表
Preset
有 agent 配置 / preset 目录 → 复制进 presets 目录
Skill
有 SKILL.md → 放进 skills 目录,且组合里得有对应行

// 一条命令判断

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

去哪里找插件

awesome-dsh-plugin
★6.7k · 6600+ 条 · 14 分类
首选。
有分类结构,适合按需求逛
GitHub topic
6103 仓库
全量,但干扰极大,见下
dshmarket 界面
800+
装了就能在界面里直接逛,带截图
其余三份 awesome 精选
自动扫描的雷达索引更全但未筛选

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

一套能反复用的筛选流程

五关,任何一关不过就别装

第三关的对照表可以直接拿本文这几个插件当样本:

只 insert 自己一行
低风险,可叠加
dshmarket、minigames、at-file、better-sidebar、liquid-glass
改写 dsh-base 多处
替代型,必须独占 profile
dsh-tui(改了 15 处)

第五关最容易被忽略

功能性插件一定要多问一句:它失败的时候,模型或用户能知道吗?better-sidebar 那个 node-pty 修复是正面例子——降级而非崩溃,且明确告知。portcheck 取消时抛异常而非返回 closed,也是同一个道理:宁可报错,也不要给出一个对方无法察觉的假答案。

最后一条经验:星数只是参考,作者更重要。

这个生态里没有爆款,与其看星,不如看同一作者或组织的其他包质量如何。

说明

· 全部结论基于 dsh 0.1.0-rc.6 实测,时间 2026-08-17
· 插件版本迭代快,安装前请以各仓库的 INSTALL.md 为准
· 截图为本地实际运行环境

如果你觉得内容还算实用,欢迎点赞分享给你的朋友,在此谢过。

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

完整演示视频请移步B站老吴聊技术