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
羽毛球分组比赛记分
小程序二维码

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

小夜