🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
6.2 KiB
6.2 KiB
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 fichiersbrave-search- recherche webfetch- HTTP requestsmemory- 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 :
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_mtest utilisé - Ajout
#include <grove/IIO.h>dans les modules .cpp const_castpourgetChildReadOnly(IDataNode non-const)- Fonction
cloneDataNode()dans main.cpp (workaround pourclone()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
- Tester la boucle agentique - Envoyer une requête LLM et vérifier que les tools sont appelés
- Activer un serveur MCP - Tester avec
filesystempar exemple - Streaming responses - Pour feedback temps réel pendant la génération
Priorité Moyenne
- Améliorer IOBridge - Le timeout de 5s peut être trop court pour certains tools
- Ajouter plus de tools internes - Ex:
add_task,set_reminder, etc. - Persistance des notes - Actuellement en mémoire dans StorageModule
Priorité Basse
- Tests unitaires - Mock IIO pour tester InternalTools
- Tests MCP - Mock server pour tester StdioTransport
- Optimisation latence - Le request/response via IIO ajoute ~100ms
Pour Tester
# 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
# Pour Claude API
export ANTHROPIC_API_KEY="sk-ant-..."
# Pour MCP servers (optionnel)
export BRAVE_API_KEY="..." # Si brave-search activé
Commandes Git Utiles
# Voir les derniers commits
git log --oneline -5
# Voir les changements depuis le refactoring
git diff 26a5d34..HEAD --stat