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
羽毛球分组比赛记分
小程序二维码

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

小夜