dsh-plugin-debugging 插件介绍

前言

在 DSH 开发中,修改配置、主机代码或前端资源后,通常需要重启才能生效。这种“改了没反应”或“必须重启”的情况容易打断开发思路,且排查原因往往需要人工介入。本文介绍 dsh-plugin-debugging 插件,它为 DSH 智能体提供了运行时诊断与就地修复的能力,让智能体可以自主检查环境状态并执行修复操作。

插件定位

dsh-plugin-debugging 是由 dsh-plugin-lab 维护的插件。它旨在解决 DSH 插件开发中的运行时调试问题,让智能体能够自检自修其身处的运行时环境。

核心功能

安装后,智能体获得一组工具和技能文档。这些工具分为只读诊断和状态变更两类:

  • dsh_list_instances
    列出当前机器上运行的 DSH 主机。仅探测本地端口。
  • dsh_check_auth
    区分服务“未运行”与“未认证”两种状态。
  • dsh_diagnose_plugin_load
    检查插件是否成功加载,包括 bundle 成员、挂载形式和 loader 树。
  • dsh_check_effect_mode
    探测当前运行 profile,判断修改是立即生效、需要重启还是需要热重载。
  • dsh_dump_config
    显示 profile 解析后的配置树及诊断信息。
  • dsh_sign_cookie
    为浏览器会话 cookie 签名,使脚本或 CLI 客户端能够访问 DSH 实例。
  • dsh_hot_reload
    将挂载的 entry 交换到磁盘上的最新代码,失败时自动回滚,无需重启。
  • dsh_restart
    在真正需要时重启主机。(注意:此功能默认关闭)。

安装与启用

插件支持通过 npm 或源码安装。

  1. 通过 npm 安装
    使用官方插件管理命令添加插件:
    dsh plugin --profile web add dsh-plugin-debugging
  1. 从源码安装
    如果需要修改或调试插件源码:
    git clone https://github.com/dsh-plugin-lab/dsh-plugin-debugging.git
    cd dsh-plugin-debugging
    pnpm install && pnpm run build
    dsh plugin --profile web add "$PWD"

前置要求:
* Node.js 版本 >= 20
* DSH 版本需满足 package.json 中定义的版本范围

注意事项:
* 不要跳过 pnpm install,否则可能导致依赖缺失。
* 安装后需要重启 dsh --profile web 才能生效。

典型用法

安装完成后,智能体可以通过斜杠命令调用技能。以下是常见操作场景:

  1. 检查生效模式
    在修改配置或代码后,使用 dsh_check_effect_mode 检测当前环境,决定是使用热重载还是需要重启。
  2. 热重载代码
    使用 dsh_hot_reload 交换代码,避免进程中断。
  3. 强制重启
    当确认需要重启时,使用 dsh_restart(需确保功能已开启)。

适用场景与安全边界

该插件适用于需要频繁调整配置、插件逻辑或前端资源的开发场景。使用时需注意以下几点安全与行为边界:

  • 权限限制:除 dsh_restart 外,其他工具均不会重启进程、重写配置文件或向主机数据目录写入内容。唯一例外是插件自身的命名空间。
  • 默认行为:dsh_restart 功能默认是关闭的,使用前需确认配置。
  • 认证状态:dsh_check_auth 返回 401 并不总是意味着会话过期。无 cookie 的请求会被拒绝,需在浏览器中验证服务状态。
  • 热重载限制:dsh_hot_reload 可能导致资源泄漏(如未跟踪的定时器或 socket)。

总结

dsh-plugin-debugging 通过提供运行时诊断与修复工具,降低了 DSH 插件开发的调试成本。它让智能体具备了自我检查和自我修复的能力,是提升开发效率的有效手段。

  • GitHub 仓库:https://github.com/dsh-plugin-lab/dsh-plugin-debugging
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