前言¶
DeepSeek Harness (DSH) Web GUI 在加載會話歷史時,會將最近 50 條消息的全部原始事件(含流式 chunk)下發。響應體積通常在 4 到 13.4MB 之間,且服務端默認不做壓縮。由於瀏覽器的 RPC 請求存在 30 秒硬超時,在帶寬較低或鏈路不佳的遠程訪問場景(異地組網、移動網絡等)下,傳輸容易超時,導致界面顯示「歷史加載失敗」。
dsh-gzip 是爲此場景設計的過渡性插件,通過壓縮 /api 響應,降低帶寬佔用,從而解決超時導致的歷史加載失敗問題。
插件說明¶
dsh-gzip 是 DeepSeek Harness 的 /api 響應 gzip 壓縮插件。
* 維護方:社區維護(github.com/040822/dsh-gzip)
* 許可證:MIT
* 定位:過渡性 gzip 補丁,用於 DSH 較早版本
核心功能¶
- 壓縮 /api 響應:攔截並壓縮
/api路由的返回數據。 - 降低帶寬佔用:實測可減少約 91.4% 的體積(例如 13.4MB 壓縮至 1.16MB)。
- 解決加載失敗:在低速鏈路上降低傳輸時間,避免觸發瀏覽器 30 秒超時中止請求。
- 實現機制:通過 monkey-patch 替換
/api路由的 handler,按請求包裝res對象。 - 壓縮規則:處理
Accept-Encoding: gzip請求,支持application/json、*+json、text/*等響應類型。 - 不處理流:明確不處理
text/event-stream。
安裝與啓用¶
安裝前請確保已安裝 DeepSeek Harness,且 Node.js 版本爲 ^22.19 或 >=24。
使用官方插件安裝命令:
dsh plugin --profile web add dsh-gzip
安裝完成後,必須重啓 DeepSeek Harness Web 服務才能生效。
驗證方法¶
重啓服務後,可以通過以下方式確認壓縮是否生效:
- 使用 curl 命令:
curl -s -D - -o /dev/null -X POST http://127.0.0.1:3080/api/session.list \
-H "Content-Type: application/json" -H "Accept-Encoding: gzip" \
-d '{"type":"client-request","rpcId":"test","method":"session.list","payload":{}}' \
| grep -i content-encoding
正常輸出應包含 `content-encoding: gzip`。
- 使用瀏覽器 DevTools:
打開 Network 面板,檢查任意session.*請求的 Response Headers,確認包含content-encoding: gzip。
兼容性與限制¶
本插件是針對舊版 DSH 的過渡方案,不適用於 DSH 0.1.2-rc.1 及更高版本。
- 適用 DSH 版本:
>=0.1.0-rc.6 <0.1.1-0 || >=0.1.1-rc.0 <0.1.2-rc.1 - 不適用版本:
0.1.2-rc.1及更高版本(官方已提供 gzip 中間件並遷移了流式 RPC) - 依賴環境:Node.js
^22.19或>=24
由於 DSH 0.1.2-rc.1+ 已內置 HTTP gzip 中間件並將流式 RPC 遷移至 WebSocket,本插件在這些版本上不兼容且不建議安裝。
結尾¶
dsh-gzip 通過簡單的 monkey-patch 方案,解決了舊版 DSH 在低帶寬環境下的歷史加載痛點。隨着官方版本的更新,該插件已逐漸退出歷史舞臺,僅作爲特定版本下的臨時補丁方案存在。