前言¶
DeepSeek Harness(DSH)允许在本地通过不同端口(如 3080–3129)同时运行多个实例。手动切换标签页查看日志、检查进程状态或停止实例会增加操作成本。dsh-instance-manager 插件通过常驻侧边栏面板,将所有本地实例的监控与控制集中在一处。
这是什么¶
这是一个常驻 DSH 插件,提供侧边栏面板以统一查看并优雅停止本机 3080–3129 端口的 dsh 实例。项目由 xswt442-cmd 维护,采用 MIT 许可证。
核心功能¶
插件提供以下核心能力:
-
实例列表与详情
列出每个实例的详细信息,包括端口、PID、运行时长、会话数、常驻内存和版本。当前实例会恒排在列表第一行,其余实例按端口升序排列。 -
启动新实例
在侧边栏面板启动新实例时,如果端口留空,插件会在托管端口段(默认 3080–3129)内自动挑选第一个空闲端口并启动。如果指定端口已被占用,会直接报错而不会尝试占用其他端口。 -
打开与跳转
点击列表中的:端口链接可跳转到该实例的界面。插件会自动处理 token 重定向逻辑。 -
停止实例
支持停止单个实例、停止当前实例或停止所有本地实例。所有停止操作均通过目标实例自身的优雅退出流程完成,而非强制杀进程。 -
日志与会话查看
提供每个实例的只读视图,可查看 stdout/stderr 日志以及会话概要。 -
远程实例支持
配置 peer 后,面板可以查看远程实例及其日志。远程实例行只读,不参与 stop-all 操作。 -
Agent 工具
提供instance_list、instance_start、instance_stop、instance_logs、instance_sessions等命令行工具。
安装与启用¶
通过 npm 包安装并注册到 web profile。安装后重启 DSH Web 即可生效。
dsh plugin --profile web add dsh-instance-manager
配置¶
插件支持在 DSH Settings 中配置,也支持通过环境变量设置默认值。主要配置项包括:
- Dock 位置:控制面板在主界面的停靠位置。
- 刷新间隔:控制列表数据刷新的频率。
- 启动端口段:设置实例启动时的可用端口范围。
- Fleet token:用于远程认证与安全校验。
- Peers:配置需要监听的远程 peer 地址。
对应的环境变量示例:
$env:DSHIM_DOCK_PLACEMENT = 'main-bottom-left'
$env:DSHIM_REFRESH_INTERVAL_MS = '4000'
$env:DSHIM_PORT_RANGE = '3080-3129'
$env:DSHIM_FLEET_TOKEN = '<long-random-secret>'
$env:DSHIM_PEERS = 'office@http://192.168.1.20:3080'
安全¶
插件内置了本地守卫机制:
- 访问控制:拒绝跨站 Origin、非 loopback Host 的请求。
- Token 验证:Fleet token 的有效性基于真实 TCP 对端地址(socket)判定,而非仅依赖 HTTP Host 头。如果对端地址缺失或无法解析 token,请求会被拒绝。
- 权限划分:Fleet token 持有者拥有启动或停止本机实例及读取会话信息的权限,但没有操作级权限划分。应仅授予可信设备。
- 接口开放:Server-Sent Events(SSE)仅向本机开放。
注意事项¶
- 远程实例限制:配置 peer 后查看的远程实例为只读状态,不参与本地的一键停止操作。
- 开发要求:在提交代码前,需要运行
npm test、npm run docs:check和npm pack --dry-run。