Du ticket à la pull request relue.
Gratuit et open source, sur votre machine.
English · 简体中文 · 日本語 · 한국어 · Español · Français · Deutsch · Português (Brasil)
getnohuman.com · Démarrage rapide · Documentation · Voyez-le abattre un sprint entier · Discord
▶ Voir la boucle — un ticket en entrée, une pull request relue en sortie ; toute la boucle en 57 secondes.
Ce document est une traduction du README anglais. En cas de divergence, la version anglaise fait foi. Les documents liés sont pour l'instant tous en anglais.
L'usine de code par IA à laquelle vous pouvez faire confiance :
- Un plan avant la moindre ligne de code, établi à partir du ticket et de ce qu'il trouve dans votre dépôt. Quand la planification échoue, on indique au codeur qu'il travaille sans plan ; quand le changement est jugé trivial, le plan est ignoré sans le dire au codeur, et c'est voulu — l'omission reste consignée dans le flux d'événements de l'exécution.
- Une relecture contradictoire. Un autre modèle, dans une session qui n'a jamais vu la transcription du codeur, chargé de réfuter le « terminé ». Vous obtenez une checklist réussite/échec citant fichier et ligne — jamais une auto-notation chiffrée.
- Un garde-fou anti-altération. Tests supprimés, nouveaux skips, assertion transformée en tautologie : le tout est compté mécaniquement avant que le contrôle de relecture ne s'exécute, puis justifié au regard de vos critères d'acceptation, faute de quoi la tentative s'arrête.
- La preuve que le correctif corrige bien le bug. Les tests présentés comme
preuve doivent échouer sur la base de fusion et réussir sur le nouvel arbre —
le contrôle de reproduction exécute les deux. Par défaut, cela s'applique aux
corrections de bugs Python ;
repro_gate.mode: requiredl'applique à tous les types de tâches et à tous les changements. - Vos tests sont exécutés, en local et, si vous le voulez, via votre CI — et une PR pour laquelle aucune commande de test n'a été trouvée affiche NOT RUN noir sur blanc.
- Un arrêt honnête. Quand il ne peut pas finir, il s'arrête et dit pourquoi : une question précise si votre réponse le débloquerait, un compte rendu structuré s'il a simplement épuisé son budget — jamais un diff plausible inventé.
uv tool install no-human # ou : pipx install no-human — le wheel embarque le tableau
nh init && nh doctor # token, config, premier dépôt ; puis vérifiez que l'installation tient deboutChaque release livre un SHA-256 à côté de l'artefact. Notes par plateforme et parcours du premier lancement : docs/quickstart.md.
git clone https://github.com/no-human-ai/no_human.git && cd no_human
uv sync # installe le point d'entrée `nh` dans .venv
(cd web && npm install && npm run build) # construit le tableau (à froid, la première installation peut prendre plusieurs minutes)
uv run nh init # token, config, premier dépôt (environ 2 minutes)
uv run nh doctor # vérifiez que l'installation tient debout avant de compter dessusLe build de web n'est pas facultatif si vous voulez le tableau : un clone des
sources ne contient aucun web/dist, donc sans lui nh start ne sert que
l'API et n'affiche aucune interface. Nécessite Python 3.12+,
uv, git, et Node avec npm pour le build du
tableau.
Captures : le vrai tableau sur une charge de démonstration.
Lancez nh sans argument pour ouvrir le shell : vos colonnes, un flux
d'événements en direct, et un champ de saisie où vous décrivez une tâche en
langage courant. Toutes les commandes ci-dessous restent valables.
nh # le shell
nh start # tableau + worker sur 127.0.0.1:8420
nh task add https://github.com/org/repo/issues/42 --repo ~/git/repo
nh status # needs-you / working / waiting / done
nh review <id> # la checklist de preuves du relecteur
nh diff <id> # le diff qu'il veut livrer
nh approve <id> # votre approbation fusionne la PR en squash (git.approve_identity)
nh reject <id> --reason "..." # renvoie la tâche avec des remarquesPointez no_human vers l'outil de suivi que vous utilisez déjà et il fait remonter les tickets sur votre tableau — le filtre d'un outil de suivi vit dans votre configuration, jamais dans le texte d'une tâche, et une erreur de transport est journalisée puis réessayée au tick suivant au lieu de faire tomber le pool.
| Outil de suivi | Comment les tickets arrivent | Filtre à configurer |
|---|---|---|
| Jira Cloud | Polling de l'API REST search/jql (HTTP Basic email:token) |
integrations.jira.jql |
| Linear | Polling de l'API GraphQL | integrations.linear.team_key + state_types + label |
| monday.com | Polling de l'API GraphQL v2 | integrations.monday.board_id + status_column + todo_labels |
Avec l'écriture en retour activée (write_back, désactivée par défaut), le
ticket suit la tâche — la correspondance se fait par catégorie de statut, par
type, ou par le label que vous indiquez, jamais par un id de transition codé en
dur — et reçoit le lien de la PR ; une tâche qui a besoin d'un humain reçoit un
commentaire, jamais une transition. Les issues GitHub et
GitLab s'importent comme tâches par URL, et les PR ou MR s'ouvrent sur votre
propre hôte ; Slack et Teams reçoivent un message quand une tâche a besoin de
vous ; Jenkins et CircleCI peuvent exécuter vos couches de tests et conditionner
la boucle. Configuration de chacun :
docs/adapters.md.
Voyez le flux Jira de bout en bout — des tickets synchronisés depuis un tableau Jira, cadrés, implémentés, puis livrés sous forme de pull request ayant passé la relecture (cliquez pour la vidéo complète, étape par étape) :
no_human embarque un serveur MCP (Model Context Protocol) : un pont stdio, construit sur le SDK MCP Python officiel, qui permet à Claude Code, Cursor ou n'importe quel client MCP de déposer du travail auprès de votre no_human local et d'en suivre l'avancement.
nh mcp-serve # le serveur MCP, via stdioDeux outils, pas un de plus :
| Outil | Ce qu'il fait |
|---|---|
task_add(title, description, repo_path) |
Dépose une tâche. no_human la planifie ensuite, écrit le changement, exécute vos tests, la fait relire par un second modèle, et ouvre la pull request. |
task_status(task_id_or_external_id) |
Renvoie l'état courant de cette tâche — statut, tentatives, et le lien de la PR dès qu'il y en a un. |
Il ne parle qu'à votre propre no_human, sur http://127.0.0.1:8420, et à rien
d'autre : pas d'authentification, parce que cette adresse est localhost, et
aucun service à nous entre les deux. Pour Claude Code, le même serveur est
distribué comme plugin — ce dépôt est sa propre marketplace de plugins, si bien
que les deux outils apparaissent dans votre session après :
/plugin marketplace add no-human-ai/no_human
/plugin install no-human@no-human-aiTout autre client MCP se configure avec l'entrée stdio habituelle :
| quickstart.md | De zéro à la première tâche, par plateforme |
| configuration.md | Chaque réglage et sa valeur par défaut |
| verification.md | Les contrôles, la boucle bornée, les limites |
| security.md | Périmètre d'authentification, la règle « jamais de merge », les garde-fous |
| blockers.md | Escalade, wake watcher, nh reply |
| adapters.md | Ingestion, contexte, backends VCS et CI |
| eval.md | Jeu de référence, scoring par rejeu, mode shadow |
| CHANGELOG.md | Ce qui a changé, version par version |
uv sync
uv run pytest -q
uv run nh --helpLes issues et les pull requests sont les bienvenues ; lancez uv run pytest -q
avant de soumettre.
Si no_human vous a évité un cycle de relecture, une étoile aide d'autres
personnes à le découvrir :
Questions, rapports de bugs et exécutions qui méritent d'être montrées : rejoignez le Discord, postez sur r/no_human, ou ouvrez une GitHub issue.
MIT — voir LICENSE. La licence couvre le code, pas le nom : TRADEMARK.md est la politique d'usage du nom « no_human » et du logo. Empaqueter un binaire entraîne des obligations que l'arbre des sources n'a pas ; elles sont listées dans THIRD-PARTY-NOTICES.md.








