Documentation

Étapes de code

Le nœud code_step exécute une logique custom en sandbox Starlark — éditable librement, bornée par une allowlist de tools.

Étapes de code (code_step)

Certaines logiques sont trop spécifiques pour un opérateur compute, mais trop déterministes pour mériter un agent LLM : recoupements multi-sources, calculs métier sur-mesure, normalisations exotiques. Pour ces cas, le nœud code_step exécute du code dans une sandbox, sans appel LLM, avec une sortie prévisible.

Le code s'édite directement, comme n'importe quel champ de configuration, et s'exécute dès qu'il est sauvegardé.

Le modèle d'exécution

code_step exécute du Starlark — un dialecte de Python conçu pour l'isolation : pas d'accès au système de fichiers, pas de réseau, pas d'import arbitraire, déterministe, borné par un budget de temps. Le code ne voit que :

  • Les entrées que vous lui mappez explicitement (input_paths).
  • Les tools que vous l'autorisez à appeler (allowed_tools).

Tout le reste est hors de portée. Une étape de code ne peut pas atteindre une ressource que vous ne lui avez pas tendue.

Configuration

ChampRôle
CodeLa source Starlark exécutée, éditable directement.
Entrées (input_paths)Mapping variable → sélecteur. Seules ces clés du contexte sont exposées au code. Les clés internes (_*) sont refusées.
Allowlist toolsLes tools appelables via tool(nom, args). Chaque appel hérite des garde-fous du tool (SSRF, facturation, audit, killswitch).
Clé de sortieOù poser le résultat dans le contexte. Les nœuds aval lisent cette clé.
Budget d'exécutionPlafond de temps (ms), borné côté serveur. Une étape qui dépasse est interrompue.

Où est la frontière de sécurité

Le langage n'est pas la menace : Starlark est sandboxé par conception — il ne peut, à lui seul, ni lire un fichier, ni atteindre le réseau, ni boucler indéfiniment. Du code purement calculatoire est sans danger.

La seule capacité réelle est le pont tool(), et il est borné par l'allowlist appliquée au runtime : le code ne peut appeler que les tools que vous avez listés, et chacun porte ses propres garde-fous (SSRF, facturation, audit, killswitch). C'est là — sur le choix des tools — que vous cadrez ce qu'une étape peut faire.

Une allowlist vide = aucune capacité d'effet de bord : l'étape ne fait que calculer sur ses entrées et produire une sortie.

Quand l'utiliser

  • Oui : une logique déterministe que vous savez décrire précisément, mais qui dépasse les opérations compute livrées (réconciliation de plusieurs listes, règle métier composite, format propriétaire).
  • Non : un simple filtre, une agrégation, une projection → un opérateur compute suffit.
  • Non : une tâche qui demande du jugement ou de la rédaction → c'est un agent, pas du code.