前言¶
用 DeepSeek Harness(DSH)做本機或遠程開發時,常見做法是再開 SSH、systemctl、journalctl 或單獨的文件管理工具。DSH 本身已有 Web 服務與認證,若能在同一套 UI 裏查看資源、管 systemd、改配置、跟日誌,就不必爲日常運維再堆一層入口。下面介紹社區插件 dsh-server-panel(維護者 lsl1931):把 DSH WebUI 擴展成側欄「服務器」整頁面板,不新開端口、不依賴 nginx,繼承 DSH 的認證、主題、暗色模式與語言。
這是什麼¶
dsh-server-panel 是 DSH 的 Web 客戶端插件(package.json 中 dsh.client.platform 爲 web)。Host 半在 dsh 進程內註冊約 26 條 /dsh-server-panel/* 路由並做指標採樣;Client 半注入側欄圖標與左導航(總覽 / 服務 / 文件 / 日誌 / 軟件包 / 網絡)及命令面板。訪問仍經你已有的隧道到 127.0.0.1:3080 的 dsh web,插件不單獨監聽公網端口。
倉庫:https://github.com/lsl1931/dsh-server-panel
社區目錄:https://www.skillhub.cn/plugins/lsl1931/dsh-server-panel(獨立社區站點,與 DeepSeek / 幻方無官方從屬關係)
許可證:MIT(© 2026 lsl1931)。當前 package 版本爲 0.1.0,要求 Node >= 22。
架構概覽¶
README 中的結構可以概括爲:
瀏覽器(經你的 SSH 隧道)
└── 127.0.0.1:3080 dsh web
├── DSH 原有 UI
└── dsh-server-panel
├── Client 半:左導航面板 + 命令面板
└── Host 半:/dsh-server-panel/* 路由 + 採樣器 + root 通道
Host 入口在 src/index.js(配置、採樣器、sudo 會話、路由);客戶端資源經 build.mjs 打進 lib/,由模塊加載器加載。注意:Host 半與 dsh 同進程,同一模塊路徑只會加載一次;修改 src/*.js 後需重啓 dsh(電源按鈕)纔會加載新代碼;僅改 cordis.patch.yml 裏的 config 可即時生效,Client 頁面在重啓後一併刷新。
核心功能¶
界面爲 v2 佈局:頂欄含主機名、發行版/負載/內存摘要、命令面板(⌘K / Ctrl+K)、自動刷新、root 身份膠囊;左導航對應六個頁面。
| 頁面 | 能力(據 README) |
|---|---|
| 總覽 | 異常橫幅(failed 單元、磁盤 ≥85%、內存 ≥90%、負載超核數、可升級包);CPU/內存/磁盤/系統 KPI;常用服務快啓(可收藏);本次會話操作事件流 |
| 服務 | 分組(失敗/運行中/開機自啓/全部)與搜索;行內啓停重啓;右側抽屜查看狀態與 實時跟隨 的 journalctl |
| 文件 | 麪包屑與書籤;列表與覆蓋層編輯器(mtime 衝突檢測);上傳/下載/新建/重命名/刪除/chmod/chown |
| 日誌 | 按單元與關鍵字過濾,實時跟隨,行數可選 100–1000 |
| 軟件包 | apt 模擬升級列表、單包/全部升級、刷新索引、已安裝查詢 |
| 網絡 | 網卡(IP + 實時速率)、監聽端口(root 時含全部進程名)、已建立連接 Top、防火牆現狀 |
命令面板可跳頁、解鎖/鎖定 root、刷新、暫停輪詢、打開 /etc 或 /var/log、刷新 apt 索引、升級全部。
Host 側主要 HTTP 路由包括(節選):GET /health、/overview;GET /services、/services/logs;POST /services/action;GET/POST /sudo/state、/sudo/unlock、/sudo/lock;文件相關 GET/PUT/POST 於 /files/*;軟件包 /packages/*;網絡 /network/overview、/listeners、/connections。完整表見倉庫 README。
權限模型與安全¶
插件在未解鎖與已解鎖(root 通道)兩種模式下能力不同:
- 未解鎖:文件限於白名單路徑(如
~、/etc、/var/log等);日誌僅本用戶可見;服務與軟件包只讀。 - 已解鎖:在面板輸入 sudo 密碼後,各模塊請求自動帶
root=1;文件可全盤讀寫;日誌全量;服務可啓停/重啓/自啓;軟件包可更新/升級。需要權限的操作若未解鎖會先彈解鎖框,成功後自動重試。
寫系統目錄(/etc、/boot、/usr、/lib*、/bin、/sbin、/var/lib)需二次確認;刪除關鍵目錄(/、/etc、/usr、/home 等)會被拒絕。密碼僅通過 sudo -S 的 stdin 使用,保存在 dsh 進程內存;鎖定、空閒 10 分鐘或卸載插件會清除並執行 sudo -k。README 明確:解鎖後可 root 改系統配置、啓停服務;請只在本機或可信隧道後使用,不要把 3080 暴露到局域網或公網。
安裝與構建¶
官方 README 未給出 dsh plugin add github:... 一類單行命令,安裝方式爲通過 DSH 的 plugin_manager → install_bundle,target 設爲插件目錄的絕對路徑。開發者本地可先構建與測試:
node build.mjs # 構建:src/*.js → lib/*.js
node test/run.mjs # 10 個測試文件、90+ 斷言
安裝前請自行閱讀倉庫源碼與 MIT 許可證;插件以當前 dsh 進程權限運行,解鎖後影響面等同於在本機使用 sudo/root。
典型用法¶
- 在 DSH WebUI 側欄點擊「服務器」圖標,進入整頁面板。
- 在 總覽 看 KPI 與異常橫幅;需要改服務時在 服務 頁搜索單元,必要時先解鎖 root 再啓停/重啓,並在抽屜裏跟 journalctl。
- 改配置走 文件 頁(書籤可快速到
/etc);寫系統目錄時按提示二次確認。 - 排障用 日誌 頁按單元過濾並實時跟隨;補丁管理用 軟件包 頁刷新索引後單包或全部升級。
- 用 ⌘K / Ctrl+K 打開命令面板,可快速跳頁、鎖定 root、暫停輪詢或打開常用目錄。
適用場景與注意¶
適合:已在用 DSH Web 隧道管理本機或開發機、希望少開終端即可完成 systemd、日誌、apt 與基礎網絡排查的開發者。
注意:
- 分類爲客戶端插件,能力綁定 dsh web 與 Host 路由,不是獨立守護進程。
- 依賴 systemd、journalctl、apt 及 README 中列出的命令行工具環境;網絡與指標來自
/proc採樣及ip -j、ss等解析。 - 修改 Host 源碼後必須重啓 dsh;生產使用前建議跑通
node test/run.mjs。 - 社區目錄星標等元數據以站點爲準;功能描述以 GitHub README 爲準。
結尾¶
dsh-server-panel 把 DSH WebUI 收成一枚本機運維控制台:資源總覽、systemd 與實時日誌、帶 sudo 閘門的文件與 apt、網絡快照,且複用 DSH 已有認證與主題。若你已在隧道里用 dsh web,可按 README 的 bundle 安裝方式接入,並嚴格遵守 root 解鎖與 localhost 暴露面的安全說明。