dsh-ws-recency:側欄工作區與會話管理

前言

DeepSeek Harness(DSH)側欄按工作區分組展示會話時,組內會話通常已按最近更新排序,但分組本身的順序往往仍按工作區註冊先後排列——剛跑完一堆任務的工程可能仍排在列表下方。原生置頂只把會話頂到所屬分組的第一行,分組若在下面仍不易看見;歸檔會話缺少統一的取消歸檔入口;刪除、跨工作區移動、token 歸因等能力在宿主側也不完整。

下面介紹社區插件 dsh-ws-recency(維護者 chyxhtc)。它單獨安裝即可生效,不依賴其它插件;若另裝 dsh-plugin-busy-workspace,會尊重其分組上的 data-busy-rank,在其檔位內再按活躍度排序。

這是什麼

dsh-ws-recency 是面向 DSH 側欄的會話與工作區增強插件,npm 包名 dsh-ws-recency,當前資料中的版本爲 0.24.1,許可證 MIT,要求宿主 dsh 版本 >=0.2.0-rc.2 <0.3.0。

它通過 Client 注入與宿主半(index.js)路由,實現:工作區分組按最近活躍排序、過期歷史摺疊、運行中/未讀/需跟進三色標記、全局置頂區、可恢復刪除與歸檔統一管理、按來源拆分的 token 消耗統計(含參數/結果分段)、會話移動到另一工作區,以及對話內「交接到新會話」。

工作區分組按最近活躍排序

DSH 組內會話已按 updatedAt 倒序,但分組順序來自工作區註冊表。插件從 Client store 讀取各工作區會話,取組內最大 updatedAt;空工作區回落到該工作區的 createdAt,再寫入分組元素的 flex order。不修改會話行、原生置頂、歸檔或 store。

「未分組」桶始終排在真實工作區之後。僅在按工作區分組(含工作區樹頂層)時生效;搜索、扁平視圖、側欄收起時不應用排序邏輯。

歷史摺疊

超過 foldDays(默認 3 天)未更新的會話會被摺疊;整個工作區都過期時,側欄只保留一行工作區標題,需要時再展開。

每組由插件提供「展開歷史 N」/「收起歷史」,替代宿主隱藏的「展開其餘 N 條會話」。點「展開歷史」會逐輪驅動宿主隱藏按鈕(每輪多渲染 5 條),直到整組展開並展開過期行;點「收起歷史」則重新摺疊過期行。選中、運行中、等待處理、以及手動標記「需要跟進」的會話默認不折疊(前三項可在設置中關閉豁免,跟進標記始終不折疊)。空白草稿行不參與摺疊;每 5 分鐘自動重算一次。

摺疊只能作用於宿主已經渲染的行;更早的行仍在宿主「展開其餘」之後。

顏色與「需要跟進」

自動標記僅依賴宿主可讀狀態:運行中(藍)、完成未讀(綠)。「看過但未決策」不猜測,避免噪音。

「需要跟進」(琥珀)由用戶在會話「…」菜單點「標記需要跟進」產生,存在 Client store 的 followUps(隨 dsh.ws-recency.prefs.v1 持久化)。琥珀圓點渲染在宿主 sidebar.session.row.leading 槽,點圓點取消標記;只有手動取消纔會消失,強狀態期間被蓋住,跑完且讀完無新未讀後琥珀會再顯示。

全局置頂區

在所有工作區分組之上增加「置頂」區,使用宿主原生 workspaces.pinnedSessionIds,不是第二套置頂。每行顯示標題與所屬工作區名,hover 可取消置頂;置頂期間原分組內對應行隱藏。工作區分組、摺疊、顏色邏輯不變;僅在按工作區分組時顯示。

回收站與歸檔

刪除(移入回收站):「…」→「刪除會話(移入回收站)」——停任務、去歸檔與置頂、從工作區 detach、移投影緩存,並將日誌目錄移到 ~/.hypers-work/.trash/ws-recency/<sessionId>-<時間戳>/,附帶 .wsr-trash.json 元數據;側欄通過 api-session/removed 立即更新。可在側欄面板「回收站」中恢復或徹底刪除。

歸檔:仍爲宿主「歸檔會話」;插件在回收站面板列出已歸檔會話,支持取消歸檔、移到回收站、徹底刪除(與刪除路徑一致,需二次確認)。

Token 消耗統計

