前言¶
在 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。