ZapMomo 文档
贡献指南

参与贡献

开发环境搭建、常用命令、测试与 Git 工作流

参与贡献

欢迎为 ZapMomo 贡献代码!本篇面向想参与开发的同学,介绍从零搭建开发环境到提交 PR 的完整流程;如果你只是想使用 ZapMomo,请看快速开始。

开发环境

工具版本用途
Rust1.97.1(由 rust-toolchain.toml 固定)编译 / 测试 / Lint / Format
pnpm任意现代版本Tauri CLI 与文档站依赖管理
Linux 额外依赖webkit2gtk 等构建桌面应用(zapmomo-app)需要

克隆仓库后,cargo build 首次编译会自动拉取 sherpa-onnx 预编译库;如在代理环境下下载失败,可设置 SHERPA_ONNX_LIB_DIR 指向已缓存的库目录。

常用命令

核心 CLI

# 开发
cargo run                           # 直接运行(无参进入帮助)
cargo run -- config                 # 显示配置
cargo run -- completion bash        # 生成 shell 补全

# 测试
cargo test
cargo test -- --test-threads=1      # 单线程测试(避免 env 竞争)

# 代码质量
cargo fmt                           # 格式化代码
cargo fmt --check                   # 格式检查
cargo clippy -- -D warnings         # 严格 Lint 检查

# 完整检查(CI 同款)
cargo fmt --check && cargo clippy -- -D warnings && cargo test

# 覆盖率
cargo tarpaulin

桌面应用(Tauri 2,位于 src-tauri/)

# 安装 Tauri CLI(首次)
pnpm install

# 开发模式(热重载,需已下载模型:cargo run -- kws install-model)
pnpm tauri dev

# 构建当前平台安装包(macOS: .app/.dmg)
pnpm tauri build

# 仅检查 / Lint tauri crate(Linux 需 webkit 依赖)
cargo check -p zapmomo-app
cargo clippy -p zapmomo-app -- -D warnings

测试

# 常规测试(不依赖模型)
cargo test -- --test-threads=1

# 模型相关测试(需先下载模型)
./scripts/run-kws-model-tests.sh

KWS / ASR / TTS / LLM 模型不入库,按 models/manifest.json 清单下载(详见模型来源与校验):

cargo run -- kws install-model      # 或 asr / tts install-model

已知限制(开发模式)

pnpm tauri dev 下点击「重启」(设置页 / 右键菜单 / 托盘)后新进程会白屏:Tauri 内置重启不重跑 beforeDevCommand,而 tauri dev 在应用退出时会拆掉 Vite dev server,新进程连不上 localhost:1420(tauri#6163)。需要重启效果时请手动重跑 pnpm tauri dev;生产打包版重启正常。

Git 工作流

分支命名

  • feature/xxx — 新功能
  • fix/xxx — Bug 修复
  • docs/xxx — 文档更新
  • refactor/xxx — 重构

Commit 规范

遵循 Conventional Commits:

<type>(<scope>): <description>

[optional body]
类型说明
feat新功能
fixBug 修复
docs文档更新
style代码格式
refactor重构
perf性能优化
test测试相关
chore构建 / 工具

提交 PR

  1. 从 main 切出符合命名规范的分支。
  2. 开发并确保本地通过完整检查:cargo fmt --check && cargo clippy -- -D warnings && cargo test(涉及桌面应用时另跑 cargo clippy -p zapmomo-app -- -D warnings)。
  3. 按规范提交 commit,推送并向 main 发起 PR,描述清楚动机与改动点。
  4. CI 通过、Review 通过后合并;版本发布由 release-plz 自动完成,无需手动 bump。

深入了解

On this page