For the complete documentation index, see llms.txt. This page is also available as Markdown.

构建 Rust 核心

在一台全新的机器上从零构建 Rust 核心。

本页是面向贡献者的参考,说明如何在一台全新机器上编译 Rust 核心。

它只涵盖 仓库根目录的 crate:

  • Cargo 包: openhuman

  • 二进制: openhuman-core

  • 库: openhuman_core

如果你想要完整的桌面应用(pnpm dev、Tauri、CEF、前端工具链),请使用 入门设置。那条路径会额外需要 JavaScript、子模块和桌面运行时,这些对于仅核心的 并不 需要 cargo 工作流。

1. 安装固定的 Rust 工具链

该仓库在 rust-toolchain.toml:

  • 中固定了 Rust 1.93.0

  • 组件: rustfmt, clippy

推荐安装:

rustup toolchain install 1.93.0 --component rustfmt --component clippy
rustup default 1.93.0

你也可以让 cargo 自动从 rust-toolchain.toml 之后 rustup 本身安装完成后自动安装。

2. 克隆仓库

仅核心工作:

这对根 crate 来说已经足够。

桌面/Tauri 工作不同:

  • app/src-tauri/vendor/ 这些子模块只有在构建桌面壳或支持 CEF 的 Tauri 工具链时才需要。

  • 对于该流程,请遵循 入门设置 并运行 git submodule update --init --recursive.

3. 构建命令

在仓库根目录下:

说明:

  • 名称是 openhuman,但可运行的二进制是 openhuman-core.

  • 如果你更偏好面向包的 cargo 命令用于打包脚本,请使用 -p openhuman.

  • 构建出的二进制位于 target/debug/openhuman-coretarget/release/openhuman-core.

更快的本地链接(可选)

openhuman 核心 crate 链接的是一个较大的单一 rlib,因此编辑 → cargo check/cargo test 内循环经常受链接速度限制。更快的链接器(Linux 上用 mold,macOS 上用 lld)可以为每次增量重链接节省大量时间。 .cargo/config.toml 记录了手动启用方式,但最简单的路径是:

先安装链接器(apt install mold / brew install llvm)——如果缺失,脚本会检测到并退出,同时给出说明。它是幂等的:如果链接器已经配置好,再次运行不会有任何影响。CI 通过 RUSTFLAGS 在 Linux Rust 作业中直接启用同样的标志;这个脚本的存在是为了让本地 cargo 调用也能获得同样的速度提升,而无需依赖容器。

4. macOS 先决条件

安装:

  • Xcode 命令行工具: xcode-select --install

原因:

  • whisper-rs 会在构建过程中编译本地代码。

  • 在 macOS 上,该 crate 构建时启用了 metal 特性,且在 Cargo.toml中,因此需要安装 Apple 工具链和 SDK 头文件。

安装完 Xcode CLT 后,核心应可使用上面的 cargo 命令构建。

5. Linux 先决条件

仅核心包集合

在全新 Linux 机器上运行 cargo 之前请安装这些包。

Ubuntu / Debian:

Arch Linux:

在 Arch 上, clang 包含 libclangbase-devel 包含 gcc (提供 libstdc++),因此不需要单独的 -dev 软件包。

这些为什么重要:

  • build-essential / base-devel, cmake, pkg-config / pkgconf:传递性 Rust 依赖使用的本地构建工具。

  • clang, libclang-dev:native crate 使用的 bindgen / C 和 C++ 编译路径。

  • libssl-dev / openssl:某些网络依赖需要的 OpenSSL 头文件。

  • libasound2-dev / alsa-lib, libxi-dev / libxi, libxtst-dev / libxtst, libxdo-dev / xdotool, libudev-dev (在 Arch 的 systemd-libs), libevdev中包含):核心构建中引入的音频/输入/设备 crate 所需。

whisper-rs + clang 注意

whisper-rs-sysclang 下可能会失败,报错:

这就是文档中指出 libstdc++-14-dev: clang 可能会在 Ubuntu 运行器上选择 GCC 14 的 C++ 头文件的原因。

如果你的发行版布局仍然导致 libstdc++.so 在构建时无法解析,请使用 AGENTS.md:

Arch Linux 通常不需要这个变通方法,因为 gcc-libs 会将 libstdc++.so 放在默认库搜索路径中。

Linux 桌面/Tauri 包集合

如果你构建的是桌面壳而不是仅核心 crate,请安装更广泛的依赖集合。

Ubuntu / Debian (镜像自 .github/workflows/build-desktop.yml):

Arch Linux:

只有在你需要时才使用桌面列表 app/src-tauri/;对于根 crate 工作,上面更小的仅核心列表才是相关基线。

6. Windows 先决条件

安装:

  • 通过 rustup

  • Visual Studio Build Tools 2022 或带有 使用 C++ 的桌面开发 工作负载的 Visual Studio 安装 Rust

  • CI 和发布构建使用的 MSVC 目标: x86_64-pc-windows-msvc

安装 Microsoft 工具链后推荐运行的命令:

Windows 注意:

  • 该仓库会打补丁 whisper-rs-sys 以强制使用静态 MSVC CRT,并避免 LNK2038 / LNK1169 中提到的不匹配。请使用 MSVC 工具链,不要使用 MinGW。 Cargo.toml.

7. 相关路径

  • 入门设置:包含 pnpm、Tauri、子模块和 sidecar 暂存的完整桌面贡献者设置。

  • OpenHuman 架构:核心如何适配桌面应用和 RPC 流程。

最后更新于