Skip to main content
Les plugins de backend CLI permettent à OpenClaw d’appeler une CLI d’IA locale comme backend d’inférence textuelle. Le backend apparaît comme préfixe de fournisseur dans les références de modèles :
Utilisez un backend CLI lorsque l’intégration en amont est déjà exposée sous forme de commande locale, lorsque la CLI gère l’état de connexion local ou comme solution de repli lorsque les fournisseurs d’API sont indisponibles.
Si le service en amont expose une API HTTP de modèle standard, écrivez plutôt un plugin de fournisseur. Si l’environnement d’exécution en amont gère des sessions d’agent complètes, les événements d’outils, la Compaction ou l’état des tâches en arrière-plan, utilisez un environnement d’agent.

Responsabilités du plugin

Un plugin de backend CLI comporte trois contrats : Le manifeste contient les métadonnées de découverte : il n’exécute pas la CLI et n’enregistre aucun comportement d’exécution. Le comportement d’exécution commence lorsque le point d’entrée du plugin appelle api.registerCliBackend(...).

Plugin de backend minimal

1

Créer les métadonnées du paquet

package.json
Les paquets publiés doivent inclure les fichiers JavaScript d’exécution compilés. Si votre point d’entrée source est ./src/index.ts, ajoutez openclaw.runtimeExtensions en le faisant pointer vers le fichier JavaScript compilé correspondant. Consultez Points d’entrée.
2

Déclarer la propriété du backend

openclaw.plugin.json
cliBackends est la liste de propriété à l’exécution ; elle permet à OpenClaw de charger automatiquement le plugin lorsque la configuration ou la sélection du modèle mentionne acme-cli/....setup.cliBackends est la surface de configuration fondée en priorité sur les descripteurs. Ajoutez-la lorsque la découverte de modèles, l’intégration initiale ou l’état doivent reconnaître le backend sans charger l’exécution du plugin. Utilisez requiresRuntime: false uniquement lorsque ces descripteurs statiques suffisent à la configuration.
3

Enregistrer le backend

index.ts
L’identifiant du backend doit correspondre à l’entrée cliBackends du manifeste. La config enregistrée ne constitue que la valeur par défaut ; la configuration utilisateur sous agents.defaults.cliBackends.acme-cli est fusionnée par-dessus lors de l’exécution.

Structure de la configuration

CliBackendConfig décrit comment OpenClaw doit lancer et analyser la CLI : Privilégiez la plus petite configuration statique correspondant à la CLI. Ajoutez des rappels du plugin uniquement pour les comportements qui relèvent réellement du backend.

Points d’extension avancés du backend

CliBackendPlugin peut également définir : Conservez ces points d’extension sous la responsabilité du fournisseur. N’ajoutez pas de branches propres à la CLI au cœur lorsqu’un point d’extension du backend peut exprimer le comportement. runtimeArtifact appartient au plugin et ne peut pas être remplacé par l’utilisateur. Il n’est consulté que lorsqu’un tour d’inférence en direct crée ou revalide une autorité de configuration vérifiée ; les exécutions CLI normales ne l’exigent pas. Un backend dépourvu de cette déclaration ne peut pas créer d’autorité de configuration CLI vérifiée. Une déclaration bundled-package-tree nomme le propriétaire exact du package.json et exige que le point d’entrée du paquet soit la commande. OpenClaw calcule le hachage de l’intégralité de l’arborescence limitée du paquet installé, y compris les dépendances imbriquées, et échoue de manière sécurisée en cas de liens symboliques redirigés, de lanceurs situés en dehors du paquet déclaré, de déclarations de dépendances externes requises, d’arborescences surdimensionnées et de scripts inconnus. Ne déclarez cela que lorsque cette arborescence contient l’implémentation complète de l’inférence ; les intégrations d’outils facultatives ne sécurisent pas un graphe d’implémentation externe. Si le même backend fournit également un exécutable natif autonome, répertoriez ses noms de base canoniques dans nativeExecutableNames. Les autres commandes natives restent non vérifiées même lorsqu’un utilisateur remplace la commande du backend. ctx.executionMode vaut "agent" pour les tours normaux et "side-question" pour les appels éphémères /btw. Utilisez-le lorsque la CLI nécessite des options ponctuelles différentes, par exemple pour désactiver les outils natifs, la persistance de session ou le comportement de reprise pour BTW. Si un backend possède normalement nativeToolMode: "always-on", mais que ses arguments de question annexe désactivent ces outils de manière fiable, définissez également sideQuestionToolMode: "disabled" ; sinon, OpenClaw applique un refus sécurisé lorsque BTW nécessite une exécution de la CLI sans outils. Définissez nativeToolMode: "selectable" uniquement lorsque resolveExecutionArgs peut désactiver chaque outil natif du backend pour une exécution donnée. Pour ces exécutions restreintes, ctx.toolAvailability.native est un tuple vide et ctx.toolAvailability.mcp est la liste d’autorisation MCP exacte isolée par l’hôte. Le hook doit remplacer les options d’outils contradictoires et renvoyer des arguments qui imposent les deux valeurs ; OpenClaw l’appelle une fois avec les arguments finaux d’une nouvelle exécution ou d’une reprise, et applique un refus sécurisé lorsque le backend ne peut pas faire respecter la restriction. Dans ce contexte, les noms MCP peuvent être approuvés automatiquement en toute sécurité uniquement parce que l’hôte a déjà limité la configuration MCP générée à ces serveurs et outils.

