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 或幻方没有官方从属关系。使用前请检查源码与许可证。

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

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

小夜