通過會話下方統計條的「用量分析」,或「…」→「Token 消耗統計」打開:

  • 真實賬單:步數、輸入(未緩存)、緩存命中、輸出、合計(來自每步 usage)。
  • 消耗分佈圖:按內容長度估算主 agent(思考/回覆/用戶/系統)與各工具佔比;工具橫條可拆「參數」(淡色)與「結果」(實色)。
  • 設置 → 通用中的 把工具參數計入主 agent:打開後工具只計返回結果,參數量併入主 agent(默認關閉)。

數據從會話日誌計算,跨重啓可用;大日誌首次打開約 1–2 秒,10 秒內重複打開走緩存。若面板提示「宿主半未加載」,需重啓應用加載新版本;0.10.1 起失敗時會附帶 HTTP 狀態與 /ws-recency/health 自檢信息。

移動到工作區

「…」→「移動到工作區…」選擇目標。因會話 cwd 寫在日誌首條不可變 header 中,插件在宿主側:停會話、讀全量事件、舊目錄備份到 .trash/ws-recency/、用新 cwd 回放重建、校驗並 attach 到新工作區、按 workspace.json 原始記錄 detach 舊工作區。舊工作區裏創建/修改的文件不會隨會話移動;備份可用於回滾。

交接到新會話

動作行或「…」→ 交接到新會話:插件經宿主 Session 控制器發送交接指令;當前會話 AI 輸出 handoff 圍欄塊(資料中 0.23.2 起推薦 ~~~handoff,兼容舊 ``handoff)。抓取後在回覆下方出現問詢卡片:確認則在本工作區新建會話併發送交接內容;可重新生成或填寫調整意見。內容另存~/.hypers-work/.wsr/handoff/-<時間>.md。0.24.1 起優先走sessions.using+session.prompt` API。

設置

設置 → 通用(持久化鍵 dsh.ws-recency.prefs.v1):

  • 歷史摺疊天數:1–90,默認 3;可選「選中 / 運行中 / 等待處理的會話不折疊」。
  • 顏色與跟進標記總開關、全局置頂區顯示開關。
  • 把工具參數計入主 agent(token 分佈)。

安裝與啓用

插件以當前 DSH 進程權限運行,安裝前請自行查看源碼與 MIT 許可證。社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

npm 安裝(資料推薦):

dsh plugin --profile <profile> add dsh-ws-recency

或從 GitHub:

dsh plugin --profile <profile> add github:chyxhtc/dsh-ws-recency

或固定版本預構建包:

dsh plugin --profile <profile> add https://github.com/chyxhtc/dsh-ws-recency/releases/download/v0.24.1/dsh-ws-recency-0.24.1.tgz

裝完後將 dsh-ws-recency 加入 ~/.hypers-work/profiles/<profile>/package.json 的 dsh.profile.bundles,重啓應用。

本地開發可用 link: 指向源碼目錄(示例路徑以 README 爲準)。

倉庫提供離線自檢命令,例如:

node tests/selfcheck.cjs
node tests/stats.cjs
node tests/move.cjs
node tests/trash.cjs
node tests/archive.cjs
node tests/handoff.cjs

典型用法

  1. 日常開發:依賴分組按最近活躍上浮,用 3 天摺疊收攏舊會話,用琥珀「需要跟進」標記待決策項。
  2. 多工程並行:把常用會話在宿主菜單置頂,在插件「置頂」區集中打開;歸檔或刪錯的會話到側欄「回收站」恢復或清理。
  3. 成本排查:打開某會話 Token 消耗統計,看工具參數 vs 結果佔比,必要時在設置裏切換「參數計入主 agent」對比分佈。
  4. 上下文過長:在當前會話發起交接,確認卡片後在新會話繼續,交接 markdown 落在 ~/.hypers-work/.wsr/handoff/。
  5. 會話歸屬錯了 cwd:用「移動到工作區…」遷移(注意磁盤上舊目錄文件不跟隨)。

適用場景與注意

適合長期在 DSH 中維護多個工作區、會話數量多、需要側欄秩序與生命週期管理的開發者。

已知邊界(來自 README):依賴宿主 DOM 結構(如 _groupSection、data-row-key="workspace:<id>" / session:<id> 等);宿主改結構需插件跟進。摺疊僅作用於已渲染行。可選與 dsh-plugin-busy-workspace 互操作,本插件不依賴它。

結尾

dsh-ws-recency 把側欄裏與工作區順序、歷史可見性、置頂、刪除/歸檔、token 歸因、跨區移動和會話交接串成一套可配置能力,單獨安裝即可使用。進一步瞭解請查看 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