ownsNativeCompaction : désactiver la Compaction d’OpenClaw

Si votre backend exécute un agent qui compacte sa propre transcription, définissez ownsNativeCompaction: true afin que le synthétiseur de protection d’OpenClaw ne s’exécute jamais sur ses sessions : le cycle de vie de Compaction de la CLI n’effectue aucune opération et le tour se poursuit. claude-cli le déclare, car Claude Code effectue la Compaction en interne sans point de terminaison du harnais. Les sessions de harnais natif telles que Codex continuent plutôt d’être acheminées vers le point de terminaison de Compaction de leur harnais. Ne le déclarez que si toutes les conditions suivantes sont remplies, faute de quoi une session différée dépassant le budget peut rester hors budget ou devenir obsolète (OpenClaw ne la récupère plus) :
  • le backend compacte ou limite de manière fiable sa propre transcription à l’approche de sa fenêtre ;
  • il conserve une session reprenable afin que l’état compacté persiste entre les tours (par exemple --resume / --session-id) ;
  • il ne s’agit pas d’une session de Compaction de harnais natif : les sessions correspondant à agentHarnessId sont plutôt acheminées vers le point de terminaison du harnais.

Pont d’outils MCP

Par défaut, les backends CLI ne reçoivent pas les outils OpenClaw. Si la CLI peut utiliser une configuration MCP, activez-la explicitement :
Modes de pont pris en charge : N’activez le pont que lorsque la CLI peut réellement l’utiliser. Si la CLI possède sa propre couche d’outils intégrée qui ne peut pas être désactivée, définissez nativeToolMode: "always-on" afin qu’OpenClaw puisse appliquer un refus sécurisé lorsqu’un appelant exige l’absence d’outils natifs. Si elle peut désactiver tous les outils natifs à chaque exécution, utilisez "selectable" avec le contrat resolveExecutionArgs décrit ci-dessus.

Configuration utilisateur

Les utilisateurs peuvent remplacer n’importe quelle valeur par défaut du backend :
Documentez la substitution minimale dont les utilisateurs auront probablement besoin, généralement uniquement command lorsque le binaire se trouve en dehors de PATH.

Vérification

Pour les plugins intégrés, ajoutez un test ciblé portant sur le générateur et l’enregistrement de la configuration, puis exécutez la voie de test ciblée du plugin :
Pour les plugins locaux ou installés, vérifiez la découverte et une véritable exécution du modèle :
Si le backend prend en charge les images ou MCP, ajoutez un test de fumée en conditions réelles qui valide ces parcours avec la véritable CLI. Ne vous fiez pas à une inspection statique pour le comportement des invites, des images, de MCP ou de la reprise de session.

Liste de contrôle

package.json contient openclaw.extensions et des entrées d’exécution compilées pour les paquets publiés
openclaw.plugin.json déclare cliBackends et une valeur intentionnelle pour activation.onStartup
setup.cliBackends est présent lorsque la configuration ou la découverte de modèles doit détecter le backend à froid
api.registerCliBackend(...) utilise le même identifiant de backend que le manifeste
Les substitutions utilisateur sous agents.defaults.cliBackends.<id> restent prioritaires
Les paramètres de session, d’invite système, d’image et d’analyseur de sortie correspondent au véritable contrat de la CLI
Des tests ciblés et au moins un test de fumée réel de la CLI valident le parcours du backend

Pages connexes