# 参与贡献 英文版本请查看 [CONTRIBUTING.md](./CONTRIBUTING.md)。 感谢你为 `py-xiaozhi` 做出贡献。我们欢迎 Bug 反馈、文档修复、测试补充、工具链改进,以及范围清晰的新功能。 ## 开始之前 - 提交前先搜索现有的 Issue 和 Pull Request,避免重复。 - 对于较大的新功能、架构调整或行为变更,建议先开 Issue 讨论。 - 文档修复、小型 Bug 修复和聚焦明确的改进,一般可以直接提交 Pull Request。 ## 开发环境 ### 基本要求 - Python `>=3.10` - Git - 如果需要验证音频能力,请准备可用的麦克风和扬声器 ### 安装依赖 ```bash git clone https://github.com/huangjunsen0406/py-xiaozhi.git cd py-xiaozhi # 基础安装 uv sync # GUI + 开发工具 uv sync --extra gui --group dev ``` 如果你不使用 `uv`,可以使用以下兼容方案: ```bash pip install -e . pip install -e '.[gui]' pip install pytest pytest-asyncio ruff pyinstaller ``` ## 开发流程 1. Fork 仓库,并从 `main` 创建功能分支。 2. 尽量让每次修改只聚焦一个问题、一个功能或一类文档更新。 3. 提交信息遵循 Conventional Commits,例如 `fix(audio): handle empty frame`。 4. 如果修改影响行为、配置或公共接口,请同步更新文档。 5. 如果修改涉及正确性或回归风险,请补充或更新测试。 推荐分支命名: - `feature/xxx` - `fix/xxx` - `docs/xxx` - `refactor/xxx` - `test/xxx` ## 质量要求 提交 Pull Request 前,请根据改动类型运行相应检查: ```bash ruff check . ruff format . pytest ``` 如有必要,也请验证对应运行路径,例如: - GUI 改动:运行 `python main.py` - CLI 改动:运行 `python main.py --mode cli` - 协议改动:验证 `websocket` 或 `mqtt` - 文档改动:在 `documents/` 下本地预览 ## Pull Request 要求 每个 Pull Request 都应尽量满足以下要求: - 清楚说明问题背景和解决方案。 - 如有相关 Issue,请附上关联链接。 - 提供必要的验证步骤、截图或日志,方便审核。 - 保持改动范围合理,避免混入无关重构。 - 遵循现有代码风格和项目结构。 ## Maintainer Workflow 维护者通常会按以下流程审核贡献: 1. 先将改动归类为 `bug`、`feature`、`docs`、`refactor` 或 `maintenance`。 2. 确认改动范围是否清晰、问题是否可复现、方向是否符合项目规划。 3. 检查测试、文档和验证证据,再决定是否提出修改意见或批准。 4. 在 CI 通过且反馈处理完成后合并。 5. 合并后按正常发布流程进入后续版本,合并不等于立即发布。 ## 详细文档 - 项目文档: - 详细贡献指南(英文): - 详细贡献指南(中文): 再次感谢你的贡献。