前言¶
長對話跑起來經常一兩個小時過去,中間想按番茄鍾又不想切出頁面。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 。