前言¶
用 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 / 幻方无官方从属关系。