Déploiement et intégration de GenericAgent : robots sur WeChat/QQ/Feishu pour toutes les plateformes

May 9, 2026

Présentation du projet

GenericAgent est un framework d’agent autonome, à la fois minimaliste et capable de s’auto-évoluer. Son cœur ne fait que ~3K lignes de code : grâce à 9 outils atomiques et à une boucle Agent Loop d’environ 100 lignes, il permet à n’importe quel LLM d’obtenir un contrôle de niveau système sur l’ordinateur local.

Sa philosophie de conception est particulièrement intéressante : ne pas prédéfinir des compétences, mais les acquérir par évolution. À chaque nouvelle tâche résolue, GenericAgent fige automatiquement le chemin d’exécution en une Skill. Plus vous l’utilisez longtemps, plus vous accumulez de compétences, jusqu’à former un arbre de compétences entièrement à vous, qui pousse à partir de ce germe de code de 3K lignes.

TIP

Le plus impressionnant : ce projet dispose aussi d’un papier technique sur arXiv, qui prouve son approche de conception « efficacité en tokens + maximisation de la densité d’information du contexte ».

Par rapport à OpenClaw (~530K lignes de code), GenericAgent suit une voie résolument minimaliste : déploiement simple (pip install + API Key), pas besoin d’orchestration multi-services, mais il conserve néanmoins des capacités essentielles telles que le contrôle complet du navigateur, les actions clavier/souris, ainsi que la commande d’appareils mobiles via ADB.


Difficulté / Durée / Résultats

  • Difficulté : niveau débutant, sans besoin d’une expérience poussée en programmation
  • Durée : environ 30 minutes
  • Résultats : maîtriser la configuration et le déploiement de GenericAgent + l’intégration des trois grandes plateformes IM (WeChat/QQ/Feishu), pour piloter l’IA sur ordinateur avec votre téléphone, partout et à tout moment

Profil des lecteurs cibles

  • Développeurs backend ou full-stack avec 1 à 5 ans d’expérience
  • Utilisateurs qui souhaitent créer un assistant IA personnel et des workflows automatisés
  • Personnes intéressées par la technologie Agent, qui veulent tester rapidement « faire en sorte que l’IA fasse réellement les choses pour vous »
  • Besoin d’intégrer plusieurs messageries (par ex. contrôler à distance l’ordinateur via WeChat/QQ)

Dépendances clés et environnement

CatégorieExigence
Python3.11 ou 3.12 (ne pas utiliser 3.14, incompatible avec pywebview)
Système d’exploitationWindows / macOS / Linux
Support LLMClaude / GPT-4o / Gemini / Kimi / MiniMax et autres modèles courants
RéseauEnvironnement réseau pouvant accéder aux API LLM
Dépendances optionnellesstreamlit / pywebview (GUI desktop), pycryptodome / qrcode (WeChat)

WARNING

GenericAgent ne fournit pas d’API LLM : vous devez disposer de votre propre API Key. Il est recommandé d’utiliser un service de relais compatible avec Claude/GPT : le prix est plus bas et l’accès depuis la Chine est plus stable. Par exemple Defapi : un prix officiel à moitié, prise en charge de l’ensemble de la gamme Claude/GPT, et reconnaissance automatique des protocoles compatibles.


Structure complète du projet

GenericAgent/
├── agentmain.py              # Point d’entrée principal, prend en charge le mode ligne de commande
├── launch.pyw                # Script de lancement d’interface GUI desktop
├── agent_loop.py             # Boucle Agent Loop (environ 100 lignes)
├── llmcore.py                # Gestion de session LLM
├── ga.py                     # GenericAgentHandler, gestion de la mémoire et dispatch des outils
├── frontends/                # Adaptateurs pour les plateformes IM
│   ├── wechatapp.py         # Bot WeChat
│   ├── qqapp.py             # Bot QQ
│   ├── fsapp.py             # Bot Feishu
│   ├── tgapp.py             # Bot Telegram
│   ├── wecomapp.py          # Bot WeCom (entreprise)
│   ├── dingtalkapp.py       # Bot DingTalk
│   ├── tuiapp.py            # UI du terminal
│   └── ...
├── assets/
│   ├── mykey_template.py    # Modèle de configuration pour l’API Key
│   ├── tools_schema.json    # Définition de 9 outils atomiques
│   ├── sys_prompt*.txt      # System prompts
│   └── tmwd_cdp_bridge/    # Plugin d’injection pour navigateur
├── memory/                   # Dossier de stockage de la mémoire
└── temp/                     # Fichiers temporaires et logs

Étapes détaillées

Step 1 : Installer le projet et les dépendances

D’abord, clonez le dépôt puis installez les dépendances de base :

# Cloner le dépôt
git clone https://github.com/lsdefine/GenericAgent.git
cd GenericAgent

