前言¶
在 DeepSeek Harness(DSH)里跑智能体时,推理往往落在局域网里的一台 AMD GPU 服务器上:Radiance 用 docker compose 拉起,日常还要改功耗、换镜像、看 decode/prefill 吞吐。这些操作习惯上靠 SSH 进终端,命令分散,侧边栏也看不到实时负载。
下面介绍社区插件 dsh-local-radiance-server-controller(维护者 Vossk123)。它在 DSH 侧边栏增加「推理服务器 / Inference Server」面板,并在侧边栏底部常驻一行 live metrics;远程操作全程复用一条长连接 SSH,而不是每次动作新开会话。
这是什么¶
dsh-local-radiance-server-controller 是 DSH 的 Host + Client 插件:通过 SSH 控制局域网内的 AMD 推理服务器——GPU 功耗上限、Radiance docker compose 启停与镜像更新、amd-smi 诊断、关机/重启,以及 decode/prefill t/s、CPU/GPU 利用率展示。
分类为 admin-security(目录页:SkillHub 插件页)。源码与说明见 GitHub 仓库,许可证 MIT;package.json 中版本为 1.0.1。
核心功能¶
打开面板后会立刻探测服务器(运行中的 compose 服务、功耗限制状态),之后每 20 秒刷新;任意按钮操作也会立即再刷一次。
SSH 与本地配置¶
在面板里填写 Host、端口、用户名、密码、compose 目录、默认 compose 文件、Radiance 镜像名、功耗上限(W)、是否使用 sudo。配置保存在本机:
~/.dsh/dsh-local-radiance-server-controller.json
官方说明:SSH 密码以明文保存在该 JSON 中,且同时用于 sudo(经 base64 -d | sudo -S 传入,明文不会出现在远端进程参数里)。不要在共享或托管机器上使用,并尽量缩小远端账号权限。
功能卡片与远端行为¶
| 区域 | 作用 | 远端命令(摘要) |
|---|---|---|
| AMD GPU 功耗 | 启用指定瓦数上限 / 恢复默认;状态一致时按钮带 ✓ 并禁用 | sudo amd-smi set -o <W> / sudo amd-smi reset -o |
| Radiance 服务 | compose 目录下 yaml 下拉(隐藏 common.yaml);启停、更新镜像(先 down 再 pull);显示引擎版本;浏览器打开引擎页 |
cd <dir> && sudo docker compose -f <file> up -d / down;sudo docker pull <image>;URL 为 http://<host>:<PORT>,PORT 来自 <compose dir>/.env |
| 服务器诊断 | 完整 amd-smi 输出 |
amd-smi |
| 危险操作 | 关机 / 重启,各需两次点击确认,4 秒后自动取消 | sudo shutdown -h now / sudo reboot |
侧边栏 live metrics¶
插件在侧边栏底部保留一行:状态点 + GPU %、CPU %、decode/prefill t/s;侧边栏折叠时缩成状态点。
整条插件只维护一条长连接 SSH(15 秒 keepalive,断线退避重连)。流量经 ssh2 exec 多路复用:
| 数据 | 周期 | 远端方式 |
|---|---|---|
| decode / prefill | 0.5 s | curl localhost:<PORT>/stats(PORT 与 API key 从 compose 目录 .env 读取,key 不离开服务器;version 字段也用于服务卡片上的引擎版本) |
| CPU / GPU | 5 s | /proc/stat 双采样差分;amd-smi metric -u 的 GFX_ACTIVITY |
| 服务 / 功耗状态 | 20 s | docker compose ls --format json;amd-smi static -l(SOCKET 与 MAX 对比是否有限制) |
因此远端 journalctl 里通常一天只有一两次 SSH 登录记录,而不是每次刷新新建连接。
安装与启用¶
插件以当前 DSH 进程权限在本机运行 Host 端逻辑;安装前建议通读仓库源码与 LICENSE,确认可接受明文存密码等设计。
前提¶
- 本机:DeepSeek Harness 桌面版。
- 服务器:
sshd支持密码登录、sudo可用;Radiance 以 docker compose 部署;AMD GPU 且装有amd-smi;Radiance 引擎暴露/statsWeb API。
步骤(任意机器首次安装)¶
-
将插件目录拷到本机任意路径(不要拷贝
node_modules;每台机器各自装依赖)。至少需要index.js、client.js、package.json、cordis.patch.yml、icon.svg、locale/(assets/仅为 README 截图,可选)。 -
在插件目录安装依赖(本地目录安装不会自动装依赖,否则会
Cannot find package 'node-ssh'):
cd <plugin dir>
npm install --omit=dev
- 把 bundle 装进 DSH:对 Harness 智能体说明使用 plugin_manager 安装
<绝对路径的 plugin dir>作为 bundle,或执行:
dsh plugin install <absolute plugin dir>
-
重启 DSH 应用(Host 端在应用启动时加载)。
-
打开侧边栏面板,填写 SSH 信息并保存。
要在多台机器间同步,复制步骤 1 所列文件,重复步骤 2–3 即可。
典型用法¶
-
保存 SSH 与 compose 目录(默认 compose 目录示例为
~/radiance-compose,默认服务文件flashnext-tp2.yaml,默认镜像stilldeadcode/radiance,默认功耗 210 W,Use sudo默认开启)。 -
在下拉框选择 yaml,点启动/停止;需要新版本时点「更新镜像」。运行中可在卡片上看到引擎版本,并一键用默认浏览器打开
http://<host>:<PORT>。 -
需要压机房噪声或控功耗时,在 AMD GPU 卡片设置瓦数并启用限制;恢复默认用 reset。
-
日常看负载看侧边栏底部 widget;详细 GPU 信息用「服务器诊断」。
-
维护窗口再使用危险区的关机/重启(两次确认)。
Host 暴露的 HTTP 路由(前缀 /dsh-local-radiance-server-controller,受 DSH 登录保护)包括:GET state、GET job?id、GET fast、POST settings、POST action {action,file?}。
适用场景与注意¶
适合:本机跑 DSH、推理在局域网单台(或少数)AMD + Radiance compose 服务器上,希望少开终端、侧边栏一眼看到 t/s 与利用率的操作者。
不适合或需慎用:共享电脑、明文密码不可接受的环境;远端账号权限过大;没有 Radiance /stats 或没有 amd-smi 的机器。
排错(来自 README):
| 现象 | 处理 |
|---|---|
| 改代码后行为异常 | 重启 DSH(Host 模块缓存) |
sudo: a password is required |
在面板重新保存密码(sudo 使用登录密码) |
服务正常但 widget 为 - |
重启/断线后的重连冷却期内正常,约 30 秒内恢复 |
| 下拉缺少某个 yaml | 只列出不含 .. 的 .yaml/.yml;common.yaml 故意隐藏 |
| 空闲时 decode 接近 0 | Radiance 为引擎侧窗口平均,空闲接近零属预期 |
DSH 生态强调「一切皆插件」;SkillHub 等社区目录独立于 DeepSeek / 幻方,并非官方应用商店。
结尾¶
dsh-local-radiance-server-controller 把局域网 AMD 推理机的 compose、功耗、镜像与基础运维收进 DSH 侧边栏,并用单 SSH 长连接承载指标与操作。目录与详情:
- 插件页:https://www.skillhub.cn/plugins/Vossk123/dsh-local-radiance-server-controller
- 源码:https://github.com/Vossk123/dsh-local-radiance-server-controller