dsh-session-accordion:把 DSH 會話每輪壓成一行,只保留最新展開

前言

在 DSH(DeepSeek Harness)裏做長會話時,聊天流會按輪次堆疊:提問、回答、思考與工具步驟各佔一塊區域。想快速回顧「這一會話問過什麼、順序如何」,需要反覆滾動;若多輪同時展開,一屏能掃到的信息更少。核心 UI 不會替你把「整輪交互」收成摘要行,也不會強制「同一時間只展開一輪」。

下面介紹社區客戶端插件 dsh-session-accordion(維護者 ayuanxx-max):在渲染層把每一輪對話摺疊成固定一行(時間膠囊 + 提問摘要),默認只展開最近一次交互;不修改 app.asar、不碰核心源碼。插件已收錄 awesome-dsh-plugin 與 dshbase,GitHub 倉庫見 ayuanxx-max/dsh-session-accordion。

這是什麼

dsh-session-accordion 是 DSH 的 客戶端插件(dsh.client,platform: web,隨 Web 應用加載)。它在聊天 transcript 上疊加三種行爲:

  1. 每個歷史交互整輪收起,摺疊成一行:左側時間 MM-DD HH:mm(瀏覽器時區)+ 單行提問摘要,過長省略。
  2. 只保留最近一次交互展開;打開會話、切換工作區/會話、產生新交互時,展開態重置到最新一條(此前手動展開的也會被收起)。
  3. 點擊摺疊行展開該輪並收起其它輪;再點提問行可收回去。

執行過程(思考、工具調用、步驟)不隨「展開該輪」一起打開:需在覈心設置裏讓過程在回答結束後收起,只有你單獨點「過程摘要」行纔會展開過程。這與「只把正文之間的步驟合成二級摺疊、答案始終可見」類插件的取向不同;本插件優先 一屏看清會話骨架,按需展開整輪內容。

兼容 DSH Desktop / Web。README 中的平臺路線圖:Windows 11(DSH Desktop)爲當前穩定驗證環境;Ubuntu 測試中;macOS 計劃中。修復優先級按 issue/留言反饋量排序。

核心功能

會話摺疊(手風琴)

摺疊行示意(來自 README):

┌──────────────────────────────────────────────────────────┐
│ 10-28 13:12   把這批日誌按時間排序、去重,然後…        › │   ← 摺疊(一行)
├──────────────────────────────────────────────────────────┤
│ 10-28 12:58   幫我看下 esp32 的引腳衝突                  › │
├──────────────────────────────────────────────────────────┤
│ 你的提問(全文)                                          │   ← 展開(最近一次)
│ …回答正文…                                                │
│ ▸ 12 步 · 思考 8s · 工具 4 次(點開才展開)               │
└──────────────────────────────────────────────────────────┘

與分叉樹插件組合

同作者提供 dsh-session-fork-tree,在側邊欄以樹狀排列分叉會話。倉庫內另有 會話管理指南(摺疊 + 分叉樹組合用法),需要分叉與會話摺疊一起用時可直接查閱。

實現要點(便於排查)

插件通過聊天流容器 [data-slot="conversation.chat.flow"] 與 [data-chat-turn="<turnId>"] 分組輪次;摺疊狀態按 turnId 存在內存,並用 MutationObserver 與定時巡檢在 React 重渲染後恢復。若 DSH 升級導致 DOM 契約變化,插件會靜默不動作並在 console 打出 warn,不會破壞界面——屬已知限制。

安裝與啓用

插件以當前 DSH 進程權限在客戶端運行;安裝前建議瀏覽倉庫源碼與 MIT 許可證。

npm(README 推薦) 示例版本爲 2.5.5(與倉庫 package.json 中當前版本號可能不一致,安裝時以你選用的 tag/版本爲準):

# 桌面版(profile=desktop)
dsh plugin --profile desktop add dsh-session-accordion@2.5.5

# 或免全局安裝
npx -y @deepseek-ai/dsh plugin --profile desktop add dsh-session-accordion@2.5.5

# Web UI(profile=web)
dsh plugin --profile web add dsh-session-accordion@2.5.5

安裝後完全退出 DSH 再啓動(profile 層改動,僅刷新網頁無效)。

啓用前置(README 明確要求):

  1. 打開 DSH 設置 → 對話。
  2. 將 工作步驟收起時機 設爲 回答結束後,過程纔會在回答結束時收起,與插件的展開邏輯一致。

卸載示例(桌面 profile):

dsh plugin --profile desktop remove dsh-session-accordion

源碼目錄安裝、Release tarball、符號鏈接等方式見 GitHub README「安裝」;離線或開發環境可按文檔中的 scripts/install.sh / install.ps1 操作。

典型用法

  1. 安裝並重啓 DSH,確認「工作步驟收起時機」已設爲回答結束後。
  2. 在同一會話中連續多輪提問;較早輪次應顯示爲單行(時間 + 摘要),最新一輪保持展開。
  3. 點擊某一折疊行:該輪展開,其它已展開輪收起;再點該輪提問區域可摺疊回去。
  4. 需要看某輪的工具/思考過程時,在該輪展開後,單獨點擊過程摘要行(與展開整輪無關)。
  5. 切換會話或工作區後,展開態應回到該會話的最新一輪。

診斷:在頁面 DevTools Console 執行:

__acReport()

可查看每輪的 id / expanded / stamp / summary / items,用於區分「輪次分組失敗」還是「時間取不到」。Linux 服務器時區多爲 UTC 時,可在刷新前設置:

window.__dshAccordion = { timeZone: 'Asia/Shanghai' }

適用場景與注意

適合:長會話、多輪試錯、需要縱向掃一遍「問過什麼、何時問」而不必同時閱讀所有回答全文;與分叉樹插件組合管理複雜會話樹。

注意:

  • 依賴 DSH 聊天面板內部 DOM 屬性(如 data-chat-turn),非公開契約,上游改版可能導致插件失效。
  • 摺疊行是自繪一行,行內鏈接需先展開該輪再點擊。
  • README 說明 package 尚未發佈到 npm 時,需按文檔的本地 link / tarball 等方式安裝;若你使用的 DSH 渠道已提供上述 dsh plugin add 命令,則以實際環境爲準。
  • 插件分類爲客戶端,不改核心;社區目錄 skillhub.cn 爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-session-accordion 把 DSH Web/Desktop 會話裏每一輪交互收成一行摘要,並限制同時只展開一輪,便於在長 transcript 裏保持可讀骨架。需要安裝命令、卸載、兼容性與同類插件對比時,以倉庫 README 爲準。

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

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

小夜