dsh-session-rescue:防止 DeepSeek Harness 冷啓動回合阻塞的插件

前言

在 DeepSeek Harness (DSH) 的開發與使用中,重啓進程或加載已有會話後,第一個回合可能會永久阻塞:UI 一直旋轉,日誌中沒有任何報錯。這種“冷啓動回合阻塞”通常發生在 turn/start 和 step/start 之間的 preStep 窗口,其根源是同步的會話日誌全量回放。

dsh-session-rescue 是一個針對這一現象的會話看門狗插件。它不依賴重啓應用,而是通過自動化 /compact 操作,在會話大小達到危險區域前進行壓縮,將回放成本移出用戶回合,確保服務可用。

是什麼

dsh-session-rescue 是一個 DeepSeek Harness 插件,用於防止冷啓動回合阻塞。它通過自動化 /compact 操作,在會話增長至危險區域前進行壓縮,並報告會話狀態。

  • 維護者: 1622352030
  • 許可證: MIT
  • 核心功能:
    • 防止冷啓動回合阻塞。
    • 在會話大小接近危險區前進行壓縮。
    • 自動執行 /compact 操作。
    • 通過 /rescue status 報告狀態。

工作原理

該插件通過三個核心動作來應對回放成本:

  1. GUARD(守衛):當會話被加載到當前進程且其 seq(序列號)已超過危險閾值時,在用戶第一個回合(agent/status 變爲 idle)之前自動壓縮會話。這會將不可避免的回放成本移出回合,同時縮小會話規模。
  2. COMPACT(壓縮):在回合之間,當代理處於空閒狀態時,如果會話自上次壓縮以來增長了至少 minGrowthSeq,則執行壓縮。這能保持後續冷啓動在秒級範圍內。
  3. Report(報告):通過 /rescue status 指令,顯示每個會話的 seq,當前進程是已支付回放成本(“warm”)還是未支付(“cold”),以及插件對 turn/start 到第一個 step/start 之間 preStep 時長的測量數據。

使用方式

該插件主要用於在特定時機觸發壓縮,並監控狀態:

  • 按閾值壓縮:當會話序列號 seq 超過危險閾值時觸發壓縮。
  • 空閒期壓縮:在回合之間且代理處於空閒狀態時,若會話增長量達到設定值則觸發壓縮。
  • 狀態檢查:使用 /rescue status 檢查會話的冷熱狀態及 preStep 時長。

配置說明

在 DSH 的配置文件中啓用該插件,需設置以下參數。默認閾值基於實測數據校準(40k 時冷啓動約 16 秒,80k 時可能永久阻塞)。

- insert:
    - id: session-rescue
      name: dsh-session-rescue
      config:
        enabled: true        # false = 僅觀察和報告,從不壓縮
        warnSeq: 40000       # 從此處開始警告/壓縮
        dangerSeq: 80000     # 超過此值冷啓動第一個回合可能永不返回
        minGrowthSeq: 20000  # 僅在自上次壓縮增長此數量後觸發
        cooldownMs: 60000
        maxAttemptsPerSession: 6
        maxBusyStreak: 5
        pollMs: 30000
        compactionTimeoutMs: 600000

技術細節與注意

  • 環境要求:需要 Node.js 版本 >= 22.15。
  • 不可變事實:全量回放是不可避免的,但支付回放的位置(是在用戶回合中還是在空閒期)是可以改變的。一旦執行了壓縮,隨後的冷啓動將保持廉價。
  • 觸發機制:壓縮的觸發條件是增長增量(growth delta),而不是絕對大小。這防止了在空閒期間無限重複觸發壓縮。
  • 序列號限制:壓縮操作不會減少 session.seq,因爲日誌是追加式的。
  • 狀態報告:如果核心返回了 busy 狀態(表示已有壓縮在運行或代理非空閒),插件不會將該會話標記爲“warm”,以避免冷會話漏掉守衛檢查。

結語

dsh-session-rescue 提供了一種在 DSH 中處理冷啓動阻塞的工程化方案。通過自動化 /compact,它將原本可能導致永久阻塞的同步回放成本分散並前置,配合狀態監控,爲維護長會話提供了必要的保障。

  • GitHub 倉庫:https://github.com/1622352030/dsh-session-rescue
  • 插件目錄:https://www.skillhub.cn/plugins/1622352030/dsh-session-rescue
羽毛球分组比赛记分
小程序二维码

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

小夜