Open-LLM-VTuber AI Coding Assistant: Context & Guidelines
version: 2025.08.05-1
1. Core Project Context
- Project: Open-LLM-VTuber, a low-latency voice-based LLM interaction tool.
- Language: Python >= 3.10
- Core Tech Stack:
- Backend: FastAPI, Pydantic v2, Uvicorn, fully async
- Real-time Communication: WebSockets
- Package Management:
uv(version ~= 0.8, as of 2025 August) (always useuv run,uv sync,uv add,uv removeto do stuff instead ofpip)
- Primary Goal: Achieve end-to-end latency below 500ms (user speaks -> AI voice heard). Performance is critical.
- Key Principles:
- Offline-Ready: Core functionality MUST work without an internet connection.
- Separation of Concerns: Strict frontend-backend separation.
- Clean code: Clean, testable, maintainable code, follows best practices of python 3.10+ and does not write deprecated code.
Some key files and directories:
doc/ # A deprecated directory
frontend/ # Compiled web frontend artifacts (from git submodule)
config_templates/
conf.default.yaml # Configuration template for English users
conf.ZH.default.yaml # Configuration template for Chinese users
src/open_llm_vtuber/ # Project source code
config_manager/
main.py # Pydantic models for configuration validation
run_server.py # Entrypoint to start the application
conf.yaml # User's configuration file, generated from a template
1.1. Repository Structure
Frontend Repository: The frontend is a React application developed in a separate repository:
Open-LLM-VTuber-Web. Its built artifacts are integrated into thefrontend/directory of this backend repository via a git submodule.Documentation Repository: The official documentation site is hosted in the
open-llm-vtuber.github.iorepository. When asked to generate documentation, create Markdown files in the project root. The user will be responsible for migrating them to the documentation site.
1.2. Configuration Files
- Configuration templates are located in the
config_templates/directory: conf.default.yaml: Template for English-speaking users.conf.ZH.default.yaml: Template for Chinese-speaking users.- When modifying the configuration structure, both template files MUST be updated accordingly.
- Configuration is validated on load using the Pydantic models defined in
src/open_llm_vtuber/config_manager/main.py. Any changes to configuration options must be reflected in these models.
2. Overarching Coding Philosophy
- Simplicity and Readability: Write code that is simple, clear, and easy to understand. Avoid unnecessary complexity or premature optimization. Follow the Zen of Python.
- Single Responsibility: Each function, class, and module should do one thing and do it well.
- Performance-Aware: Be mindful of performance. Avoid blocking operations in async contexts. Use efficient data structures and algorithms where it matters.
- Adherence to Best Practices: Write clean, testable, and robust code that follows modern Python 3.10+ idioms. Adhere to the best practices of our core libraries (FastAPI, Pydantic v2).
3. Detailed Coding Standards
3.1. Formatting & Linting (Ruff)
- All Python code MUST be formatted with
uv run ruff format. - All Python code MUST pass
uv run ruff checkwithout errors. - Import statements should be grouped by standard library, third-party, and local modules and sorted alphabetically (PEP 8).
3.2. Naming Conventions (PEP 8)
- Use
snake_casefor all variables, functions, methods, and module names. - Use
PascalCasefor class names. - Choose descriptive names. Avoid single-letter names except for loop counters or well-known initialisms.
3.3. Type Hints (CRITICAL)
- Target Python 3.10+. Use modern type hint syntax.
- DO: Use
|for unions (e.g.,str | None). - DON'T: Use
Optionalfromtyping(e.g.,Optional[str]). - DO: Use built-in generics (e.g.,
list[int],dict[str, float]). - DON'T: Use capitalized types from
typing(e.g.,List[int],Dict[str, float]). - All function and method signatures (arguments and return values) MUST have accurate type hints. If third party libraries made it impossible to fix type errors, suppress the type checker.
3.4. Docstrings & Comments (CRITICAL)
- All public modules, functions, classes, and methods MUST have a docstring in English.
- Use the Google Python Style for docstrings.
- Docstrings MUST include:
- Summary.
Args:section describing each parameter, its type, and its purpose.Returns:section describing the return value, its type, and its meaning.- (Optional but encouraged)
Raises:section for any exceptions thrown.
- All other code comments must also be in English.
3.5. Logging
- Use the
logurumodule for all informational or error output. - Log messages should be in English, clear, and informative. Use emoji when appropriate.
4. Architectural Principles
4.1. Dependency Management
- First, try to solve the problem using the Python standard library or existing project dependencies defined in
pyproject.toml. - If a new dependency is required, it must have a compatible license and be well-maintained.
- Use
uv add,uv remove,uv runinstead of pip to manage dependencies. If user uses conda, install uv with pip then. - After adding a new dependency, in addition to
pyproject.toml, you must add the dependency torequirements.txtas well.
4.2. Cross-Platform Compatibility
- All core logic MUST run on macOS, Windows, and Linux.
- If a feature is platform-specific (e.g., uses a Windows-only API) or hardware-specific (e.g., CUDA), it MUST be an optional component. The application should start and run core features even if that component is not available. Use graceful fallbacks or clear error messages.