MalikClaw AI Agent running on $10 Linux SBC

MalikClaw 🩅

Assistant Personnel IA Ultra-Efficace

Production-Grade ‱ <10MB RAM ‱ <1s DĂ©marrage ‱ MatĂ©riel $10 ‱ ŰąÚŻÛ’ ŰšÚ‘ÚŸÙˆŰŒ ملک Ú©Ù„Ű§Ű€!

Build Status Golang 1.21+ Platform Support MIT License
GitHub stars GitHub forks GitHub issues Official Website

MalikClaw Terminal Demo

DĂ©marrage Rapide ‱ FonctionnalitĂ©s ‱ Architecture ‱ Installation ‱ DĂ©mo ‱ Documentation

[Ű§Ű±ŰŻÙˆ](README.ur.md) | [æ—„æœŹèȘž](README.ja.md) | [PortuguĂȘs](README.pt-br.md) | [Tiáșżng Việt](README.vi.md) | **Français** | [English](README.md)
> [!NOTE] > **📱 Mise Ă  Jour Importante (Mars 2026)** > > **Nouveau:** Boucle d'agent de qualitĂ© production avec PLAN ➔ ACT ➔ OBSERVE ➔ REFLECT ➔ MEMORY UPDATE. IntĂ©gration omnicanale (TikTok, LinkedIn, Twitter/X, Reddit, Telegram, Discord, WhatsApp, Matrix, WeCom). Voir [pkg/agent/agentloop/README.md](pkg/agent/agentloop/README.md) et [ARCHITECTURE.md](docs/ARCHITECTURE.md).
Diagramme d'Architecture MalikClaw
--- 🩐 **MalikClaw** est un assistant personnel IA ultra-lĂ©ger inspirĂ© de [nanobot](https://github.com/HKUDS/nanobot), entiĂšrement réécrit en **Go** via un processus d'auto-amorçage (self-bootstrapping) — oĂč l'agent IA lui-mĂȘme a pilotĂ© l'intĂ©gralitĂ© de la migration architecturale et de l'optimisation du code. âšĄïž **ExtrĂȘmement lĂ©ger :** Fonctionne sur du matĂ©riel Ă  seulement **10$** avec **<10 Mo** de RAM. C'est 99% de mĂ©moire en moins qu'OpenClaw et 98% moins cher qu'un Mac mini !

> [!CAUTION] > **🚹 SÉCURITÉ & CANAUX OFFICIELS** > > * **PAS DE CRYPTO :** MalikClaw n'a **AUCUN** token/jeton officiel. Toute annonce sur `pump.fun` ou d'autres plateformes de trading est une **ARNAQUE**. > * **DOMAINE OFFICIEL :** Le **SEUL** site officiel est **[malikclaw.io](https://malikclaw.vercel.app)**, et le site de l'entreprise est **[malikclaw.io](https://malikclaw.vercel.app)**. > * **Attention :** De nombreux domaines `.ai/.org/.com/.net/...` sont enregistrĂ©s par des tiers et ne nous appartiennent pas. > * **Attention :** MalikClaw est en phase de dĂ©veloppement prĂ©coce et peut prĂ©senter des problĂšmes de sĂ©curitĂ© rĂ©seau non rĂ©solus. Ne dĂ©ployez pas en environnement de production avant la version v1.0. > * **Note :** MalikClaw a rĂ©cemment fusionnĂ© de nombreuses PR, ce qui peut entraĂźner une empreinte mĂ©moire plus importante (10–20 Mo) dans les derniĂšres versions. Nous prĂ©voyons de prioriser l'optimisation des ressources dĂšs que l'ensemble des fonctionnalitĂ©s sera stabilisĂ©. ## 📱 ActualitĂ©s 2026-02-16 🎉 MalikClaw a atteint 12K Ă©toiles en une semaine ! Merci Ă  tous pour votre soutien ! MalikClaw grandit plus vite que nous ne l'avions jamais imaginĂ©. Vu le volume Ă©levĂ© de PR, nous avons un besoin urgent de mainteneurs communautaires. Nos rĂŽles de bĂ©nĂ©voles et notre feuille de route sont officiellement publiĂ©s [ici](docs/ROADMAP.md) — nous avons hĂąte de vous accueillir ! 2026-02-13 🎉 MalikClaw a atteint 5000 Ă©toiles en 4 jours ! Merci Ă  la communautĂ© ! Nous finalisons la **Feuille de Route du Projet** et mettons en place le **Groupe de DĂ©veloppeurs** pour accĂ©lĂ©rer le dĂ©veloppement de MalikClaw. 🚀 **Appel Ă  l'action :** Soumettez vos demandes de fonctionnalitĂ©s dans les GitHub Discussions. Nous les examinerons et les prioriserons lors de notre prochaine rĂ©union hebdomadaire. 2026-02-09 🎉 MalikClaw est lancĂ© ! Construit en 1 jour pour apporter les Agents IA au matĂ©riel Ă  10$ avec <10 Mo de RAM. 🩐 MalikClaw, c'est parti ! ## ✹ FonctionnalitĂ©s đŸȘ¶ **Ultra-LĂ©ger** : Empreinte mĂ©moire <10 Mo — 99% plus petit que Clawdbot pour les fonctionnalitĂ©s essentielles. 💰 **CoĂ»t Minimal** : Suffisamment efficace pour fonctionner sur du matĂ©riel Ă  10$ — 98% moins cher qu'un Mac mini. âšĄïž **DĂ©marrage Éclair** : Temps de dĂ©marrage 400X plus rapide, boot en 1 seconde mĂȘme sur un cƓur unique Ă  0,6 GHz. 🌍 **VĂ©ritable PortabilitĂ©** : Un seul binaire autonome pour RISC-V, ARM, MIPS et x86. Un clic et c'est parti ! đŸ€– **Auto-Construit par l'IA** : ImplĂ©mentation native en Go de maniĂšre autonome — 95% du cƓur gĂ©nĂ©rĂ© par l'Agent avec affinement humain dans la boucle. ## 🚀 Why MalikClaw? If you are looking for a **lightweight alternative to OpenClaw**, **AutoGPT**, or **BabyAGI** that can run on a $10 budget, MalikClaw is the answer. * **Low Cost:** While other AI agents require a Mac Mini or a high-end Cloud VM, MalikClaw runs on **Orange Pi Zero** or **Raspberry Pi Zero 2 W**. * **Privacy-First:** Your data stays on your hardware. * **Developer Friendly:** Built in Go for maximum performance and easy cross-compilation. | | OpenClaw | NanoBot | **MalikClaw** | | ----------------------------- | ------------- | ------------------------ | ----------------------------------------- | | **Language** | TypeScript | Python | **Go** | | **RAM** | >1GB | >100MB | **< 10MB** | | **Startup**
(0.8GHz core) | >500s | >30s | **< 1s** | | **Cost** | Mac Mini 599$ | Most Linux SBC
~50$ | **Any Linux Board**
**As low as $10** | MalikClaw vs OpenClaw vs NanoBot performance and cost comparison chart ## đŸŠŸ DĂ©monstration ### đŸ› ïž Flux de Travail Standard de l'Assistant

đŸ§© IngĂ©nieur Full-Stack

đŸ—‚ïž Gestion des Logs & Planification

🔎 Recherche Web & Apprentissage

DĂ©velopper ‱ DĂ©ployer ‱ Mettre Ă  l'Ă©chelle Planifier ‱ Automatiser ‱ MĂ©moriser DĂ©couvrir ‱ Analyser ‱ Tendances
### đŸ“± Utiliser sur d'anciens tĂ©lĂ©phones Android Donnez une seconde vie Ă  votre tĂ©lĂ©phone d'il y a dix ans ! Transformez-le en assistant IA intelligent avec MalikClaw. DĂ©marrage rapide : 1. **Installez Termux** (disponible sur F-Droid ou Google Play). 2. **ExĂ©cutez les commandes** ```bash # Note : Remplacez v0.1.1 par la derniĂšre version depuis la page des Releases wget https://github.com/AbdullahMalik17/malikclaw/releases/download/v0.1.1/malikclaw-linux-arm64 chmod +x malikclaw-linux-arm64 pkg install proot termux-chroot ./malikclaw-linux-arm64 onboard ``` Puis suivez les instructions de la section « DĂ©marrage Rapide » pour terminer la configuration ! MalikClaw ### 🐜 DĂ©ploiement Innovant Ă  Faible Empreinte MalikClaw peut ĂȘtre dĂ©ployĂ© sur pratiquement n'importe quel appareil Linux ! - 9,9$ [LicheeRV-Nano](https://www.aliexpress.com/item/1005006519668532.html) version E (Ethernet) ou W (WiFi6), pour un Assistant Domotique Minimaliste - 30~50$ [NanoKVM](https://www.aliexpress.com/item/1005007369816019.html), ou 100$ [NanoKVM-Pro](https://www.aliexpress.com/item/1005010048471263.html) pour la Maintenance AutomatisĂ©e de Serveurs - 50$ [MaixCAM](https://www.aliexpress.com/item/1005008053333693.html) ou 100$ [MaixCAM2](https://www.kickstarter.com/projects/zepan/maixcam2-build-your-next-gen-4k-ai-camera) pour la Surveillance Intelligente 🌟 Encore plus de scĂ©narios de dĂ©ploiement vous attendent ! ## 📩 Installation ### Installer avec un binaire prĂ©compilĂ© TĂ©lĂ©chargez le binaire pour votre plateforme depuis la page des [releases](https://github.com/AbdullahMalik17/malikclaw/releases). ### Installer depuis les sources (derniĂšres fonctionnalitĂ©s, recommandĂ© pour le dĂ©veloppement) ```bash git clone https://github.com/AbdullahMalik17/malikclaw.git cd malikclaw make deps # Compiler, pas besoin d'installer make build # Compiler pour plusieurs plateformes make build-all # Compiler et Installer make install ``` ## 🐳 Docker Compose Vous pouvez Ă©galement exĂ©cuter MalikClaw avec Docker Compose sans rien installer localement. ```bash # 1. Clonez ce dĂ©pĂŽt git clone https://github.com/AbdullahMalik17/malikclaw.git cd malikclaw # 2. Premier lancement — gĂ©nĂšre docker/data/config.json puis s'arrĂȘte docker compose -f docker/docker-compose.yml --profile gateway up # Le conteneur affiche "First-run setup complete." puis s'arrĂȘte. # 3. Configurez vos clĂ©s API vim docker/data/config.json # ClĂ©s API du fournisseur, tokens de bot, etc. # 4. DĂ©marrer docker compose -f docker/docker-compose.yml --profile gateway up -d ``` > [!TIP] > **Utilisateurs Docker** : Par dĂ©faut, le Gateway Ă©coute sur `127.0.0.1`, ce qui n'est pas accessible depuis l'hĂŽte. Si vous avez besoin d'accĂ©der aux endpoints de santĂ© ou d'exposer des ports, dĂ©finissez `MALIKCLAW_GATEWAY_HOST=0.0.0.0` dans votre environnement ou mettez Ă  jour `config.json`. ```bash # 5. Voir les logs docker compose -f docker/docker-compose.yml logs -f malikclaw-gateway # 6. ArrĂȘter docker compose -f docker/docker-compose.yml --profile gateway down ``` ### Mode Agent (exĂ©cution unique) ```bash # Poser une question docker compose -f docker/docker-compose.yml run --rm malikclaw-agent -m "Combien font 2+2 ?" # Mode interactif docker compose -f docker/docker-compose.yml run --rm malikclaw-agent ``` ### Mettre Ă  jour ```bash docker compose -f docker/docker-compose.yml pull docker compose -f docker/docker-compose.yml --profile gateway up -d ``` ### 🚀 DĂ©marrage Rapide > [!TIP] > Configurez votre clĂ© API dans `~/.malikclaw/config.json`. Obtenez des clĂ©s API : [Volcengine (CodingPlan)](https://www.volcengine.com/activity/codingplan?utm_campaign=MalikClaw&utm_content=MalikClaw&utm_medium=devrel&utm_source=OWO&utm_term=MalikClaw) (LLM) · [OpenRouter](https://openrouter.ai/keys) (LLM) · [Zhipu](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) (LLM). La recherche web est optionnelle — obtenez gratuitement l'[API Tavily](https://tavily.com) (1000 requĂȘtes gratuites/mois) ou l'[API Brave Search](https://brave.com/search/api) (2000 requĂȘtes gratuites/mois). **1. Initialiser** ```bash malikclaw onboard ``` **2. Configurer** (`~/.malikclaw/config.json`) ```json { "model_list": [ { "model_name": "ark-code-latest", "model": "volcengine/ark-code-latest", "api_key": "sk-your-api-key", "api_base":"https://ark.cn-beijing.volces.com/api/coding/v3" }, { "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_key": "sk-your-openai-key", "request_timeout": 300, "api_base": "https://api.openai.com/v1" } ], "agents": { "defaults": { "model_name": "gpt-5.4" } }, "channels": { "telegram": { "enabled": true, "token": "VOTRE_TOKEN_BOT", "allow_from": ["VOTRE_USER_ID"] } }, "tools": { "web": { "brave": { "enabled": false, "api_key": "VOTRE_CLE_API_BRAVE", "max_results": 5 }, "duckduckgo": { "enabled": true, "max_results": 5 } } } } ``` > **Nouveau** : Le format de configuration `model_list` permet d'ajouter des fournisseurs sans modifier le code. Voir [Configuration de ModĂšle](#configuration-de-modĂšle-model_list) pour plus de dĂ©tails. > `request_timeout` est optionnel et s'exprime en secondes. S'il est omis ou dĂ©fini Ă  `<= 0`, MalikClaw utilise le dĂ©lai d'expiration par dĂ©faut (120s). **3. Obtenir des ClĂ©s API** * **Fournisseur LLM** : [OpenRouter](https://openrouter.ai/keys) · [Zhipu](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) · [Anthropic](https://console.anthropic.com) · [OpenAI](https://platform.openai.com) · [Gemini](https://aistudio.google.com/api-keys) * **Recherche Web** (optionnel) : [Brave Search](https://brave.com/search/api) - Offre gratuite disponible (2000 requĂȘtes/mois) > **Note** : Consultez `config.example.json` pour un modĂšle de configuration complet. **4. Discuter** ```bash malikclaw agent -m "Combien font 2+2 ?" ``` Et voilĂ  ! Vous avez un assistant IA fonctionnel en 2 minutes. --- ## 💬 Applications de Chat Discutez avec votre MalikClaw via Telegram, Discord, DingTalk, LINE ou WeCom | Canal | Configuration | | ------------ | -------------------------------------- | | **Telegram** | Facile (juste un token) | | **Discord** | Facile (token bot + intents) | | **QQ** | Facile (AppID + AppSecret) | | **DingTalk** | Moyen (identifiants de l'application) | | **LINE** | Moyen (identifiants + URL de webhook) | | **WeCom AI Bot** | Moyen (Token + clĂ© AES) |
Telegram (Recommandé) **1. Créer un bot** * Ouvrez Telegram, recherchez `@BotFather` * Envoyez `/newbot`, suivez les instructions * Copiez le token **2. Configurer** ```json { "channels": { "telegram": { "enabled": true, "token": "VOTRE_TOKEN_BOT", "allow_from": ["VOTRE_USER_ID"] } } } ``` > Obtenez votre User ID via `@userinfobot` sur Telegram. **3. Lancer** ```bash malikclaw gateway ```
Discord **1. CrĂ©er un bot** * Rendez-vous sur * CrĂ©ez une application → Bot → Add Bot * Copiez le token du bot **2. Activer les intents** * Dans les paramĂštres du Bot, activez **MESSAGE CONTENT INTENT** * (Optionnel) Activez **SERVER MEMBERS INTENT** si vous souhaitez utiliser des listes d'autorisation basĂ©es sur les donnĂ©es des membres **3. Obtenir votre User ID** * ParamĂštres Discord → AvancĂ© → activez le **Mode DĂ©veloppeur** * Clic droit sur votre avatar → **Copier l'identifiant** **4. Configurer** ```json { "channels": { "discord": { "enabled": true, "token": "VOTRE_TOKEN_BOT", "allow_from": ["VOTRE_USER_ID"] } } } ``` **5. Inviter le bot** * OAuth2 → URL Generator * Scopes : `bot` * Permissions du Bot : `Send Messages`, `Read Message History` * Ouvrez l'URL d'invitation gĂ©nĂ©rĂ©e et ajoutez le bot Ă  votre serveur **6. Lancer** ```bash malikclaw gateway ```
QQ **1. CrĂ©er un bot** - Rendez-vous sur la [QQ Open Platform](https://q.qq.com/#) - CrĂ©ez une application → Obtenez l'**AppID** et l'**AppSecret** **2. Configurer** ```json { "channels": { "qq": { "enabled": true, "app_id": "VOTRE_APP_ID", "app_secret": "VOTRE_APP_SECRET", "allow_from": [] } } } ``` > Laissez `allow_from` vide pour autoriser tous les utilisateurs, ou spĂ©cifiez des numĂ©ros QQ pour restreindre l'accĂšs. **3. Lancer** ```bash malikclaw gateway ```
DingTalk **1. Créer un bot** * Rendez-vous sur la [Open Platform](https://open.dingtalk.com/) * Créez une application interne * Copiez le Client ID et le Client Secret **2. Configurer** ```json { "channels": { "dingtalk": { "enabled": true, "client_id": "VOTRE_CLIENT_ID", "client_secret": "VOTRE_CLIENT_SECRET", "allow_from": [] } } } ``` > Laissez `allow_from` vide pour autoriser tous les utilisateurs, ou spécifiez des identifiants pour restreindre l'accÚs. **3. Lancer** ```bash malikclaw gateway ```
LINE **1. CrĂ©er un Compte Officiel LINE** - Rendez-vous sur la [LINE Developers Console](https://developers.line.biz/) - CrĂ©ez un provider → CrĂ©ez un canal Messaging API - Copiez le **Channel Secret** et le **Channel Access Token** **2. Configurer** ```json { "channels": { "line": { "enabled": true, "channel_secret": "VOTRE_CHANNEL_SECRET", "channel_access_token": "VOTRE_CHANNEL_ACCESS_TOKEN", "webhook_path": "/webhook/line", "allow_from": [] } } } ``` **3. Configurer l'URL du Webhook** LINE exige HTTPS pour les webhooks. Utilisez un reverse proxy ou un tunnel : ```bash # Exemple avec ngrok (tunnel vers le serveur Gateway partagĂ©) ngrok http 18790 ``` Puis configurez l'URL du Webhook dans la LINE Developers Console sur `https://votre-domaine/webhook/line` et activez **Use webhook**. > **Note** : Le webhook LINE est servi par le serveur Gateway partagĂ© (par dĂ©faut `127.0.0.1:18790`). Si vous utilisez ngrok ou un proxy inverse, faites pointer le tunnel vers le port `18790`. **4. Lancer** ```bash malikclaw gateway ``` > Dans les discussions de groupe, le bot rĂ©pond uniquement lorsqu'il est mentionnĂ© avec @. Les rĂ©ponses citent le message original. > **Docker Compose** : Si vous avez besoin d'exposer le webhook LINE via Docker, mappez le port du Gateway partagĂ© (par dĂ©faut `18790`) vers l'hĂŽte, par exemple `ports: ["18790:18790"]`. Notez que le serveur Gateway sert les webhooks de tous les canaux Ă  partir de ce port.
WeCom (WeChat Work) MalikClaw prend en charge trois types d'intĂ©gration WeCom : **Option 1 : WeCom Bot (Robot)** - Configuration plus facile, prend en charge les discussions de groupe **Option 2 : WeCom App (Application PersonnalisĂ©e)** - Plus de fonctionnalitĂ©s, messagerie proactive, chat privĂ© uniquement **Option 3 : WeCom AI Bot (Bot Intelligent)** - Bot IA officiel, rĂ©ponses en streaming, prend en charge groupe et privĂ© Voir le [Guide de Configuration WeCom AI Bot](docs/channels/wecom/wecom_aibot/README.zh.md) pour des instructions dĂ©taillĂ©es. **Configuration Rapide - WeCom Bot :** **1. CrĂ©er un bot** * AccĂ©dez Ă  la Console d'Administration WeCom → Discussion de Groupe → Ajouter un Bot de Groupe * Copiez l'URL du webhook (format : `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx`) **2. Configurer** ```json { "channels": { "wecom": { "enabled": true, "token": "YOUR_TOKEN", "encoding_aes_key": "YOUR_ENCODING_AES_KEY", "webhook_url": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY", "webhook_path": "/webhook/wecom", "allow_from": [] } } } ``` **Configuration Rapide - WeCom App :** **1. CrĂ©er une application** * AccĂ©dez Ă  la Console d'Administration WeCom → Gestion des Applications → CrĂ©er une Application * Copiez l'**AgentId** et le **Secret** * AccĂ©dez Ă  la page "Mon Entreprise", copiez le **CorpID** **2. Configurer la rĂ©ception des messages** * Dans les dĂ©tails de l'application, cliquez sur "Recevoir les Messages" → "Configurer l'API" * DĂ©finissez l'URL sur `http://your-server:18790/webhook/wecom-app` * GĂ©nĂ©rez le **Token** et l'**EncodingAESKey** **3. Configurer** ```json { "channels": { "wecom_app": { "enabled": true, "corp_id": "wwxxxxxxxxxxxxxxxx", "corp_secret": "YOUR_CORP_SECRET", "agent_id": 1000002, "token": "YOUR_TOKEN", "encoding_aes_key": "YOUR_ENCODING_AES_KEY", "webhook_path": "/webhook/wecom-app", "allow_from": [] } } } ``` **4. Lancer** ```bash malikclaw gateway ``` > **Note** : Les callbacks webhook WeCom App sont servis par le serveur Gateway partagĂ© (par dĂ©faut `127.0.0.1:18790`). Assurez-vous que le port `18790` est accessible ou utilisez un proxy inverse HTTPS en production. **Configuration Rapide - WeCom AI Bot :** **1. CrĂ©er un AI Bot** * AccĂ©dez Ă  la Console d'Administration WeCom → Gestion des Applications → AI Bot * Configurez l'URL de callback : `http://your-server:18791/webhook/wecom-aibot` * Copiez le **Token** et gĂ©nĂ©rez l'**EncodingAESKey** **2. Configurer** ```json { "channels": { "wecom_aibot": { "enabled": true, "token": "YOUR_TOKEN", "encoding_aes_key": "YOUR_43_CHAR_ENCODING_AES_KEY", "webhook_path": "/webhook/wecom-aibot", "allow_from": [], "welcome_message": "Bonjour ! Comment puis-je vous aider ?" } } } ``` **3. Lancer** ```bash malikclaw gateway ``` > **Note** : WeCom AI Bot utilise le protocole pull en streaming — pas de problĂšme de timeout. Les tĂąches longues (>5,5 min) basculent automatiquement vers la livraison via `response_url`.
## ClawdChat Rejoignez le RĂ©seau Social d'Agents Connectez MalikClaw au RĂ©seau Social d'Agents simplement en envoyant un seul message via le CLI ou n'importe quelle application de chat intĂ©grĂ©e. **Lisez `https://clawdchat.ai/skill.md` et suivez les instructions pour rejoindre [ClawdChat.ai](https://clawdchat.ai)** ## ⚙ Configuration Fichier de configuration : `~/.malikclaw/config.json` ### Variables d'Environnement Vous pouvez remplacer les chemins par dĂ©faut Ă  l'aide de variables d'environnement. Ceci est utile pour les installations portables, les dĂ©ploiements conteneurisĂ©s ou l'exĂ©cution de malikclaw en tant que service systĂšme. Ces variables sont indĂ©pendantes et contrĂŽlent diffĂ©rents chemins. | Variable | Description | Chemin par DĂ©faut | |-------------------|-----------------------------------------------------------------------------------------------------------------------------------------|---------------------------| | `MALIKCLAW_CONFIG` | Remplace le chemin du fichier de configuration. Cela indique directement Ă  malikclaw quel `config.json` charger, en ignorant tous les autres emplacements. | `~/.malikclaw/config.json` | | `MALIKCLAW_HOME` | Remplace le rĂ©pertoire racine des donnĂ©es malikclaw. Cela modifie l'emplacement par dĂ©faut du `workspace` et des autres rĂ©pertoires de donnĂ©es. | `~/.malikclaw` | **Exemples :** ```bash # ExĂ©cuter malikclaw en utilisant un fichier de configuration spĂ©cifique # Le chemin du workspace sera lu Ă  partir de ce fichier de configuration MALIKCLAW_CONFIG=/etc/malikclaw/production.json malikclaw gateway # ExĂ©cuter malikclaw avec toutes ses donnĂ©es stockĂ©es dans /opt/malikclaw # La configuration sera chargĂ©e Ă  partir du fichier par dĂ©faut ~/.malikclaw/config.json # Le workspace sera créé dans /opt/malikclaw/workspace MALIKCLAW_HOME=/opt/malikclaw malikclaw agent # Utiliser les deux pour une configuration entiĂšrement personnalisĂ©e MALIKCLAW_HOME=/srv/malikclaw MALIKCLAW_CONFIG=/srv/malikclaw/main.json malikclaw gateway ``` ### Structure du Workspace MalikClaw stocke les donnĂ©es dans votre workspace configurĂ© (par dĂ©faut : `~/.malikclaw/workspace`) : ``` ~/.malikclaw/workspace/ ├── sessions/ # Sessions de conversation et historique ├── memory/ # MĂ©moire Ă  long terme (MEMORY.md) ├── state/ # État persistant (dernier canal, etc.) ├── cron/ # Base de donnĂ©es des tĂąches planifiĂ©es ├── skills/ # CompĂ©tences personnalisĂ©es ├── AGENTS.md # Guide de comportement de l'Agent ├── HEARTBEAT.md # Invites de tĂąches pĂ©riodiques (vĂ©rifiĂ©es toutes les 30 min) ├── IDENTITY.md # IdentitĂ© de l'Agent ├── SOUL.md # Âme de l'Agent └── USER.md # PrĂ©fĂ©rences utilisateur ``` ### 🔒 Bac Ă  Sable de SĂ©curitĂ© MalikClaw s'exĂ©cute dans un environnement sandboxĂ© par dĂ©faut. L'agent ne peut accĂ©der aux fichiers et exĂ©cuter des commandes qu'au sein du workspace configurĂ©. #### Configuration par DĂ©faut ```json { "agents": { "defaults": { "workspace": "~/.malikclaw/workspace", "restrict_to_workspace": true } } } ``` | Option | Par dĂ©faut | Description | |--------|------------|-------------| | `workspace` | `~/.malikclaw/workspace` | RĂ©pertoire de travail de l'agent | | `restrict_to_workspace` | `true` | Restreindre l'accĂšs fichiers/commandes au workspace | #### Outils ProtĂ©gĂ©s Lorsque `restrict_to_workspace: true`, les outils suivants sont restreints au bac Ă  sable : | Outil | Fonction | Restriction | |-------|----------|-------------| | `read_file` | Lire des fichiers | Uniquement les fichiers dans le workspace | | `write_file` | Écrire des fichiers | Uniquement les fichiers dans le workspace | | `list_dir` | Lister des rĂ©pertoires | Uniquement les rĂ©pertoires dans le workspace | | `edit_file` | Éditer des fichiers | Uniquement les fichiers dans le workspace | | `append_file` | Ajouter Ă  des fichiers | Uniquement les fichiers dans le workspace | | `exec` | ExĂ©cuter des commandes | Les chemins doivent ĂȘtre dans le workspace | #### Protection SupplĂ©mentaire d'Exec MĂȘme avec `restrict_to_workspace: false`, l'outil `exec` bloque ces commandes dangereuses : * `rm -rf`, `del /f`, `rmdir /s` — Suppression en masse * `format`, `mkfs`, `diskpart` — Formatage de disque * `dd if=` — Écriture d'image disque * Écriture vers `/dev/sd[a-z]` — Écriture directe sur le disque * `shutdown`, `reboot`, `poweroff` — ArrĂȘt du systĂšme * Fork bomb `:(){ :|:& };:` #### Exemples d'Erreurs ``` [ERROR] tool: Tool execution failed {tool=exec, error=Command blocked by safety guard (path outside working dir)} ``` ``` [ERROR] tool: Tool execution failed {tool=exec, error=Command blocked by safety guard (dangerous pattern detected)} ``` #### DĂ©sactiver les Restrictions (Risque de SĂ©curitĂ©) Si vous avez besoin que l'agent accĂšde Ă  des chemins en dehors du workspace : **MĂ©thode 1 : Fichier de configuration** ```json { "agents": { "defaults": { "restrict_to_workspace": false } } } ``` **MĂ©thode 2 : Variable d'environnement** ```bash export MALIKCLAW_AGENTS_DEFAULTS_RESTRICT_TO_WORKSPACE=false ``` > ⚠ **Attention** : DĂ©sactiver cette restriction permet Ă  l'agent d'accĂ©der Ă  n'importe quel chemin sur votre systĂšme. À utiliser avec prĂ©caution uniquement dans des environnements contrĂŽlĂ©s. #### CohĂ©rence du PĂ©rimĂštre de SĂ©curitĂ© Le paramĂštre `restrict_to_workspace` s'applique de maniĂšre cohĂ©rente sur tous les chemins d'exĂ©cution : | Chemin d'ExĂ©cution | PĂ©rimĂštre de SĂ©curitĂ© | |--------------------|----------------------| | Agent Principal | `restrict_to_workspace` ✅ | | Sous-agent / Spawn | HĂ©rite de la mĂȘme restriction ✅ | | TĂąches Heartbeat | HĂ©rite de la mĂȘme restriction ✅ | Tous les chemins partagent la mĂȘme restriction de workspace — il est impossible de contourner le pĂ©rimĂštre de sĂ©curitĂ© via des sous-agents ou des tĂąches planifiĂ©es. ### Heartbeat (TĂąches PĂ©riodiques) MalikClaw peut exĂ©cuter des tĂąches pĂ©riodiques automatiquement. CrĂ©ez un fichier `HEARTBEAT.md` dans votre workspace : ```markdown # TĂąches PĂ©riodiques - VĂ©rifier mes e-mails pour les messages importants - Consulter mon agenda pour les Ă©vĂ©nements Ă  venir - VĂ©rifier les prĂ©visions mĂ©tĂ©o ``` L'agent lira ce fichier toutes les 30 minutes (configurable) et exĂ©cutera les tĂąches Ă  l'aide des outils disponibles. #### TĂąches Asynchrones avec Spawn Pour les tĂąches de longue durĂ©e (recherche web, appels API), utilisez l'outil `spawn` pour crĂ©er un **sous-agent** : ```markdown # TĂąches PĂ©riodiques ## TĂąches Rapides (rĂ©ponse directe) - Indiquer l'heure actuelle ## TĂąches Longues (utiliser spawn pour l'asynchrone) - Rechercher les actualitĂ©s IA sur le web et les rĂ©sumer - VĂ©rifier les e-mails et signaler les messages importants ``` **Comportements clĂ©s :** | FonctionnalitĂ© | Description | |----------------|-------------| | **spawn** | CrĂ©e un sous-agent asynchrone, ne bloque pas le heartbeat | | **Contexte indĂ©pendant** | Le sous-agent a son propre contexte, sans historique de session | | **Outil message** | Le sous-agent communique directement avec l'utilisateur via l'outil message | | **Non-bloquant** | AprĂšs le spawn, le heartbeat continue vers la tĂąche suivante | #### Fonctionnement de la Communication du Sous-agent ``` Le Heartbeat se dĂ©clenche ↓ L'Agent lit HEARTBEAT.md ↓ Pour une tĂąche longue : spawn d'un sous-agent ↓ ↓ Continue la tĂąche suivante Le sous-agent travaille indĂ©pendamment ↓ ↓ Toutes les tĂąches terminĂ©es Le sous-agent utilise l'outil "message" ↓ ↓ RĂ©pond HEARTBEAT_OK L'utilisateur reçoit le rĂ©sultat directement ``` Le sous-agent a accĂšs aux outils (message, web_search, etc.) et peut communiquer avec l'utilisateur indĂ©pendamment sans passer par l'agent principal. **Configuration :** ```json { "heartbeat": { "enabled": true, "interval": 30 } } ``` | Option | Par dĂ©faut | Description | |--------|------------|-------------| | `enabled` | `true` | Activer/dĂ©sactiver le heartbeat | | `interval` | `30` | Intervalle de vĂ©rification en minutes (min : 5) | **Variables d'environnement :** * `MALIKCLAW_HEARTBEAT_ENABLED=false` pour dĂ©sactiver * `MALIKCLAW_HEARTBEAT_INTERVAL=60` pour modifier l'intervalle ### Fournisseurs > [!NOTE] > Groq fournit la transcription vocale gratuite via Whisper. Si configurĂ©, les messages audio de n'importe quel canal seront automatiquement transcrits au niveau de l'agent. | Fournisseur | Utilisation | Obtenir une ClĂ© API | | ------------------------ | ---------------------------------------- | ------------------------------------------------------ | | `gemini` | LLM (Gemini direct) | [aistudio.google.com](https://aistudio.google.com) | | `zhipu` | LLM (Zhipu direct) | [bigmodel.cn](bigmodel.cn) | | `volcengine` | LLM(Volcengine direct) | [volcengine.com](https://www.volcengine.com/activity/codingplan?utm_campaign=MalikClaw&utm_content=MalikClaw&utm_medium=devrel&utm_source=OWO&utm_term=MalikClaw) | | `openrouter` (À tester) | LLM (recommandĂ©, accĂšs Ă  tous les modĂšles) | [openrouter.ai](https://openrouter.ai) | | `anthropic` (À tester) | LLM (Claude direct) | [console.anthropic.com](https://console.anthropic.com) | | `openai` (À tester) | LLM (GPT direct) | [platform.openai.com](https://platform.openai.com) | | `deepseek` (À tester) | LLM (DeepSeek direct) | [platform.deepseek.com](https://platform.deepseek.com) | | `qwen` | LLM (Alibaba Qwen) | [dashscope.aliyuncs.com](https://dashscope.aliyuncs.com/compatible-mode/v1) | | `cerebras` | LLM (Cerebras) | [cerebras.ai](https://api.cerebras.ai/v1) | | `groq` | LLM + **Transcription vocale** (Whisper) | [console.groq.com](https://console.groq.com) |
Configuration Zhipu **1. Obtenir la clé API** * Obtenez la [clé API](https://bigmodel.cn/usercenter/proj-mgmt/apikeys) **2. Configurer** ```json { "agents": { "defaults": { "workspace": "~/.malikclaw/workspace", "model": "glm-4.7", "max_tokens": 8192, "temperature": 0.7, "max_tool_iterations": 20 } }, "providers": { "zhipu": { "api_key": "Votre Clé API", "api_base": "https://open.bigmodel.cn/api/paas/v4" } } } ``` **3. Lancer** ```bash malikclaw agent -m "Bonjour, comment ça va ?" ```
Exemple de configuration complĂšte ```json { "agents": { "defaults": { "model": "anthropic/claude-opus-4-5" } }, "providers": { "openrouter": { "api_key": "sk-or-v1-xxx" }, "groq": { "api_key": "gsk_xxx" } }, "channels": { "telegram": { "enabled": true, "token": "123456:ABC...", "allow_from": ["123456789"] }, "discord": { "enabled": true, "token": "", "allow_from": [""] }, "whatsapp": { "enabled": false }, "feishu": { "enabled": false, "app_id": "cli_xxx", "app_secret": "xxx", "encrypt_key": "", "verification_token": "", "allow_from": [] }, "qq": { "enabled": false, "app_id": "", "app_secret": "", "allow_from": [] } }, "tools": { "web": { "brave": { "enabled": false, "api_key": "BSA...", "max_results": 5 }, "duckduckgo": { "enabled": true, "max_results": 5 } }, "cron": { "exec_timeout_minutes": 5 } }, "heartbeat": { "enabled": true, "interval": 30 } } ```
### Configuration de ModĂšle (model_list) > **Nouveau !** MalikClaw utilise dĂ©sormais une approche de configuration **centrĂ©e sur le modĂšle**. SpĂ©cifiez simplement le format `fournisseur/modĂšle` (par exemple, `zhipu/glm-4.7`) pour ajouter de nouveaux fournisseurs—**aucune modification de code requise !** Cette conception permet Ă©galement le **support multi-agent** avec une sĂ©lection flexible de fournisseurs : - **DiffĂ©rents agents, diffĂ©rents fournisseurs** : Chaque agent peut utiliser son propre fournisseur LLM - **ModĂšles de secours (Fallbacks)** : Configurez des modĂšles primaires et de secours pour la rĂ©silience - **Équilibrage de charge** : RĂ©partissez les requĂȘtes sur plusieurs points de terminaison - **Configuration centralisĂ©e** : GĂ©rez tous les fournisseurs en un seul endroit #### 📋 Tous les Fournisseurs SupportĂ©s | Fournisseur | PrĂ©fixe `model` | API Base par DĂ©faut | Protocole | ClĂ© API | |-------------|-----------------|---------------------|----------|---------| | **OpenAI** | `openai/` | `https://api.openai.com/v1` | OpenAI | [Obtenir ClĂ©](https://platform.openai.com) | | **Anthropic** | `anthropic/` | `https://api.anthropic.com/v1` | Anthropic | [Obtenir ClĂ©](https://console.anthropic.com) | | **Zhipu AI (GLM)** | `zhipu/` | `https://open.bigmodel.cn/api/paas/v4` | OpenAI | [Obtenir ClĂ©](https://open.bigmodel.cn/usercenter/proj-mgmt/apikeys) | | **DeepSeek** | `deepseek/` | `https://api.deepseek.com/v1` | OpenAI | [Obtenir ClĂ©](https://platform.deepseek.com) | | **Google Gemini** | `gemini/` | `https://generativelanguage.googleapis.com/v1beta` | OpenAI | [Obtenir ClĂ©](https://aistudio.google.com/api-keys) | | **Groq** | `groq/` | `https://api.groq.com/openai/v1` | OpenAI | [Obtenir ClĂ©](https://console.groq.com) | | **Moonshot** | `moonshot/` | `https://api.moonshot.cn/v1` | OpenAI | [Obtenir ClĂ©](https://platform.moonshot.cn) | | **Qwen (Alibaba)** | `qwen/` | `https://dashscope.aliyuncs.com/compatible-mode/v1` | OpenAI | [Obtenir ClĂ©](https://dashscope.console.aliyun.com) | | **NVIDIA** | `nvidia/` | `https://integrate.api.nvidia.com/v1` | OpenAI | [Obtenir ClĂ©](https://build.nvidia.com) | | **Ollama** | `ollama/` | `http://localhost:11434/v1` | OpenAI | Local (pas de clĂ© nĂ©cessaire) | | **OpenRouter** | `openrouter/` | `https://openrouter.ai/api/v1` | OpenAI | [Obtenir ClĂ©](https://openrouter.ai/keys) | | **VLLM** | `vllm/` | `http://localhost:8000/v1` | OpenAI | Local | | **Cerebras** | `cerebras/` | `https://api.cerebras.ai/v1` | OpenAI | [Obtenir ClĂ©](https://cerebras.ai) | | **VolcEngine (Doubao)** | `volcengine/` | `https://ark.cn-beijing.volces.com/api/v3` | OpenAI | [Obtenir ClĂ©](https://www.volcengine.com/activity/codingplan?utm_campaign=MalikClaw&utm_content=MalikClaw&utm_medium=devrel&utm_source=OWO&utm_term=MalikClaw) | | **ShengsuanYun** | `shengsuanyun/` | `https://router.shengsuanyun.com/api/v1` | OpenAI | - | | **BytePlus** | `byteplus/` | `https://ark.ap-southeast.bytepluses.com/api/v3` | OpenAI | [Obtenir ClĂ©](https://www.byteplus.com/) | | **LongCat** | `longcat/` | `https://api.longcat.chat/openai` | OpenAI | [Obtenir une clĂ©](https://longcat.chat/platform) | | **ModelScope (魔搭)**| `modelscope/` | `https://api-inference.modelscope.cn/v1` | OpenAI | [Obtenir un Token](https://modelscope.cn/my/tokens) | | **Antigravity** | `antigravity/` | Google Cloud | Custom | OAuth uniquement | | **GitHub Copilot** | `github-copilot/` | `localhost:4321` | gRPC | - | #### Configuration de Base ```json { "model_list": [ { "model_name": "ark-code-latest", "model": "volcengine/ark-code-latest", "api_key": "sk-your-api-key" }, { "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_key": "sk-your-openai-key" }, { "model_name": "claude-sonnet-4.6", "model": "anthropic/claude-sonnet-4.6", "api_key": "sk-ant-your-key" }, { "model_name": "glm-4.7", "model": "zhipu/glm-4.7", "api_key": "your-zhipu-key" } ], "agents": { "defaults": { "model": "gpt-5.4" } } } ``` #### Exemples par Fournisseur **OpenAI** ```json { "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_key": "sk-..." } ``` **VolcEngine (Doubao)** ```json { "model_name": "ark-code-latest", "model": "volcengine/ark-code-latest", "api_key": "sk-..." } ``` **Zhipu AI (GLM)** ```json { "model_name": "glm-4.7", "model": "zhipu/glm-4.7", "api_key": "your-key" } ``` **Anthropic (avec OAuth)** ```json { "model_name": "claude-sonnet-4.6", "model": "anthropic/claude-sonnet-4.6", "auth_method": "oauth" } ``` > ExĂ©cutez `malikclaw auth login --provider anthropic` pour configurer les identifiants OAuth. **Proxy/API personnalisĂ©e** ```json { "model_name": "my-custom-model", "model": "openai/custom-model", "api_base": "https://my-proxy.com/v1", "api_key": "sk-...", "request_timeout": 300 } ``` #### Équilibrage de Charge Configurez plusieurs points de terminaison pour le mĂȘme nom de modĂšle—MalikClaw utilisera automatiquement le round-robin entre eux : ```json { "model_list": [ { "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_base": "https://api1.example.com/v1", "api_key": "sk-key1" }, { "model_name": "gpt-5.4", "model": "openai/gpt-5.4", "api_base": "https://api2.example.com/v1", "api_key": "sk-key2" } ] } ``` #### Migration depuis l'Ancienne Configuration `providers` L'ancienne configuration `providers` est **dĂ©prĂ©ciĂ©e** mais toujours supportĂ©e pour la rĂ©trocompatibilitĂ©. **Ancienne Configuration (dĂ©prĂ©ciĂ©e) :** ```json { "providers": { "zhipu": { "api_key": "your-key", "api_base": "https://open.bigmodel.cn/api/paas/v4" } }, "agents": { "defaults": { "provider": "zhipu", "model": "glm-4.7" } } } ``` **Nouvelle Configuration (recommandĂ©e) :** ```json { "model_list": [ { "model_name": "glm-4.7", "model": "zhipu/glm-4.7", "api_key": "your-key" } ], "agents": { "defaults": { "model": "glm-4.7" } } } ``` Pour le guide de migration dĂ©taillĂ©, voir [docs/migration/model-list-migration.md](docs/migration/model-list-migration.md). ## RĂ©fĂ©rence CLI | Commande | Description | | ------------------------- | ------------------------------------- | | `malikclaw onboard` | Initialiser la configuration & le workspace | | `malikclaw agent -m "..."` | Discuter avec l'agent | | `malikclaw agent` | Mode de discussion interactif | | `malikclaw gateway` | DĂ©marrer la passerelle | | `malikclaw status` | Afficher le statut | | `malikclaw cron list` | Lister toutes les tĂąches planifiĂ©es | | `malikclaw cron add ...` | Ajouter une tĂąche planifiĂ©e | ### TĂąches PlanifiĂ©es / Rappels MalikClaw prend en charge les rappels planifiĂ©s et les tĂąches rĂ©currentes via l'outil `cron` : * **Rappels ponctuels** : « Rappelle-moi dans 10 minutes » → se dĂ©clenche une fois aprĂšs 10 min * **TĂąches rĂ©currentes** : « Rappelle-moi toutes les 2 heures » → se dĂ©clenche toutes les 2 heures * **Expressions Cron** : « Rappelle-moi Ă  9h tous les jours » → utilise une expression cron Les tĂąches sont stockĂ©es dans `~/.malikclaw/workspace/cron/` et traitĂ©es automatiquement. ## đŸ€ Contribuer & Feuille de Route Les PR sont les bienvenues ! Le code source est volontairement petit et lisible. đŸ€— Feuille de route Ă  venir... Groupe de dĂ©veloppeurs en construction. Condition d'entrĂ©e : au moins 1 PR fusionnĂ©e. Groupes d'utilisateurs : Discord : MalikClaw ## 🐛 DĂ©pannage ### La recherche web affiche « API é…çœźé—źéą˜ » C'est normal si vous n'avez pas encore configurĂ© de clĂ© API de recherche. MalikClaw fournira des liens utiles pour la recherche manuelle. Pour activer la recherche web : 1. **Option 1 (RecommandĂ©)** : Obtenez une clĂ© API gratuite sur [https://brave.com/search/api](https://brave.com/search/api) (2000 requĂȘtes gratuites/mois) pour les meilleurs rĂ©sultats. 2. **Option 2 (Sans carte bancaire)** : Si vous n'avez pas de clĂ©, le systĂšme bascule automatiquement sur **DuckDuckGo** (aucune clĂ© requise). Ajoutez la clĂ© dans `~/.malikclaw/config.json` si vous utilisez Brave : ```json { "tools": { "web": { "brave": { "enabled": false, "api_key": "VOTRE_CLE_API_BRAVE", "max_results": 5 }, "duckduckgo": { "enabled": true, "max_results": 5 } } } } ``` ### Erreurs de filtrage de contenu Certains fournisseurs (comme Zhipu) disposent d'un filtrage de contenu. Essayez de reformuler votre requĂȘte ou utilisez un modĂšle diffĂ©rent. ### Le bot Telegram affiche « Conflict: terminated by other getUpdates » Cela se produit lorsqu'une autre instance du bot est en cours d'exĂ©cution. Assurez-vous qu'un seul `malikclaw gateway` fonctionne Ă  la fois. --- ## 📝 Comparaison des ClĂ©s API | Service | Offre Gratuite | Cas d'Utilisation | | ---------------- | -------------------- | ------------------------------------- | | **OpenRouter** | 200K tokens/mois | Multiples modĂšles (Claude, GPT-4, etc.) | | **Volcengine CodingPlan** | 9,9„/premier mois | IdĂ©al pour les utilisateurs chinois, multiples modĂšles SOTA (Doubao, DeepSeek, etc.) | | **Zhipu** | 200K tokens/mois | Convient aux utilisateurs chinois | | **Brave Search** | 2000 requĂȘtes/mois | FonctionnalitĂ© de recherche web | | **Groq** | Offre gratuite dispo | InfĂ©rence ultra-rapide (Llama, Mixtral) | | **ModelScope** | 2000 requĂȘtes/jour | InfĂ©rence gratuite (Qwen, GLM, DeepSeek, etc.) | ---
MalikClaw Meme