Caractéristiques Principales ✨
- Connexion Mlutiplateforme: Intégration avec QQ, WeChat, Feishu, Discord
- Noyau Agentique IA: Planification de tâches, décomposition d'instructions complexes
- Système d'Extensions: Création d'extensions personnalisées en Python
- Interface Web: Tableau de bord pour configuration et supervision
- Gestion Contextuelle: Personnalisation de profils et isolement de conversations
- Appel d'Outils: Accès à des fonctions externes comme la recherche web
- Commmandes Intégrées:
/help,/reset,/provider - Mode Sécurisé: Filtrage de contenu activé par défaut
Installation 🛠️
Prérequis
- Python ≥ 3.10
- Node.js + pnpm (pour le tableau de bord)
Procédure
- Cloner le dépôt : ```
git clone https://github.com/AstrBotDevs/AstrBot.git
cd AstrBot
- Installer les dépendances : ```
pip install uv
uv sync
uv run principal.py
- Lancer l'interface web : ```
cd dashboard
pnpm install
pnpm dev
Utilisation Courante 📖
/persona: Modifier le profil de l'IA/plugin off [nom]: Désactiver une exetnsion- Requêtes web via discussions naturelles
/provider: Changer de modèle IA/reset: Réinitialiser le contexte
Développement d'Extensions
Structure de base d'une extension :
from astrbot.api import Etoile
from astrbot.api.evenement import EvenementMessage, filtre
class ExtensionPerso(Etoile):
def __init__(self, contexte: Etoile.Contexte) -> None:
self.ctx = contexte
@filtre.commande("bonjour")
async def reponse_salutation(self, evt: EvenementMessage):
yield evt.reponse_texte("Salutations !")
Implémentations Clés
Point d'Entrée Principal
if __name__ == "__main__":
analyseur = argparse.ArgumentParser()
analyseur.add_argument("--repertoire-ui", type=str, default=None)
arguments = analyseur.parse_args()
verifier_environnement()
initialiser_journal()
initialiser_base_donnees()
repertoire_web = verifier_fichiers_ui(arguments.repertoire_ui)
cycle_vie = ChargeurInitial(repertoire_web)
asyncio.run(cycle_vie.executer())
Gestion du Cycle de Vie
class CycleViePrincipal:
async def initialiser(self):
charger_configuration()
connecter_adaptateurs_plateformes()
charger_extensions()
async def executer(self):
asyncio.create_task(self.bus_evenements.distribuer())
Structure d'Extension
class Etoile:
@property
def nom(self) -> str:
return self.__class__.__name__
async def arreter(self):
pass
Système de Filtres
def commande(nom: str, alias: list[str] = None):
def decorateur(fonction):
registre_handlers.enregistrer(
handler=fonction,
type_evenement=TypeEvenement.MESSAGE,
filtres=[FiltreCommande(nom, alias)]
)
return fonction
return decorateur