🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
180 lines
6.2 KiB
Markdown
180 lines
6.2 KiB
Markdown
# Document de Succession - AISSIA Agent Vocal
|
|
|
|
## Contexte Actuel
|
|
|
|
AISSIA est maintenant un **assistant vocal agentique** basé sur GroveEngine, capable d'utiliser des tools (internes + MCP) pour accomplir des tâches. Architecture "Claude Code en vocal".
|
|
|
|
**Dernier commit** : `059709c` - feat: Implement MCP client and internal tools for agentic LLM
|
|
|
|
## Ce qui a été fait (Session actuelle)
|
|
|
|
### 1. Infrastructure Tools Internes
|
|
|
|
Créé `src/shared/tools/` :
|
|
|
|
| Fichier | Description |
|
|
|---------|-------------|
|
|
| `IOBridge.hpp` | Request/response synchrone sur IIO async (correlation_id) |
|
|
| `InternalTools.hpp/.cpp` | 11 tools pour interagir avec les modules GroveEngine |
|
|
|
|
**Tools disponibles** :
|
|
- **Scheduler** : `get_current_task`, `list_tasks`, `start_task`, `complete_task`, `start_break`
|
|
- **Monitoring** : `get_focus_stats`, `get_current_app`
|
|
- **Storage** : `save_note`, `query_notes`, `get_session_history`
|
|
- **Voice** : `speak`
|
|
|
|
### 2. Client MCP
|
|
|
|
Créé `src/shared/mcp/` :
|
|
|
|
| Fichier | Description |
|
|
|---------|-------------|
|
|
| `MCPTypes.hpp` | Types MCP (Tool, Resource, ServerConfig, JSON-RPC) |
|
|
| `MCPTransport.hpp` | Interface transport abstrait |
|
|
| `StdioTransport.hpp/.cpp` | Transport stdio (fork/exec + JSON-RPC) |
|
|
| `MCPClient.hpp/.cpp` | Orchestration multi-serveurs MCP |
|
|
|
|
**Serveurs MCP supportés** (désactivés par défaut dans `config/mcp.json`) :
|
|
- `filesystem` - read/write fichiers
|
|
- `brave-search` - recherche web
|
|
- `fetch` - HTTP requests
|
|
- `memory` - knowledge graph
|
|
|
|
### 3. Handlers dans les Modules
|
|
|
|
Chaque module répond aux requêtes tools via IIO :
|
|
|
|
| Module | Topics écoutés | Topic réponse |
|
|
|--------|---------------|---------------|
|
|
| SchedulerModule | `scheduler:query`, `scheduler:command` | `scheduler:response` |
|
|
| MonitoringModule | `monitoring:query` | `monitoring:response` |
|
|
| StorageModule | `storage:query`, `storage:command` | `storage:response` |
|
|
| VoiceModule | `voice:command` | (fire-and-forget) |
|
|
|
|
### 4. Intégration LLMService
|
|
|
|
`LLMService` unifie tous les tools :
|
|
|
|
```cpp
|
|
void LLMService::initializeTools() {
|
|
// 1. Tools internes (via GroveEngine IIO)
|
|
m_internalTools = std::make_unique<InternalTools>(m_io);
|
|
|
|
// 2. Tools MCP (via serveurs externes)
|
|
m_mcpClient = std::make_unique<mcp::MCPClient>();
|
|
m_mcpClient->loadConfig("config/mcp.json");
|
|
m_mcpClient->connectAll();
|
|
}
|
|
```
|
|
|
|
## Architecture Finale
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
│ LLMService │
|
|
│ (Agentic Loop) │
|
|
├─────────────────────────────────────────────────────────────┤
|
|
│ ToolRegistry │
|
|
│ ├── InternalTools (11 tools) ─────► IIO pub/sub │
|
|
│ └── MCPClient (tools externes) ─────► stdio JSON-RPC │
|
|
└─────────────────────────────────────────────────────────────┘
|
|
│
|
|
┌──────────────┬─────┴──────┬──────────────┐
|
|
Scheduler Monitoring Storage Voice
|
|
Module Module Module Module
|
|
```
|
|
|
|
## État du Build
|
|
|
|
✅ **Compile sans erreur** - `cmake --build build -j4`
|
|
|
|
Fixes appliqués cette session :
|
|
- Ajout `#include <spdlog/sinks/stdout_color_sinks.h>` partout où `stdout_color_mt` est utilisé
|
|
- Ajout `#include <grove/IIO.h>` dans les modules .cpp
|
|
- `const_cast` pour `getChildReadOnly` (IDataNode non-const)
|
|
- Fonction `cloneDataNode()` dans main.cpp (workaround pour `clone()` manquant)
|
|
- Restauration du symlink `external/GroveEngine`
|
|
|
|
## Fichiers Clés
|
|
|
|
### Nouveaux (cette session)
|
|
```
|
|
src/shared/tools/
|
|
├── IOBridge.hpp
|
|
├── InternalTools.hpp
|
|
└── InternalTools.cpp
|
|
|
|
src/shared/mcp/
|
|
├── MCPTypes.hpp
|
|
├── MCPTransport.hpp
|
|
├── StdioTransport.hpp
|
|
├── StdioTransport.cpp
|
|
├── MCPClient.hpp
|
|
└── MCPClient.cpp
|
|
|
|
config/mcp.json
|
|
docs/PLAN_MCP_INTEGRATION.md
|
|
```
|
|
|
|
### Modifiés (cette session)
|
|
```
|
|
CMakeLists.txt # Ajout AissiaTools lib
|
|
src/services/LLMService.hpp # Ajout InternalTools + MCPClient
|
|
src/services/LLMService.cpp # initializeTools()
|
|
src/modules/SchedulerModule.* # Tool handlers
|
|
src/modules/MonitoringModule.* # Tool handlers
|
|
src/modules/StorageModule.* # Tool handlers + Note struct
|
|
src/modules/VoiceModule.* # Tool handlers
|
|
```
|
|
|
|
## Prochaines Étapes
|
|
|
|
### Priorité Haute
|
|
1. **Tester la boucle agentique** - Envoyer une requête LLM et vérifier que les tools sont appelés
|
|
2. **Activer un serveur MCP** - Tester avec `filesystem` par exemple
|
|
3. **Streaming responses** - Pour feedback temps réel pendant la génération
|
|
|
|
### Priorité Moyenne
|
|
4. **Améliorer IOBridge** - Le timeout de 5s peut être trop court pour certains tools
|
|
5. **Ajouter plus de tools internes** - Ex: `add_task`, `set_reminder`, etc.
|
|
6. **Persistance des notes** - Actuellement en mémoire dans StorageModule
|
|
|
|
### Priorité Basse
|
|
7. **Tests unitaires** - Mock IIO pour tester InternalTools
|
|
8. **Tests MCP** - Mock server pour tester StdioTransport
|
|
9. **Optimisation latence** - Le request/response via IIO ajoute ~100ms
|
|
|
|
## Pour Tester
|
|
|
|
```bash
|
|
# Build
|
|
cd /mnt/e/Users/Alexis\ Trouvé/Documents/Projets/Aissia
|
|
cmake -B build && cmake --build build -j4
|
|
|
|
# Run
|
|
./build/aissia
|
|
|
|
# Les modules se chargent automatiquement depuis build/modules/
|
|
# Les tools sont enregistrés au démarrage de LLMService
|
|
```
|
|
|
|
## Variables d'Environnement Requises
|
|
|
|
```bash
|
|
# Pour Claude API
|
|
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
|
|
# Pour MCP servers (optionnel)
|
|
export BRAVE_API_KEY="..." # Si brave-search activé
|
|
```
|
|
|
|
## Commandes Git Utiles
|
|
|
|
```bash
|
|
# Voir les derniers commits
|
|
git log --oneline -5
|
|
|
|
# Voir les changements depuis le refactoring
|
|
git diff 26a5d34..HEAD --stat
|
|
```
|