ZapMomo 文档
开发指南

项目结构

仓库目录树与各目录职责

项目结构

├── Cargo.toml           # 项目配置和依赖(workspace 根)
├── rust-toolchain.toml  # Rust 工具链版本(1.97.1)
├── src/
│   ├── main.rs          # 入口文件
│   ├── lib.rs           # 库入口 + 测试工具(test_util 临时 HOME 隔离)
│   ├── cli.rs           # CLI 命令定义(kws / asr / tts / llm / voice)
│   ├── config/
│   │   ├── mod.rs       # 配置模块入口
│   │   └── settings.rs  # TOML 配置管理(含 [kws]/[asr]/[tts]/[llm]/[voice]/[live2d] 段)
│   ├── kws/             # 关键词唤醒词检测(sherpa-onnx)
│   │   ├── mod.rs       # KwsEngine + 离线/实时检测
│   │   ├── config.rs    # KWS 配置解析与默认值
│   │   ├── model.rs     # 模型下载 / sha256 校验 / 解压安装
│   │   ├── token.rs     # 汉字 → ppinyin token 转换
│   │   ├── english.rs   # 英文关键词 → ARPAbet 音素
│   │   └── reaction.rs  # Reaction 可插拔反应(控制台 / GUI / 测试)
│   ├── asr/             # 语音识别(sherpa-onnx 流式转写)
│   │   ├── mod.rs       # AsrEngine + 离线/实时转写
│   │   ├── config.rs    # ASR 配置解析与默认值
│   │   └── reaction.rs  # Reaction 可插拔反应
│   ├── tts/             # 文本转语音(sherpa-onnx ZipVoice)
│   │   ├── mod.rs       # TtsEngine + 离线合成
│   │   ├── config.rs    # TTS 配置解析与默认值
│   │   ├── voice.rs     # 内置音色解析
│   │   └── reaction.rs  # Reaction 可插拔反应
│   ├── llm/             # 本地大语言模型(llama.cpp)
│   │   ├── mod.rs       # LlmEngine 门面 + 事件 channel
│   │   ├── config.rs    # LLM 配置解析与默认值
│   │   ├── local/       # LocalLlamaProvider(llama.cpp 后端)
│   │   ├── http.rs      # OpenAI 兼容 Responses API provider
│   │   ├── agent.rs     # Agent 循环 + 工具调用
│   │   ├── provider.rs  # LlmProvider trait
│   │   └── tools.rs     # 工具运行时
│   ├── voice/           # 语音会话编排(KWS→ASR→LLM→TTS 全链路)
│   │   ├── mod.rs       # 会话模块入口 + CLI 运行
│   │   ├── session.rs   # 会话状态机与事件循环(唤醒/聆听/思考/播报)
│   │   ├── listen.rs    # 唤醒/聆听监听(KWS + ASR)
│   │   ├── splitter.rs  # LLM 流式 token 断句
│   │   ├── synthesizer.rs # TTS 句级合成线程
│   │   ├── player.rs    # 音频播报(rodio Sink)
│   │   ├── records.rs   # 对话记录持久化
│   │   ├── events.rs    # 会话事件
│   │   ├── state.rs     # 会话状态
│   │   └── config.rs    # [voice] 配置解析
│   ├── companion.rs     # 伙伴库(Live2D 模型集合 + 当前使用项)
│   ├── model_library/   # 模型库核心服务(catalog / 安装 / 下载 / 选择)
│   ├── live2d/          # Live2D 角色模型定位
│   │   ├── mod.rs
│   │   └── config.rs    # [live2d] 配置解析
│   ├── audio.rs         # cpal 麦克风采集 + 重采样
│   ├── logging.rs       # tracing 双层日志
│   └── datetime.rs      # 日期时间工具
├── models/              # 模型资产(本体不入库,按清单下载)
│   ├── manifest.json    # 模型清单(source / sha256 / license)
│   └── THIRD_PARTY_NOTICES.md
├── docs/                # Fumadocs 文档站(Next.js + MDX)
│   ├── content/docs/    # 中文文档内容
│   ├── app/             # 页面与布局
│   └── lib/             # 内容源 loader
├── src-tauri/           # Tauri 2 桌面应用(workspace 成员)
│   ├── src/lib.rs       # commands + 监听线程 + TauriReaction
│   ├── frontend/        # React + Vite + TypeScript 多页面控制面板(Tailwind + shadcn/ui)
│   ├── tauri.conf.json  # Tauri 配置(打包目标/图标/权限文案)
│   ├── capabilities/    # 权限声明
│   └── icons/           # 应用图标
├── tests/               # 集成测试
├── package.json         # Tauri CLI(@tauri-apps/cli)
├── scripts/             # 模型下载 / 模型测试 / 图标生成等脚本
├── .github/             # CI / 发布流水线 / Issue 模板
└── .githooks/           # Git hooks

On this page