# Installer les dépendances de base
pip install requests

# Installer les dépendances GUI (mode desktop)
pip install streamlit pywebview

# Ou installer les dépendances pour l’UI du terminal
pip install requests textual

TIP

La philosophie de conception de GenericAgent est « que l’Agent installe son environnement lui-même ». Ainsi, vous n’avez pas besoin d’installer au préalable trop de dépendances. L’Agent lit le code et vous dit : « veuillez installer toutes les dépendances Python nécessaires », puis il s’en charge.

Step 2 : Configurer l’API Key

Copiez le modèle de configuration :

cp assets/mykey_template.py mykey.py

Modifiez mykey.py en y renseignant votre configuration LLM. Voici un exemple avec Defapi (en prenant Claude comme exemple) :

# Relais Claude via Defapi (moitié prix officiel)
native_claude_config = {
    'name': 'claude-defapi',                    # Nom affiché
    'apikey': 'sk-ant-your-defapi-key',         # La clé fournie par Defapi
    'apibase': 'https://api.defapi.org',        # Endpoint côté Defapi
    'model': 'claude-sonnet-4-6',               # ou claude-opus-4-7
    'fake_cc_system_prompt': True,              # Le service de relais doit l’activer
    'thinking_type': 'adaptive',
    'max_tokens': 16384,
}

WARNING

Si vous utilisez un service de relais de type CC switch (comme Defapi, anyrouter, etc.), vous devez définir fake_cc_system_prompt: True. En revanche, le véritable endpoint officiel Anthropic (connexion directe avec un préfixe sk-ant-) n’en a pas besoin.

GenericAgent détecte automatiquement le format de protocole selon le nom des variables :

  • Contient native + claude → NativeClaudeSession (champ tool natif)
  • Contient native + oai → NativeOAISession (champ tool natif OpenAI)
  • Contient claude (sans native) → ClaudeSession (outils en protocole texte)

Step 3 : Démarrer GenericAgent

Commencez par tester si le mode ligne de commande fonctionne correctement :

python agentmain.py

Vous devriez voir l’invite interactive > : saisissez une phrase pour tester :

> Sur le bureau, créez un fichier hello.txt, dont le contenu est Hello World

Si tout est correct, l’Agent exécutera la tâche et vous renverra le résultat.

Passez au mode GUI desktop :

python launch.pyw

Step 4 : Intégrer le Bot WeChat

Le Bot WeChat prend en charge la connexion par scan de QR code WeChat personnel, ce qui est le plus simple.

Installer des dépendances supplémentaires :

pip install pycryptodome qrcode requests

Configuration (optionnelle : même sans configuration, cela fonctionne, mais il est recommandé de définir une liste blanche) :

Ajoutez ceci dans mykey.py :

# Liste blanche WeChat : renseignez l’ID WeChat. Si vide, tous les utilisateurs sont autorisés
wechat_allowed_users = []

Lancer le Bot WeChat :

python frontends/wechatapp.py

Au premier démarrage, une fenêtre de QR code s’affiche : scannez-la avec WeChat pour confirmer. Une fois la connexion réussie, votre WeChat devient l’interface de dialogue avec GenericAgent.

TIP

Les commandes du Bot WeChat sont identiques à celles de la version desktop : /new pour démarrer une nouvelle conversation, /continue pour reprendre les sessions précédentes.

Step 5 : Intégrer le Bot QQ

Le Bot QQ utilise l’API officielle des robots QQ et n’a pas besoin de webhook en accès public : il reçoit les messages via une connexion longue WebSocket.

Installer les dépendances :

pip install qq-botpy

Configuration :

  1. Allez sur QQ Open Platform pour créer un robot et obtenir AppID et AppSecret
  2. Ajoutez dans mykey.py :
qq_app_id = "Votre_APP_ID"
qq_app_secret = "Votre_APP_SECRET"
qq_allowed_users = ["useropenid"]  # ou ['*'] pour autoriser tout le monde

Lancer le Bot QQ :

python frontends/qqapp.py

Après avoir envoyé un premier message au robot, l’openid de l’utilisateur sera enregistré dans temp/qqapp.log.

Step 6 : Intégrer le Bot Feishu

Le Bot Feishu prend en charge de nombreux formats de message : texte, texte enrichi, images, fichiers, audio, cartes interactives, etc.

Installer les dépendances :

pip install lark-oapi

Configuration :

  1. Sur la plateforme ouverte Feishu, créez une application d’auto-développement d’entreprise et récupérez AppID et AppSecret
  2. Ajoutez dans mykey.py :
fs_app_id = "cli_xxxxxxxxxxxxxxxx"
fs_app_secret = "xxxxxxxxxxxxxxxx"
fs_allowed_users = ["ou_xxxxxxxxxxxxxxxx"]  # ou ['*'] pour autoriser tout le monde

