dsh-dockerfile-lint:DSH 下的 Dockerfile 静态启发式检查

前言

在 DSH 里让智能体改 Dockerfile 时,常见问题是:基础镜像仍用 latest、默认 root、远程拉脚本或 ADD 外链、把密钥写进 ARG/ENV,以及缺少 .dockerignore。这些问题不一定会在构建阶段立刻暴露,但会抬高运维与安全成本。完整镜像扫描或构建流水线往往更重;若只需要在提交前或对话里快速扫一遍 Dockerfile 文本,静态规则检查更合适。下面介绍社区插件 dsh-dockerfile-lint(维护者 lengrufeng2008,目录分类 admin-security),它面向 DeepSeek Harness,用一组固定启发式规则做静态检查,不启动 Docker、不读镜像层。

这是什么

dsh-dockerfile-lint 是一个体量较小的独立静态检查器(MIT 许可证,当前版本 v0.1.0)。仓库地址:https://github.com/lengrufeng2008/dsh-dockerfile-lint。社区目录页:https://www.skillhub.cn/plugins/lengrufeng2008/dsh-dockerfile-lint。SkillHub 上的 Plugin 广场与 DeepSeek / 幻方无官方从属关系,DSH 生态本身是「一切皆插件」的思路,安装来源以目录页与仓库 README 为准。

插件定位是「Fast static Dockerfile heuristics」,覆盖 README 中列出的方向:基础镜像 tag、root 用户、sudo、远程 shell、apt 使用习惯、远程 ADD、类似密钥的 build args、缺失 .dockerignore 等(与 package.json 描述一致)。它解决的是「在改完 Dockerfile 后立刻得到可读告警」,而不是替代安全审计或镜像扫描。

核心功能

检查在本地解析 Dockerfile 文本完成,规则集 deliberately 较小。README 与 package.json 中可核对的能力包括:

  • 基础镜像 tag 相关启发式(例如避免不可预期的浮动 tag 习惯)。
  • 以 root 运行、sudo 等与权限相关的写法。
  • 远程 shell、远程 ADD 等从网络拉取内容的指令模式。
  • apt 使用卫生(缓存、清理等常见最佳实践方向)。
  • 疑似密钥的 build arguments / 环境变量写法。
  • 项目缺少 .dockerignore 时的提示。

输出可以是面向人类的终端结果,也可以是 JSON,便于在脚本或智能体流程里消费。插件在 DSH 侧通过工具名 dockerfile_lint 暴露能力(见下文用法)。

安装与启用

运行环境要求 Node.js >= 20(见仓库 package.json 的 engines 字段)。

在 DSH 中安装

SkillHub 目录页提供的做法是:向 DeepSeek Harness 发送安装请求,由 Harness 读取后端安装计划后执行。可在目录页复制安装提示词,大意如下(以目录页原文为准):

请安装 DSH 插件 lengrufeng2008/dsh-dockerfile-lint。先读取..

安装前应自行浏览 GitHub 仓库源码与 MIT 许可证;插件以当前 DSH 进程权限运行,只安装你信任的来源。

独立 CLI(不经过 DSH 对话)

仓库自带可执行入口,适合本地或 CI 里直接跑(无需 git clone 以外的假设:你需要已有该 npm 包或解压后的源码树):

node bin/dsh-dockerfile-lint.mjs Dockerfile
node bin/dsh-dockerfile-lint.mjs Dockerfile --json

典型用法

命令行

对单个 Dockerfile 路径执行检查;加 --json 时输出结构化结果,便于后续解析。

node bin/dsh-dockerfile-lint.mjs Dockerfile
node bin/dsh-dockerfile-lint.mjs Dockerfile --json

在 DSH 对话中

README 说明:

Use dockerfile_lint with the Dockerfile path.

即让智能体调用 dockerfile_lint,并传入 Dockerfile 路径。经过上面的步骤安装插件后,在编写或审查容器镜像定义时,可把该工具作为对话内的一步静态检查。

开发与自测

维护者在仓库中使用 Node 内置测试运行器:

npm test

对应脚本为 node --test test/*.test.mjs。

适用场景与注意

适合谁

  • 在 DSH 里频繁让模型生成或修改 Dockerfile 的开发者,希望在合并或构建前多一层轻量告警。
  • 需要在流水线或本地脚本里对 Dockerfile 做快速静态扫视、且能接受启发式误报/漏报的团队。

务必知道的限制

README 的 Limits 写得很明确,正文应一并遵守:

  • 仅有静态启发式,不是安全审计、镜像扫描或构建测试。
  • 规则集小,可能出现 false positive / false negative。
  • 不运行 Docker,也不检查镜像层。

因此:告警应作为改 Dockerfile 的参考,不能当作「已通过安全认证」的结论。分类在目录上为 admin-security,指的是检查主题偏向管理与安全习惯,而非全面合规扫描。

权限与信任

与所有 DSH 插件一样,启用前请阅读 plugin/ 与 src/ 下的实现;安装与调用发生在本机 DSH 环境中,权限等同于当前 Harness 进程。

结尾

dsh-dockerfile-lint 把 Dockerfile 上常见风险写法收成一小组静态规则,在 DSH 里用 dockerfile_lint、在仓库外可用 bin/dsh-dockerfile-lint.mjs,适合作为改镜像定义时的第一道轻量检查。需要安装说明与版本信息时,见 SkillHub 目录页 lengrufeng2008/dsh-dockerfile-lint 与 GitHub 仓库 dsh-dockerfile-lint。

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

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

小夜