Mide69/dsh-boot-doctor0

dsh-boot-doctor

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

AI Analysis

挂载控制台日志输出,并对已解析、验证但因依赖未满足而未激活的插件发出警告。适合进行 DSH 插件开发、调试或排查插件加载问题的用户。

Package
dsh-boot-doctor
Version
0.1.0
License
MIT
Last updated
Aug 27, 2026

Install

This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗

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

FieldDefaultMeaning
checkDelayMs5000How long to wait after mount before scanning for stuck entries.
logEntryInitfalseAlso 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