Lancer le Bot Feishu :

python frontends/fsapp.py

TIP

Un des points forts du Bot Feishu est le support des modèles visuels : lors de la première interaction, l’image est envoyée au backend compatible OpenAI Vision sous un format multimodal réel. Si votre Agent doit « voir » les images, l’intégration Feishu est la meilleure expérience.

Step 7 : Vérifier et optimiser

Tous les Bots prennent en charge ces commandes universelles :

  • /new - démarrer une nouvelle conversation, vider le contexte actuel
  • /continue - lister les instantanés de sessions récupérables
  • /continue N - restaurer la N-ième session historique

Vérifier l’intégration multi-plateformes en même temps :

Si vous voulez exécuter plusieurs Bots simultanément, ouvrez simplement plusieurs fenêtres de terminal :

# Terminal 1 : WeChat
python frontends/wechatapp.py

# Terminal 2 : QQ
python frontends/qqapp.py

# Terminal 3 : Feishu
python frontends/fsapp.py

WARNING

Plusieurs Bots partagent le même répertoire memory/ et temp/. La mémoire est interopérable. C’est à la fois un avantage (contexte identique entre plateformes) et un risque potentiel : assurez-vous que votre scénario d’usage convient à cette conception.


Résolution des problèmes fréquents

1. Erreur d’authentification après configuration de l’API Key

Cause : nom de variable incorrect ou configuration erronée de fake_cc_system_prompt

