dsh-plugin-response-window:DeepSeek Harness (DSH) Web 插件

前言

DeepSeek Harness (DSH) 是面向智能體開發的工具鏈。在處理長輪次對話時,模型會生成大量的工具調用和推理過程,這容易導致界面內容過多、難以瀏覽。本插件借鑑 Grok Build 的設計思路,將每輪對話中的 think(推理)和工具調用包裹在一個有限高度的可滾動窗口中,以階段性文字回覆爲界分段,避免頁面內容撐爆,同時保持所有中間過程的可見性。

核心功能

插件將每輪對話的中間過程(think 與工具調用)聚合展示,文字回覆保持原生顯示。

  • 有限高度窗口:think 和工具調用合併爲一個 slide,默認高度爲 10 行,內部支持滾動。
  • 分段邏輯:以階段性文字回覆爲界分段。兩個文字回覆之間的一段 think + bash 作爲一個 slide,避免兩個 input prompt 之間擠成一整個 slide。
  • 內容同步:原生 Think 行從消息流中隱藏,與 slide 內展示共用同一份內容。
  • 原生回覆保持:文字回覆完全原生展示,保持全文可見,不套 slide 窗口,不加“展開全部/收起”按鈕。
  • 配置化控制:支持在 Settings 中調整窗口高度和默認收起狀態。

安裝

通過官方命令安裝插件:

dsh plugin --profile web add github:heiheiha798/dsh-plugin-response-window

安裝後重啓 dsh web 或等待 profile HMR 生效。卸載命令爲:

dsh plugin --profile web remove dsh-plugin-response-window

配置

插件在 cordis.patch.yml 中註冊了默認配置,可通過配置文件或 Web UI 調整:

配置項說明

鍵 默認值 說明
lines 10 窗口高度(行)。0 表示不限高(即關閉窗口)。
collapsed false 每輪 slide 是否默認收起成一行 bar。
showReadOnly true 是否在 slide 裏列出 read/grep/web_search 等只讀調用。
minCollapseRows 3 僅在 collapsed: true 時生效,少於該數量的輪次不收起。

設置頁調整

在 Web UI 的 Settings → General 中,插件註冊了一項 「響應窗口大小(行數)」:
* 支持 − / 數值輸入 / + 調整 lines(範圍 0–200)。
* 改動後即時生效,並持久化到 dsh-plugin-response-window namespace。

技術實現

插件在實現上注重對宿主 React 結構的零侵入和安全性。

  • 渲染方式:使用 conversation.chat.node 的 keyed 替換(key: 'tool-call')實現,而非舊的 priority shadow。這符合 dsh 0.1.5-rc keyed Chat Node 契約。
  • 數據來源:分組邏輯完全基於會話模型,通過 useChat 選擇器消費與右側用戶消息索引(turn rail)一致的 turn/location 數據,不依賴 DOM 測量。
  • DOM 標記:通過模型推導的覆蓋集合驅動 DOM 標記(隱藏的原生 Think 行、null 渲染的 sibling 工具行),使用 MutationObserver 將集合應用到行上的 data 屬性,消除佈局競態導致的整類 bug。
  • React 結構保護:絕不移走 React 擁有的 [data-chat-anchor-key] 行節點。若移走該節點,React 在會話切換或編輯時會拋出 NotFoundError。插件僅使用 keyed 替換和類/CSS 方式。
  • 依賴更新:createSnapshotStore 依賴的 dsh-client-runtime 包已於 2026-08-22 從 dsh 移除,插件改用內置的最小可觀察值存儲。

開發與測試

插件採用純 JavaScript 編寫,無構建步驟。

  • 類型檢查:
    npm run check
  • E2E 測試:需要已啓動的 dsh web 與 python playwright:
    dsh --profile web --no-open --port 3639 &
    python3 test/e2e.py --url http://127.0.0.1:3639 --session "架構重構不順原因分析"

結尾

該插件不隱藏任何內容,think 與工具調用按真實輸出順序交錯排列在 slide 中,適合需要完整追蹤中間推理和工具執行過程的場景。所有內容均遵循 MIT 許可證。

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

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

小夜