前言¶
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