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_logstail 参数被限制在 1 到 2000 行之间。

适用场景与注意

这个插件适合本地已经安装 Docker、并且希望让 DSH 智能体流程直接查看容器状态的开发者或运维场景。

常见用法包括:

  • docker_ps 快速确认哪些容器在运行。
  • docker_images 检查本地镜像和悬空镜像。
  • docker_logs 查看某个容器最近 200 行日志。
  • docker_inspect 获取容器详情。
  • docker_manage 执行 restartstop 等生命周期操作。

需要注意边界:

  • 插件会按当前 DSH 进程权限执行 Docker 命令,安装前应检查源码与许可证。
  • docker_exec 会在容器内执行命令,默认需要审批。
  • docker_managerm 是破坏性操作,执行前需要确认目标容器。
  • docker_exec 在 headless 且无审批通道时会被拒绝,这是预期行为。

相关链接

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

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

小夜