dsh-pnpm-build-control:統一管理 DSH 環境下的 pnpm 構建審批

DeepSeek Harness (DSH) 理念是“一切皆插件”,但在使用 pnpm 作爲包管理器時,開發者常遇到安裝或更新插件時構建腳本被攔截的問題(如 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED)。頻繁測試最新版本或安裝新功能時,維護 allowBuilds 允許列表非常繁瑣。dsh-pnpm-build-control 插件提供了在 DSH 界面中統一控制構建審批的開關,解決了這一痛點。

插件定位

這是一個 DSH 管理類插件,用於在添加插件彈窗中統一開關所有配置的 pnpm 構建腳本審批。它支持首次關閉時的風險確認,並提供命令行接口。

  • 所有者:Han-1413141
  • 分類:admin-security
  • 許可證:MIT License

核心功能

  1. 界面開關:在插件添加彈窗中增加“構建腳本審批”開關。
  2. 審批控制:
    • 開啓:所有 DSH 配置按各自原有的 allowBuilds 規則審批構建腳本。
    • 關閉:所有 DSH 配置允許全部依賴執行構建腳本,包括 GitHub 插件、新版本和間接依賴。
  3. 底層修改:修改各配置目錄下的 pnpm-workspace.yaml 文件,設置 dangerouslyAllowAllBuilds 字段。
  4. 狀態查看:查看各配置的實際狀態。
  5. 風險確認:首次關閉審批時,會顯示風險說明彈窗,需閱讀並確認。
  6. 命令行支持:提供 status、off、on 命令。
  7. 兼容性修復:修復同一 Git 地址重複安裝導致的 ambiguous-install 錯誤。

安裝與啓用

需要 Node.js >= 22.19。在 DSH 界面或命令行中執行以下命令安裝:

dsh plugin --profile desktop add github:Han-1413141/dsh-pnpm-build-control

若需在 web 配置中顯示開關,將命令中的 desktop 換爲 web。安裝後需完整退出並重新打開 DSH 以加載插件。

典型用法

場景一:頻繁測試最新版本

開發者反覆安裝最新測試版時,關閉審批可避免因版本更新導致構建被攔截,無需手動維護新版本的允許條目。

場景二:安裝新功能

用戶安裝新版本功能時,關閉審批以允許執行必要的安裝和構建腳本。

場景三:修復 Git 安裝錯誤

輸入同一 Git 地址重複安裝,利用插件修復的兼容性處理,獲取最新提交。

配置與風險

  • 作用範圍:當前 DSH_HOME 下的全部 DSH 配置。
  • 文件修改:關閉審批會修改各配置目錄下的 pnpm-workspace.yaml。
  • 風險說明:關閉審批後,所有插件及其依賴的構建腳本將以 DSH 當前的用戶權限運行,具備讀寫文件、訪問網絡的能力。惡意或被篡改的依賴可能造成數據泄露或執行惡意代碼。
  • 首次關閉:必須點擊“我已瞭解風險,關閉審批”按鈕,否則設置不會生效。

命令行使用

CLI 需要使用絕對路徑調用 lib/cli.js。以下爲 Windows PowerShell 示例:

# 查看所有 DSH 配置的構建審批狀態
node "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-pnpm-build-control\lib\cli.js" status

# 關閉審批(首次執行需帶 --accept-risk)
node "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-pnpm-build-control\lib\cli.js" off --accept-risk

# 重新開啓審批
node "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-pnpm-build-control\lib\cli.js" on

注意事項

  • 卸載不撤銷設置:卸載插件不會自動撤銷已保存的 pnpm 設置。如需恢復審批,需先開啓審批再卸載。
  • Node.js 版本:需確保系統安裝了 Node.js >= 22.19。
  • 配置備份:插件在修改前會自動保存原始 YAML 內容到 DSH_HOME/pnpm-build-control/backups/。
  • 重啓生效:升級插件後,必須完整退出 DSH(包括托盤駐留)後重新打開,才能加載新模塊。

生態背景

DSH 是一個基於插件架構的開發環境,社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

  • GitHub 倉庫:https://github.com/Han-1413141/dsh-pnpm-build-control
  • 社區目錄:https://www.skillhub.cn/plugins/Han-1413141/dsh-pnpm-build-control
羽毛球分组比赛记分
小程序二维码

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

小夜