dsh-pomodoro-dial:挂在 Harness 界面右下角的番茄钟

前言

长对话跑起来经常一两个小时过去,中间想按番茄钟又不想切出页面。dsh-pomodoro-dial 是社区维护的 Harness 插件,给 DeepSeek Harness Web UI 加一个常驻右下角的浮动计时盘,专注、短休、长休的时长都可以自己设,闹铃用 Web Audio 实时合成、不依赖音频文件。下面介绍它的功能、安装和用法。

这是什么

  • 名称:zilta-amaze/dsh-pomodoro-dial(插件名 dsh-pomodoro-dial),由 zilta-amaze 维护,MIT 许可。
  • 定位:Harness Web 界面里的番茄钟小组件,挂在右下角,计时状态在对话过程中一直可见。
  • 解决的问题:在 Harness 里工作时分心是常事,这个插件把计时器嵌进界面本身,不用开第二个窗口,也不算打断当前对话。

核心功能

时长全自定义。专注、短休、长休各自设 1 分钟及以上,既有步进按钮也有可直接输入的分钟框。

轮次跟踪。每完成 N 轮专注(默认 4)进入一次长休,卡片顶部显示当前轮次。长休开关可以关掉,关掉后每轮之后都走短休,轮次改为正序计数。

闹铃有五种,全部用 Web Audio API 实时合成:清脆铃、三音铃、木质敲击、电子滴答、渐强钟声。没有音频文件,离线能用,选中即试听,也可以选静音。响铃时长(5–60 秒)和音量都能调。

交互细节:卡片可收成一个 24:59 的胶囊,胶囊上直接播放/暂停;可拖到任意位置并记住;自动开始下一段是可选开关,关掉后每段结束会停下来等人。计时和设置存在 localStorage,刷新页面后继续。

界面跟随宿主:中英文随 Harness 界面语言切换,颜色全部取自 --dsw-alias-* 主题变量,明暗主题与宿主一致。

安装与启用

dsh plugin --profile web add github:zilta-amaze/dsh-pomodoro-dial

装完重新加载一次 Harness 页面,客户端部分属于页面包,不刷新不会生效。

安装后不需要构建步骤,也不需要手工加载组件,页面刷新后右下角就会出现计时盘。

典型用法

首次加载时组件在右下角展开一次。点箭头收起后变成一个胶囊,再点它展开。胶囊上的 ▶ 或卡片里的「开始」按钮开始专注阶段。

设置入口在齿轮图标里:时长、长休开关与间隔、音效、响铃时长、音量、自动开始。

拖标题栏(或胶囊)可移动位置,位置会被记住。

实现与注意

插件由一个 cordis bundle 行加一个客户端模块构成。index.js 是空的宿主半边,client.js 在 shell.overlay 插槽里注册本地化组件,自带计时引擎,用 React.createElement 渲染。引擎在 React 之外运行,通过 useSyncExternalStore 发布快照,状态存在 localStorage 的 dsh-pomodoro-dial:* 键下。

运行时用的浏览器 API 只有 localStorage 和 AudioContext,插件自己声明不发起任何网络请求、不收集信息。

注意几点:插件以当前 dsh 进程的权限运行,安装前应先浏览源码和许可证(仓库内附 LICENSE,MIT)。它要求宿主 Harness 的 Client 暴露 shell.overlay 插槽和 locale 服务(@deepseek-ai/dsh-client-ui-layout、@deepseek-ai/dsh-client-locale),太旧的构建可能不满足。功能上偏简单,没有统计、多设备同步或远程铃声库。

结尾

如果你的番茄钟习惯就是在浏览器里完成、不想跳出当前对话,这个插件值得一装:托管在 Harness 的 shell.overlay 里,无需外部服务。目录页在 https://www.skillhub.cn/plugins/zilta-amaze/dsh-pomodoro-dial ,源码在 https://github.com/zilta-amaze/dsh-pomodoro-dial 。

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

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

小夜