Human-in-the-Loop

Interface éphémère dans le navigateur pour permettre au propriétaire de donner son retour à l'agent : approuver et modifier un document par sections, répondre à des questions ouvertes avec des options prédéfinies, étiqueter des données en aveugle pour un étalon, ou évaluer des propositions sur une échelle. La page est générée par un script à partir d'un spec.json, le propriétaire clique sur « Copier le JSON pour l'agent », et l'agent applique les réponses.

Qu'est-ce que Human-in-the-Loop ?

Ce skill permet à un agent IA de déléguer des tâches d'évaluation, d'approbation et d'étiquetage complexes à un humain via une interface web légère et autonome, plutôt que via un long questionnaire textuel dans le chat. Le processus est déclenché par la création d'un fichier `spec.json` décrivant la tâche, qui peut être généré automatiquement à partir d'un document Markdown. Un script `build.py` construit une page HTML statique que l'humain ouvre dans son navigateur, remplit à son rythme, et à partir de laquelle il exporte un JSON structuré contenant uniquement ses modifications. L'agent applique ensuite ces réponses au document ou au flux de travail original. Le skill supporte plusieurs cas d'usage : révision de documents par sections, choix multiples, étiquetage en aveugle pour évaluation, et notation sur échelle. Il est conçu pour des agents comme Claude Code ou Codex, et inclut des tests automatisés via `selftest.py`.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/vasilievyakov/human-in-the-loop/tree/HEAD/skills/human-in-the-loop

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Human in the Loop

Couche d'interfaces éphémères entre le propriétaire et l'agent. L'agent décrit ce que le propriétaire doit examiner et décider, le script construit une page HTML autonome, le propriétaire répond dans le navigateur dans n'importe quel ordre et renvoie un JSON. La page n'est pas écrite à la main : seulement spec.json et scripts/build.py.

$SKILL ci-dessous désigne le dossier de ce fichier.

Quand utiliser

  • Document à approuver : spec, PRD, proposition, plan. Statut par sections, modification du texte sur place, réponses aux questions ouvertes.
  • Choix parmi des variantes pour plusieurs questions à la fois, chaque question ayant des options de l'agent et une réponse libre.
  • Étiquetage en aveugle d'un étalon : le propriétaire répond, les réponses du modèle se trouvent dans un fichier séparé et ne sont pas incluses dans la page, puis score.py calcule la correspondance.
  • Évaluation de propositions sur une échelle.

Si la question est unique ou double, demande-la dans le chat.

Cycle

  1. Spec. Construis spec.json (format : references/spec-format.md). Pour un document Markdown, il existe un modèle : python3 $SKILL/scripts/from_markdown.py doc.md --options options.json -o spec.json (les sections ## et ### deviennent des blocs avec édition, la section « Questions ouvertes » devient des questions avec les options de options.json). Pour l'étiquetage en aveugle, place les réponses cachées dans un sidecar.json séparé, elles ne doivent pas apparaître dans spec.json.
  2. Page. python3 $SKILL/scripts/build.py spec.json -o page.html construit et ouvre la page. Place spec et la page à côté du projet (par exemple dans private/), pas dans le scratchpad, afin que le propriétaire puisse y revenir. Dis au propriétaire en une ligne ce qui est ouvert et ce que tu attends de lui.
  3. Le propriétaire répond puis insère le JSON dans le chat (bouton « Copier le JSON pour l'agent »). Le JSON contient uniquement ce qu'il a touché : status, comment, markdown_old/markdown_new, answers, notes, plus decision et general_comment.
  4. L'agent applique les réponses en fonction du champ task du JSON et rend compte de ce qu'il a modifié et de ce qui reste. Un decision vide alors que des boutons de décision existent signifie que la décision n'a pas été prise : redemande, ne considère pas le document comme approuvé. Pour l'étiquetage : sauvegarde le JSON et exécute python3 $SKILL/scripts/score.py labels.json sidecar.json --spec spec.json. Affiche les divergences au propriétaire sous forme de liste ; ne corrige pas toi-même les erreurs d'étiquetage.

Si le spec change, la page est reconstruite avec la nouvelle version ; les anciennes réponses dans le navigateur ne s'y appliquent pas.

Vérification

python3 $SKILL/tests/selftest.py [dossier] construit les deux exemples du dossier examples/, les parcourt dans un Chromium sans tête et vérifie les exportations. Lance-le après toute modification du modèle ou des scripts.

Skills associés