dsh-fork-perf:DSH 對話分支性能優化插件

前言

DeepSeek Harness(DSH)支持通過 fork 機制創建對話分支。在 dsh 0.1.0-rc.6 版本中,fork 路徑對整個會話事件日誌執行多次全量深拷貝。對於大於 15MB 的大會話,一次 fork 會產生數百毫秒的同步阻塞,這足以打斷流式 LLM 響應(表現爲 TRANSPORT/心跳超時重試)或造成 UI 卡頓。

dsh-fork-perf 插件旨在解決這一性能瓶頸。它通過複用內存中已凍結的事件引用,消除了不必要的深拷貝開銷,將 fork 主體耗時降低至原來的約 1/18。

核心功能

該插件主要包含以下能力:

  • 零拷貝 fork:利用 fromRestore 通道,原地複用 deepFreeze 的不可變 JSON 樹引用,跳過整樹深拷貝。
  • fast init-for:在 PersistenceCoordinator.initFor 中,將 structuredClone(seed) 替換爲凍結引用複用,消除 persistence 恢復時的拷貝耗時。
  • 監控與 API:提供 fork 計時與路徑統計,並通過 /dsh-fork-perf/api 提供統計查詢與運行時配置接口。
  • 完整還原:dispose 方法可還原所有已應用的補丁。

安裝與啓用

通過命令行安裝插件:

dsh plugin --profile web add github:orangeofcarl0-sys/dsh-fork-perf

安裝後需重啓 dsh web 使配置生效。啓動成功的標誌是日誌中出現 [fork-perf] zero-copy fork installed。

監控與配置

插件提供 HTTP API 用於監控運行狀態與調整行爲。

API 接口

請求格式爲 POST http://127.0.0.1:3080/dsh-fork-perf/api/<method>。

  • stats.get:獲取 fork 次數、零拷貝佔比、回退次數、最近記錄(事件數、耗時、路徑)。
  • stats.reset:清零統計計數。
  • config.get / config.set:獲取或設置運行時開關(如 zeroCopyFork、fastInitFor)。

示例

# 獲取統計信息
curl -X POST http://127.0.0.1:3080/dsh-fork-perf/api/stats.get

# 禁用零拷貝 fork(回退至官方實現)
curl -X POST http://127.0.0.1:3080/dsh-fork-perf/api/config.set \
  -d '{"zeroCopyFork": false}'

技術細節與侷限性

實現原理

  1. 零拷貝 fork:插件通過 Session.prepare(..., { seedSource: 'persistence' }) 的 fromRestore 通道,直接使用已凍結的 seed 事件。由於事件在進入源會話時已完成 JSON 邊界驗證並深凍結,複用引用在安全性上等價於深拷貝。
  2. fast init-for:插件檢測 PersistenceCoordinator.initFor 中的 structuredClone(seed) 標記,將其替換爲引用複用。若檢測到源碼特徵不匹配(如大版本升級導致結構變化),會自動跳過優化並告警。

安全與回退

  • 回退機制:具備三層回退能力。第一層探測缺失方法時使用官方實現;第二層運行時異常時回退官方實現;第三層可通過配置關閉優化。
  • 補丁還原:插件支持 dispose 方法,可還原所有補丁,確保環境整潔。

侷限性

  • enqueue 拷貝:enqueue 閉包內部的逐事件 structuredClone 在插件層無法安全消除。這是由於 write-behind 機制要求 persistence 與生產者解耦,根治需上游改爲按需快照。
  • 版本綁定:補丁邏輯綁定 dsh 0.1.0-rc.6 的內部結構(如 _forkSeed、initFor 源碼特徵)。當進行大版本升級時,特徵校驗會自動跳過優化並保持官方行爲,需重新適配。

適用場景

該插件適用於需要頻繁對大型會話進行 fork 操作的場景,特別是依賴流式響應或對 UI 響應速度敏感的應用。使用前請確認 DSH 版本爲 0.1.0-rc.6,並注意插件以當前 dsh 進程權限運行。

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

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

小夜