ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Hermes桌面端全自动安装:脚本实现、验证与故障排查

Hermes桌面端全自动安装:脚本实现、验证与故障排查 把 Hermes 这类提供命令行和桌面端能力的 AI Agent 工具装到本地机器上看起来是一件很轻的事从官网或 GitHub Releases 下载安装包解压运行完事。实际多装几台机器就会发现手动安装真正花时间的不是最后那一步而是安装前的依赖检查、版本选择、目录约定、网络来源、初始化配置和安装后的验证。本文围绕 Hermes“全自动”安装桌面端这条主线整理一套可以从零开始执行到验证通过的安装流程包含 Bash 和 PowerShell 两套安装脚本、初始化配置示例、验证命令以及几类常见的安装失败场景。适合需要把 Hermes 装到个人开发机、测试虚拟机或者团队内部机器上的开发者阅读学完后可以直接改造成自己的安装脚本或内部发布清单。1. 为什么要把 Hermes 桌面端安装改成全自动脚本1.1 先搞清楚 Hermes 桌面端到底装的是什么Hermes 在本文语境中指的是一类以 Agent 模式运行、能通过命令行或桌面窗口完成编码任务的开发工具。它的桌面端形态通常不是一个孤立的 GUI 程序而是由一个命令行核心、一个桌面客户端进程、若干模型服务地址配置和本地工作区目录共同组成。正因为这个结构安装 Hermes 桌面端的流程和安装普通聊天软件不一样。普通软件装完只有一个 App点开就能用Hermes 则要同时保证 CLI 入口、桌面端进程、模型 API 配置、工作区权限和本地日志目录都对得上否则容易出现“桌面端装好了但连不上模型”“命令行能找到但 GUI 打不开”这类割裂问题。1.2 手动安装中真正浪费时间的环节手动安装 Hermes 桌面端时最消耗时间的并不是下载安装包而是下面这些环节不断确认系统是否具备 Git、Node.js、npm 这些基础依赖且版本是否满足要求。在不同操作系统上使用不同的解压方式Windows 还要考虑压缩包内的目录层级。安装完成后要手工编辑配置文件指定模型服务地址、数据目录和日志级别。安装过程中一旦下载中断残留半截文件会让程序启动失败排查起来非常费劲。多台机器安装时每台机器都可能因为环境变量、PATH 顺序或目录权限不同出现不一样的结果。这些环节重复出现时手动操作的价值就非常低。把安装步骤固化成脚本可以省掉每一次重复的确认过程也能把“经验”变成团队可以复用和审查的内容。1.3 全自动安装到底自动化了哪些操作这里说的“全自动”不是指写一个脚本一直点下一步而是指脚本要覆盖以下完整链路检查操作系统类型和 CPU 架构。检查 Git、Node.js、npm 等基础依赖是否安装。判断版本是否满足 Hermes 要求不满足时直接中止并给出提示。从指定下载源获取 Hermes 安装包。对安装包做基础校验避免下载半截后直接解压。将文件解压到约定目录并把可执行文件加入 PATH。写入本地默认配置包括数据目录、模型服务地址、日志级别。执行单元验证确认hermes命令可用、桌面端进程能启动。覆盖完整链路之后安装脚本才能真正做到“一条命令装完装完能验证”而不是把下载和解压合并到一个脚本里就号称自动安装。2. 安装前先确认运行环境桌面端比命令行多了一层系统依赖2.1 系统层面的检查清单Hermes 桌面端在 Windows、macOS、Linux 上都能安装但不同系统的基础环境检查方式差别不小。在安装脚本执行前可以先用手工方式跑一遍下面的检查清单确认当前机器环境是否适合安装。检查项命令预期结果说明操作系统uname -smacOS/LinuxsysteminfoWindows明确知道是 Windows、Darwin 还是 Linux不同系统使用的安装包格式不同CPU 架构uname -m/echo $PROCESSOR_ARCHITECTUREx86_64/amd64/arm64安装包和可执行文件必须匹配架构Gitgit --version能输出版本号Agent 类工具通常需要依赖 Git 管理代码上下文Node.jsnode -v版本号不低于 18新版 Hermes 客户端通常要求较高版本 Nodenpmnpm -v能输出版本号用于安装语言服务或扩展组件磁盘空间Windows 检查 C 盘Linux 使用df -h预留至少 2GB安装包、缓存和日志都会占用空间网络连通性curl -I下载源地址返回 HTTP 200 或 302下载源不可达时安装必然失败这里的版本号是示例阈值真正落地时要结合你使用的 Hermes 版本确认。不要假设所有机器都满足条件脚本里的第一步必须是环境探测。2.2 Node.js 和包管理器版本匹配很多 Hermes 类工具的桌面端和 CLI 都由 Node.js 运行时承载因此 Node.js 版本直接影响安装成败。版本过低时桌面端可能在启动阶段直接报语法错误版本过高时某些原生依赖可能需要重新编译。实际项目中推荐的做法是在 Node.js 版本管理工具中固定使用的版本例如nvm下执行nvm install 20后再安装 Hermes。不要直接使用系统默认的老版本 Node尤其是 macOS 自带的 Node 通常不是为编译工具链准备的。在安装脚本里读取node -v并解析主版本号对不满足条件的机器直接退出而不是继续安装到一半才报错。核心原因是自动安装脚本的价值不是“把错误堆到后面”而是在一开头就让机器知道自己不满足条件节省用户等待时间。2.3 网络、下载源和镜像对安装成功率的影响Hermes 安装包体积通常从几十 MB 到几百 MB 不等。下载过程中一旦网络抖动或磁盘缓存写满很容易产生不完整的压缩包。为了避免这种问题安装脚本应该做三件事允许通过环境变量指定下载地址例如HERMES_DOWNLOAD_BASE_URL这样离线环境或内网镜像可以直接切换来源。下载完成后不立刻解压而是先校验文件大小条件允许时再校验 SHA-256。解压前先删除上一次残留的同名临时目录避免新旧文件混在一起。下载源的选择也会影响稳定性。从 GitHub Releases 下载时受网络影响较大团队内部使用 npm 或对象存储镜像时速度和可重试性都更好。脚本设计上要把“来源”做成一等参数而不是把某个固定地址写死在安装逻辑里。3. 全自动安装脚本核心实现从依赖检查到桌面端落地3.1 用一份 Bash 脚本覆盖 macOS 和 Linux下面这份 Bash 脚本是一个通用骨架覆盖了环境探测、依赖检查、版本判断、下载、校验、解压、PATH 配置和初始化触发。它不绑定具体版本号实际使用时把HERMES_VERSION、下载地址和安装包结构替换成你的目标版本即可。#!/usr/bin/env bash set -euo pipefail HERMES_VERSION${HERMES_VERSION:-0.1.0} HERMES_INSTALL_DIR${HERMES_INSTALL_DIR:-$HOME/.hermes} HERMES_BIN_DIR$HERMES_INSTALL_DIR/bin HERMES_DOWNLOAD_BASE_URL${HERMES_DOWNLOAD_BASE_URL:-https://github.com/example-org/hermes/releases/download} log_info() { echo [INFO] $*; } log_error() { echo [ERROR] $* 2; } os_detect arch_detect case $(uname -s) in Linux) os_detectlinux ;; Darwin) os_detectdarwin ;; *) log_error 当前系统不支持自动安装; exit 1 ;; esac case $(uname -m) in x86_64|amd64) arch_detectamd64 ;; arm64) arch_detectarm64 ;; *) log_error 当前 CPU 架构不支持$(uname -m); exit 1 ;; esac log_info 检测到系统${os_detect}/${arch_detect} # 依赖检查 for cmd in curl git node npm; do if ! command -v $cmd /dev/null 21; then log_error 缺少依赖$cmd 未安装 exit 1 fi done NODE_MAJOR$(node -p process.versions.node.split(.)[0]) if [ $NODE_MAJOR -lt 18 ]; then log_error Node.js 版本过低$(node -v)需要 18 及以上 exit 1 fi # 下载并校验 PKG_NAMEhermes-v${HERMES_VERSION}-${os_detect}-${arch_detect}.tar.gz DOWNLOAD_URL${HERMES_DOWNLOAD_BASE_URL}/v${HERMES_VERSION}/${PKG_NAME} CACHE_DIR${HOME}/.cache/hermes-install mkdir -p $CACHE_DIR $HERMES_INSTALL_DIR CACHE_FILE$CACHE_DIR/$PKG_NAME if [ ! -f $CACHE_FILE ]; then log_info 开始下载 ${DOWNLOAD_URL} curl -fL --retry 3 --retry-delay 2 -o $CACHE_FILE $DOWNLOAD_URL else log_info 使用缓存安装包$CACHE_FILE fi # 解压到临时目录后再移动到正式目录 TMP_DIR$(mktemp -d) tar -xzf $CACHE_FILE -C $TMP_DIR rm -rf ${HERMES_INSTALL_DIR:?}/* shopt -s dotglob mv $TMP_DIR/* $HERMES_INSTALL_DIR/ shopt -u dotglob rm -rf $TMP_DIR # 写入 PATH 配置 SHELL_RC if [ -n ${ZSH_VERSION:-} ]; then SHELL_RC$HOME/.zshrc elif [ -n ${BASH_VERSION:-} ]; then SHELL_RC$HOME/.bashrc fi if [ -n $SHELL_RC ] ! grep -q $HERMES_BIN_DIR $SHELL_RC; then echo export PATH\$HERMES_BIN_DIR:\$PATH\ $SHELL_RC log_info 已写入 PATH$SHELL_RC fi log_info Hermes 安装完成请执行 export PATH\$HERMES_BIN_DIR:\$PATH\ 或重新打开终端后验证这段脚本里最值得关注的是三个设计点set -euo pipefail让脚本在命令失败时立即退出避免后续步骤基于错误状态继续执行。CACHE_FILE的存在让同一台机器重复安装时不需要重新下载大文件。解压时先写入临时目录再覆盖正式目录避免安装过程中 Hermes 被半途状态污染。3.2 Windows PowerShell 安装脚本处理执行策略和压缩包结构Windows 环境和 macOS/Linux 差别很大除了安装路径和压缩包格式不同还要考虑 PowerShell 执行策略。默认情况下Windows 可能禁止运行脚本PowerShell 安装脚本的前两行通常需要先解决这个问题。$ErrorActionPreference Stop $HermesVersion if ($env:HERMES_VERSION) { $env:HERMES_VERSION } else { 0.1.0 } $InstallDir if ($env:HERMES_INSTALL_DIR) { $env:HERMES_INSTALL_DIR } else { Join-Path $HOME .hermes } $BinDir Join-Path $InstallDir bin $DownloadBase if ($env:HERMES_DOWNLOAD_BASE_URL) { $env:HERMES_DOWNLOAD_BASE_URL } else { https://github.com/example-org/hermes/releases/download } $Arch $env:PROCESSOR_ARCHITECTURE $PkgName if ($Arch -eq ARM64) { hermes-v${HermesVersion}-windows-arm64.zip } else { hermes-v${HermesVersion}-windows-amd64.zip } $DownloadUrl ${DownloadBase}/v${HermesVersion}/${PkgName} if (-not (Get-Command git -ErrorAction SilentlyContinue)) { Write-Error Git 未安装请先安装 Git for Windows exit 1 } if (-not (Get-Command node -ErrorAction SilentlyContinue)) { Write-Error Node.js 未安装请先安装 Node.js 18 exit 1 } $NodeMajor [int](node -p process.versions.node.split(.)[0]) if ($NodeMajor -lt 18) { Write-Error Node.js 版本过低$(node -v)需要 18 及以上 exit 1 } $CacheDir Join-Path $env:TEMP hermes-install-cache New-Item -ItemType Directory -Force -Path $CacheDir | Out-Null $CacheFile Join-Path $CacheDir $PkgName if (-not (Test-Path $CacheFile)) { Write-Host 开始下载$DownloadUrl Invoke-WebRequest -Uri $DownloadUrl -OutFile $CacheFile -UseBasicParsing } else { Write-Host 使用缓存安装包$CacheFile } New-Item -ItemType Directory -Force -Path $InstallDir | Out-Null $ExtractTmp Join-Path $env:TEMP hermes-extract-tmp if (Test-Path $ExtractTmp) { Remove-Item -Recurse -Force $ExtractTmp } Expand-Archive -Path $CacheFile -DestinationPath $ExtractTmp -Force Get-ChildItem $ExtractTmp | Remove-Item -Recurse -Force Get-ChildItem $ExtractTmp | Copy-Item -Destination $InstallDir -Recurse -Force Remove-Item -Recurse -Force $ExtractTmp $UserPath [Environment]::GetEnvironmentVariable(Path, User) if ($UserPath -notlike *$BinDir*) { [Environment]::SetEnvironmentVariable(Path, $BinDir;$UserPath, User) Write-Host 已写入用户 PATH$BinDir } Write-Host Hermes 安装完成。请重开终端再运行验证命令。这里有两个 Windows 特有的坑需要注意。一是Expand-Archive在解压大压缩包时速度较慢如果安装包特别大可以换成tar -xf提升稳定性。二是用户 PATH 和系统 PATH 是分开的写入时优先改用户 PATH不要为了安装工具去修改系统级 PATH避免影响同一台机器上的其他用户。3.3 安装脚本中的幂等性、退出码和断点续装安装脚本不是写一次就跑一次而是要能在同一台机器上反复执行。这要求脚本满足三条特性幂等性重复执行时不会因为目录已存在、PATH 已写入就报错。可重试性下载失败或中断后再次执行时能基于缓存继续。明确退出码安装成功返回 0失败返回非 0方便 CI/CD 或团队自检脚本判断结果。幂等性最容易出问题的地方是“覆盖旧版本”。如果安装目录里已经有旧文件直接解压新文件会出现新旧版本混杂。推荐做法和上面脚本一样先解压到临时目录然后清空正式目录再整体移动。这样可以保证每次安装后目录内文件都是同一次解压的产物。退出码方面Bash 使用set -euo pipefail基本能保证失败即退出PowerShell 使用$ErrorActionPreference Stop也能在大部分命令失败时抛错。需要注意的是不要把验证命令排在脚本最后却忽略它的返回值。安装脚本必须以“验证命令成功”作为最终退出状态才不算自欺欺人。4. 桌面端首次初始化模型服务、工作区和第一个任务4.1 通过 CLI 初始化 Hermes 配置桌面端安装完成后不要急着双击图标。先通过 CLI 初始化配置能让后续桌面端进程读到一致的配置内容。这里给出一个通用配置骨架实际字段名和值要以目标版本的实际配置格式为准。{ version: 1, dataDir: ~/.hermes/data, logLevel: info, model: { provider: openai-compatible, endpoint: https://api.example.com/v1, apiKeyEnv: HERMES_API_KEY, model: hermes-agent-default }, workspace: { defaultDir: ~/hermes-workspace }, desktop: { autoStart: false, systemTray: true } }这里的关键设计是不要在配置文件里直接写明文密钥而是通过HERMES_API_KEY这种环境变量注入。桌面端启动时读取当前用户环境变量既方便切换不同服务地址也避免配置目录被同步到网盘时把密钥一起传出去。dataDir和defaultDir这两个路径决定了数据和工作区放在哪里。生产环境建议放到独立磁盘目录不要把桌面端数据默认塞进系统盘否则日志缓存增长后容易占满 C 盘。4.2 桌面端与命令行共享同一套配置Hermes 桌面端大多数情况下不应该维护一套独立配置。命令行工具和桌面端最好共用同一个配置目录这样命令行里创建的会话、导入的密钥、设置的工作区在桌面端打开后能直接看到。检查方法很简单命令行执行hermes config show查看返回的配置目录。打开桌面端设置页比较它读取的配置目录是否一致。如果不一致在安装目录下找到环境配置文件统一HERMES_CONFIG_DIR变量。在脚本自动安装场景中初始化配置这一步不能省略。很多“桌面端打不开”的问题根源并不是程序坏了而是桌面端进程第一次启动时没有读到任何配置直接进入了异常退出分支。4.3 用一门编程语言的小任务做冒烟测试配置完成后不要只看界面。推荐用一个小任务验证整条链路是否真的可用。例如在终端里进入默认工作区mkdir -p ~/hermes-workspace cd ~/hermes-workspace hermes task create 编写一个 Python 函数读取当前目录下所有 .txt 文件按文件名排序后打印每个文件的行数这条命令能验证以下几项hermes命令是否在 PATH 中。配置中的模型服务地址是否可连接。Agent 是否能在当前工作区创建任务。桌面端是否能同步显示这个任务。如果命令行能成功创建任务但桌面端看不到优先检查dataDir是否一致而不是怀疑桌面端程序损坏。如果命令行本身就报连接失败则需要回到模型配置检查地址、密钥和网络连通性。5. 如何验证“自动安装”确实成功5.1 命令行层版本号、可执行文件位置和帮助信息安装脚本执行完毕后最基础的验证命令是command -v hermes hermes --version hermes --help第一条命令确认可执行文件是否在 PATH 中。如果输出为空说明 PATH 没有生效可能原因是终端没有重启或者安装脚本写入了错误的 shell 配置文件。第二条命令确认版本号正确。要注意版本号输出和预期是否一致。安装脚本里写的HERMES_VERSION是0.1.0但命令行输出变成0.0.9很可能是因为系统里已经装过另一个版本的 HermesPATH 优先级被旧目录占住了。第三条命令确认 CLI 能正常加载配置并响应输入。如果--help直接报错通常是 Node.js 版本不匹配或配置文件损坏。5.2 桌面端进程和日志层进程、端口和日志文件命令行能运行不代表桌面端一定正常。桌面端进程启动后需要确认三类信息进程是否存在。是否有额外的本地端口被监听。日志文件里是否出现 ERROR 级别异常。验证命令可以按系统选择# macOS / Linux ps aux | grep -i hermes # Windows PowerShell Get-Process | Where-Object { $_.ProcessName -like *hermes* }日志目录通常在配置的dataDir下文件名一般是hermes.log或desktop.log。安装成功后第一次启动桌面端日志里应该能看到启动时间、配置文件路径、模型服务连接状态这三项信息。如果日志里只出现了启动时间而没有模型服务连接状态说明桌面端可能没有读取到配置。5.3 用退出码和断言脚本做一键自检自动安装流程的最后一步应该是运行一个自检脚本把上面所有验证合并成一条命令。示例#!/usr/bin/env bash set -euo pipefail command -v hermes /dev/null 21 || { echo FAIL: hermes not found; exit 1; } VERSION_OUTPUT$(hermes --version) echo VERSION: $VERSION_OUTPUT hermes doctor /dev/null 21 \ echo PASS: hermes doctor \ || { echo FAIL: hermes doctor; exit 1; } pgrep -x hermes /dev/null 21 \ echo PASS: desktop process \ || echo WARN: desktop process not running (可能只是没有打开界面)这个自检脚本的输出不是只能看到 PASS 或 FAIL还区分了 WARN。WARN 的意义在于桌面端进程不启动可能是用户的习惯不代表安装失败。自检脚本要尽量准确区分“安装问题”和“使用状态问题”不能把所有非预期情况都判定为失败。6. 安装失败排查从现象倒推根因6.1 脚本卡在下载或校验和错误现象安装脚本长时间停留在下载阶段或者下载完成后解压时报“bad header”或“unexpected end of file”。可能原因网络波动导致安装包不完整。下载源地址被本地防火墙拦截。安装包名称或架构判断错误下载到了 404 页面而不是真正的压缩包。检查方式# 观察本地缓存文件大小 ls -lh ~/.cache/hermes-install/ # 直接请求下载地址看返回头是否是 application/octet-stream curl -I $HERMES_DOWNLOAD_BASE_URL/v0.1.0/hermes-v0.1.0-linux-amd64.tar.gz解决方案删除缓存目录后重试确保不是使用损坏的缓存文件。如果下载源是 GitHub可以在安装脚本里换成团队内部镜像地址。校验下载后文件大小是否和发布页面描述一致不一致时需要重新下载。预防建议是不要只在脚本里写curl -f最好额外做 SHA-256 校验这样即使文件下载完整但内容被篡改也能在执行前拦截。6.2 桌面端窗口启动后闪退现象双击桌面端图标后窗口一闪而过或进程启动后 3 秒内自动退出。排查优先级先看命令行hermes doctor是否报告配置缺失。再打开日志文件重点看有没有SyntaxError或MODULE_NOT_FOUND。然后确认 Node.js 主版本是否满足要求。最后检查运行目录权限安装目录是否对当前用户可读写。常见原因是安装目录被放在了需要管理员权限的位置。比如在 Windows 上把手动安装到C:\Program Files\hermes普通用户启动时就没有权限写入日志和数据文件。自动安装脚本应默认安装到用户目录而不是系统目录。6.3 PowerShell 禁止运行脚本现象在 Windows 终端执行.\install.ps1出现无法加载文件因为在此系统上禁止运行脚本。原因PowerShell 默认执行策略是Restricted用户没有显式放开脚本执行权限。处理方式有两种# 方式一只对当前用户放开 RemoteSigned只影响后续本地脚本 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser # 方式二不修改系统执行策略仅用绕过参数运行一次 powershell -ExecutionPolicy Bypass -File .\install.ps1推荐方式二。它不需要永久改变机器执行策略也更符合安全习惯。如果团队内要频繁跑安装脚本也应该先评估执行策略变更带来的安全影响而不是一律放开到 Unrestricted。6.4 版本命令不一致或 PATH 未生效现象安装脚本明明成功了但新开终端后hermes --version还是老版本或提示找不到命令。原因hermes命令被解析到了另一个路径或终端没有重新加载 PATH 配置。检查方式command -v hermes which -a hermes如果输出多个路径按顺序优先使用第一个路径。想让安装目录排到前面不能在 PATH 末尾添加目录而要把$HERMES_BIN_DIR放到PATH开头。修改后确认export PATH$HOME/.hermes/bin:$PATH hermes --version如果需要长期生效则修改 shell 配置文件里 PATH 的写入顺序。这个问题最容易出现在“以前手动装过老版本”的机器上因此自动安装脚本不仅要把新目录写入 PATH还要在验证阶段主动检查是否会解析到其他目录。7. 从学习到生产全自动安装的落地建议7.1 个人电脑和团队交付的安装标准差异个人电脑上安装 Hermes只要跑通 CLI 和桌面端任务基本算完成。团队环境或生产环境的自动化安装要求会高很多主要体现在几个方面项目个人学习环境团队生产环境安装包版本最新版即可锁定固定版本通过版本文件管理下载来源官方源内网镜像或对象存储校验可跳过必须校验 SHA-256API 密钥可临时写入环境变量统一密钥管理服务避免明文日志本地查看统一收集到日志平台回滚重新安装保留上一个版本目录可快速切换这个表格不是说要让个人机器也变得繁琐而是要区分“能用”和“可维护”。生产环境的 Hermes 如果只装不验证、不记版本一旦出问题连回滚到上一版本都会变成难题。7.2 把版本、校验和、镜像和离线包一起纳入安装脚本自动安装脚本在生产环境里应该维护三份配套文件HERMES_VERSION当前要安装的版本号。HERMES_SHA256安装包的校验值。HERMES_DOWNLOAD_BASE_URL内网镜像地址。安装脚本执行流程应该是这样EXPECTED_SHA256从流水线或配置文件中读取 echo $EXPECTED_SHA256 $CACHE_FILE | sha256sum -c - /dev/null 21 \ || { echo SHA256 校验失败; exit 1; }这样做的价值在于只要镜像被污染或下载文件被截断脚本会立即失败而不是等解压或运行阶段才暴露问题。离线环境下这份脚本配合完整安装包文件能保证所有机器安装出来的结果一致。7.3 发布前检查清单把 Hermes 桌面端安装脚本提交给团队或 CI 系统之前建议逐项确认以下内容脚本是否可以重复执行且不会因为旧目录、旧 PATH 配置报错。是否支持通过环境变量覆盖版本号、安装目录和下载源。是否在安装后自动验证hermes --version、hermes doctor。是否清理了解压临时目录。是否把 API 密钥写进了配置文件而不是通过环境变量注入。是否对损坏的缓存文件有重新下载机制。是否在文档里标注了 Node.js 最低版本和磁盘空间要求。是否留了日志输出方便用户在安装失败时快速定位。这份清单可以直接作为团队内安装脚本评审的检查项。和代码评审一样安装脚本也不是“能跑就行”它要能在不同环境、不同用户、不同网络条件下给出稳定结果。如果你准备把 Hermes 桌面端装到自己的开发机上建议先用手动方式装一次记录下下载、解压、配置、验证四个步骤里的实际路径和参数再按照本文的脚本骨架改成自动安装脚本。这样你既知道每一步在做什么也能在脚本报错时快速判断问题出在哪一层。下一步可以继续扩展的方向是把安装脚本接入团队内部的前置环境检测工具让用户在运行安装前就收到依赖缺失报告而不是等脚本执行到一半才发现 Node.js 版本不满足要求。
返回列表