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