Intervention humaine pour Eve

Votre agent Eve peut interroger une personne sur son téléphone.

Un fichier dans agent/channels envoie chaque demande d’approbation de votre agent Eve sur le téléphone de votre utilisateur.

Ce que propose Eve

approval: always(), never(), once()

Eve aborde bien ce point. Les outils acceptent un champ approval, et eve/tools/approval fournit always(), never() et once(). Le moteur vérifie la politique avant execute, au lieu de faire confiance au modèle pour appeler un outil de question. Un outil ask_question est aussi intégré.

natif
// agent/tools/issue-refund.ts
import { defineTool } from "eve/tools"
import { always } from "eve/tools/approval"
import { z } from "zod"

export default defineTool({
  description: "Refund an order",
  inputSchema: z.object({ amount: z.number() }),
  approval: always(),
  execute: async ({ amount }) => refund(amount),
})

Le point de blocage

  • Les fonctions décident à l’avance. always() pose la question à chaque appel, ce qui habitue les personnes à approuver sans lire.
  • La personne présente dans le canal configuré répond. Les fonctions intégrées ne peuvent pas interroger un utilisateur précis de votre produit.
  • Une approbation reste un événement dans un canal. Aucun historique consultable ou exportable n’est constitué.

La solution

Pushary recueille la réponse de votre utilisateur.

Eve suspend le tour et affiche les approbations sous forme de boutons Slack. Le canal Pushary place la même demande sur le téléphone de votre utilisateur, attend sa réponse sans maintenir de connexion ouverte et l’enregistre.

pusharyChannel() traite chaque demande sur laquelle Eve se met en pause : tout outil doté d’un champ approval, ainsi que l’outil intégré ask_question. Votre utilisateur touche Approuver ou Refuser sur son téléphone, puis le tour reprend. Rien ne s’exécute pendant sa décision : une approbation peut attendre des heures.

bash
npm i @pushary/eve
un fichier
// agent/channels/pushary.ts
import { pusharyChannel } from "@pushary/eve"
export default pusharyChannel()

Ou posez une question explicitement depuis un outil

Le canal couvre les pauses déjà prévues par Eve. Pour poser une question qui n’arrêterait pas Eve, ajoutez deux fichiers d’outils. pusharyAskHuman() attend la réponse et pusharyConnectPhone() renvoie le lien de connexion. Le modèle choisit quand appeler l’outil de question : celui-ci ne peut donc pas bloquer un remboursement. Pour cela, placez pusharyApproval() dans le champ approval de l’outil de remboursement.

deux fichiers d’outils
// agent/tools/ask-human.ts
import { pusharyAskHuman } from "@pushary/eve"
export default pusharyAskHuman()

// agent/tools/connect-phone.ts
import { pusharyConnectPhone } from "@pushary/eve"
export default pusharyConnectPhone()

Fonctionnement

De l’installation à la première réponse

Connectez votre utilisateur une seule fois. Exigez son approbation à l’étape sensible. Pushary envoie la question, attend la réponse et l’enregistre.

  1. 01

    Installez le package

    Exécutez npm i @pushary/eve. Définissez PUSHARY_API_KEY et PUSHARY_WEBHOOK_SECRET, ainsi que PUSHARY_CALLBACK_ORIGIN si l’agent n’est pas sur Vercel.

  2. 02

    Connectez votre utilisateur une seule fois

    pusharyConnectPhone() renvoie un lien. Votre utilisateur l’ouvre une fois sur son téléphone avec l’application Pushary gratuite. Sans compte ni paiement.

  3. 03

    Ajoutez le fichier du canal

    Créez agent/channels/pushary.ts avec pusharyChannel() comme export par défaut. Protégez les outils sensibles avec le champ approval d’Eve et utilisez une authentification par utilisateur pour que chacun réponde pour sa session.

  4. 04

    Agissez selon la réponse

    La réponse est envoyée à la route de réponse, qui vérifie deux signatures et reprend le tour suspendu. Un non, une demande expirée ou l’absence de réponse empêche l’outil de s’exécuter.

Une question peut demander un oui ou un non, un choix dans une liste ou une réponse écrite. Chaque réponse est enregistrée.

Avant la mise en production

Les pièges à éviter avec Eve

