前言¶
在 DeepSeek Harness (DSH) 中开发插件时,目标 Plugin 的 Host 代码、配置或依赖出现错误可能导致开发实例重启失败,甚至影响稳定运行的 DSH 实例。为了隔离这种风险,需要一种机制来管理独立的开发环境。
dsh-plugin-dev-manager 提供了一个稳定的控制面,用于管理隔离的 Plugin 开发实例。它通过为每个开发 Workspace 创建独立的 DSH_HOME、Web profile 和端口,确保开发过程中的故障不会波及稳定的 DSH。
核心功能¶
该插件主要提供以下能力:
- 隔离的开发环境:为每个开发 Workspace 创建独立的
DSH_HOME、Web profile 和端口,设置独立的DSH_AGENTS_HOME和 bundled-skill 目录,避免扫描稳定实例的 Skills。 - 多 Plugin 组合:一个 Workspace 可以组合多个本地 Plugin、固定版本依赖和团队 Preset。通过
link:<absolute-plugin-path>安装本地成员,并支持在仓库内使用.dsh-dev.yml、.dsh-dev.yaml或.dsh-dev.json声明配置。 - 生命周期管理:支持对开发 DSH 进行启动、停止、重启、检查操作。自动启动每个本地成员的
dev:clientwatcher,并在启动前运行dsh --profile web --dump-config。 - 构建与验证:执行依赖安装与初始构建,支持执行目标包的
check、test或指定 package script。将 pnpm tarball 安装到全新环境,通过干净环境门禁后计算 SHA-256 并写入晋级元数据。 - 管理与日志:在 DSH 设置页提供 Plugin Dev 管理面板,读取 Host、watcher、check、clean validation 和 supervisor 日志。支持安全注销单个实例,并可选择清理受管开发数据,同时保留已晋级 Release 和 Plugin 源码。
- 进程安全: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 插件涉及预览、排队、移除和验证四个步骤:
- 预览:查看安装来源、版本和阻塞原因。
dsh_plugin_uninstall_preview({ packageName: "dsh-example-plugin" })
- 排队:确认影响范围并排队卸载。
dsh_plugin_queue_uninstall({
packageName,
expectedGeneration: preview.profileGeneration,
confirm: true
})
- 移除:执行实际的移除操作。
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 内,确保了开发环境的稳定性。