dsh-docker:DSH 的 Docker 容器管理插件

前言

DSH 的插件模型會把本地能力拆成可安裝、可調用的工具。對智能體流程來說,常見需求包括查詢容器、查看日誌、執行容器內命令、重啓容器或清理容器。如果直接讓 agent 拼 shell 命令,容易引入參數注入、誤操作和審批缺失。

下面介紹 dsh-docker:一個 DSH 容器管理插件,走官方 subprocess 服務跑 Docker CLI,用 argv 數組避免 shell 注入,並對 docker_exec 保留默認審批門。

倉庫爲 STARDUSTLC666/dsh-docker,npm 包名爲 @stardustlc/dsh-docker,許可證爲 MIT。

這是什麼

一句話定位:dsh-docker 是 DSH 的容器管理插件,提供六個 Docker 工具,覆蓋容器列表、鏡像列表、日誌查看、容器詳情、容器內執行和生命週期管理。

它主要解決“讓 agent 安全地查看和操作本地 Docker 對象”的問題。

運行時要求如下:

  • Node 版本:>=22
  • 本機裝有 Docker,且 docker version 能出結果
  • 已驗證於 @deepseek-ai/dsh@0.1.2-alpha.2(2026-08-31)
  • 零運行時依賴

如果 Docker 可執行文件不在 PATH 上,可以用 dockerPath 指定。

核心功能

dsh-docker 暴露六個工具:

工具 作用 說明
docker_ps 列出容器 可過濾容器信息
docker_images 列出本地鏡像 可查看懸空鏡像
docker_logs 查看日誌尾部 行數有鉗制,可短時 follow
docker_inspect 查看容器詳情 用於獲取容器狀態與詳情
docker_exec 在容器內執行命令 默認審批門,並有容器名校驗
docker_manage 容器生命週期管理 支持 start / stop / restart / rm

所有 Docker CLI 調用都走官方 subprocess 服務,並使用 argv 數組傳參,避免 shell 注入。

安裝與啓用

先確認本機 Docker 可用:

docker version

如果能輸出結果,說明本機已有可用的 Docker CLI。

接着安裝插件到 web profile:

dsh plugin --profile web add @stardustlc/dsh-docker

如果 docker 可執行文件不在 PATH 上,可以在插件配置中指定 dockerPath。例如:

dockerPath: <docker-executable>

這裏的 <docker-executable> 應替換爲當前環境中的 Docker CLI 路徑。

卸載後需要重啓 Web 服務。如需徹底清理,可再手動刪除自己 profile 中 cordis.patch.yml 覆蓋的插件行。

典型用法

下面是六個工具的基本調用示例:

docker_ps {}
docker_ps { all: true, name: web }
docker_images { dangling: true }
docker_logs { container: web, tail: 200 }
docker_inspect { container: web }
docker_exec { container: web, command: 'df -h' }
docker_manage { container: web, action: restart }

幾個關鍵點:

  • docker_exec 默認啓用審批門。
  • 在 headless 環境且沒有審批通道時,docker_exec 會拒絕執行。
  • 容器名校驗只允許 [A-Za-z0-9][A-Za-z0-9_.:-]*。
  • 單次操作超時被鉗制在 5 秒到 10 分鐘之間。
  • follow 模式額外限制爲 30 秒。
  • docker_logs 的 tail 參數被限制在 1 到 2000 行之間。

適用場景與注意

這個插件適合本地已經安裝 Docker、並且希望讓 DSH 智能體流程直接查看容器狀態的開發者或運維場景。

常見用法包括:

  • 用 docker_ps 快速確認哪些容器在運行。
  • 用 docker_images 檢查本地鏡像和懸空鏡像。
  • 用 docker_logs 查看某個容器最近 200 行日誌。
  • 用 docker_inspect 獲取容器詳情。
  • 用 docker_manage 執行 restart 或 stop 等生命週期操作。

需要注意邊界:

  • 插件會按當前 DSH 進程權限執行 Docker 命令,安裝前應檢查源碼與許可證。
  • docker_exec 會在容器內執行命令,默認需要審批。
  • docker_manage 的 rm 是破壞性操作,執行前需要確認目標容器。
  • docker_exec 在 headless 且無審批通道時會被拒絕,這是預期行爲。

相關鏈接

  • 社區目錄頁:https://www.skillhub.cn/plugins/STARDUSTLC666/dsh-docker
  • GitHub:https://github.com/STARDUSTLC666/dsh-docker
羽毛球分组比赛记分
小程序二维码

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

小夜