dsh-boot-doctor
其他 活跃维护

dsh-boot-doctor

Mide69/dsh-boot-doctor

引导启动场景诊断插件,支持自动汇聚启动阶段控制台日志输出,可实时检测卡死插件并推送告警,无需人工巡检即可快速定位启动故障,轻量无侵入设计不影响正常启动流程。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
MIT
开源协议
6 KB
仓库大小
29 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:Mide69/dsh-boot-doctor
git clone https://github.com/Mide69/dsh-boot-doctor.git
git clone git@github.com:Mide69/dsh-boot-doctor.git
README.md main

dsh-boot-doctor

A DeepSeek Harness plugin. Mounts a console log sink and warns about plugins that resolve, validate, and then never activate.

Why this exists

Cordis, the plugin framework DeepSeek Harness is built on, always has a ctx.logger. But without an exporter registered, every ctx.logger.warn(...) call in the whole plugin tree is silently buffered and never printed. None of the shipped profiles (headless, web) mount a console exporter by default.

The practical effect: a plugin can be installed correctly, pass config validation, and then just never activate, most often because of an unsatisfied inject requirement or a config-load failure caught by a try/catch. Nothing prints. Nothing crashes. The plugin is just quietly inert, and there is no way to tell from the outside.

This plugin fixes both halves of that problem:

  1. It registers a minimal console exporter on ctx.logger, so every plugin's existing log calls become visible, not just this plugin's own.
  2. A few seconds after mount, it scans the loader's entry list for anything that resolved and validated but has no active fiber, and prints one clear line per stuck entry naming it.

Install

npm install dsh-boot-doctor

Use

Insert it first in a profile's patch, so it starts logging before anything else mounts:

- insert:
    - id: boot-doctor
      name: dsh-boot-doctor
dsh --profile headless --patch patch.yml "your task"

Config

Field Default Meaning
checkDelayMs 5000 How long to wait after mount before scanning for stuck entries.
logEntryInit false Also log every entry as it mounts, not just the ones that never activate.
- insert:
    - id: boot-doctor
      name: dsh-boot-doctor
      config:
        checkDelayMs: 8000
        logEntryInit: true

What it does not do

It does not fix the underlying activation problem, it only makes it visible. It does not read plugin source or diagnose which specific inject key is missing, since that would mean reaching into framework internals this package does not depend on. It just tells you which plugin id and name is stuck, so you know where to start.

License

MIT