DeepSeek Harness 插件开发管理器

前言

在 DeepSeek Harness (DSH) 中开发插件时,目标 Plugin 的 Host 代码、配置或依赖出现错误可能导致开发实例重启失败,甚至影响稳定运行的 DSH 实例。为了隔离这种风险,需要一种机制来管理独立的开发环境。

dsh-plugin-dev-manager 提供了一个稳定的控制面,用于管理隔离的 Plugin 开发实例。它通过为每个开发 Workspace 创建独立的 DSH_HOME、Web profile 和端口,确保开发过程中的故障不会波及稳定的 DSH。

核心功能

该插件主要提供以下能力:

  1. 隔离的开发环境:为每个开发 Workspace 创建独立的 DSH_HOME、Web profile 和端口,设置独立的 DSH_AGENTS_HOME 和 bundled-skill 目录,避免扫描稳定实例的 Skills。
  2. 多 Plugin 组合:一个 Workspace 可以组合多个本地 Plugin、固定版本依赖和团队 Preset。通过 link:<absolute-plugin-path> 安装本地成员,并支持在仓库内使用 .dsh-dev.yml、.dsh-dev.yaml 或 .dsh-dev.json 声明配置。
  3. 生命周期管理:支持对开发 DSH 进行启动、停止、重启、检查操作。自动启动每个本地成员的 dev:client watcher,并在启动前运行 dsh --profile web --dump-config。
  4. 构建与验证:执行依赖安装与初始构建,支持执行目标包的 check、test 或指定 package script。将 pnpm tarball 安装到全新环境,通过干净环境门禁后计算 SHA-256 并写入晋级元数据。
  5. 管理与日志:在 DSH 设置页提供 Plugin Dev 管理面板,读取 Host、watcher、check、clean validation 和 supervisor 日志。支持安全注销单个实例,并可选择清理受管开发数据,同时保留已晋级 Release 和 Plugin 源码。
  6. 进程安全:localhost supervisor RPC 使用原生 HTTP。supervisor 启动失败或竞争失败时主动回收刚创建的进程。拒绝停止 supervisor 没有持有进程句柄的端口占用者。

安装与启用

安装该插件时,必须指定一个独立的、未承载共享工作的 DSH Home 路径,不能指向 Stable。

DSH_HOME=/absolute/path/to/isolated-dsh-home \
  dsh plugin --profile web add "github:QuanQQQ/dsh-plugin-dev-manager#v0.4.3"

安装完成后,在 DSH 的设置页面中即可找到 Plugin Dev 管理面板。

典型用法

创建开发 Workspace

通过 RPC 调用创建一个开发 Workspace,插件会自动读取开发清单、安装依赖、初始构建并分配独立端口。

dsh_dev_workspace_create({ workspacePath: "/work/campaign-plugin" })

配置多 Plugin Workspace

在 Workspace 根目录创建 .dsh-dev.yml 文件,定义 Workspace 的组成:

version: 1
name: campaign-dev
preset: team-web

plugins:
  - path: .
    role: primary
    watch: dev:client

  - path: ../dsh-plugin-common
    role: member

  - source: github:example/dsh-plugin-storage#v1.3.0
    role: dependency

卸载 Stable 插件

卸载 Stable 插件涉及预览、排队、移除和验证四个步骤:

  1. 预览:查看安装来源、版本和阻塞原因。
    dsh_plugin_uninstall_preview({ packageName: "dsh-example-plugin" })
  1. 排队:确认影响范围并排队卸载。
    dsh_plugin_queue_uninstall({ 
      packageName, 
      expectedGeneration: preview.profileGeneration, 
      confirm: true 
    })
  1. 移除:执行实际的移除操作。
    dsh plugin --profile web remove --config.ignore-scripts=true <packageName>

适用场景与注意事项

  • 适用场景:需要在一个稳定 DSH 中进行插件开发,且希望开发环境的故障不影响其他实例或 Stable 环境的场景。
  • 权限与路径:插件以当前 dsh 进程权限运行。安装示例中指定的 DSH_HOME 必须是绝对路径,且仅用于独立环境,不能指向共享 Stable 的目录。
  • 更新机制:共享 Stable 的 Plugin 更新必须使用 dsh_dev_queue_update,Runtime 更新需进入隔离兼容性验证流程的同一队列。

总结

dsh-plugin-dev-manager 通过为插件开发提供独立的控制面、严格的构建验证流程和安全的进程管理机制,帮助开发者隔离开发风险。它将开发实例的故障域限制在单个 Workspace 内,确保了开发环境的稳定性。

羽毛球分组比赛记分
小程序二维码

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

小夜