DSH Web 支持运行多个实例,管理本机的多个实例需要清晰的视图来查看状态、启动新实例或停止现有实例。dsh-instance-manager 是 DSH Web 的实例管理器,负责这些操作。
它由 xswt442-cmd 维护,采用 MIT 许可证。
安装与启用¶
使用以下命令安装并注册插件到 web profile:
dsh plugin --profile web add dsh-instance-manager
这一步会完成 npm 包的安装与 profile 的注册。安装后重启 DSH Web 生效。注意,单独执行 npm install 仅安装 package,不启用插件。
核心功能¶
- 状态显示:为每个实例显示一行信息,包括端口、PID、运行时长、会话数、常驻内存与版本。当前实例排在第一行。
- 启动新实例:端口留空时,取起始端口段内第一个空闲端口。如果指定端口已被占用,直接报错,不会尝试其他端口。
- 停止实例:支持单个实例停止、停止当前实例或停止全部本地实例。远程实例行是只读的,不参与 stop-all 操作。
- 查看视图:提供每个实例的只读视图,包括 stdout/stderr 日志、会话概要以及该实例正在运行的内容。
- 远程实例:配置 peer 列表后,可以在面板中查看远程机器上的实例及其日志与会话。
- Agent 工具:提供命令行工具
instance_list、instance_start、instance_stop、instance_logs和instance_sessions。
入口与配置¶
面板入口位于工作区左下、侧边栏右侧的菜单图标。
插件支持通过配置节 live 和 startup 进行设置。
- live:包含刷新间隔 (
refreshIntervalMs)、Fleet token (fleetToken) 和 peer 列表 (peers)。修改此节通常即时生效。 - startup:包含端口清单 (
portRange)。此节applies: 'restart',仅在重启时读取,未生效的修改在设置界面标为待生效。
默认端口段为 '3080-3129,19387'。
环境变量也可用于配置:
$env:DSHIM_REFRESH_INTERVAL_MS = '4000'
$env:DSHIM_FLEET_TOKEN = '<secret>'
$env:DSHIM_PEERS = 'id@origin'
$env:DSHIM_PORT_RANGE = '3080-3129,19387'
注意事项¶
- 权限安全:Fleet token 没有操作级权限划分,持有者可以启动或停止本机实例并读取会话信息。因此,应仅将 token 授予可信设备。
- 端口冲突:启动时如果指定端口被占用,插件会报错,不会自动切换到其他端口。
- 远程限制:远程实例在面板中是只读的,无法在面板中直接停止它们,只能通过 Agent 工具操作。