前言¶
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}'
技術細節與侷限性¶
實現原理¶
- 零拷貝 fork:插件通過
Session.prepare(..., { seedSource: 'persistence' })的fromRestore通道,直接使用已凍結的 seed 事件。由於事件在進入源會話時已完成 JSON 邊界驗證並深凍結,複用引用在安全性上等價於深拷貝。 - 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 進程權限運行。