前言¶
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 字段,按「開」處理。
- 啓用絕對時間:頁面頂部總開關。關閉後插件立刻還原爲宿主相對時間(覆蓋前會記下原文;關閉時還會用
dsh-client-ui-primitives.relativeTime與 workspace 詞典time.*重算,與宿主一致),並斷開MutationObserver、退訂ctx.sessions.list,之後對頁面零開銷。 - 時間來源
- 最後活動時間:使用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
典型用法¶
- 按上文命令安裝並重啓 DSH。
- 打開 設置 → 會話時間,打開「啓用絕對時間」。
- 選擇 最後活動時間(零額外請求)或 創建時間(需宿主 API)。
- 按需修改格式模板,例如
YYYY-MM-DD HH:mm或帶秒的YYYY-MM-DD HH:mm:ss。 - 若需恢復宿主默認相對時間,關閉總開關即可,無需清緩存或刷新。
適用場景與注意¶
適合長期在 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。