前言¶
DSH 的宿主进程跑起来之后,容器里没有界面,日常的「上班打卡、看今天干了多久、月末算一下迟到率」这类事没有落点。要做这类记录,常见做法是自己写脚本写文件,再定期人工汇总;脚本不会给提醒,也不会算节假日和调休。
下面介绍的插件 mryouyouHK/youyou-work-hours 把计时面板做进了 DSH 客户端侧栏。鼠标悬浮左侧「计时」条目就能打卡、看今日工时和迟到率,数据留在本机浏览器里,配套日历、年、列表三种视图做回顾。
这是社区插件,不是 DeepSeek 官方应用,目录站 SkillHub 也和 DeepSeek / 幻方没有官方从属关系。
这是什么¶
一句话定位:一个 DSH 客户端插件,提供上班/下班打卡、可配置的班次时间、今日与平均工时统计、日历/年/列表三种回顾记录,以及基于通知中心的超时提醒。
维护者是 mryouyouHK,仓库地址 https://github.com/mryouyouHK/youyou-work-hours,MIT 许可证。package.json 里 name 为 youyou-work-hours,version 为 1.1.0。
解决问题:把工时记录从「脚本 + 手工汇总」变成客户端里带提醒、带节假日口径的面板,同时保留本地存储,不产生服务端上传。
核心功能¶
侧栏「计时」浮层¶
鼠标悬浮左侧「计时」条目时,在侧栏右侧打开浮层,样式与「API 余额」的菜单一致。四行两列内容:
- 第一行:计划上班/上班
- 第二行:计划下班/下班
- 第三行:今日工时/月均工时
- 第四行:本月迟到率/本周迟到率
底部是上班、下班两个快捷打卡按钮。点击浮层外任意位置(包括「计时」条目本身)或按 Esc 关闭;点击快捷打卡按钮后保存记录并关闭浮层。
可配置的时间与提醒¶
所有判定时间都能在面板「设置」里改,README 给出的默认值如下:
计划上班时间 09:00 显示计划班次;未打卡时侧栏提示
计划下班时间 18:00 预计下班时间、超时倒计时的基准;某天可在面板里单独覆盖
迟到判定时间 10:00 晚于该时间上班记为迟到(只统计周一至周五)
超时提示时间 19:30 过了该时间,侧栏「计时」条目红色呼吸底色
下班提示时间 20:00 过了该时间,会话顶部出现打卡提醒条
下班提醒条 开启 关掉后超过下班提示时间也不再显示提醒条
下班提醒条文案 可配置 {time} 会替换成已过时长
超时爆闪间隔 5 分钟 超过预计下班后每隔这么久短促爆闪一次(1–60)
超时爆闪提示文案 可配置 爆闪时通知中心显示的正文(最多 120 字)
上班打卡、下班打卡和当日计划下班都可以手动编辑,时间以 24 小时制显示。没有单独设置时,预计下班按全局「计划下班时间」计算。
「设置」默认收起,点标题展开后修改。改动先留在本地草稿,点「保存设置」才写入,保存成功会弹出 toast 提示;未保存时标题旁显示「未保存」。
工时与平均工时的口径¶
这块口径容易算错,写出来以便核对:
- 累计工时按上班打卡至当前时间或下班打卡的经过时间计算,不扣除休息时间。
- 平均工时 = 该月已完成工时的总时长 ÷ 该月已完成工时天数。当天还没下班时,实时工时计入「总工时」,但不参与平均,避免上午把平均拉低、下班又突然跳高。
- 迟到天数只统计当天完整填写上下班时间的日期,未完成的日期不计入迟到分母。
- 迟到率只按工作日统计:分母是已完成工时的工作日天数。周末打卡照常记工时,但不计入迟到天数与迟到率。迟到天数后面括号里的百分比就是该率。
面板顶部有四张卡:今日累计工时、预计下班倒计时、月平均工时、年平均工时。
三种记录视图¶
- 日历:按月显示网格,每天显示工时与状态(迟到/准时/进行中)。周六、周日浅灰底色,法定节假日显示假期名并加暖色底,调休上班日标「班」。点击某天在下方展开该日详情;点「编辑」(或双击任意时间)进入编辑,改完点「保存」提示保存成功。
- 年视图:12 个月卡片,每张显示该月「平均/天」、总工时、出勤天数、迟到天数,并列出具体迟到日期;点击某月切换到该月日历详情。
- 列表:按月表格逐条显示并编辑上班、计划下班、下班时间。
三个视图之间可以随时切换,「今天/今年」按钮回到当前时间。
法定节假日¶
内置 2025–2026 年国务院办公厅公布的放假安排。节假日按非工作日处理(不计迟到、不进迟到率分母),调休上班日(周末补班)按工作日处理。2027 年起的新安排需要更新代码里的假期表。
安装与启用¶
README 没有给出一条可直接复制的 shell 命令,而是写明了接入方式:
使用 Harness plugin_manager 的 install_bundle 指向本目录。
Host 端插件重新启用或重启 Harness 后生效;客户端刷新页面即可。
具体路径是仓库根目录。在 package.json 里,dsh.bundle.patch 指向 ./cordis.patch.yml,dsh.client 声明平台为 web、immediately: true,并注入三个客户端 UI 包:
{
"dsh": {
"bundle": { "patch": "./cordis.patch.yml" },
"client": {
"platform": "web",
"immediately": true,
"inject": [
"@deepseek-ai/dsh-client-ui-layout",
"@deepseek-ai/dsh-client-ui-sidebar",
"@deepseek-ai/dsh-client-ui-chat"
]
}
}
}
这里没有 dsh plugin add 形式的命令,不要把仓库名直接拼成安装命令。接入前应打开仓库根目录确认目录结构和 package.json,确认与你本地 Harness 版本的匹配情况。
数据保存位置¶
打卡记录与所有设置默认只保存在本机浏览器的 localStorage,键为 work-hours:data:v1,不上传任何服务器。需要备份或换机时,在「设置」里用「导出配置」得到 JSON 文件,再用「导入配置」恢复;「恢复默认时间」只重置设置,不删除打卡记录。
调试与测试¶
面板底部的「调试模式」可以分别预览下班倒计时、超时爆闪、超时红色提示和下班提醒条。每次只运行一个 case,点击当前 case 的「关闭」清除模拟并恢复正常模式,预览不会修改打卡记录。
超时爆闪每次触发时,同时调用通知中心插件新增一条「超时提醒」(正文取自定义文案),并尝试显示系统通知;若系统通知不可用,通知中心显示应用内横幅。通知仅在每个配置间隔的爆闪周期开始时触发一次。
仓库自带测试脚本:
node test/logic.test.mjs
覆盖默认值与非法值回退、旧数据迁移、总工时/平均工时/迟到统计、进行中当天、缺下班打卡、年视图汇总、导入校验与缓存失效。
适用场景与注意¶
适合想在 DSH 客户端里顺手记录上下班、月底看平均工时和迟到率的人,尤其是已经把客户端当日常入口、不希望再开一套独立打卡工具的场景。
注意事项:
- 插件以当前 dsh 进程的权限运行,能读到的目录和文件范围等同于该进程,安装前应先读一遍源码、确认依赖与补丁内容,再决定是否启用。
- 数据只在本机浏览器,换浏览器或清缓存前先「导出配置」,否则本地记录会丢失。
- 提醒依赖通知中心插件,没装或没有可用系统通知时只会在通知中心里显示应用内横幅。
- 2027 年及以后的节假日需要手动更新代码里的假期表。
- 目录页的星标数很少(当前目录信息为 0),属于个人项目,遇到问题建议通过 GitHub Issues 反馈。
小结¶
这个插件的价值在于把打卡、班次判定、节假日口径和平均工时合成放进 DSH 客户端侧栏,数据全程留在本机,不需要额外服务。要写清楚的部分是它依赖客户端 UI 注入,接入方式是 install_bundle 指向仓库目录,且没有提供命令行安装串。
参考资料:
- 目录页:https://www.skillhub.cn/plugins/mryouyouHK/youyou-work-hours
- 仓库:https://github.com/mryouyouHK/youyou-work-hours