dsh-peak-hours:在 DSH 會話頂欄顯示北京高峯時段徽章

前言

DeepSeek Harness(DSH)的理念是「一切皆插件」,會話界面裏的每個角落理論上都能由插件擴展。但實際寫一個頂欄插件要處理幾件事:往會話頂欄工具行註冊自己的組件、適配淺色/深色主題、把用戶設置持久化——其中最後一步在第三方插件這裏還有額外限制。

dsh-peak-hours 是一個把這些問題都走通一遍的小插件:它在會話頂欄顯示一個「高峯時段」狀態徽章,按北京時間判斷當前是否處於 09:00–12:00 或 14:00–18:00,並附帶當前北京時間。打開會話就能看到狀態,不需要切出去覈對時間。

下面按功能、原理、安裝、使用的順序介紹。

這是什麼

dsh-peak-hours 是一個 DeepSeek Harness 插件,作者 lco117,MIT 許可證(© 2026 lco117),當前版本 0.1.0。社區目錄將其歸入「趣味換裝」類(該分類來自目錄頁標註)。

它解決一個具體問題:在 dsh web 會話頂欄常駐顯示當前北京時間是否處於高峯時段。判斷邏輯始終以北京時間爲準——把絕對時間戳平移 UTC+8(無夏令時),不受機器所在時區影響。

核心功能

  • 會話頂欄徽章:顯示在對話區域頂部工具行,位於「會話日誌下載」左邊。
  • 始終北京時間:按 UTC+8 平移判斷,無論機器在哪個時區,狀態都正確。
  • 兩個高峯區間09:00–12:0014:00–18:00,半開區間——12:00:00 與 18:00:00 屬於非高峯。
  • 每 15 秒自動刷新:到達區間邊界後最多 15 秒內狀態翻轉,無需刷新頁面。
  • 語言可配置:在「設置 → 通用 → 徽章語言」選擇中文或 English,選擇持久化,重啓後保持。
  • 跟隨主題:使用外殼語義色 token(--dsw-alias-*),淺色/深色主題下都協調。
  • 零延遲:純客戶端時間計算,沒有網絡請求,也沒有額外模型調用。

顯示規則:高峯期間顯示「🔴 高峯時段」加當前北京時間,其餘時間顯示「🟢 非高峯時段」,鼠標懸停可查看完整區間說明。

工作原理

插件分兩個半:

  • client.js(瀏覽器半):掛載時及每 15 秒讀取 new Date(),轉換爲北京時間的鐘面分鍾,對照兩個半開高峯區間判斷;把徽章註冊進 conversation.session.header.utilities(排在會話日誌工具左邊),並把「徽章語言」選擇行註冊進 settings.general.item
  • index.js(Host 半):註冊 peak-hours 設置命名空間(language 字段,默認 zh),以及一個宿主進程內私有 loopback RPC 通道 /peak-hoursget/set),供瀏覽器半讀寫語言設置。

有兩處設計決策值得說清楚:

爲什麼語言設置走私有 RPC 通道而不是 settings RPC? dsh-host-apiproxy 只對顯式白名單(WEB_SETTINGS_NAMESPACES / PRODUCT_SETTINGS_NAMESPACES)內的命名空間開放 settings 讀寫,第三方插件註冊的命名空間會收到 settings-not-exposed,選擇無法持久化。因此瀏覽器半走宿主進程內私有通道(ctx.connection.rpc.handle),宿主內對 ctx.settings 的讀寫不受該白名單限制,持久化保持不變。

爲什麼高峯判斷放在客戶端? 需求是「當前系統時間轉爲北京時間」。瀏覽器時鐘就是系統時間,UTC+8 平移是常量,本地計算即可——沒有 Host RPC 往返,也沒有額外失敗點。

安裝與啓用

要求已安裝 dsh CLI 並初始化過 profile(dsh plugin --profile <name> add 會自動初始化)。

從 GitHub 直裝:

dsh plugin --profile web add github:lco117/dsh-peak-hours

純 JS 包,沒有構建腳本,運行時依賴只有 @deepseek-ai/schemastery ^3.18.1,不需要 pnpm ≥10 的 allowBuilds 許可,直裝即用。官方文檔建議固定提交安裝:

dsh plugin --profile web add github:lco117/dsh-peak-hours#<commit-sha>

開發時從本地目錄安裝:

dsh plugin --profile web add ./dsh-peak-hours

驗證安裝:

dsh --profile web --dump-config

輸出中應出現 "# == dsh-peak-hours" 層。

典型用法

1、啓動 dsh web
2、打開任意會話——徽章出現在會話頂欄工具行的最左側(「會話日誌下載」按鈕的左邊)。
3、閱讀狀態:09:00–12:00 / 14:00–18:00 期間顯示「🔴 高峯時段」+ 北京時間,其餘時間顯示「🟢 非高峯時段」;懸停可查看完整區間說明。
4、可選:打開「設置 → 通用」,在「徽章語言」中選擇中文或 English,選擇會持久化,重啓後保持。

自定義

兩處常見調整都在源碼裏:

  • 高峯區間與刷新間隔是 client.js 頂部的常量,改 PEAK_WINDOWS / REFRESH_MS 即可。
  • 徽章文案在 client.jsLANGUAGES,設置 schema 在 index.js。新增徽章語言時需要同步這兩處。

適用場景與注意

適合在 dsh web 裏工作、想隨時看到北京時間是否處於高峯時段的用戶,也適合作爲「如何在會話頂欄註冊一個自定義工具項、如何繞開 settings 白名單做持久化」的最小參考實現。

幾點注意:

  • 首次運行的空白歡迎頁會隱藏整個會話頂欄,此時徽章不可見,打開正式會話即可看到。
  • 插件以當前 dsh 進程權限運行,GitHub 直裝等於拉取並執行第三方代碼。安裝前建議檢查倉庫源碼與許可證(MIT © 2026 lco117),並按官方建議固定到具體 commit。

結尾

dsh-peak-hours 體量很小,但把 DSH 插件開發裏的幾個實際問題——頂欄註冊、主題適配、設置持久化的白名單限制——都給出了可運行的答案。裝上即可用,拆開即可學。

  • 社區目錄頁:https://www.skillhub.cn/plugins/lco117/dsh-peak-hours
  • GitHub 倉庫:https://github.com/lco117/dsh-peak-hours
羽毛球分组比赛记分
小程序二维码

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

小夜