DSH 採取插件化架構,旨在通過擴展提升 Agent 的操作能力。dsh-stool-plugin 是一個將 stool 運維 CLI 的全部能力註冊爲 DSH 工具的插件。它讓 Agent 能夠直接調用服務器管理、日誌查詢、數據庫操作等能力,無需人工介入即可執行運維任務。
該插件由 fufengyuan 維護,歸類爲工作流類工具,遵循 MIT 許可證。
核心功能¶
插件將 stool v7.x 的命令面映射爲 12 個 DSH 工具,覆蓋以下場景:
- 服務器管理:支持列表、測試、批量執行、健康檢查、診斷、文件傳輸(上傳/下載)、目錄操作及 Java 進程管理。
- 數據庫與 Redis:支持數據庫列表、查詢、結構查看、數據操作,以及 Redis 命令執行。
- 日誌查詢:支持日誌列表、搜索、實時查看、上下文讀取及歷史翻頁。
- CI/CD:支持部署、狀態查看、回滾、歷史記錄、構建日誌及工具檢測。
- 其他能力:包括雙因子認證碼管理、Git 倉庫操作、待辦事項與筆記管理、項目管理、Nginx 配置預設與部署,以及記賬統計、週報生成和操作審計。
安裝與啓用¶
在宿主機上安裝 stool CLI 是使用該插件的前提。安裝命令如下:
dsh plugin --profile web add github:fufengyuan/dsh-stool-plugin
安裝完成後,需要重啓 DSH Web 服務以加載插件:
launchctl kickstart -k gui/501/com.duormi.dsh-web
工具參數與使用注意¶
工具層做了參數歸一化,但在調用底層 stool CLI 時需注意特定參數名與限制:
stool_todo¶
- add:截止日期使用
-d/--due,標籤使用-g/--tag。 - edit:文本修改使用
-t/--text,標籤必須使用-g/--tag(注意與 add 的區別)。
stool_log¶
- 翻歷史:必須指定
date或days參數,兩者互斥。 - search/tail:行數控制使用
-l參數。上下文查看請使用context動作並配合行號。
stool_db redis¶
- 不接受
--json參數。 - 子命令必須白名單化,早期版本直接拆分命令可能導致報錯。
stool_server upload¶
- 需提供三個位置參數:
<ID>(服務器 ID)、<LOCAL>(本地路徑)、<REMOTE>(遠程目標路徑)。
java-restart¶
- 僅執行停止操作,不自動拉起進程。
設置頁檢測機制¶
在 DSH 的設置頁面中,Stool 運維工具箱卡片會自動檢測本機 stool 的安裝狀態:
* 檢測方式:Host 側通過接口 GET /stool/status 獲取結果,該接口僅響應同源迴環請求。
* 結果緩存:檢測結果緩存 30 秒,可通過 ?refresh=1 強制重新探測。
* 狀態反饋:已安裝顯示路徑與版本號;未安裝顯示下載引導;接口不可用時標記爲「狀態未知」。
依賴與構建¶
該插件依賴以下 Peer Dependencies:
@deepseek-ai/cordis(^4.0.1)@deepseek-ai/dsh-tools(^0.1.0-rc.6)stoolCLI(需在宿主機上安裝,插件會掃描 PATH 及常見目錄如/usr/local/bin)
從源碼構建時,需確保 @deepseek-ai/dsh-tools 存在:
cd ~/.dsh/plugin-src/dsh-stool-plugin
npm install
# 或手動建立符號鏈接
ln -sf /path/to/dsh-tools node_modules/@deepseek-ai/dsh-tools
總結¶
dsh-stool-plugin 通過適配器模式將成熟的 stool CLI 能力引入 DSH 生態,大幅擴展了 Agent 在服務器運維、數據庫操作及流程管理上的自動化能力。使用時需注意各子命令的特殊參數要求與白名單限制。