oh-my-dsh:一次装好的 DSH Web 插件组合

前言

DSH Web 本体开箱可用,但移动端界面、登录、文件侧栏、搜索 provider 切换这些常用能力,实际分散在多个社区插件里。逐个找插件名、核对版本、处理彼此冲突的启动层改动,本身就要花不少时间。

oh-my-dsh 是 KeqingMoe 维护的一个组合包,把 7 个 Web 侧插件打成一个 npm 包,一条命令装完,面向 DeepSeek Harness 0.2.1-rc.3。下面介绍它的组成、安装方式和需要注意的重启限制。

这是什么

oh-my-dsh 是一个 DSH Web 插件 bundle,包名 @keqingmoe/oh-my-dsh,当前版本 0.2.0,MIT 许可,仓库在 https://github.com/KeqingMoe/oh-my-dsh 。GitHub 上目前 1 star、1 fork。

它不是自己重新实现上述能力,而是把社区里已有的插件收敛成一个固定版本组合,并附带一个 cordis.patch.yml,在加载时对宿主做少量补丁。对使用者来说,好处是版本组合经过维护者挑选,不用自己查每个插件的兼容版本。

package.json 的 description 写的是「A curated Web bundle for DeepSeek Harness 0.2.1-rc.3」,也就是这个包是针对特定版本号整理的组合。

核心功能

README 的「包含」一节列出了组合内容,每个功能对应一个具体插件:

功能 插件 锁定版本
手机界面 dsh-mobile-upgrade 0.8.11
Web 登录 dsh-web-startup-auth 0.1.13
手机 Enter 换行 @jiesou/dsh-webui-fix-mobile-enter-newline 0.2.0
文件、Git 与终端侧栏 dsh-better-sidebar 0.28.1
Codex Web dsh-codex 0.3.2
搜索 provider 切换 dsh-search-switch 0.1.0
MCP 管理界面 dsh-mcp 1.14.1

另外依赖里还有 @deepseek-ai/dsh-session-format-catalog,版本与宿主一致,是 0.2.1-rc.3。

其中 dsh-web-startup-auth 替换了 DSH 内置的 web-startup 行,这一点会直接影响下面的重启要求。

安装与启用

安装命令来自 README,两种方式等价:

# npm
dsh plugin --profile web add @keqingmoe/oh-my-dsh
# 或直接从 GitHub 安装
dsh plugin --profile web add github:KeqingMoe/oh-my-dsh

安装命令统一走 --profile web,说明这个 bundle 只作用于 Web 端。

启用方式:安装后重启 dsh web。如果机器上已经有旧版 oh-my-dsh 或同名插件,先移除再安装。README 没有列出任何需要手工填写的配置项或配置文件,功能在重启后即生效。

注意:安装或卸载后必须重启

这是 README 专门列出的「已知限制」,不是包自身的问题。

DSH 0.2.1-rc.3 的插件热重载只覆盖「可替换」的插件;已加载的插件模块会留在 ESM 缓存里,fiber 仍持有注册,进程内没有受支持的卸载或重新导入方式。本包用 dsh-web-startup-auth 替换了内置的 web-startup 行,所以无论安装还是卸载,都会动到启动层:

dsh plugin --profile web add @keqingmoe/oh-my-dsh
# 或
dsh plugin --profile web remove @keqingmoe/oh-my-dsh

执行完之后必须重启 dsh web,否则启动层的生命周期会停在不一致状态,只能靠重启恢复。

README 给的上游依据:

  • 官方变更日志 v0.2.1-rc.1:「启用热重载时,更新或重新安装的可替换插件直接生效,无法热重载时提示重启。」 https://www.dsh.so/zh/changelog/
  • Discussion #1231 Host capability: graceful self-restart for plugin managers:已加载的插件代码无法安全重新导入,更新流程最终都停在「请手动重启」。 https://github.com/deepseek-ai/deepseek-harness/discussions/1231
  • Discussion #2717(中文):建议官方提供「重启扩展服务」与完整插件更新生命周期。 https://github.com/deepseek-ai/deepseek-harness/discussions/2717

环境与许可

engines 要求 ^22.19.0 || >=24.0.0。仓库内 files 只包含 cordis.patch.yml、README.md、LICENSE、THIRD_PARTY_NOTICES.md,说明补丁和许可说明都随包发布。

许可方面,dsh-mobile-upgrade 的许可见仓库内 THIRD_PARTY_NOTICES.md,本项目自身采用 MIT 许可。

适用场景

适合两类人:一是想一次装齐 Web 端常用插件、懒得逐个查版本的人;二是给团队统一环境、希望 Web 侧能力一致的维护者。包内版本是锁定的,如果你需要某个插件的更新版本,只能等维护者升级,不适合自己改依赖版本。

两点需要留意:

  1. 插件以当前 dsh web 进程权限运行,能访问该进程可访问的文件、Git 仓库与环境变量。安装前建议先读一遍源码,确认补丁内容和许可证后再装。
  2. 仓库 star 数为 1,属于早期项目。功能本身来自成熟的社区插件,但组合层和补丁只有这一个维护者在维护。

社区插件目录页在 https://www.skillhub.cn/plugins/KeqingMoe/oh-my-dsh ,目录是独立站点,与 DeepSeek / 幻方没有官方从属关系,不要当成官方应用商店。

结尾

oh-my-dsh 的价值在于把 7 个 Web 侧插件收敛成一个固定版本组合,用一条命令装完,省去逐个查找和版本匹配的成本。代价是必须接受「装完或卸载都要重启 dsh web」这个上游限制,以及补丁内容完全由维护者决定。

目录页:https://www.skillhub.cn/plugins/KeqingMoe/oh-my-dsh
仓库:https://github.com/KeqingMoe/oh-my-dsh

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