前言¶
DeepSeek Harness (DSH) 采用 “Effects” 机制管理插件生命周期,允许插件随其所有者一同销毁。这种机制在处理资源清理时非常强大,但在插件加载失败、处于挂起状态或卸载缓慢时,通过原始日志排查具体问题非常困难。
dsh-lifecycle-inspector 是一个独立构建的社区插件,旨在将 DSH 内部的生命周期状态转化为操作员友好的仪表盘和简洁的诊断命令,帮助开发者快速定位问题。
这是什么¶
dsh-lifecycle-inspector 是一个 DeepSeek Harness 插件,用于可视化 Cordis Effects 的生命周期诊断、检查插件健康状态以及验证 Teardown 清理过程。
- 维护者: Rex16200513
- 许可证: MIT License
- 定位: 独立社区插件,专门为 DSH 设计,遵循 DSH 的插件优先架构,通过观察现有 Cordis 生命周期而非修改 Agent 循环来工作。
核心功能¶
该插件提供以下能力:
- 原生 DSH Web 仪表盘: 在 Settings → Plugins → Lifecycle 中提供健康总览、搜索、仅显示问题项的过滤、刷新以及可展开的 Effect 详情。
- 可读的生命周期报告: 将底层的 Effect 标签归类为服务、事件监听器、命令、工具、子插件和清理敏感资源。
- Fiber 健康信号: 高亮显示失败的、挂起的和卸载中的插件,并区分活跃、禁用、已销毁和未挂载的条目。
- Teardown 观察: 记录最近的 Fiber 转换,并标记超过可配置阈值的清理操作。
- Agent 可诊断性: 暴露只读的
lifecycle_inspect工具,同时支持/lifecycle命令。 - 生命周期安全实现: 插件本身的命令、工具、事件监听器、HTTP 路由、本地化和 UI 槽位都注册为可销毁的 Effects。
- 双语支持: UI 和文档支持英语和中文,跟随 DSH 的当前语言环境。
安装与启用¶
安装前请确保环境满足要求:
* DSH Web profile
* Node.js ^22.19.0 || >=24.0.0
使用以下命令安装:
dsh plugin --profile web add github:Rex16200513/dsh-lifecycle-inspector
安装完成后,重启 DSH Web 进程,并在 Settings → Plugins → Lifecycle 中找到该插件。
使用方法¶
插件提供命令行工具和 Agent 工具两种方式。
命令行¶
/lifecycle list
/lifecycle list --verbose
/lifecycle inspect lifecycle-inspector
/lifecycle inspect <plugin-id> --verbose
list:提供简短的健康摘要。inspect:接受 loader 路径、配置的入口 ID、完整包名或不带dsh-前缀的包名。仅在需要精确 Effect 标签时添加--verbose。
Agent 工具¶
Agent 可以调用只读的 lifecycle_inspect 工具,该工具接受一个可选的 plugin 参数,用于观察运行时状态,不会卸载或修改插件。
配置说明¶
插件通过 DSH patch 安装,包含以下默认配置:
- insert:
- id: lifecycle-inspector
name: dsh-lifecycle-inspector
config:
slowTeardownMs: 2000
historyLimit: 100
slowTeardownMs: 控制何时将观察到的 teardown 报告为慢速。historyLimit: 限制保留在内存中的 Fiber 转换历史记录数量。
适用范围与限制¶
该插件验证的是 Cordis Effects 树是否被清理,即 Cordis 完成了它管理的每个注册销毁器的清理。它不能证明插件没有创建 DSH 之外的进程、定时器、套接字、观察者或其他资源。
虽然外部资源探测是自然的功能扩展方向,但它们应保持为独立的提供者:核心检查器应保持只读,并报告权威的 Cordis 状态。
结语¶
dsh-lifecycle-inspector 提供了从内部视角审视 DSH 插件生命周期的能力,适合需要严格监控资源清理过程的开发者使用。其文档和 UI 的双语特性降低了使用门槛。