プロジェクト構造
Line count ではなく ownership boundaries を示します。
text
N.E.K.O/
├── app/ # main/memory/agent services
├── launcher.py # thin entrypoint
├── launcher_core/ # bootstrap/ports/lifecycle
├── brain/ # Agent routing/adapters
├── config/ # defaults/prompts/provider/network
├── main_logic/ # conversation/clients/TTS/buses
├── main_routers/ # Main FastAPI routes
├── memory/ # fact/recall/persona/reflection/event/outbox
├── plugin/ # SDK/host/built-ins/tools
├── utils/config_manager/ # writable config/storage
├── frontend/react-neko-chat/
├── frontend/plugin-manager/
├── static/ # runtime assets/eight locales
├── templates/
├── docker/
├── scripts/
├── specs/
├── tests/
├── docs/
├── pyproject.toml
└── uv.locklauncher.py delegates to launcher_core/。utils/config_manager/ owns writable config、config/ owns bundled defaults。react-neko-chat/ is the only real chat UI and is mounted by index.html / chat.html; legacy #chat-container is deprecated.
main_logic/core/ is protected by structural CI checks。 main_logic/voice_turn/ owns only provider-neutral voice contracts; the local Silero/Smart Turn implementation and model assets live under main_logic/asr_client/endpointing/。Docker files are under docker/。 Dependency contract is pyproject.toml + uv.lock, not a manual requirements.txt install.
Use rg, imports, routes to find the current owner; historical files may now be packages.
