aissia/docs/SUCCESSION.md
StillHammer 1f6f95a3a0 docs: Update succession document for MCP integration session
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 17:17:03 +08:00

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 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 :

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

  1. Améliorer IOBridge - Le timeout de 5s peut être trop court pour certains tools
  2. Ajouter plus de tools internes - Ex: add_task, set_reminder, etc.
  3. Persistance des notes - Actuellement en mémoire dans StorageModule

Priorité Basse

  1. Tests unitaires - Mock IIO pour tester InternalTools
  2. Tests MCP - Mock server pour tester StdioTransport
  3. 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