在 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 或幻方沒有官方從屬關係。使用前請檢查源碼與許可證。