# 设置卡片与监控页 [English](../en/web-ui.md) · [返回 README](../../../README.md) 插件在 dsh 网页端加了两处界面:设置页里的一张 llamapad 卡片,以及设置导航里的一个 GPU 监控页。 ## 设置卡片 卡片位置分两种情况:dsh 0.1.5 在「设置 → 插件 → 插件配置」,和官方的终端、Agent 循环、网页搜索几张卡片排在一起;dsh 0.1.7 挪到了侧栏「插件」页的 llamapad-dsh-plugin 详情页里。即使还没配 `panelUrl` / `token`,卡片也会出现,只是显示未连接。 卡片上有这些内容: - 标题行:点击折叠或展开,折叠后停止轮询面板。 - 「刷新」按钮:立即重新拉一次面板状态,不用等下一次轮询。首次加载还没拿到任何快照时不显示。 - 「在浏览器中打开面板」按钮:跳到完整的 llamapad 面板。 - 运行状态:只跑一个模型时显示一行,标明它是否在推理。同时跑多个时显示运行列表,每行是模型名、已加载时长、就绪状态,以及默认标记或「设为默认」按钮。切换默认模型期间所有「设为默认」按钮都会禁用,避免连点冲突。 - 仍在启动中:面板收到启动/重启请求、但还没处理完的模型会单独列一行,标注阶段(准备中 / 正在拉取镜像 / 正在创建容器)和已经等了多少秒。这段时间该模型的启动按钮会被禁用,避免重复点击换来一个 409。需要 llamapad 面板 v0.2.1 及以上才会显示;老面板上,启动期间卡片可能仍会显示「当前没有模型在运行」,等镜像拉完、容器真正起来才会更新。 - 模型列表:两列卡片网格,超过大约 4 行后在列表内部滚动。窗口窄于 520px 时变成单列。 - 每个模型的启动/停止按钮:启动时不会停掉其他在跑的模型。等待过程中按钮变成「取消等待」,点了就中止这次请求,不会弹错误提示。 - 连接设置:面板地址、API token 和保存按钮。 - 最近事件:面板上最近的操作记录,比如模型启停、异常退出、下载完成。失败的标红,成功的标绿。有新事件时右下角会弹一条提示,3 秒左右消失。 ### 在卡片里配置连接 在「连接设置」里填好地址和 token 保存,两代存储位置不同:dsh 0.1.5 写进 `$DSH_HOME/settings.yaml` 中本插件自己的分节,不会动 `cordis.yml`;dsh 0.1.7 写进 profile 的 `cordis.patch.yml`。两种情况保存后都立即生效,不用重启 dsh。 从 dsh 0.1.5 升级到 0.1.7 后,卡片里原来保存过的连接不会自动带过去,需要在新版卡片里重新填写一次面板地址和 token。 token 输入框留空表示保留原来的值,和 dsh 官方的密码框行为一致,所以卡片里没有「清空 token」的操作。面板地址不能留空,清掉地址后卡片就没法再连上面板了。 ### token 不会暴露给浏览器 卡片通过 dsh 后端的 RPC(`ctx.remote.llamapadPanel.*`)拿数据,后端再用自己保存的 token 去请求面板。浏览器既拿不到 token,也不直接访问面板,所以 llamapad 不需要开 CORS。架构细节见[设置卡片设计记录](../../design/settings-card-design.md)。 ### 停止正在推理的模型 启停按钮使用 `drainOnSwitch` 和 `drainTimeoutMs` 两个配置。停止一个正在推理的模型时,服务端最多等 `drainTimeoutMs`(默认 60 秒)把手上的请求处理完,期间按钮显示等待中。 ### 跨机部署 `panelUrl` 是 dsh 后端访问面板用的地址,「在浏览器中打开面板」却是在你的浏览器里打开的。dsh 和浏览器不在同一台机器时,要把 `panelPublicUrl` 配成浏览器能访问的地址。单机部署可以不管。 ## GPU 监控页 在 dsh 设置导航里,排在官方设置页后面。 页面上有六条曲线:tokens/s、KV cache tokens、GPU 显存、GPU 利用率、容器 CPU、容器内存。下面是每张 GPU 的明细卡,显示显存、利用率、温度和功耗。时间范围可以切换 30 分钟、2 小时、24 小时、7 天。 - 30 分钟和 2 小时档每 5 秒刷新一次,对应面板 5 秒一个采样点。24 小时和 7 天档每 60 秒刷新一次,面板按 15 分钟聚合,刷快了也没有新数据。 - 每次只取上次之后的新数据点。切换时间档或离开页面时,正在进行的请求会马上取消。 - nvidia-smi 报不出温度或功耗时,这一项直接不显示,不会填 0。 多模型场景下有两点限制,都来自面板的采集方式,插件改变不了: - 容器和推理指标只跟踪默认模型。卡片顶部会写明数据来自哪个模型。切换默认模型后,曲线会直接接上新模型的数据,中间没有分界标记。 - GPU 数据是整张卡的读数。多个模型共用一张卡时,没法拆分到具体某个模型。