OpenHuman 憑藉「本地優先、帶長期記憶的個人 AI Agent」定位在 2026 年初迅速走紅,但項目仍處於 Early Beta 階段。Rust + TypeScript 的雙棧構建、系統級依賴與各平台權限模型的差異,讓不少人在第一步就卡住了。本文系統整理了四大平台最高頻的報錯場景,每條均附可直接執行的修復命令,幫你用最短的時間跑起來。
目錄速查
- 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(系統設定放行):打開「系統設定 → 隱私權與安全性」,在底部找到被攔截的應用,點擊「仍要打開」。
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.org | curl -I https://github.com |
| ② | Git 版本 ≥ 2.40 | git --version |
| ③ | Rust stable 工具鏈版本符合倉庫要求 | rustup show |
| ④ | Node.js ≥ 20 LTS | node --version |
| ⑤ | 磁盤剩餘空間 ≥ 8 GB | df -h . |
| ⑥ | 讀取 rust-toolchain.toml 與 .nvmrc | cat rust-toolchain.toml && cat .nvmrc |
| ⑦ | 查看完整錯誤上下文 | cargo build 2>&1 | tee build.log |
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 機器,長期回報更高。