Open-LLM / .github /copilot-instructions.md
Nope137
Describe your changes here
c0937c0

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 use uv run, uv sync, uv add, uv remove to do stuff instead of pip)
  • 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 the frontend/ directory of this backend repository via a git submodule.

  • Documentation Repository: The official documentation site is hosted in the open-llm-vtuber.github.io repository. 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 check without 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_case for all variables, functions, methods, and module names.
  • Use PascalCase for 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 Optional from typing (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:
    1. Summary.
    2. Args: section describing each parameter, its type, and its purpose.
    3. Returns: section describing the return value, its type, and its meaning.
    4. (Optional but encouraged) Raises: section for any exceptions thrown.
  • All other code comments must also be in English.

3.5. Logging

  • Use the loguru module 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 run instead 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 to requirements.txt as 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.