在会话膨胀前主动压缩,避免冷启动首轮卡死
29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 1622352030/dsh-session-rescue该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 主动压缩会话
- 释放卡住回合
- 免重启恢复
DeepSeek Harness 的会话卡死看门狗:就地释放卡住的回合,不用重启应用。
README
由 DeepSeek 最新模型翻译生成dsh-session-rescue
状态:v0.2.0 —— 预防型,不是检测型。 卡死已定位到具体窗口与具体代码路径(见下),插件逻辑有 55 项测试(55 通过 / 0 失败),并且已在隔离的 DSH_HOME 里装载并跑通接线(绝不拿正在运行的实例做验证对象)。但请谨慎理解下面的机制:代码级事实是核实的,而"重放导致卡死"这条因果链并未证明—— 存在反例,写在 docs/DESIGN.md 的 Open questions 里。卡死本身未受控复现,冷启动首轮的代价也还没有归因到任何具体监听器上。
一个用于 DeepSeek Harness 的插件,用来消除冷启动首轮卡死:重启或载入会话之后,第一个回合可能永久卡住,界面一直转圈、日志里没有任何报错。本插件通过在会话规模进入危险区之前主动压缩来阻止它发生。
问题本身(精确定位)
⚠️ 先读这段:下面那条因果结论已被实测证伪。 表格里的代码级事实是核实过的,但它们不是卡死的原因。
tools/measure-replay.js 用产品自己的 TokenMeter._sync 在重建出的真实会话上跑了一遍:整份 526,383 seq 的冷重放只要 47 毫秒 —— 而冷启动首轮实测 16,008 毫秒,更有永不返回的回合。
重放小了约 340 倍,不可能是原因。
展开完整文档(README 剩余 1 节)
dsh-session-rescue
状态:v0.2.0 —— 预防型,不是检测型。 卡死已定位到具体窗口与具体代码路径(见下),插件逻辑有 55 项测试(55 通过 / 0 失败),并且已在隔离的 DSH_HOME 里装载并跑通接线(绝不拿正在运行的实例做验证对象)。但请谨慎理解下面的机制:代码级事实是核实的,而"重放导致卡死"这条因果链并未证明—— 存在反例,写在 docs/DESIGN.md 的 Open questions 里。卡死本身未受控复现,冷启动首轮的代价也还没有归因到任何具体监听器上。
一个用于 DeepSeek Harness 的插件,用来消除冷启动首轮卡死:重启或载入会话之后,第一个回合可能永久卡住,界面一直转圈、日志里没有任何报错。本插件通过在会话规模进入危险区之前主动压缩来阻止它发生。
问题本身(精确定位)
⚠️ 先读这段:下面那条因果结论已被实测证伪。 表格里的代码级事实是核实过的,但它们不是卡死的原因。
tools/measure-replay.js 用产品自己的 TokenMeter._sync 在重建出的真实会话上跑了一遍:整份 526,383 seq 的冷重放只要 47 毫秒 —— 而冷启动首轮实测 16,008 毫秒,更有永不返回的回合。
重放小了约 340 倍,不可能是原因。真凶仍然未知;仍然成立的是:冷启动首轮远慢于热轮、随会话规模增长、且 /compact 是唯一被观测到的恢复手段。详见 docs/DESIGN.md 的 Measured falsification。
卡死的会话日志长这样,而且全程没有任何错误:
agent/inbox/spliced ← 用户消息被接收 turn/start ← 回合打开 ← 然后永远没有下文:没有 step/start,没有任何 assistant 帧
这段静默正好落在 preStep 窗口内,即 turn/start 与 step/start 之间。原因不是缺超时、也不是网络,而是在窗口内同步重放了整份会话日志:
| 环节 | 出处 |
| 重启 / 载入会话会创建新的 Session 对象 | @deepseek-ai/dsh-session/lib/index.js:1322 在载入时补写 session/end-seed |
| token meter 的重放状态挂在 WeakMap 上 | @deepseek-ai/dsh-token-meter/lib/index.js:589 |
| 新对象 ⇒ 状态为空 ⇒ 从 0 重放 | dsh-token-meter/lib/index.js:679-697:while (state.consumedEvents 基于上面的证伪,这里必须说实话:插件并不能"吃掉"那份神秘代价。 compactNow 的第一步是 measure(),
而它是廉价的(整份会话 47 ms),所以载入时压缩并不会替你付掉那个慢监听器的账。插件真正交付的,是把唯一被观测到能恢复服务的操作自动化:会话已经很大时在载入后压一次、回合之间随增长再压。
如果那个慢监听器的代价随可见 surface 增长,保持 surface 小就有用 —— 但这是假设,不是结论。
重放躲不掉 —— 但这笔账付在哪里是可以选的。付在用户第一个回合里就是永久卡死;付在载入后的空闲期就只是启动慢一次。而一旦压缩跑过,之后的冷启动就会一直保持便宜。
1. GUARD(抢跑):当会话被载入本进程、且 seq 已越过危险线时,在用户第一个回合之前(agent/status → idle)把它压缩掉。把躲不掉的代价从回合里挪出去,同时把 surface 变小。
2. COMPACT(回合间主动压缩):回合之间、agent 空闲时,只要自上次压缩以来的增长达到配置值就压缩,使未来的冷启动保持在秒级。
3. 报告:/rescue status 给出每个会话的 seq、本进程是否已经付过重放代价(热/冷),以及插件自测的 preStep 窗口耗时(turn/start → 首个 step/start),冷热分开记。
动作只走一个官方接口:压缩服务的 ctx.compaction.compactNow(agent, signal, commandId) (契约出处:@deepseek-ai/dsh-command-compact/lib/index.js:8,54)。该服务用 ctx.get('compaction') 可选获取而非 inject,因此在没有压缩服务的组合里插件仍能装载并如实报告。
反抖动(为什么触发条件是"增量")
压缩不会让 session.seq 回落 —— 会话日志是只追加的,压缩本身还要追加自己的记录。
所以"seq 超过阈值就压缩"这条规则会在每次空闲无限重复触发。真正的触发条件是 "自上次压缩以来至少增长了 minGrowthSeq",并且一次成功的压缩会把基准推到当前 seq。
这两点都在 test/guard.test.js 里有专门的测试。
busy 也被单独对待:它表示核心拒绝了本次调用(已有并发压缩,或 agent 不空闲),我们并没有付掉重放代价,因此插件不会把该会话标记为"已预热" —— 否则这个冷会话会错过抢跑,用户的下一个回合照样卡死。重试频率由冷却时间与"连续 busy 上限"约束。
配置
- 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
默认阈值按上表标定(4 万 处冷启动首轮已约 16 秒;8 万 处进入"永不返回"区间)。
阈值与机器和会话形态有关 —— 请用 /rescue status 量出你自己机器上的数再调。
仓库内容
| 路径 | 说明 |
| src/host.js | host 侧入口:session/event + agent/status 接线、GUARD/COMPACT 执行、/rescue。 |
| src/guard.js | 纯决策状态机 —— 何时抢跑、何时压缩、冷却、次数上限、busy 处理。 |
| src/size.js | 危险区的规模度量与阈值,标定数据写在注释里。 |
| src/detect.js | 仅离线使用:会话事件上的挂住签名检测器(供回放工具使用)。 |
| src/frames.js | 仅离线使用:只读日志分析 —— 逐帧 zstd 解码、合成收尾帧识别。 |
| bin/dsh-session-rescue.mjs | 只读扫描 CLI —— 不安装插件也能用。 |
| tools/replay.js | 把真实会话日志回放给检测器,核对命中率与误报率。 |
| tools/measure-replay.js | 用产品自己的 TokenMeter._sync 在重建的真实会话上量冷重放耗时 —— 就是证伪上面那条因果的测量(526,383 seq 共 47 ms)。 |
| test/.test.js | 55 项单元与集成测试(node --test),跑在伪造的 cordis ctx 上。 |
| cordis.patch.yml | 插件自带的装载补丁层(dsh.bundle.patch)。 |
| tools/Install-Plugin.ps1 | 幂等安装 / 回滚 DSH profile —— 默认干跑、基于快照、自带离线自测。 |
| docs/DESIGN.md | 设计说明:带源码出处的机制、修复方式、边界与未决问题。 |
已知边界(先说清楚)
- 已在隔离 DSH_HOME 验证,但不是对卡死本身的端到端验证。 一次真实的 headless Harness 运行装载了本插件、触发了它的 agent/status 钩子、解析到 ctx.get('compaction'),并真的开出压缩事务(compaction/start 携带 sourceCommandId: "session-rescue-guard-1")—— 复现两次。卡死本身未复现,且"回合前抢跑"的时序只有单测覆盖。详见 docs/DESIGN.md 的 Verification performed*。
- 规模阈值是代理量。 真正花时间的是重放的单事件代价,而那在不付代价的前提下无法从外部测到。
seq 是这个循环的驱动量、且读取免费,所以用它作代理 —— 它是标定出来的,不是推导出来的。
- 有一个环节未证明。 压缩在三次观测中都让下一次冷启动变便宜了(永不返回 → 1.6–10 秒),但原因尚未确立:它不可能来自"缩短重放",因为 seq 不回落。插件依赖的是这个实测效果,该疑点记在 docs/DESIGN.md 的未决问题里。
- 压缩要花一次 LLM 调用(在观测到的 30 万 token 会话上约 15–20 秒),并且会把历史改写成摘要 ——这是对会话的真实改动,与 /compact 的行为相同。只要报告不要动作就设 enabled: false。
- v0.1 的做法(检测挂住 → cancel → 冷重建)已被移除:这个卡死是同步 CPU 循环,
signal.throwIfAborted() 根本没机会执行,取消无法打断它。
只读扫描 CLI(无需安装)
node bin/dsh-session-rescue.mjs scan --stalled-only # 挂住过、或当前有未闭合回合的会话
node bin/dsh-session-rescue.mjs scan --all --json # 所有工作区分组,机器可读
只读会话日志(尾部窗口,绝不打印消息正文)。
开发
node --test test/size.test.js test/guard.test.js test/host.test.js
node --test test/detect.test.js test/frames.test.js # 离线取证
node tools/replay.js 20000 # 用真实日志回放验证挂住判据
兼容性
针对 DSH Desktop 0.8.2 + @deepseek-ai/dsh@0.1.2-rc.1 开发 —— 上文所有行号都读自该安装版本。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
1622352030/dsh-session-rescue
在会话膨胀前主动压缩,避免冷启动首轮卡死
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。