Skip to main content
Le couple X.agent / X.py est normatif. Le programme déclare les capacités ; l’hôte homonyme les implémente.

Déclarer un outil

Un outil non déclaré n’existe pas. Un argument absent, inconnu ou mal typé est refusé avant le moteur de politiques.

Implémenter l’hôte

endpoint_guard.py
La fonction build() peut renvoyer (host, llm). Pour une société, elle peut renvoyer des dictionnaires indexés par nom d’agent.

API de l’hôte

Enregistrez une fonction sans argument sous le chemin déclaré dans OBSERVE.
Enregistrez une fonction dont les arguments correspondent au contrat INPUT.
Affectez host.approver. Seuls True ou un mot d’accord explicite sont acceptés. Toute valeur ambiguë, y compris la chaîne "no", refuse.
Injectez une charge utile avec emit; le runtime la récupère via drain.
Enregistrez un callable sous le nom du contrat utilisé par DELEGATE.
Pour l’exécution durable : déclarez qu’un outil honore la clé d’idempotence, ou dites après une panne si l’action a eu lieu.
Un capteur qui lit un texte écrit par un tiers le déclare. La valeur reçoit la source EXTERNAL ; l’hôte ne peut jamais rendre une valeur fiable.

Le permis du noyau

Depuis la v1.9, host.invoke et host.subagents exigent un permis émis par le noyau après la politique et l’approbation. Un appel direct lève PermitError. Pour tester un outil, appelez la fonction enregistrée (host.tools["x"](**args)) ou agentl.kernel.testing.dispatch(host, "x", args).
Un validateur doit lever pour refuser une cible. Tout appel d’outil réussi atteste ses arguments pour ATTESTED(x, outil), même s’il répond « non ».

Garder la frontière honnête

Le test pratique est simple : si une politique de l’entreprise changeait demain, cette ligne Python devrait-elle changer ? Si oui, la décision appartient probablement au .agent.
Rendez des mesures brutes : un code HTTP, un nombre de tentatives, un identifiant. Laissez le programme décider si ces valeurs signifient « sain », « urgent » ou « autorisé ».

Échec fermé

  • capteur absent : la valeur reste indéterminée ;
  • outil absent : l’invocation lève une erreur ;
  • appel sans permis du noyau : PermitError ;
  • outil interrompu par une panne ou un délai : action indéterminée, jamais présumée réussie ;
  • approbateur absent : la demande est refusée ;
  • LLM absent : MockLLM permet de conserver un flux déterministe lorsqu’il convient.

Analyser la frontière

Détectez les comparaisons, filtres et seuils métier cachés dans l’hôte.