開發者面對螢幕上的安裝報錯日誌,對應 OpenHuman 跨平台安裝排錯主題

OpenHuman 憑藉「本地優先、帶長期記憶的個人 AI Agent」定位在 2026 年初迅速走紅,但項目仍處於 Early Beta 階段。Rust + TypeScript 的雙棧構建、系統級依賴與各平台權限模型的差異,讓不少人在第一步就卡住了。本文系統整理了四大平台最高頻的報錯場景,每條均附可直接執行的修復命令,幫你用最短的時間跑起來。

閱讀前提示:本文以 2026 年 5 月前後的 OpenHuman 倉庫版本為基準。由於項目迭代頻繁,如遇命令失效請優先對照官方 GitHub README 與最新 Release Notes。

目錄速查

  • Mac(Apple Silicon / Intel):Gatekeeper 攔截、Rust 工具鏈缺失、Xcode CLT 版本衝突
  • Windows:路徑含空格與中文、WSL2 核心版本過低、MSVC 與 GNU 工具鏈混用
  • Docker:映像拉取超時、arm64 / amd64 架構不匹配、卷權限報錯
  • Node.js:版本不匹配、原生模組重建失敗、pnpm / npm 依賴衝突

1. Mac 平台排錯(Apple Silicon 與 Intel)

1.1 報錯:“openhuman” cannot be opened because the developer cannot be verified

這是 macOS Gatekeeper 攔截未經公證(Notarized)的二進位檔案。在 Apple Silicon Mac 上尤為常見,因為 OpenHuman 的預編譯包並非每個版本都經過蘋果公證流程。

修復方式 A(推薦,僅對該檔案放行):

# 在終端機中一次性移除隔離屬性,之後雙擊即可正常開啟
xattr -dr com.apple.quarantine /Applications/OpenHuman.app

修復方式 B(系統設定放行):打開「系統設定 → 隱私權與安全性」,在底部找到被攔截的應用,點擊「仍要打開」。

安全提示:修改隔離屬性前,請確認下載來源為官方 GitHub Releases 頁面,並校驗檔案的 SHA-256 雜湊值。切勿對來源不明的二進位檔案執行 xattr -dr

1.2 報錯:error: linker `cc` not found

Rust 編譯器找不到 C 鏈接器,通常是 Xcode Command Line Tools 未安裝或版本過舊。

# 安裝 Xcode CLT(約 2 GB,首次安裝需網路)
xcode-select --install

# 已安裝但仍報錯時,重置路徑
sudo xcode-select --reset

# 確認版本
xcode-select -p
# 輸出應為 /Library/Developer/CommandLineTools 或 /Applications/Xcode.app/...

1.3 報錯:rustup: command not found 或 Rust 版本過低

OpenHuman 的 Rust 核心通常要求 stable ≥ 1.78(以 rust-toolchain.toml 中聲明為準)。

# 安裝 rustup(如已安裝則跳過)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 重新整理 shell 環境
source "$HOME/.cargo/env"

# 更新至最新 stable
rustup update stable

# 切換至倉庫要求的版本(如有 rust-toolchain.toml,自動生效)
rustup show

1.4 報錯:Apple Silicon 上 architecture arm64 is not compatible

部分 npm 原生依賴或系統庫未提供 arm64 構建,或者同時裝了 Rosetta 版與原生版 Homebrew。

# 確認目前 shell 架構
uname -m  # 應輸出 arm64(M 系列晶片原生 shell)

# 確認 Homebrew 路徑(arm64 原生版應在 /opt/homebrew)
which brew

# 若 brew 指向 /usr/local(Rosetta),先切換至 arm64 shell 再安裝依賴
arch -arm64 /bin/zsh
arch -arm64 brew install openssl pkg-config

1.5 報錯:error: failed to run custom build command for `ring`

ring 是 Rust 常用的密碼學庫,編譯時依賴 Clang 與 LLVM,Mac 上通常需要指定 OpenSSL 路徑。

# 透過 Homebrew 安裝 OpenSSL 3
brew install openssl@3

# 暫時設定編譯環境變數(也可寫入 ~/.zshrc)
export OPENSSL_DIR="$(brew --prefix openssl@3)"
export OPENSSL_NO_VENDOR=1

# 再次建置
cargo build --release

2. Windows 平台排錯

2.1 報錯:路徑含空格或中文導致編譯失敗

Rust 的 Cargo 與部分 npm 原生模組對路徑中的空格、非 ASCII 字符容忍度極差。

