DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Kseleven /

Kseleven/dsh-pomodoro-timer

Verified

a pomodoro timer plugin in deepseek-harness

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@712f2365

番茄时钟 dsh-pomodoro-card

DeepSeek Harness 插件:在会话输入框下方的环境栏(conversation.composer.dock)里常驻一个番茄钟, 用圆环倒计时显示当前阶段,提供专注 / 短休息 / 长休息三段循环。

功能

  • 三段循环:专注 → 短休息 → 专注 …,每完成 4 个专注进入一次长休息(次数可调)。
  • 倒计时圆环:点击圆环开始 / 暂停 / 继续;圆环随剩余时间收缩,颜色随阶段变化 (专注番茄红、短休息绿、长休息蓝)。
  • 阶段操作:重置本阶段(回到完整时长)、跳过本阶段(不计入完成数)、打开设置。
  • 进度提示:阶段名 + 当前循环内的圆点进度(● ● ○ ○)。
  • 今日统计:按本地日期统计当日完成的专注数,跨天自动归零。
  • 可调设置:专注 / 短休息 / 长休息时长(分钟)、长休息间隔(个番茄)、 自动开始下一阶段、完成提示音、系统通知;支持一键恢复默认。
  • 刷新不丢:用绝对结束时间写入 localStorage,刷新或重开页面后继续倒计时; 同一 Harness 窗口内的多个会话共享同一个计时器。
  • 提示:阶段完成时用 Web Audio 播放三音提示;开启系统通知后,阶段完成会发桌面通知 (首次开启时向浏览器申请权限)。

目录结构

pomodoro-timer/
├── package.json        # bundle 清单:dsh.bundle / dsh.client 声明
├── cordis.patch.yml    # 把插件挂进 profile 的插入补丁
├── index.js            # Host 半边(空实现,计时器完全在 Client 侧)
├── client.js           # Client 模块:计时状态机 + 输入框下方 dock 组件
├── locale/
│   ├── en.json         # 插件市场上的英文标题 / 描述
│   └── zh.json         # 插件市场上的中文标题 / 描述
├── icon.svg            # 插件图标(插件包)
├── icon.png            # 市场条目图标(GitHub 托管的 PNG)
├── test/
│   └── run-tests.mjs   # 无浏览器 / 无 React 依赖的行为测试
├── LICENSE             # MIT
├── MARKETPLACE.md      # 上架到 DSH 插件市场的步骤
└── README.md

安装

插件通过 Harness 的插件管理器以本地 bundle 安装(在 profile 的 node_modules 中以 symlink 链接本目录):

  • 在本会话中,让代理执行: plugin_manager(action: "install_bundle", target: "<本目录的绝对路径>")
  • 或在 Harness 的插件管理界面里选择「从本地目录安装」,指向本目录。

安装完成后输入框下方会出现番茄钟;如果没出现,刷新一次 Web 界面。

上架到插件市场(让其他人也能在 Discover 里搜到)的步骤见 MARKETPLACE.md。

使用

操作 行为
点击圆环 开始倒计时 / 暂停 / 继续
↺ 重置当前阶段到完整时长(不改变已完成数)
⏭ 跳过当前阶段,不计入完成数
⚙ 展开 / 收起设置(Esc 收起)

设置项:

  • 专注时长 / 短休息 / 长休息:1–120 / 1–60 / 1–120 分钟。
  • 长休息间隔:每完成几个专注进入长休息,1–8 个。
  • 自动开始下一阶段:关闭后,每个阶段结束会停在待开始状态,需手动点圆环。
  • 完成提示音:用 Web Audio 合成三音提示,不依赖音频文件。
  • 系统通知:需要浏览器授权;如果之前拒绝过,按设置面板里的提示到站点设置中重新允许。

其他行为:

  • 跳过专注不会增加「今日完成」和循环圆点。
  • 专注完成时计数 +1,并按长休息间隔决定下一阶段;休息结束回到专注。
  • 关闭自动开始后,阶段结束会显示下一阶段的完整时长并等待手动开始。

数据

  • 存储键:dsh:pomodoro:timer:v1(localStorage)。
  • 内容:当前阶段、运行状态、绝对结束时间、暂停剩余时长、已完成专注数、今日统计、设置。
  • 清除该键即可恢复默认状态;设置面板中的「恢复默认」只重置设置项。

开发

  • 纯 Client 模块,无需构建:client.js 里嵌入 React(require('react'))、字典和样式, 以 window.__ModuleLoader__.load({ id, factory }) 注册,然后在 conversation.composer.dock 槽位注册组件。
  • 修改后无需重装(profile 里是指向本目录的 symlink),刷新 Web 界面即可; 若改了 package.json 里的 name / dsh 清单,需要重新安装一次。
  • 计时器逻辑在 store 中以 250ms 的 ticker 驱动,只在显示秒数变化 / 阶段切换时通知订阅者, 每次动作和阶段切换时落盘,不会每秒写 localStorage。
  • 主题使用 Harness 的 --dsw-alias-* 设计令牌;番茄红 / 绿 / 蓝只作为计时器本身的识别色。

测试

npm test        # 等价于 node test/run-tests.mjs

测试不需要浏览器或 React:test/run-tests.mjs 用 node:vm 伪造 window(内存 localStorage、可手动推进的假时钟、捕获的定时器、假的 document)加载真实 client.js,注入一个极小的 React hook 垫片,覆盖开始/暂停/重置/跳过、阶段切换、 长休息轮转、跨天统计、刷新恢复、设置夹取与落盘、以及组件的渲染与交互。

—/ 5

No ratings yet

Verified DSH bundle

Commit 712f23654f3e

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout