dsh-session-time-absolute:側邊欄會話時間改爲絕對時間

前言

DeepSeek Harness(DSH)側邊欄裏,每條會話行通常會顯示相對時間,例如「10分鐘」。對需要對照日誌、工單或跨天排查問題的開發者來說,相對時間往往還要心算或點開詳情。社區插件 dsh-session-time-absolute(維護者 v-hiker,分類:客戶端)只做一件事:在啓用後,把會話行裏 class 以 _time 結尾的時間格改成可配置的絕對時間;關掉總開關後,按宿主同一套相對時間算法逐格還原,不必刷新頁面。

下面介紹插件定位、能力與安裝方式。事實以 GitHub 倉庫 README 爲準;社區目錄頁:https://www.skillhub.cn/plugins/v-hiker/dsh-session-time-absolute(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。

這是什麼

dsh-session-time-absolute 是 DSH 客戶端側插件:通過 Cordis patch 注入 @deepseek-ai/dsh-client-ui-session,在側邊欄已渲染的會話行上改寫時間顯示。它不改動工作區行、hover 卡或搜索頁;宿主在格子上顯示「待審批」等狀態(aria-hidden="true")時也不會覆蓋。

總開關與時間來源

設置入口:設置 → 會話時間。配置保存在瀏覽器 localStorage,鍵名爲 dsh-session-time-absolute.settings.v1,結構爲 { enabled, source, format }。舊版若缺少 enabled 字段,按「開」處理。

  1. 啓用絕對時間:頁面頂部總開關。關閉後插件立刻還原爲宿主相對時間(覆蓋前會記下原文;關閉時還會用 dsh-client-ui-primitives.relativeTime 與 workspace 詞典 time.* 重算,與宿主一致),並斷開 MutationObserver、退訂 ctx.sessions.list,之後對頁面零開銷。
  2. 時間來源
    - 最後活動時間:使用 ctx.sessions.list 的 updatedAt,與宿主畫「10分鐘」同一字段;此模式下不向宿主發 HTTP 請求。
    - 創建時間:由宿主掃描 <DSH_HOME>/sessions/<workspace>/session-<id>/ 的目錄創建時間,經 GET /api/session-time-absolute/created 提供給頁面;結果緩存 20 秒,併發共享同一次掃描。若某會話尚未進緩存,會節流補拉,期間該行暫時顯示最後活動時間。

顯示格式

格式爲佔位符模板,默認 YYYY-MM-DD HH:mm。常見佔位符如下(完整表見 README):

佔位符 含義 佔位符 含義
YYYY / YY 四位 / 兩位年 MM / M 月(補零 / 不補零)
DD / D 日(補零 / 不補零) HH / H 時 24 制(補零 / 不補零)
mm / m 分 ss / s 秒

字面文字原樣保留、不做轉義;模板裏若出現大寫 D(例如單詞 Date),會被當作佔位符處理,自定義格式時需留意。

行爲與性能要點

插件只處理帶 data-row-key="session:<id>" 的行。觀察器掛在 document.body(subtree),但回調會先過濾:僅當變更落在會話行內或新插入會話行時才重繪;聊天流式輸出、輸入框等高頻 DOM 變更不會觸發。同一幀內多次變更經 requestAnimationFrame 合併爲一趟掃描,遍歷 querySelectorAll('[data-row-key^="session:"]'),不遍歷會話庫、不讀磁盤(除「創建時間」模式下的那一次 API)。

宿主 React 把文本改回相對時間時,觀察器會在下一幀改回絕對時間。判定「是否爲本插件寫入」時,優先看 data-dsh-sta-applied;無標記時若文本恰好等於當前格式下的絕對時間,關開關時也會還原。

安裝與啓用

裝完後需重啓 DSH,或等待主機 client.js 輪詢推送 rebuilt 後生效。file: 與 tarball 安裝均爲拷貝;改源碼後需 remove 再 add(並升版本號)纔會同步到 profile。

從 tarball 安裝(分發用,README 推薦)

dsh plugin --profile desktop add "<插件目錄>/dist/dsh-session-time-absolute-0.0.1.tgz"

從源碼目錄安裝(本機開發)

dsh plugin --profile desktop add file:<插件目錄>/dsh-session-time-absolute

從 zip 安裝

將 dsh-session-time-absolute-0.0.1.zip 解壓到任意目錄,再按源碼目錄方式用 file: 安裝。

重新打包示例:

cd <插件目錄>/dsh-session-time-absolute
npm pack --pack-destination ../dist

卸載:

dsh plugin --profile desktop remove dsh-session-time-absolute

典型用法

  1. 按上文命令安裝並重啓 DSH。
  2. 打開 設置 → 會話時間,打開「啓用絕對時間」。
  3. 選擇 最後活動時間(零額外請求)或 創建時間(需宿主 API)。
  4. 按需修改格式模板,例如 YYYY-MM-DD HH:mm 或帶秒的 YYYY-MM-DD HH:mm:ss。
  5. 若需恢復宿主默認相對時間,關閉總開關即可,無需清緩存或刷新。

適用場景與注意

適合長期在 DSH 裏維護大量會話、需要一眼看到「具體幾點幾分」或按目錄創建時間排序對照的場景。插件隨當前 DSH 進程權限運行;「創建時間」模式下宿主會對 sessions 目錄做 stat(README 描述爲增量緩存與 ETag,面向大量會話做了優化),安裝前建議閱讀源碼與 MIT 許可證(見倉庫 package.json)。

結尾

dsh-session-time-absolute 把側邊欄會話時間從相對改爲可配置的絕對時間,並提供總開關與低開銷的 DOM 更新策略。更多信息見社區目錄 v-hiker/dsh-session-time-absolute 與源碼 github.com/v-hiker/dsh-session-time-absolute。

羽毛球分组比赛记分
小程序二维码

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

小夜