:: 在無空格的純 ASCII 路徑下複製倉庫,例如
git clone https://github.com/tinyhumansai/openhuman C:\dev\openhuman

:: 同時將 Cargo 快取目錄遷移至安全路徑(在 PowerShell 中執行)
[System.Environment]::SetEnvironmentVariable("CARGO_HOME","C:\dev\.cargo","User")
[System.Environment]::SetEnvironmentVariable("RUSTUP_HOME","C:\dev\.rustup","User")

2.2 報錯:LINK : fatal error LNK1181

MSVC 工具鏈缺失或未正確配置。

:: 1. 安裝 Visual Studio 2022 Build Tools(或完整版 VS 2022)
::    必選元件:「使用 C++ 的桌面開發」→ MSVC v143 + Windows SDK

:: 2. 切換 Rust 至 MSVC target
rustup default stable-x86_64-pc-windows-msvc
rustup target add x86_64-pc-windows-msvc

:: 3. 確認連結器可被找到
where link
:: 輸出範例:C:\Program Files (x86)\Microsoft Visual Studio\...\link.exe

2.3 報錯:WSL2 核心版本過低

若你選擇在 WSL2 環境下運行 OpenHuman,核心版本需 ≥ 5.15。

:: 在 PowerShell(系統管理員)中更新 WSL 核心
wsl --update

:: 驗證版本
wsl --version

:: 將目標發行版設為 WSL2 模式
wsl --set-version Ubuntu-22.04 2

2.4 報錯:'python' is not recognized

部分 npm 原生模組的構建腳本依賴 python 命令。

:: 方案 A:安裝 python-is-python3(WSL2 Ubuntu)
sudo apt install python-is-python3

:: 方案 B:Windows 原生,透過 npm 全域設定指向 python3
npm config set python python3

:: 方案 C:安裝 windows-build-tools(已過期,建議改用 VS Build Tools)
:: 不再建議,僅供參考

2.5 報錯:error MSB8036: The Windows SDK version X was not found

:: 開啟 Visual Studio Installer → 修改 → 個別元件
:: 勾選對應的 Windows SDK(建議 10.0.22621 或更新版本)安裝
:: 安裝完成後重新啟動終端機再建置

3. Docker 平台排錯

3.1 報錯:映像拉取超時或 pull access denied

GitHub Container Registry 或 Docker Hub 在部分地區訪問受限。

# 方案 A:設定映像加速(在 Docker Desktop → Settings → Docker Engine 中編輯)
# 新增以下 JSON 欄位:
# "registry-mirrors": ["https://mirror.gcr.io","https://docker.mirrors.ustc.edu.cn"]

# 方案 B:在有網路存取的機器上匯出映像,再傳入目標機器
docker save ghcr.io/tinyhumansai/openhuman:latest | gzip > openhuman.tar.gz
# 目標機器匯入
gunzip -c openhuman.tar.gz | docker load

3.2 報錯:image platform (linux/amd64) does not match (linux/arm64)

在 Apple Silicon Mac 上拉取官方 amd64 映像時觸發此警告。

# 顯式指定平台拉取(會觸發 Rosetta 模擬,效能有損耗)
docker pull --platform linux/amd64 ghcr.io/tinyhumansai/openhuman:latest

# 若官方已發布 arm64 版本,優先拉取原生映像
docker pull --platform linux/arm64 ghcr.io/tinyhumansai/openhuman:latest

# 執行時指定平台
docker run --platform linux/arm64 ghcr.io/tinyhumansai/openhuman:latest

3.3 報錯:permission denied — 容器無法寫入掛載卷

容器內進程以非 root 用戶運行,而掛載的宿主機目錄屬於 root 或其他 uid。

# 方案 A:將宿主機目錄權限開放給容器內的使用者(uid 預設通常為 1000)
sudo chown -R 1000:1000 ./openhuman-data

# 方案 B:在 docker run 時以 root 身份執行(僅開發環境,生產不建議)
docker run --user root ...

# 方案 C:透過 Docker Compose 指定 user
# services:
#   openhuman:
#     user: "1000:1000"
#     volumes:
#       - ./openhuman-data:/app/data

3.4 報錯:exec: "sh": executable file not found

映像使用了 distroless 基礎映像,沒有 shell。

# 用完整的 bash 路徑進入容器(如果存在)
docker exec -it openhuman /bin/bash

# 若映像確實沒有 shell,建置除錯版映像並掛載原始資料卷進行排查
docker build -f Dockerfile.debug -t openhuman-debug .
docker run -it --volumes-from openhuman openhuman-debug /bin/bash

