How idootop/mi-gpt works
MiGPT turns messages received through a Xiaomi XiaoAI speaker into streamed, context-aware AI replies played back through the speaker. The main runtime starts the speaker and conversation manager, gathers profile, room, history, and short-/long-term memory context, calls an OpenAI-compatible model, then streams the answer to speaker playback. The README also documents persona changes and custom TTS. Edges reflect the sampled entry point, bot, memory, database, OpenAI, and speaker code; some conversation and speaker internals are represented by their exact enclosing modules because their source was not sampled.
Main entry points: bot/index.ts Bot workflow · memory/index.ts Memory manager · src/index.ts MiGPT client · conversation.ts Conversation manager
Components 20
Runtime orchestration
- MiGPT client
src/index.ts
Conversation and memory
- Bot workflow
src/services/bot/index.ts - Conversation manager
src/services/bot/conversation.ts - Memory manager
src/services/bot/memory/index.ts - Short-term memory
src/services/bot/memory/short-term.ts - Long-term memory
src/services/bot/memory/long-term.ts
Speaker integration
- AI speaker
src/services/speaker/ai.ts - Speaker message loop
src/services/speaker/speaker.ts - Speaker playback
src/services/speaker/base.ts - Stream response
src/services/speaker/stream.ts
Persistence and AI
- OpenAI client
src/services/openai.ts - Database runtime
src/services/db/index.ts - Application database
prisma/schema.prisma - Memory persistence
src/services/db/memory.ts - Memory records
src/services/db/memory-long-term.ts - Message persistence
src/services/db/message.ts
Other components
- Speaker user
- Xiaomi speaker services
- LLM service
- Custom TTS endpoint
Connections 29
- Speaker user → Xiaomi speaker services: speaks to
- MiGPT client → AI speaker: constructs
- MiGPT client → Bot workflow: constructs
- MiGPT client → Database runtime: initializes
- MiGPT client → Bot workflow: starts
- MiGPT client → Database runtime: runs with
- Bot workflow → Conversation manager: loads context
- Bot workflow → AI speaker: starts speaker
- AI speaker → Speaker message loop: runs
- Speaker message loop → Xiaomi speaker services: polls messages
- AI speaker → Speaker playback: uses playback
- Speaker message loop → Bot workflow: dispatches query
- Bot workflow → Conversation manager: reads history
- Bot workflow → Memory manager: reads memories
- Memory manager → Memory persistence: queries memories
- Memory manager → Short-term memory: generates summaries
- Memory manager → Long-term memory: generates summaries
- Conversation manager → Message persistence: stores messages
- Conversation manager → Memory manager: records messages
- Memory persistence → Application database: reads and writes
- Memory records → Application database: reads and writes
- Message persistence → Application database: reads and writes
- Bot workflow → OpenAI client: requests stream
- Memory manager → OpenAI client: requests summaries
- OpenAI client → LLM service: streams completion
- OpenAI client → Stream response: forwards chunks
- Stream response → Speaker playback: supplies response
- Speaker playback → Xiaomi speaker services: plays speech
- Speaker playback → Custom TTS endpoint: requests speech