Solution :

  • Vérifiez que le nom de variable contient les bons mots-clés (comme native_claude, oai_config, etc.)
  • Le service de relais doit être fake_cc_system_prompt: True
  • Vérifiez que apibase est correct (par exemple, Defapi utilise https://api.defapi.org)

2. Après scan WeChat, l’identification échoue

Cause : restrictions de WeChat en matière de risque pour la connexion de nouveaux appareils

Solution :

  • Essayez de confirmer la connexion depuis le téléphone (parfois une double vérification côté mobile est nécessaire)
  • Assurez-vous que le compte WeChat n’a pas d’activité anormale
  • Réduisez la fréquence d’utilisation du Bot pour éviter de déclencher le contrôle anti-abus

3. Le Bot QQ ne reçoit pas les messages

Cause : le robot n’est pas activé ou la configuration des permissions est incorrecte

Solution :

  • Sur la plateforme ouverte QQ, confirmez que le robot est activé
  • Vérifiez que vous avez bien ajouté l’abonnement aux événements (il faut s’abonner à l’événement « messages en conversation privée »)
  • Consultez temp/qqapp.log pour confirmer que l’openid de l’utilisateur est correctement enregistré

4. Réponse lente du Bot Feishu

Cause : l’inférence LLM est en soi lente, ou un délai réseau

Solution :

  • Utilisez un modèle plus rapide (comme GPT-4o-mini, MiniMax-M2)
  • Vérifiez la latence du réseau vers l’API LLM
  • Réduisez raisonnablement max_tokens pour accélérer la réponse dès le premier token

5. Le Bot n’arrive pas à mémoriser le contexte de conversation

Cause : commande /new exécutée ou expiration du temps de session

Solution :

  • Utilisez /continue pour restaurer la conversation historique
  • Confirmez que le dossier memory/ dispose des droits d’écriture
  • Vérifiez si le dossier temp/model_responses/ contient des enregistrements de sessions

6. Erreur ModuleNotFoundError à l’exécution

Cause : dépendance manquante

Solution :

# Laisser l’Agent installer
> Aidez-moi à installer toutes les dépendances Python nécessaires

# Ou installer manuellement des dépendances courantes
pip install requests pycryptodome qrcode streamlit pywebview

Lectures complémentaires / Pistes d’avancement

Capacités d’automatisation du navigateur

Une fois les outils Web déverrouillés, GenericAgent peut agir dans un navigateur réel qui conserve votre état de connexion :

> Exécuter web setup sop, débloquer l’outil web

Ensuite, vous pouvez l’utiliser comme suit :

> Ouvrir Taobao, rechercher iPhone 16, trier par prix
> Aller sur Bilibili, consulter l’historique des vidéos que j’ai regardées récemment

Le plugin de navigateur se trouve dans assets/tmwd_cdp_bridge/ et prend en charge les navigateurs principaux comme Chrome/Edge.

Explication détaillée du mécanisme d’auto-évolution

La différence clé de GenericAgent réside dans le fait que pour chaque tâche terminée, le chemin d’exécution est automatiquement figé en Skill. La prochaine fois que vous rencontrerez une tâche similaire, elle sera appelée directement, sans repartir de zéro.

Cela signifie :

  • Plus vous l’utilisez, plus l’Agent comprend votre workflow
  • L’arbre de compétences vous appartient entièrement : il ne sera pas identique aux « compétences prédéfinies » des autres
  • Avec 3K lignes de code de départ, il est possible d’atteindre un potentiel quasi infini

Écosystème de bibliothèque de Skills

La communauté a déjà accumulé une bibliothèque de Skills à l’échelle du million (article sur la page WeChat). Vous pouvez :

  • Laisser l’Agent rechercher : Cherche-moi une skill pour faire XXX
  • Import direct : Accède à XXX et fais-le avec cette skill

Mode avancé

Toutes les fonctionnalités avancées de GenericAgent sont autodocumentées : demandez directement à l’Agent.

ModeDemander à l’Agent
Reflect (réflexion)Regarde ton code, dis-moi comment activer ton mode reflect
Planification de tâcheRegarde ton code, dis-moi comment activer ton mode de planification de tâches
Plan (planification)Regarde ton code, dis-moi comment activer ton mode plan
Sous-agentRegarde ton code, dis-moi comment activer ton mode subagent
Exploration autonomeRegarde ton code, dis-moi comment activer ton mode d’exploration autonome

TIP

C’est le cœur de la philosophie de GenericAgent : le code est la documentation. L’Agent peut lire sa propre base de code, et n’importe quelle fonctionnalité peut être directement demandée.

Compétences de programmation et comparaison avec Claude Code

Beaucoup de développeurs se posent une question : GenericAgent peut-il remplacer Claude Code ou Codex ?

Réponse : il peut programmer, mais ne peut pas remplacer entièrement.

Compétences de programmation de GenericAgent

GenericAgent exécute n’importe quel code via l’outil code_run. En combinant cela avec des opérations fichiers comme file_read/file_write/file_patch, ses capacités de programmation sont complètes. Tant que vous associez un modèle expert en programmation (comme Claude ou GPT-4o), il peut :

  • Lire et écrire des fichiers
  • Exécuter des commandes en ligne de commande
  • Déboguer le code
  • Expliquer la logique du code
# Configurer Claude comme backend
native_claude_config = {
    'apikey': 'your-key',
    'apibase': 'https://api.defapi.org',
    'model': 'claude-sonnet-4-6',
    'fake_cc_system_prompt': True,
}

Puis programmer directement en langage naturel :

> Écris-moi une fonction de tri rapide, puis exécute les tests
> Implémente un serveur HTTP en Python
> Explique comment ce composant React fonctionne

Différences avec Claude Code / Codex

FonctionnalitéGenericAgentClaude Code / Codex
Capacités de programmationComplètes (fichiers + exécution de code)Complètes
Consommation de contexte<30K tokens (très économe)200K-1M tokens (contexte plus large)
Capacité d’évolutionChaque tâche laisse une Skill, accumulation entre les sessionsSans état entre les sessions
Mode de déploiementpip install + API KeyOutil CLI + abonnement

La différence clé est la suivante : Claude Code fonctionne avec son propre protocole et sa chaîne d’outils (similaire à MCP) ; GenericAgent ne peut pas les appeler directement. Mais il existe des méthodes indirectes :

Méthode 1 : utiliser Codeg en parallèle

Codeg peut lancer simultanément GenericAgent + Claude Code + Codex, et faire collaborer plusieurs systèmes dans la même UI :

# Mettre GenericAgent et Codeg dans le même répertoire parent
/workspace/
  ├── GenericAgent/
  └── codeg/

# Codeg détectera automatiquement GenericAgent, puis utilisera tout en parallèle

Méthode 2 : via un relais par API

La NativeClaudeSession de GenericAgent utilise un protocole compatible avec Claude Code. Si le service de relais (par ex. Defapi) prend en charge le « passthrough » de Claude Code, vous pouvez utiliser les capacités de programmation de Claude via GenericAgent :

# Programmer avec les capacités de Claude dans GenericAgent
native_claude_config = {
    'name': 'claude-defapi',
    'apikey': 'your-defapi-key',
    'apibase': 'https://api.defapi.org',
    'model': 'claude-sonnet-4-6',
    'fake_cc_system_prompt': True,  # Passe-through du protocole Claude Code
}

Conclusion

QuestionRéponse
GenericAgent peut-il programmer ?Oui : les opérations fichier + l’exécution de code sont complètes
Peut-il appeler Claude Code directement ?Non : Claude Code est un outil indépendant
Peut-il programmer comme Claude Code ?Similaire, mais l’expérience dépend du modèle backend
Peut-on l’utiliser en parallèle ?Oui : le projet Codeg prend en charge la collaboration multi-agents

TIP

Si vous voulez à la fois l’expérience de programmation de Claude Code et les capacités d’automatisation de GenericAgent, vous pouvez essayer la combinaison Codeg + GenericAgent : une conversation, plusieurs agents qui coopèrent en même temps — Claude Code se concentre sur l’écriture de code, tandis que GenericAgent gère l’automatisation.


Référence

Updated May 9, 2026