3.5 Docker Compose:dependency failed to start

OpenHuman 依賴的資料庫或向量索引服務啟動慢,導致主服務健康檢查失敗。

# 在 compose.yml 中為依賴服務新增 healthcheck
# services:
#   db:
#     healthcheck:
#       test: ["CMD", "pg_isready", "-U", "openhuman"]
#       interval: 5s
#       retries: 10
#   openhuman:
#     depends_on:
#       db:
#         condition: service_healthy

# 手動查看各服務日誌定位根本原因
docker compose logs --tail=50 db
docker compose logs --tail=50 openhuman

4. Node.js 平台排錯

4.1 報錯:The engine "node" is incompatible

OpenHuman 前端與插件層通常要求 Node.js ≥ 20 LTS。

# 使用 nvm 切換至指定版本(建議 LTS 20 或 22)
nvm install 20
nvm use 20
node --version  # 確認輸出 v20.x.x

# 若使用 fnm(更快的版本管理器)
fnm install 20
fnm use 20

4.2 報錯:gyp ERR! build error

部分依賴包含原生 C++ 插件,需要完整的構建工具鏈。

# macOS:確保已安裝 Xcode CLT
xcode-select --install

# Windows:全域安裝 node-gyp(PowerShell 系統管理員)
npm install -g node-gyp
# 並確保 Visual Studio Build Tools 已安裝(見第 2.2 節)

# Linux(Ubuntu/Debian)
sudo apt-get install -y python3 make g++

# 強制重新建置所有原生模組
npm rebuild
# 或使用 pnpm
pnpm rebuild

4.3 報錯:Cannot find module ERR_MODULE_NOT_FOUND

依賴安裝不完整,或 node_modules 快取與 lockfile 不一致。

# 完全清理後重裝
rm -rf node_modules
rm package-lock.json   # 或 pnpm-lock.yaml / yarn.lock

# 使用與專案一致的套件管理器重裝(以 pnpm 為例)
corepack enable
pnpm install --frozen-lockfile

4.4 報錯:ENOSPC: System limit for number of file watchers reached

Linux 系統預設的 inotify 監視器上限不足。

# 暫時調大(重新啟動後失效)
sudo sysctl fs.inotify.max_user_watches=524288

# 持久化設定
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

4.5 報錯:EACCES: permission denied, mkdir '.../.npm'

npm 全局目錄權限問題。

# 修改 npm 全域目錄為使用者可寫路徑
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
# 將上述 export 寫入 ~/.zshrc 或 ~/.bashrc 以持久生效

5. 通用排錯思路與自檢清單

無論在哪個平台,遇到安裝卡牆時,先按以下順序逐項排查:

順序檢查項快速驗證命令
網絡是否能訪問 GitHub / crates.io / registry.npmjs.orgcurl -I https://github.com
Git 版本 ≥ 2.40git --version
Rust stable 工具鏈版本符合倉庫要求rustup show
Node.js ≥ 20 LTSnode --version
磁盤剩餘空間 ≥ 8 GBdf -h .
讀取 rust-toolchain.toml.nvmrccat rust-toolchain.toml && cat .nvmrc
查看完整錯誤上下文cargo build 2>&1 | tee build.log
提速技巧:Rust 首次編譯時間可能超過 10 分鐘。可通過設置 CARGO_BUILD_JOBS 為 CPU 核數來並行加速,例如 export CARGO_BUILD_JOBS=8

6. 仍然無法解決?下一步該怎麼做

  • 搜索官方 Issue 列表:GitHub Issues 中搜索報錯關鍵詞。
  • 附上完整日誌提 Issue:粘貼 cargo build 2>&1 | head -100 的輸出與系統環境信息。
  • 切換到 Docker 部署:若原生安裝持續失敗,Docker 映像通常是最快繞過環境差異的路徑。
  • 將推理後端外置:若本地算力不足,可將 OpenHuman 的模型端點指向遠程 Ollama 服務。

關於將 OpenHuman 與遠程 Mac 推理節點配合使用的思路,可參考本站 OpenHuman 20 分鐘知識庫 文章。

7. 總結

OpenHuman 的安裝問題 90% 集中在三個根因:構建工具鏈不完整運行時版本不匹配、以及平台權限或網絡限制

如果你只是想快速體驗 OpenHuman 而不想深陷環境配置,Docker 方式是最省時的起點;如果你追求性能最優且希望完全本地化,花時間把 Rust 工具鏈配好、選一台內存充足的 Apple Silicon 機器,長期回報更高。