dynamic-schulte-dsh:在 dsh Web UI 里边等模型边玩的舒尔特方格插件

前言

用 DeepSeek Harness(DSH)跑智能体会话时,模型思考、生成回复的间隙是纯粹的等待:几秒到几十秒里不能打断会话,也没事可做,通常只能切出去刷别的页面再切回来。dynamic-schulte-dsh 把这段时间利用起来——它是一个等待时间小游戏插件,在模型回复期间,你可以在 dsh Web UI 里玩一局舒尔特方格。DSH 的理念是「一切皆插件」,这个插件正是按这个思路做的。下面介绍它的功能、安装方法和实现方式。

这是什么

dynamic-schulte-dsh 由 marvin9551 维护,定位一句话能讲清:动态舒尔特方格 · DSH 等待时间小游戏插件,在等待模型回复时于 Web UI 中游玩。模型不参与游戏——它专门在等待模型回复时打开,边玩边等。

插件在 dsh Web UI 的侧边栏底部注册一个「舒尔特」入口;当前会话模型思考中时,入口会亮起呼吸绿点提示。历史记录和设置存于浏览器 localStorage,无后端、无账号体系。当前版本 0.1.0,许可证为 MIT。

核心功能

已实现的能力有五项:

  • 静态网格:经典 n×n 舒尔特方格(3×3 ~ 7×7),按顺序点击 1..N;
  • 动态轮盘:数字分布在同心圆环上,轮盘按可调转速旋转,训练手眼协调与抗干扰能力;
  • 等待提示:模型思考中时,侧边栏入口与面板头部同步显示提示;
  • 本地持久化:历史记录与设置存于浏览器 localStorage,无需后端;
  • 可选增强:目标数字高亮 / 随机色彩干扰。

安装与启用

插件声明了 dsh.bundle 清单,可以通过 dsh plugin add 安装。先构建,再装进 profile,最后启动:

# 1. 构建(或使用已发布的产物)
pnpm install
pnpm build

# 2. 安装进 profile
dsh plugin --profile <name> add -w /path/to/dynamic-schulte-dsh

# 3. 启动 Web UI
dsh --profile <name>

<name> 换成你自己的 profile 名,/path/to/dynamic-schulte-dsh 换成仓库的本地路径。经过上面的步骤,打开 Web UI 后,在侧边栏底部点击「舒尔特」即可开玩。

卸载同样是一条命令:

dsh plugin --profile <name> remove dynamic-schulte-dsh

架构与开发

如果你想在它基础上改,代码分两半:

  • host 半(src/index.ts):占位插件。游戏为纯浏览器端,host 半仅作为 Cordis Loader 行与 dsh.client 客户端包发现的载体,不注册任何能力。
  • client 半(src/client/):浏览器 bundle,注册 sidebar.footer.action 槽位;面板内是完整游戏——engine.ts 为纯 TS 状态机(无 React 依赖),GridBoard / RouletteBoard 分别渲染静态网格与动态轮盘。

构建方面,tsdown.config.ts 复刻 harness 仓库的 client bundle 约定:平台模块外部化、其余内联,产出 window.__ModuleLoader__.load({id, factory}) 闭包工厂,由 web shell 以 /plugins/dynamic-schulte-dsh/client.js 提供。

开发时常用的三条命令:

pnpm typecheck      # tsc --noEmit
pnpm build          # tsdown,产出 lib/index.js(host 占位)与 lib/client.js(浏览器 bundle)
pnpm verify:host    # 构建产物冒烟验证

运行环境为 dsh Web UI(@deepseek-ai/dsh-web-app bundle),依赖 React 18 作为平台模块,并需要浏览器支持 localStorage。

适用场景与注意事项

适合两类人:一是日常用 dsh 跑会话、想把等待时间利用起来的用户;二是想给 dsh Web UI 写插件、需要找一个「client 半注册槽位 + host 半占位」最小示例的开发者——这个插件的架构就是现成的参考。

安装前注意两点:

1、插件以当前 dsh 进程的权限运行,装进 profile 后会随 dsh --profile 一起加载,建议先读一遍源码再决定是否安装;
2、插件依赖 React 18 平台模块和浏览器 localStorage,部署前确认你的 dsh Web UI 环境满足要求。

结尾

这个插件解决的问题很具体:等待模型回复的碎片时间。不引入后端、不依赖模型,纯浏览器端实现,装好即玩。源码与更多细节见 GitHub 仓库:

  • GitHub:https://github.com/marvin9551/dynamic-schulte-dsh
  • 社区目录收录页:https://www.skillhub.cn/plugins/marvin9551/dynamic-schulte-dsh

社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。

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

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

Xiaoye