couple-repo/Projects/WIP/AISSIA.md
2025-12-04 20:14:23 +08:00

647 lines
19 KiB
Markdown

# AISSIA - AI Smart Schedule & Interactive Assistant
## Vue d'ensemble
Assistant personnel intelligent en C++ utilisant GroveEngine pour gérer l'hyperfocus et la gestion du temps avec hot-reload 0.4ms.
### Problème Résolu
**Symptômes identifiés** :
- **Hyperfocus** : Incapacité à stopper une tâche une fois démarrée (travail ou jeu)
- **Absence de limites** : Continuer jusqu'à épuisement physique
- **Multi-tâches impossibles** : Difficile de gérer 2-3 activités par jour
- **Régulation défaillante** : Besoin d'un système externe pour gérer les transitions
**Pattern typique** :
- Démarre tâche A à 14h
- Hyperfocus jusqu'à 3h du matin
- Épuisement physique
- Aucune autre activité possible dans la journée
### Solution
Assistant IA qui :
- Pense le planning en arrière-plan
- Intervient **proactivement** (pas juste réactif)
- S'adapte aux patterns comportementaux
- Force les transitions quand nécessaire
---
## Architecture Technique
### Stack Principal
**GroveEngine** (moteur C++ modulaire extrait de WarFactory)
- Hot-reload DLL validé : **0.4ms**
- Architecture modulaire stricte
- Types stricts C++
- Namespace : `grove::`
**Repo structure** :
```
Projets/
├── GroveEngine/ # Moteur (27 headers + 10 impls)
│ ├── include/grove/
│ │ ├── IEngine.h, IModule.h, IIO.h
│ │ ├── IDataTree.h, IDataNode.h
│ │ ├── DebugEngine.h, IntraIO.h
│ │ └── ... (factories, UI, utils)
│ ├── src/
│ │ ├── DebugEngine.cpp
│ │ ├── IntraIO.cpp, IntraIOManager.cpp
│ │ ├── ModuleFactory.cpp, EngineFactory.cpp
│ │ └── ImGuiUI.cpp, ResourceRegistry.cpp
│ ├── docs/
│ └── CMakeLists.txt
├── aissia/ # Application assistant
│ ├── .claude/settings.json # additionalDirectories: ["../GroveEngine"]
│ ├── docs/
│ └── (modules à développer)
└── warfactoryracine/ # Source originale (non modifié)
```
### Timeline Architecture GroveEngine
| Date | Event | Impact |
|------|-------|--------|
| **20 Sept** | Suppression engines monolithiques → Interfaces modulaires | Architecture propre créée |
| **24 Sept (fc28009)** | Hot-reload validé 0.4ms | DebugEngine + IntraIO fonctionnels |
| **27 Sept (f6c3b34)** | IDataTree ajouté | Breaking change API → Implémentations supprimées |
| **27 Oct 2025** | Extraction GroveEngine | Récupération impls depuis Git history |
**État actuel** :
- ✅ Interfaces complètes (27 headers)
- ✅ Implémentations récupérées (10 .cpp)
- ⚠️ Implémentations = pre-IDataTree API (ancien format `json`, pas `IDataNode`)
- ✅ Hot-reload 0.4ms confirmé fonctionnel
- ✅ aissia configuré (Claude Code access via additionalDirectories)
---
## AI Subsystem Architecture
### API Call Management
**LLM Provider Abstraction**
```cpp
class ILLMProvider {
public:
virtual ~ILLMProvider() = default;
struct Message {
std::string role; // "user", "assistant", "system"
std::string content;
};
struct CompletionRequest {
std::vector<Message> messages;
float temperature = 0.7f;
int max_tokens = 1000;
std::string model;
};
struct CompletionResponse {
std::string content;
int tokens_used;
float cost_usd;
bool success;
std::string error;
};
virtual CompletionResponse Complete(const CompletionRequest& req) = 0;
};
```
**Implementations**
```cpp
// Claude API (Anthropic)
class ClaudeProvider : public ILLMProvider {
std::string api_key;
std::string endpoint = "https://api.anthropic.com/v1/messages";
CompletionResponse Complete(const CompletionRequest& req) override;
};
// GPT API (OpenAI)
class GPTProvider : public ILLMProvider {
std::string api_key;
std::string endpoint = "https://api.openai.com/v1/chat/completions";
CompletionResponse Complete(const CompletionRequest& req) override;
};
// Local LLM (Llama via llama.cpp server)
class LocalLLMProvider : public ILLMProvider {
std::string endpoint = "http://localhost:8080/v1/chat/completions";
CompletionResponse Complete(const CompletionRequest& req) override;
};
```
### AISubsystem Module
```cpp
class AISubsystem : public grove::IModule {
public:
void initialize(const IDataNode& config, IIO* io) override;
void update(float dt) override;
void shutdown() override;
// High-level API
std::string AskQuestion(const std::string& question, const std::string& context);
std::string GenerateResponse(const std::vector<Message>& conversation);
// Context management
void SetSystemPrompt(const std::string& prompt);
void AddContext(const std::string& key, const std::string& value);
void ClearContext();
private:
std::unique_ptr<ILLMProvider> provider;
std::string system_prompt;
std::map<std::string, std::string> context_data;
// Request queue (async processing)
std::queue<CompletionRequest> pending_requests;
std::thread worker_thread;
};
```
### HTTP Client (API Calls)
**Using libcurl (C++ wrapper)**
```cpp
class HTTPClient {
public:
struct Request {
std::string url;
std::string method; // GET, POST
std::map<std::string, std::string> headers;
std::string body;
};
struct Response {
int status_code;
std::string body;
std::map<std::string, std::string> headers;
};
Response Send(const Request& req);
private:
CURL* curl;
};
// Usage pour LLM API
HTTPClient client;
HTTPClient::Request req;
req.url = "https://api.anthropic.com/v1/messages";
req.method = "POST";
req.headers["x-api-key"] = api_key;
req.headers["Content-Type"] = "application/json";
req.body = R"({
"model": "claude-3-5-sonnet-20241022",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 1024
})";
auto response = client.Send(req);
```
### Async Processing (Non-blocking)
```cpp
void AISubsystem::update(float dt) {
// Process pending requests asynchronously
if (!pending_requests.empty() && !worker_thread.joinable()) {
auto request = pending_requests.front();
pending_requests.pop();
worker_thread = std::thread([this, request]() {
auto response = provider->Complete(request);
// Send response via IIO to other modules
io->SendMessage("ai_response", response.content);
});
}
// Cleanup finished threads
if (worker_thread.joinable()) {
worker_thread.join();
}
}
```
### Configuration
**Config file : `aissia_ai_config.json`**
```json
{
"ai_subsystem": {
"provider": "claude",
"api_key_env": "ANTHROPIC_API_KEY",
"model": "claude-3-5-sonnet-20241022",
"default_temperature": 0.7,
"max_tokens": 1000,
"system_prompt": "You are AISSIA, an AI assistant helping manage hyperfocus and time management.",
"timeout_seconds": 30,
"retry_attempts": 3
},
"providers": {
"claude": {
"endpoint": "https://api.anthropic.com/v1/messages",
"cost_per_1k_input": 0.003,
"cost_per_1k_output": 0.015
},
"gpt": {
"endpoint": "https://api.openai.com/v1/chat/completions",
"cost_per_1k_input": 0.00015,
"cost_per_1k_output": 0.0006
},
"local": {
"endpoint": "http://localhost:8080/v1/chat/completions",
"cost_per_1k_input": 0.0,
"cost_per_1k_output": 0.0
}
}
}
```
### TTS/STT (Bonus)
**Text-to-Speech Options**
```cpp
class ITTSProvider {
public:
virtual void Speak(const std::string& text) = 0;
};
// Windows SAPI (already documented in daily check system)
class WindowsSAPIProvider : public ITTSProvider {
void Speak(const std::string& text) override {
// Use SAPI COM interface
// See: anki_tingting/CLAUDE.md for implementation
}
};
// ElevenLabs API (cloud, high quality)
class ElevenLabsProvider : public ITTSProvider {
void Speak(const std::string& text) override;
};
```
**Speech-to-Text Options**
```cpp
class ISTTProvider {
public:
virtual std::string Transcribe(const std::vector<uint8_t>& audio_data) = 0;
};
// Whisper API (OpenAI)
class WhisperProvider : public ISTTProvider {
std::string Transcribe(const std::vector<uint8_t>& audio_data) override;
};
```
---
## Modules AISSIA Prévus
Architecture modulaire GroveEngine :
```cpp
// Chaque module = ~200-300 lignes
class MonitoringModule : public grove::IModule {
// Surveillance apps actives
// Tracking temps réel
// Détection hyperfocus
};
class SchedulerModule : public grove::IModule {
// Planning intelligent
// Gestion priorités
// Estimation durées
};
class AIAssistantModule : public grove::IModule {
// Génération interventions LLM
// Analyse contexte
// Décisions proactives
};
class NotificationModule : public grove::IModule {
// TTS
// Notifications système
// Rappels
};
class DataModule : public grove::IModule {
// SQLite storage
// Métriques
// Analytics
};
class VoiceModule : public grove::IModule {
// Speech-to-text (optionnel)
// Text-to-speech
};
class UIModule : public grove::IModule {
// ImGui interface
// Dashboard
// Settings
};
```
---
## Roadmap Développement
### Phase 1 - MVP Local Windows (Semaines 1-2)
**Obligatoire** - Validation concept
**Stack** :
- `aissia-core.exe` (GroveEngine DebugEngine)
- Modules DLL (hot-reload 0.4ms)
- ImGui pour UI
- SQLite local
- **Coût : $0**
- **Privacy : 100% local**
**Fonctionnalités** :
- ✅ Gestion tâches : Création, priorités, durées, deadlines
- ✅ Tracking temps : Timer manuel, historique
- ✅ IA basique : Suggestions planning, réorganisation, estimations
- ✅ Notifications : Rappels début/fin tâches
**Livrables** :
- MonitoringModule (tracking apps Windows)
- SchedulerModule (planning basique)
- AIAssistantModule (LLM suggestions)
- NotificationModule (système + TTS)
- UIModule (ImGui dashboard)
### Phase 2 - IA Proactive (Semaines 3-4)
**Optionnel** - Intelligence avancée
**Fonctionnalités** :
- ⏳ Détection hyperfocus : Analyse temps vs planifié, patterns anormaux
- ⏳ Assistant conversationnel : Chat avec l'IA
- ⏳ Apprentissage patterns : Heures productives, activités dangereuses
- ⏳ Interventions : Blocage apps, breaks forcés, réorganisation auto
**Questions techniques non résolues** :
1. **LLM choice** : Claude API (cher) vs GPT-4o mini (cheap) vs Local Llama (gratuit mais moins bon) ?
2. **Blocage apps** : Kill process forcé ou juste notifs agressives ?
3. **Antivirus** : Monitoring Windows apps = risque flag keylogger/spyware, acceptable ?
### Phase 3 - POC WASM (Semaine 5+)
**Expérimental** - Validation portabilité
**Objectif** : Tester si modules C++ compilent en WebAssembly
**Si succès** :
```
MÊME code C++ → 3 formats possibles :
├─ monitoring.dll (Dev Windows + hot-reload 0.4ms)
├─ monitoring.so (Serveur Linux Docker)
└─ monitoring.wasm (Browser PWA)
```
### Phase 4 - Cloud PWA (Conditionnel)
**Optionnel** - Seulement si Phase 3 validée
**Stack** :
- React PWA frontend
- Modules WASM côté client (70% processing)
- Backend Docker Linux (30% processing)
- PostgreSQL
- **Coût : $3-5/mois**
**Fonctionnalités supplémentaires** :
- 🔮 Intelligence contextuelle : Détection auto activité
- 🔮 Intégrations : Google Calendar, Todoist, RescueTime
- 🔮 Gamification : Points, streaks, achievements
- 🔮 Analytics : Rapports, visualisations, insights
---
## Avantages Architecture
| Aspect | Bénéfice |
|--------|----------|
| **Hot-reload 0.4ms** | Itération ultra-rapide en dev (validé WarFactory) |
| **Types stricts C++** | Pas de wildcode, compilation catch erreurs |
| **Modularité** | Modules 200-300 lignes, développement parallèle |
| **Évolution progressive** | Commence local $0, décide cloud plus tard |
| **Privacy-first** | Mode local = données jamais uploadées |
| **Réutilisation WarFactory** | Économie 3-4 semaines dev (architecture déjà prouvée) |
---
## Problèmes Techniques Identifiés
### 1. API Mismatch (IDataTree)
**Situation** :
- Implémentations récupérées = pre-IDataTree (utilisent `nlohmann::json`)
- Interfaces actuelles = post-IDataTree (utilisent `IDataNode`)
**Options** :
- **A)** Utiliser implémentations telles quelles pour MVP (ignorer IDataTree temporairement)
- **B)** Adapter implémentations pour IDataTree avant démarrage
- **C)** Créer wrapper `json ↔ IDataNode` temporaire
**Recommandation** : Option A pour MVP, refactor plus tard si nécessaire
### 2. Monitoring Windows Apps
**Technique** :
```cpp
// Win32 API pour tracking app active
HWND hwnd = GetForegroundWindow();
GetWindowThreadProcessId(hwnd, &processId);
// → Obtenir nom app, temps d'utilisation
```
**Problèmes** :
- Nécessite permissions admin potentiellement
- Antivirus peuvent flag comme malware (comportement keylogger)
- Privacy concerns si données non chiffrées
**Mitigation** :
- Chiffrement SQLite local
- Signature code (codesigning certificate)
- Disclaimer explicite utilisateur
### 3. LLM Integration
**Choix non fait** :
| Option | Coût | Qualité | Privacy | Latence |
|--------|------|---------|---------|---------|
| **Claude API** | $$$ | Excellent | ❌ Cloud | 1-3s |
| **GPT-4o mini** | $ | Bon | ❌ Cloud | 0.5-1s |
| **Llama 3.2 local** | $0 | Moyen | ✅ Local | 2-5s (CPU) |
**Décision requise** avant Phase 2.
---
## Statut Actuel
### GroveEngine
- ✅ Repo créé et structuré
- ✅ 27 headers copiés
- ✅ 10 implémentations récupérées (Git history)
- ✅ Documentation complète
- ✅ CMakeLists.txt configuré
- ⏳ Build test à faire (vérifier compilation)
### aissia
- ✅ Repo cloné depuis Bitbucket
- ✅ Nettoyé (supprimé artefacts C#)
- ✅ Claude Code configuré (additionalDirectories)
- ✅ Documentation adaptée
- ⏳ Aucun module développé encore
### Prochaines Étapes
**Immédiat** :
1. ✅ Build test GroveEngine (vérifier que ça compile)
2. ⏳ Créer `aissia-core.exe` (DebugEngine wrapper)
3. ⏳ Développer AISubsystem (LLM API calls + management)
4. ⏳ Valider hot-reload 0.4ms avec module AISSIA
**Base Running Requirements** :
- ✅ GroveEngine integrated
- ⏳ LLM API subsystem (Claude/GPT calls)
- ⏳ AI subsystem management (context, prompts, responses)
- 🎁 Bonus: TTS/STT APIs (optionnel)
**Questions bloquantes** :
- LLM choice pour AIAssistantModule ?
- Niveau d'intervention acceptable (kill process ou juste notifs) ?
- Budget acceptable pour APIs cloud (si non-local) ?
---
## Lien avec Autres Projets
### Contexte Global (4 projets)
1. **Social Network Manager** : Automation réseaux sociaux (suspendu - ToS issues)
2. **MP3 → TXT** : Extraction texte cours chinois (documenté, prêt)
3. **AISSIA** : Assistant anti-hyperfocus (ce document)
4. **Modif WarFactory** : (non encore détaillé)
**Impact combiné** : "Changement macro massif" dans workflow personnel
- Network manager = présence online automatique
- MP3 extractor = apprentissage chinois optimisé
- AISSIA = gestion temps/focus améliorée + **apprentissage langues intégré**
- WarFactory modif = ?
---
## Cas d'Usage : Apprentissage Chinois
### Contexte (28 octobre 2025)
**Problème identifié** :
- Système de cours actuel ne convient pas à Alexis
- Besoin de **pression + accountability personnalisée** (comme études japonais)
- Tingting concernée par manque de progression
**Solution multi-vecteur** :
#### 1. Prof Chinois (Priorité 1)
- **Format** : Prof privé 1-on-1 avec accountability forte
- **Fréquence** : X heures/semaine (à définir)
- **Plateforme** : Italki / Preply / Local Shanghai (à décider)
- **Timeline** : Recherche cette semaine, début sous 7-10 jours
- **Objectif** : Recréer système pression qui fonctionnait pour japonais
#### 2. Aissia - LanguageLearningModule (Support technique)
- **Fonctionnalités** :
- Détection apps d'apprentissage (tracking temps pratique)
- Conversations en chinois avec IA (practice quotidienne)
- Corrections intelligentes en temps réel
- Dialogues bilingues (intégration AIAssistantModule)
- **Timeline** : MVP Phase 1 (après MonitoringModule/SchedulerModule)
- **Objectif** : Consistency entre sessions prof + practice automatisée
**Complémentarité** :
- Prof = accountability humaine + pression personnalisée
- Aissia = consistency quotidienne + gestion hyperfocus sur pratique
- Ensemble = système complet apprentissage structuré
**Prochaines actions (semaine du 28 octobre)** :
1. ⏳ Rechercher prof chinois (3-4h max)
2. ⏳ Définir budget + fréquence + format
3. ⏳ Booker première session
4. ⏳ Développer LanguageLearningModule (parallèle au dev MVP)
**Lien** : Voir `couple_backlog/28_octobre_2025.md` pour contexte discussion
---
## Décisions en Attente
### Techniques
1. ⚠️ LLM provider (Claude / GPT-4o mini / Local Llama)
2. ⚠️ Niveau intervention (kill apps ou notifs only)
3. ⚠️ Handling antivirus flags (codesigning ?)
4. ⚠️ API mismatch strategy (use old impls vs adapt to IDataTree)
### Produit
1. ⚠️ MVP scope exact (quelles features minimum ?)
2. ⚠️ Cloud PWA nécessaire ou local suffit ?
3. ⚠️ Gamification importante ou distraction ?
### Business
1. ⚠️ Side project perso uniquement ou intention monétiser ?
2. ⚠️ Budget mensuel acceptable APIs cloud ?
---
## Risques Identifiés
| Risque | Probabilité | Impact | Mitigation |
|--------|-------------|--------|------------|
| **Antivirus false positive** | Élevée | Bloquant | Codesigning certificate (~$100/an) |
| **Hot-reload pas stable AISSIA** | Faible | Moyen | Déjà validé WarFactory, même code |
| **LLM trop cher en usage réel** | Moyenne | Moyen | Commencer local Llama, migrer si besoin |
| **Hyperfocus sur dev AISSIA** | Élevée | Ironique | Meta-utiliser AISSIA pour dev AISSIA 😄 |
| **WASM compilation fail** | Moyenne | Faible | Phase 3 optionnelle, pas bloquant |
---
## Ressources
### Repos
- `Projets/GroveEngine/` : Moteur C++ modulaire
- `Projets/aissia/` : Application assistant
- `Projets/warfactoryracine/` : Source originale
### Documentation
- `GroveEngine/docs/architecture-modulaire.md` : Explication interfaces
- `GroveEngine/docs/claude-code-integration.md` : Workflow dev
- `GroveEngine/docs/CLAUDE-HOT-RELOAD-GUIDE.md` : Guide hot-reload 0.4ms
- `aissia/docs/architecture/architecture-technique.md` : Architecture adaptée AISSIA
### Commits Clés (WarFactory history)
- `fc28009` : Hot-reload validé 0.4ms
- `fb49fb2` : IntraIO implementation
- `f6c3b34` : IDataTree ajouté (breaking change)
---
*Créé : 27 octobre 2025*
*Statut : En conception - GroveEngine prêt, modules AISSIA à développer*
*Stack : C++17, GroveEngine, ImGui, SQLite, LLM (TBD)*