Akagi est un assistant open source conçu pour l'analyse dynamique de parties de mahjong sur plusieurs plateformes, intégrant des modèles d'intelligence artificielle compatibles avec le protocole mjai. Son architecture modulaire permet une analyse précise des décisions en temps réel, avec prise en charge native de solutions comme Mortal AI.
Fonctionnalités Techniques Clés
Le système propose deux méthodes de capture de données :
| Mode | Implémentation | Configuration |
|---|---|---|
| Proxy MITM | Interception réseau via certificat TLS | Nécessite l'installation d'une CA personnalisée |
| Navigateur Intégré | WebView basé sur Chromium | Aucune configuration système requise |
Intégration des Modèles IA
Le framework supporte les implémentations conformes au protocole mjai :
- Gestion automatique des modèles 3joueurs/4joueurs
- Interface de recommandation visuelle superposée (HUD)
- Analyse de sécurité avec calcul de risque de furiten
- Évaluation probabiliste des mains via le nombre de tenpai
Configuration Système
Le fichier config.toml définit les paramètres essentiels :
[system]
language = "fr" # Localisation interface
capture_method = "webview" # Options: webview | mitm
[ai_models]
quad_player = "mortal-v3" # Modèle pour 4 joueurs
triple_player = "mortal-3p" # Modèle pour 3 joueurs
[performance]
analysis_depth = 2 # Profondeur d'analyse (1-3)
history_retention = 200 # Nombre de parties archivées
Développement de Modèles Personnalisés
Structure type d'un bot compatible mjai :
import sys
import json
from typing import Dict, Any
def process_event(payload: Dict[str, Any]) -> Dict[str, Any]:
# Logique d'analyse personnalisée
return {"action": "discard", "tile": "5m"}
if __name__ == "__main__":
while (line := sys.stdin.readline().strip()):
try:
event = json.loads(line)
response = process_event(event)
sys.stdout.write(json.dumps(response) + "\n")
sys.stdout.flush()
except Exception:
sys.exit(1)
Architecture Technique
Le système repose sur une stack moderne :
- Cœur applictaif en Rust pour la sécurité mémoire et les performances
- Interface utilisateur via Tauri (WebView léger)
- Gestion des connexions WebSocket pour la synchronisation en temps réel
- Système de journalisation structuré avec niveaux de diagnostic
Optimisation des Performances
Paramètres ajustables selon les capacités matérielles :
| Paramètre | Configuration Économique | Configuration Performante |
|---|---|---|
| Profondeur d'analyse | 1 | 3 |
| Rafraîchissement HUD | 500ms | 200ms |
| Stockage historique | 100 parties | Illimité |
Résolution des Problèmes Coruants
Procédures de diagnostic :
- Vérifier les certificats TLS dans le mode MITM via
openssl s_client - Analyser les flux WebSocket avec l'inspecteur de protocole intégré
- Valider l'environnement Python avec
python -m mjai validate - Consulter les journaux système dans le répertoire
~/.akagi/logs