First off, thank you for considering contributing to KnightBot! We want to make this project the ultimate open-source local AI companion, and your help is invaluable.
To ensure code quality and stability across our multi-service architecture, please follow these Standard Operating Procedures.
- Always activate the shared virtual environment before running Python scripts:
& 'f:\KnightBot\venv\Scripts\Activate.ps1'
- Ensure
QdrantandLM Studioare running before debugging backend logic.
- Python: We use
Blackformatting. Runblack .in the respective service folder before committing. - TypeScript/React: Use
ESLintandPrettier. - Comments: Comment complex logic. "Why" is more important than "What".
- Create a Branch:
git checkout -b feature/your-feature-name - Microservices: If modifying an API (e.g.,
chatterbox), ensure you update the client infrontend/src/lib/api.tsto match. - Testing:
- Unit: Run local tests if available.
- Integration: Manually verify the full loop (Voice -> STT -> LLM -> TTS -> Audio Output).
We follow Conventional Commits:
feat: ...for new featuresfix: ...for bug fixesdocs: ...for documentationstyle: ...for formattingrefactor: ...for code restructuring
- Push to your fork and submit a PR to
main. - Include a description of changes and screenshots (if UI related).
- Link to any relevant issues.
- Check existing issues first.
- Provide logs! (Copy output from the relevant terminal:
frontend,chatterbox, etc.) - State your OS, GPU, and RAM.
We love new ideas! Please open an issue with the tag enhancement and describe:
- The problem you're solving.
- Your proposed solution.
- Any alternatives you considered.
Happy Coding! π