插件目录 / Developer / dsh-zombie-gc
dsh-zombie-gc
已验证 · 实测可装 DosterBool
功能简介
DSH 插件:开机清理僵尸 agent(已收尾会话仍挂 registry,导致退出重进后输入框卡死)
可用 — 实测通过,早期项目
DSH 插件:开机清理僵尸 agent(已收尾会话仍挂 registry,导致退出重进后输入框卡死) 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-zombie-gc · 僵尸 agent 清理
DeepSeek Harness (dsh) 插件:开机自动清理"已收尾但 agent 仍挂 registry"的僵尸会话,防止客户端"退出重进后输入框卡死"。
背景:这个 Bug 是什么
dsh 0.1.1 启动时会恢复所有持久化会话(restore 机制,为每个会话补写 session/end-seed)。恢复的"已结束"会话在 agents registry 里被挂上 live agent 条目——但该 agent 没有活干,处于空闲僵尸态(registry 保留它,这是缓存复用设计,不清理)。
之后用户退出再进入该会话:客户端订阅到僵尸 agent → 输入相位被锁 → 输入框表现为"能聚焦但打不进字"。日志证据:会话以 turn/end + session/end-seed 正常收尾(挂起回合 = 0),列表却显示 running: True。
工作原理
插件在 bundle 挂载 12 秒后(等待恢复过程完成)执行一次:
- 枚举
agentsregistry 里有条目的会话 - 从会话对象自带 log 读事件尾部,判定是否已正常收尾(回扫最后 30 条:遇到
turn/end/session/end-seed→ 已结束;遇到turn/start/step/start/agent/request→ 仍在跑) - 已收尾的调用
agent.cancel({ kind: 'user' })+ 等待whenIdle,让 agent 结算退出
绝不触碰真正运行中的会话(尾部仍是进行态事件的会被跳过)。
安装
dsh plugin --profile web add file:D:/path/to/dsh-zombie-cleaner
重启 DSH 生效。插件本身零依赖(只需 Node 24 的 node:zlib)。
已知边界
- running 红点标记可能仍显示(agent 空闲态计算结果显示,不影响功能)。这是 registry 缓存复用的设计,非本插件可清
- 只清理"日志已收尾"的确定性僵尸;运行中的会话一律保留
License
MIT
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-zombie-gc」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:DosterBool/dsh-zombie-gc Headless(CLI)profile:
dsh plugin --profile headless add github:DosterBool/dsh-zombie-gc 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。