dsh-plugin-gpustack:在 DSH 裏用 Agent 工具運維 GPUStack v2 集羣

前言

在 DeepSeek Harness(DSH)裏做模型推理相關開發時,往往需要對接 GPU 集羣:看節點與顯卡餘量、提交部署、跟實例狀態、拉日誌、做一次真實推理驗收、再查用量。若只靠 curl 或手寫腳本,上下文要在人和模型之間來回搬,密鑰也容易混進對話記錄。

dsh-plugin-gpustack 把 GPUStack v2 的 /docs 運維接口封裝成 DSH 的 Agent 工具。安裝並配置集羣地址與 API Key 後,模型可以盤點集羣、部署模型、查看實例日誌、等待就緒、跑推理驗收、查用量;其餘 200+ 端點可通過通用請求工具覆蓋。

這是什麼

  • 名稱:dsh-plugin-gpustack(npm 包名相同)
  • 維護者:zh-Littlebird(Hu Zhang)
  • 分類:模型推理(社區目錄歸類)
  • 版本:1.0.0(MIT 許可證)
  • 定位:GPUStack v2 集羣工具——模型部署與生命週期、Worker/GPU 盤點、實例日誌、推理驗收、用量統計與通用 API 調用;API Key 設計爲留在模型會話之外。

插件以 dsh.bundle.patch 聲明的組合包形式安裝,依賴 DSH >=0.2.2-rc.1 <0.3.0、Node >=22.19.0。

核心功能

工具面

README 中列出的工具與用途如下(節選):

工具 用途
gpustack_config 查看/設置集羣地址(不接收 Key)
gpustack_test 連通性與憑據自檢(healthz、version、用戶身份、推理模型數等)
gpustack_inventory 集羣、Worker、GPU 設備盤點
gpustack_models 模型列表或單個模型及實例詳情
gpustack_deploy_model 部署模型(POST /v2/models)
gpustack_update_model 修改副本、參數、env 等規格
gpustack_model_action 重啓、回滾、刪除(刪除需 confirm=true)
gpustack_logs 模型實例日誌
gpustack_wait_model 輪詢直到 running/error 或超時
gpustack_chat OpenAI 兼容推理驗收(真實 /v1/chat/completions)
gpustack_usage 用量彙總與明細
gpustack_request 任意端點的通用通道

注意:gpustack_models 的 state 參數對應列表接口的就緒過濾(ready/not_ready/stopped);若按 pending|partial|running|error 篩選,應使用 modelState。

安全與權限

  • API Key 僅存在本機加密文件(AES-256-GCM),不進入工具參數、工具結果或會話記錄。
  • 寫操作受 allowWrites 總開關控制;delete 需顯式 confirm=true。
  • 每次調用寫一行審計日誌(不含請求體與查詢串)。
  • 設置頁可按類別單獨關閉部署、修改規格、重啓回滾、刪除、通用寫、推理等權限。

安裝與啓用

插件裝進當前 profile 即可。官方 README 給出的命令如下。

# 從 npm 安裝
dsh plugin --profile desktop add dsh-plugin-gpustack

# 或先從源碼克隆,再按目錄安裝
git clone https://github.com/zh-Littlebird/dsh-plugin-gpustack
dsh plugin --profile desktop add ./dsh-plugin-gpustack

Agent 場景可調用 plugin_manager 的 install_bundle,target 傳包名 dsh-plugin-gpustack 或本地目錄絕對路徑。

安裝後 gpustack_* 工具在下一個會話(或工具表刷新後)可用;設置頁與插件行配置頁重新加載頁面後生效,重啓 Harness 一定生效。

配置集羣與憑據

圖形界面(推薦)

打開「設置 → GPUStack」,或在「插件」頁打開 dsh-plugin-gpustack 的配置頁:

  1. 填寫集羣地址(可粘貼 /docs 鏈接,會自動去掉後綴)與 API Key,點「保存」後立即生效。
  2. 使用「測試連接」分項查看 healthz/version、管理接口身份、推理接口模型數。
  3. 在「操作權限」中按類別開關寫操作;可調整超時與組織 ID。

命令行等價操作

模型不參與、也看不到密鑰輸入:

cd 'dsh-plugin-gpustack'
node scripts/dsh-gpustack.mjs setup --base-url http://192.0.2.10:31901
node scripts/dsh-gpustack.mjs set --api-key          # 隱藏輸入,形如 gpustack_xxx
node scripts/dsh-gpustack.mjs status
node scripts/dsh-gpustack.mjs test                   # 探活 /healthz、/version、/v2/users/me

配置優先級:環境變量 > site.json(設置頁/CLI 寫入)> 插件配置(cordis.patch.yml 的部署默認值)。常用環境變量包括 GPUSTACK_BASE_URL、GPUSTACK_API_KEY、DSH_GPUSTACK_DATA_DIR(默認 $DSH_HOME/gpustack)。

非機密與審計數據落在 site.json、credentials.json + master.key、audit.log 等本地文件中,細節見 README 表格。

典型用法

部署並驗收

  1. gpustack_inventory — 確認 worker ready、卡型與餘量。
  2. gpustack_deploy_model — 提交 name/source/backend/replicas/...。
  3. gpustack_wait_model — 等到 state=running(不要僅憑 200 認爲成功)。
  4. gpustack_chat — 用模型名跑一次真實推理。
  5. gpustack_models modelId=<id> — 覈對實例落在預期 worker/GPU。

排障

  1. gpustack_models modelId=<id> — 查看 state、state_message、實例狀態。
  2. gpustack_logs modelId=<id> — 鏡像/模型路徑/OOM 等;重啓過可加 previous=true。
  3. 修復後 gpustack_model_action action=restart,再 gpustack_wait_model。

改配置

gpustack_update_model 只更新規格;改 backendParameters/env/鏡像等時必須 restart=true(或隨後單獨 restart),否則進程仍跑舊參數。restart 整組重建且非冪等,restarting_since 未清空前再次調用可能返回 409。

適用場景與注意

適合誰:已在 GPUStack v2 上跑模型、又在 DSH 裏用 Agent 做部署與運維對話的開發者;希望 Key 與寫操作有明確邊界和審計的團隊。

運行邊界:插件以當前 DSH 進程的權限訪問本機配置與集羣 API;安裝前應自行審閱 源碼 與 MIT 許可證。一個插件實例綁定一個集羣(baseUrl);多集羣需切換地址或多份配置。

已知限制(摘自 README):模型 zip 導入導出、部分看板端點等未做 typed 工具,可用 gpustack_request;壓測類接口使用前需確認對線上流量的影響。

DSH 生態理念是「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-plugin-gpustack 把 GPUStack v2 的日常運維收成一組可編排的 Agent 工具,並在密鑰、寫權限與審計上做了分層約束。需要安裝說明、配置字段與完整工具表時,以倉庫 README 爲準。

  • 目錄頁:https://www.skillhub.cn/plugins/zh-Littlebird/dsh-plugin-gpustack
  • GitHub:https://github.com/zh-Littlebird/dsh-plugin-gpustack
羽毛球分组比赛记分
小程序二维码

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

小夜