dsh-restart-btn:DeepSeek Harness 一鍵重啓插件

在開發智能體或調整配置時,修改 bundle、插件或主題後需要重啓服務。手動操作依賴桌面啓動器,路徑或啓動參數可能不一致,導致環境差異。本插件在 DSH 設置頁的 General 區添加“重啓 Web 服務”按鈕,直接複用當前運行進程的配置進行重啓,頁面會在服務就緒後自動重新載入。

dsh-restart-btn 是一個由 SiriusWJ 維護的 DSH 插件。它通過複用桌面啓動器機制(node + lib/bin.js、日誌重定向、TCP 就緒輪詢)解決非 ASCII 路徑下計劃任務靜默失敗的問題,並提供一鍵重啓入口。

核心功能

  • 設置頁入口:在 DSH 設置頁 General 區添加“重啓 Web 服務”按鈕。
  • 自動重啓與刷新:點擊後重啓 dsh web,服務就緒後頁面自動重新載入。
  • 跨平臺兼容:兼容 Windows(終端/桌面/服務/計劃任務)、Linux/macOS/WSL、源碼樹運行及 nvm/volta/pnpm 全局安裝。
  • 非 ASCII 路徑修復:使用 UTF-8 JSON 配置文件替代命令行,避免中文路徑在計劃任務中靜默失敗。
  • 端口衝突處理:當端口被佔用時,退化爲停掉髮起重啓的那個進程(selfPid)。
  • 就緒驗證:通過 GET /dsh-restart-btn/ping 驗證,最多等待 45 秒,檢查 helper.launch 是否出現。
  • 界面語言:界面中英雙語,跟隨 DSH 語言設置。

安裝

使用以下命令安裝插件:

dsh plugin --profile web add github:SiriusWJ/dsh-restart-btn

典型用法

  1. 界面操作:在 DSH 設置頁 General 區點擊“重啓 Web 服務”按鈕。
  2. API 重啓:發送 POST /dsh-restart-btn/restart,Body 爲 {"port":"3080"}。
  3. 狀態檢測:發送 GET /dsh-restart-btn/ping,返回 {ok, instance, pid, platform} 判斷新進程是否就緒。
  4. 工作流:改完 bundle 需要重啓一次 dsh 生效(第一次請手動重啓)。

注意事項

  • 標籤頁行爲:重啓時不加 --no-open,會多開一個已授權的標籤頁(與桌面快捷方式一致),舊標籤頁靠 Cookie 自動重載。
  • 進程管理:只停監聽該端口的進程。若 dsh 被 supervisor 託管,可能自動拉起,導致端口未釋放。
  • 系統依賴:macOS 需要 lsof,極簡 Linux 鏡像若無 lsof/fuser/ss 會報錯。
  • 會話問題:重啓後有時會話需要重新授權(Cookie 壽命問題),頁面會提示用桌面快捷方式。
  • 身份識別:前端只在 ping 到另一個 instance 時才刷新頁面。

日誌與排錯

插件運行時會將日誌輸出到暫存目錄。若路徑含非 ASCII 字符會依次回退。

  • Windows:%LOCALAPPDATA%\dsh-restart-btn
  • Linux/macOS:$TMPDIR/dsh-restart-btn

主要日誌文件包括:

文件 說明
restart.log 重啓全過程(停進程、端口釋放、啓動、就緒、失敗原因及 stderr 尾部)。
helper.launch 助手啓動憑證(PID),用於驗證助手是否成功啓動。
dsh.out.log 新服務的標準輸出(含 token 地址)。
dsh.err.log 新服務的標準錯誤。

生態背景

DeepSeek Harness 理念是“一切皆插件”。本插件旨在標準化開發流程中的重啓操作。源代碼與文檔可在 GitHub 查看。

羽毛球分组比赛记分
小程序二维码

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

小夜