aissia/PROMPT_SUCCESSEUR.md
StillHammer 58d7ca4355 fix: Enable HTTPS for Claude API and fix interactive mode IIO routing
- HttpClient: Use full URL with scheme (https://) for proper SSL support
- main.cpp: Create separate InteractiveClient IO to avoid self-delivery skip
- main.cpp: Process llm:response messages in main loop for terminal display
- ClaudeProvider: Add debug logging for request details

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 07:27:56 +08:00

106 lines
4.3 KiB
Markdown

# Prompt Successeur - AISSIA
## Contexte
Tu reprends le développement d'**AISSIA**, un assistant vocal agentique en C++17 basé sur GroveEngine.
**Architecture** : Services (non hot-reload) + Modules (.so hot-reload) + MCP (client et serveur)
## État Actuel
✅ Build OK : `cmake -B build && cmake --build build -j4`
✅ 6 modules hot-reload fonctionnels
✅ 4 services infrastructure (LLM, Storage, Platform, Voice)
✅ 17 tools pour l'agent LLM
✅ Mode MCP Server : `./build/aissia --mcp-server`
✅ Mode interactif : `./build/aissia --interactive` ou `-i`
**Tests MCP : 50/50 passent** (transport + client)
**Tests totaux : 102/110** (8 échecs dans tests modules)
## Fichiers Clés
| Fichier | Rôle |
|---------|------|
| `src/main.cpp` | Entry point, charge modules, route messages, mode interactif |
| `src/services/LLMService.*` | Boucle agentique, ToolRegistry, appels Claude |
| `src/shared/mcp/MCPServer.*` | AISSIA comme serveur MCP (stdio JSON-RPC) |
| `src/shared/mcp/MCPClient.*` | Consomme serveurs MCP externes |
| `src/shared/mcp/StdioTransport.*` | Transport stdio pour MCP (spawne process enfant) |
| `src/shared/tools/FileSystemTools.*` | 6 tools fichiers (read/write/edit/glob/grep) |
| `src/shared/tools/InternalTools.*` | 11 tools internes (scheduler, voice, storage) |
## Communication
```
┌─────────────┐ IIO pub/sub ┌─────────────┐
│ Modules │ ◄──────────────────► │ Services │
│ (.so hot) │ JsonDataNode │ (static) │
└─────────────┘ └─────────────┘
HTTP │
┌─────────────┐
│ Claude API │
└─────────────┘
```
## Commandes
```bash
# Build
cmake -B build && cmake --build build -j4
# Run normal (boucle principale sans interaction)
./build/aissia
# Run avec interface stdin interactive
./build/aissia --interactive # ou -i
# Tape "quit" ou "q" pour quitter
# Run comme serveur MCP (pour Claude Code)
./build/aissia --mcp-server
# Tests
cp tests/fixtures/mock_mcp.json build/tests/fixtures/
./build/tests/aissia_tests # Tous (102/110)
./build/tests/aissia_tests "[mcp]" # MCP (50/50)
./build/tests/aissia_tests "[transport]" # Transport (20/20)
./build/tests/aissia_tests "[client]" # Client (15/15)
```
## Tests qui échouent (8)
Tous dans les modules, pas critiques :
- `MonitoringModuleTests.cpp` : 4 tests (monitoring:app_changed non publié)
- `AIModuleTests.cpp` : 2 tests (ai:suggestion non publié)
- `VoiceModuleTests.cpp` : 1 test (voice:speak assertion)
- `StorageModuleTests.cpp` : 1 test (durationMinutes != 45)
## Prochaines Étapes Suggérées
1. **Tester la boucle agentique** - `export ANTHROPIC_API_KEY=sk-...` puis `./build/aissia -i`
- Essayer "Quelle heure est-il ?" (tool get_current_time)
- Essayer "Liste les fichiers dans src/" (tool glob)
2. **Fixer les 8 tests modules** - Problèmes de publication IIO dans les mocks
3. **Exposer InternalTools via MCP Server** - Actuellement seuls FileSystem + get_current_time sont exposés. Les InternalTools (scheduler, voice, storage) nécessitent que les modules tournent (IIO).
## Notes Techniques
- **API key** : `ANTHROPIC_API_KEY` dans env ou `.env`
- **WSL** : window tracker et TTS utilisent des stubs
- **GroveEngine** : symlink vers `../GroveEngine`
- **Hot-reload** : modifier un .so dans `build/modules/` → rechargé automatiquement
- **Tests fixtures** : toujours copier `mock_mcp.json` avant tests client
## Changements Récents (cette session)
1. **Fix python → python3** dans configs et tests MCP
2. **Fix StdioTransport** :
- Préserve l'ID de requête fourni par l'utilisateur
- Détecte les commandes invalides (waitpid après 100ms)
- Stop non-bloquant (ferme stdout avant join reader)
- Ignore les messages avec id=null (notifications)
3. **Ajout mode interactif** (`--interactive`) pour tester la boucle LLM