前言¶
在 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 上疊加三種行爲:
- 每個歷史交互整輪收起,摺疊成一行:左側時間
MM-DD HH:mm(瀏覽器時區)+ 單行提問摘要,過長省略。 - 只保留最近一次交互展開;打開會話、切換工作區/會話、產生新交互時,展開態重置到最新一條(此前手動展開的也會被收起)。
- 點擊摺疊行展開該輪並收起其它輪;再點提問行可收回去。
執行過程(思考、工具調用、步驟)不隨「展開該輪」一起打開:需在覈心設置裏讓過程在回答結束後收起,只有你單獨點「過程摘要」行纔會展開過程。這與「只把正文之間的步驟合成二級摺疊、答案始終可見」類插件的取向不同;本插件優先 一屏看清會話骨架,按需展開整輪內容。
兼容 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 明確要求):
- 打開 DSH 設置 → 對話。
- 將 工作步驟收起時機 設爲 回答結束後,過程纔會在回答結束時收起,與插件的展開邏輯一致。
卸載示例(桌面 profile):
dsh plugin --profile desktop remove dsh-session-accordion
源碼目錄安裝、Release tarball、符號鏈接等方式見 GitHub README「安裝」;離線或開發環境可按文檔中的 scripts/install.sh / install.ps1 操作。
典型用法¶
- 安裝並重啓 DSH,確認「工作步驟收起時機」已設爲回答結束後。
- 在同一會話中連續多輪提問;較早輪次應顯示爲單行(時間 + 摘要),最新一輪保持展開。
- 點擊某一折疊行:該輪展開,其它已展開輪收起;再點該輪提問區域可摺疊回去。
- 需要看某輪的工具/思考過程時,在該輪展開後,單獨點擊過程摘要行(與展開整輪無關)。
- 切換會話或工作區後,展開態應回到該會話的最新一輪。
診斷:在頁面 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 爲準。