dsh-local-radiance-server-controller:用一条 SSH 管局域网 AMD 推理机

前言

在 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 引擎暴露 /stats Web API。

步骤(任意机器首次安装)

  1. 将插件目录拷到本机任意路径(不要拷贝 node_modules;每台机器各自装依赖)。至少需要 index.js、client.js、package.json、cordis.patch.yml、icon.svg、locale/(assets/ 仅为 README 截图,可选)。

  2. 在插件目录安装依赖(本地目录安装不会自动装依赖,否则会 Cannot find package 'node-ssh'):

cd <plugin dir>
npm install --omit=dev
  1. 把 bundle 装进 DSH:对 Harness 智能体说明使用 plugin_manager 安装 <绝对路径的 plugin dir> 作为 bundle,或执行:
dsh plugin install <absolute plugin dir>
  1. 重启 DSH 应用(Host 端在应用启动时加载)。

  2. 打开侧边栏面板,填写 SSH 信息并保存。

要在多台机器间同步,复制步骤 1 所列文件,重复步骤 2–3 即可。

典型用法

  1. 保存 SSH 与 compose 目录(默认 compose 目录示例为 ~/radiance-compose,默认服务文件 flashnext-tp2.yaml,默认镜像 stilldeadcode/radiance,默认功耗 210 W,Use sudo 默认开启)。

  2. 在下拉框选择 yaml,点启动/停止;需要新版本时点「更新镜像」。运行中可在卡片上看到引擎版本,并一键用默认浏览器打开 http://<host>:<PORT>。

  3. 需要压机房噪声或控功耗时,在 AMD GPU 卡片设置瓦数并启用限制;恢复默认用 reset。

  4. 日常看负载看侧边栏底部 widget;详细 GPU 信息用「服务器诊断」。

  5. 维护窗口再使用危险区的关机/重启(两次确认)。

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
羽毛球分组比赛记分
小程序二维码

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

小夜