once() ne mémorise qu’un oui explicite
Un refus, ou une poursuite sans réponse, laisse l’outil sans approbation enregistrée : l’appel suivant repose donc la question. Ce comportement sûr surprend ceux qui interprètent once() comme « demander une seule fois ». Il utilise aussi le seul nom de l’outil et ignore les clés d’approbation composées.
Le canal exige une origine publique et échoue à l’exécution
pusharyChannel construit une URL de rappel signée à partir de PUSHARY_CALLBACK_ORIGIN (ou VERCEL_PROJECT_PRODUCTION_URL) et vérifie les réponses avec PUSHARY_WEBHOOK_SECRET. Aucun des deux n’est contrôlé à la compilation : une valeur manquante produit un déploiement fonctionnel mais incapable de recevoir les réponses. Définissez les deux avant la mise en production.
Une session partagée ne sait pas qui interroger
L’outil de question et la politique d’approbation utilisent par défaut l’utilisateur connecté à la session. Une session partagée ou au niveau de l’application n’en a pas : ils lèvent donc une erreur plutôt que d’interroger la mauvaise personne. Passez votre propre identifiant utilisateur ou utilisez une authentification par utilisateur.

L’offre Partner

Votre agent interroge vos utilisateurs, pas seulement vous

Proposez votre agent à vos utilisateurs. Chacun approuve ses actions sensibles depuis son téléphone, sous votre marque.

$99/ mois, tous les frameworks inclus
Start free

Vos utilisateurs ne créent jamais de compte Pushary et ne nous paient rien.

Vos utilisateurs répondent sur leur propre téléphone

Connectez chaque utilisateur une seule fois avec un lien. Il installe l’application Pushary gratuite et répond depuis l’écran verrouillé, sans créer de compte.

Sans réponse, c’est non

Exécutez l’action uniquement après une approbation explicite. Une demande en attente, expirée ou annulée ne vaut jamais un oui. Pushary conserve chaque demande : votre code peut la reprendre après un redémarrage.

Joignez-les sur leur téléphone

L’application passe en premier, car elle seule affiche Approuver et Refuser sur l’écran verrouillé. Les notifications du navigateur viennent ensuite. Vous n’avez aucun système d’envoi à construire.

Chaque réponse est enregistrée

Chaque réponse est enregistrée avec son auteur et sa date. Vous pouvez effectuer des recherches et exporter les réponses. Avec une URL de rappel, chaque réponse est aussi envoyée à votre serveur par webhook signé.

FAQ

Les réponses à vos questions

Existe-t-il un package Pushary pour Eve ?
Oui. @pushary/eve est disponible sur npm. Il exporte pusharyChannel() pour agent/channels, pusharyApproval() pour le champ approval d’un outil, et pusharyAskHuman() ainsi que pusharyConnectPhone() comme fichiers d’outils. @pushary/eve-extension propose aussi les deux outils sous forme d’extension montable.
Que couvre le canal Pushary ?
Chaque demande sur laquelle Eve se met en pause : tout outil protégé par approval de eve/tools/approval, ainsi que ask_question intégré. Eve les affiche comme boutons dans Slack. Le canal envoie les mêmes demandes sur le téléphone de votre utilisateur par notification push et reprend le tour à sa réponse.
Qui le canal interroge-t-il par défaut ?
L’utilisateur connecté à la session. Utilisez une authentification par utilisateur pour que chacun ait sa propre identité et que le canal l’interroge. Pour toujours demander à une personne fixe, avec un agent mono-utilisateur ou une exécution programmée, passez votre propre identifiant utilisateur à pusharyChannel().
Que se passe-t-il si personne ne répond à une confirmation Eve ?
L’outil ne s’exécute pas. Une confirmation refusée, expirée ou sans réponse vaut une non-approbation : l’agent ignore l’action et peut expliquer son arrêt. Pushary conserve la demande : une question sans réponse reste donc visible ensuite.
Cela fonctionne-t-il si une session Eve reprend plus tard ?
Oui. Eve enregistre la session suspendue et Pushary conserve la demande de son côté, indépendamment. La demande ne réside pas dans le processus qui l’a créée : une session qui reprend des minutes ou des heures plus tard retrouve la réponse donnée par votre utilisateur.
Mes utilisateurs ont-ils besoin d’un compte ou de l’application Pushary ?
Pas de compte, mais de l’application Pushary gratuite. Ils ouvrent votre lien de connexion une fois sur leur téléphone, associé à votre propre identifiant utilisateur. Ils ne s’inscrivent jamais chez Pushary, ne nous paient rien et ne détiennent aucune clé.

Laissez votre agent Eve demander avant d’agir.

Connectez un utilisateur une seule fois, posez une question en un appel et exécutez l’action uniquement après un oui. Chaque réponse est enregistrée.

Start free

Offre Partner, $99 par mois. Vos utilisateurs ne créent jamais de compte Pushary et ne nous paient rien.