前言¶
在 DeepSeek Harness(DSH)裏做 C/C++ 或 CMake 類項目時,本地環境未必與目標機一致:內核版本、依賴庫、算力或公司內網裏的專用構建機,往往纔是「真」編譯環境。若每次都要自己開終端、scp 源碼、逐條執行 configure / build / test,再回到聊天窗口貼日誌,上下文很容易被拆散。
下面介紹社區工作流插件 dsh-build-servers(倉庫 ji-tz/dsh-build-servers):在 Web UI 與當前會話中綁定一臺遠程構建機,上傳本地源碼,按階段跑 configure → build → install → test,查看實時狀態與輸出,並可在同一會話裏打開 SSH 終端;智能體還能通過同名工具驅動同一臺機器。README 明確說明:它不是 CI 系統,而是面向「一次只橋接一臺機器」的小型、可檢視橋樑;在 Windows 上對 RHEL 8 構建主機做過測試(當前 bundle 狀態 v1.2.0)。
這是什麼¶
dsh-build-servers 由維護者 ji-tz 發佈,在 SkillHub 插件目錄 中歸類爲工作流。package.json 標明版本 1.2.0、許可證 MIT,面向 DSH 0.2.x bundle API(engines.dsh: >=0.2.0 <0.3.0)。
瀏覽器不直接連 SSH:頁面通過同源 Host 路由 /build-servers 訪問,由 Host 進程維護服務器列表、探測緩存、流水線任務與終端會話;遠程側只需 OpenSSH 與 POSIX shell。
核心功能¶
構建機面板與認證¶
左側 Build servers 面板只登記網絡信息:顯示名、SSH 目標(別名 / user@host / IP)、端口、認證方式、啓用/禁用,以及在線 OS/IP 探測;不在服務器條目裏保存路徑或命令。
- 密鑰:默認走 ssh-agent 與本地 SSH 配置,或爲每臺機器從
~/.ssh選一把密鑰(或手寫路徑),以ssh -i且IdentitiesOnly=yes連接。 - 密碼:通過短生命週期
SSH_ASKPASS輔助進程把密碼交給 OpenSSH,避免出現在命令行;密碼以明文保存在本地配置文件中,且不會回傳給瀏覽器。
按會話綁定與編譯設置¶
每個對話綁定一臺服務器。新會話默認 Local;在輸入區工具欄權限控件旁的服務器選擇器裏切換。工作區會記錄上次用過的服務器,但新會話不會自動繼承。
Compile settings(編譯設置)按會話保存:本地源碼目錄、同步路徑(遠端解壓位置)、構建路徑(默認 <sync path>/build)、上傳排除規則,以及各階段命令。某階段命令爲空時,默認依次爲 cmake ..、cmake --build . -j$(nproc)、cmake --install .、ctest。
上傳與流水線¶
流程爲:本地 tar 經管道傳入 ssh … tar -x,再按配置用 bash -lc 執行各階段;任一階段失敗即停止,也可中途停止。界面展示階段狀態、退出碼、耗時與輸出。
綁定服務器後,輸入區下方出現狀態芯片(本地會話無芯片):綠燈加 Ready / Upload / Configure / Build / Install / Test / Reconnecting / Disconnected;點擊可查看負載、內存、磁盤、運行時間及狀態條,並從此處或選擇器菜單進入 Compile settings。
SSH 終端與智能體工具¶
每臺服務器維護一個持久的 ssh -tt … bash -l 會話,供 UI、終端標籤頁與智能體共用;行模式終端(非全屏 TUI)。右側引導區提供 New remote terminal 卡片,可在標籤頁打開當前會話的構建機 shell。
智能體工具包括:
build_server:status/run/pipeline/stopremote_terminal:list/open/send/read/close
與 UI 使用同一會話綁定與同一條 SSH 通路。
安裝與啓用¶
依賴:已安裝帶 Web UI 與 plugin_manager 的 DSH;本機 OpenSSH 客戶端(密鑰模式建議 8.4+ 以支持 SSH_ASKPASS_REQUIRE);本機與構建機均需 tar;構建機需 POSIX shell(探測會 opportunistically 使用 /proc、hostname、sed、awk、find、df、git 等)。
從 npm 安裝最新穩定版:
plugin_manager install_bundle
target: dsh-build-servers@latest
從本地 checkout:
plugin_manager install_bundle
target: D:\path\to\dsh-build-servers
或指定 Git 提交:
plugin_manager install_bundle
target: git+https://github.com/ji-tz/dsh-build-servers.git#<commit>
若包位於大倉庫子目錄,在 Git 地址後追加 &path:/build-servers。
安裝後插件即啓用。若側欄或輸入區未出現新入口,刷新頁面一次(Ctrl+R);客戶端以 bundle 形式提供。
也可在 Settings → Plugins → Discover 中加入市場索引(需啓用實驗性 plugin-market bundle):
https://raw.githubusercontent.com/ji-tz/dsh-build-servers/main/market/index.json
索引指向 npm registry 版本。
安裝前請自行審閱 GitHub 倉庫 源碼與 MIT 許可證。插件在當前 DSH Host 進程權限下執行 SSH、讀寫本地 ~/.dsh(Windows 爲 %USERPROFILE%\.dsh)配置;這並非沙箱化的第三方市場應用,能力等同於你本機用戶能做的事。
典型用法¶
- 打開左側 Build servers,添加服務器:名稱、SSH 目標、可選端口、密鑰或密碼認證。
- 在新會話中,於輸入區選擇器將 Local 切換爲目標構建機;通過狀態芯片或選擇器菜單打開 Compile settings,填寫本地源碼路徑(默認當前工作區)、同步路徑、構建路徑、排除規則與階段命令。
- 綁定後觀察狀態芯片階段變化;需要時打開遠程終端或在對話中讓智能體調用
build_server/remote_terminal工具。
遠端僅會收到上傳的源碼以及你在各階段配置的命令所產生的改動;服務器網絡條目本身不存儲命令。
本地存儲與安全要點¶
| 文件 | 內容 |
|---|---|
build-servers.json |
網絡條目:id、name、target、port、enabled、auth、密鑰路徑;密碼模式下含明文密碼 |
build-server-bindings.json |
按會話綁定與按工作區上次使用的服務器 |
build-server-settings.json |
按會話的路徑、排除規則與階段命令 |
GET /servers 對密碼僅返回 hasPassword,不返回明文。編輯時密碼留空表示保留原密碼;改回密鑰認證會刪除已存密碼。
密鑰認證使用 BatchMode=yes,需已知主機密鑰;密碼模式對新主機使用 StrictHostKeyChecking=accept-new,主機密鑰變更仍會被拒絕。Host 爲瀏覽器列出 ~/.ssh 下候選密鑰文件名與類型,不把密鑰材料送到瀏覽器。
適用場景與注意¶
適合:需要在對話上下文中完成「選機 → 傳源碼 → 跑 CMake 風格流水線 → 看日誌 / 開 shell」的開發者;希望智能體與 UI 共用同一遠程環境的 DSH 用戶。
不適合:替代 Jenkins、GitHub Actions 等多機 CI;README 強調一次只橋接一臺機器。
SkillHub 等社區目錄與 DeepSeek / 幻方無官方從屬關係;插件列表反映社區貢獻,安裝與信任邊界由你自己把握。
結尾¶
dsh-build-servers 把遠程構建機收進 DSH 會話:綁定、上傳、分階段編譯測試、狀態可視化和 SSH 終端在同一套 Host 路由與智能體工具下完成,減少在聊天與終端之間來回切換。