dsh-docker: 本地 Docker 容器與 Compose 工具插件

在 DeepSeek Harness 的生態中,智能體需要與本地 Docker 環境交互時,往往缺乏直接的工具支持。手動編寫腳本或通過外部調用效率低下。dsh-docker 插件通過封裝本地 Docker CLI,讓智能體能夠直接列出容器、查看日誌、管理鏡像以及啓動 Compose 項目。

這是什麼

dsh-docker 是一個 DeepSeek Harness 插件,提供 Docker 容器、鏡像、日誌和 Compose 工具,供智能體通過本地 Docker CLI 使用。

該插件由 DevViking-Persike 維護,開源協議爲 MIT。它不需要在安裝時啓動額外的守護進程,每次調用都會探測 Docker 引擎的可達性,因此即使機器上沒有 Docker,插件也不會在加載時失敗,而是報告不可達的狀態。

核心功能

插件提供了以下工具:

  • docker_ps: 列出容器。默認只顯示運行中的容器。通過 all: true 可以包含已停止的容器,通過 project 參數可以過濾特定的 Compose 項目。
  • docker_images: 列出本地鏡像及其標籤和大小。
  • docker_logs: 讀取容器最近的輸出。插件會保留最新的文本,並在舊條目被截斷時報告。空結果會被顯式告知,避免模型將沉默誤讀爲失敗。
  • docker_compose_up: 啓動 Compose 項目(後臺模式並等待容器就緒)。此功能默認關閉,需要配置啓用。
  • docker_compose_down: 停止並移除 Compose 項目的容器。

安裝與啓用

通過官方命令安裝:

dsh plugin --profile web add github:DevViking-Persike/dsh-docker

安裝完成後需要重啓 dsh。只讀工具(ps、images、logs)在重啓後即可使用。如需使用 Compose 生命週期工具,需在配置中啓用。

配置與用法

Compose 工具啓用

在 DSH 的配置文件中,設置 compose: true 以激活 Compose 啓動和停止工具:

- id: dsh-docker
  name: 'dsh-docker'
  config:
    compose: true

配置參數

插件的所有配置項均爲可選。常用參數包括:

字段 默認值 說明
cli docker 執行 Docker 的可執行文件名或絕對路徑。
projectRoot 進程當前工作目錄 調用的工作目錄,也是 Compose 路徑解析的根目錄。
compose false 註冊 Compose 生命週期工具。
inspectTimeoutMs 30000 單次只讀操作(ps、images、logs)的超時時間。
composeTimeoutMs 600000 單次 Compose 調用的超時時間(用於拉取鏡像和等待健康檢查)。
maxOutputBytes 2000000 單次調用的輸出收集上限。
maxLogChars 40000 docker_logs 輸出的字符上限。
defaultLogTail 200 未指定 tail 參數時讀取的尾部行數。
graceMs 5000 傳遞給子進程的終止寬限期。

安全與模型體驗

  • 參數處理: 參數作爲固定 argv 傳遞給可執行文件,不經過 shell 解釋,因此容器名稱不會變成 Shell 片段或標誌。-- 終止符用於確保容器名如 --follow 不會被誤解析。
  • 模型體驗: 插件不會將原始 CLI 輸出直接餵給模型,而是將狀態整理爲單行格式(狀態、狀態、鏡像、項目/服務、端口)。Compose 結果優先顯示 settled project state,後端 CLI 輸出僅在診斷時閱讀。

注意事項與限制

安全性

  • 插件不支持 docker exec、鏡像構建和註冊表操作,這些操作會顯著擴大安全風險範圍。
  • docker_compose_down 不支持服務過濾器,它會移除整個項目。

功能限制

  • 併發不安全: Compose 生命週期工具標記爲併發不安全,同一項目上併發調用會導致競態條件。
  • 鏡像大小解析: 鏡像大小從 CLI 顯示字符串解析(如 1.09GB),因爲 docker images --format json 不提供機器可讀的大小,無法解析的值將顯示爲 0。
  • 狀態檢查: Compose 生命週期調用後,需要執行額外的 docker ps 來讀取項目 settled 狀態,因爲 CLI 輸出本身不報告 settled 容器。

生態說明

DeepSeek Harness 的理念是「一切皆插件」。本插件所在的社區目錄(catalog_url)與 DeepSeek 或幻方沒有官方從屬關係。使用前請檢查源碼與許可證。

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

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

小夜