Aller au contenu

Comment ça marche

D'un objectif à un plan que tu peux suivre

Six étapes, en boucle. Tu dis ce que tu veux. PO le planifie, ordonne les tâches, rappelle ce que le projet sait, lance le travail, le vérifie et garde ce qui a été appris. Sous chaque étape, tu peux ouvrir le détail technique.

Planifier → Ordonner → Rappeler → Exécuter → Vérifier → Apprendre, puis retour à Rappeler. Ce que l'étape 6 garde est ce que l'étape 3 rappelle au plan suivant.

La boucle

La boucle, étape par étape

Fais défiler : chaque image est dessinée comme les écrans du produit. L'exemple est un week-end d'équipe.

Étape 1 sur 6

Tu dis ce que tu veux, tu obtiens un plan

Tu décris le résultat en une phrase. L'assistant en fait un plan avec des tâches. Chaque tâche a des étapes, et chaque étape dit comment vérifier qu'elle est faite.

Sous le capot

Le résultat est enregistré comme un plan avec une priorité et ses contraintes, puis découpé en tâches. Chaque tâche dit de quoi elle dépend et liste ses étapes. Chaque étape porte la vérification qui prouve qu'elle est faite.

Les plans, les tâches et les étapes sont enregistrés comme des données, pas comme du texte libre dans une conversation. Les écrans et l'exécuteur lisent les mêmes statuts.

plan(action: "create", title, description, priority: 8, constraints: [{ constraint_type: "performance", … }])task(action: "create", plan_id, title, depends_on: [task_id], steps: [{ description, verification }])
  • Statut d’un plan : draft, approved, in_progress, completed, cancelled.
  • Types de contraintes : performance, security, style, compatibility, other.
  • code(action: "plan_implementation", auto_create_plan: true) rédige un plan à partir du graphe de code.

Étape 2 sur 6

Les tâches indépendantes avancent ensemble

PO trie les tâches. Une tâche n'attend que celles dont elle a besoin. Toutes les autres peuvent démarrer maintenant, en même temps.

Sous le capot

Une tâche ne démarre que quand tout ce dont elle dépend est terminé. PO transforme ces liens en vagues : la vague 1 contient chaque tâche sans prérequis en attente, la vague 2 ce que la vague 1 débloque, et ainsi de suite.

Les tâches d'une même vague sont indépendantes, donc elles tournent en même temps. La plus longue chaîne de dépendances, le chemin critique, fixe le nombre minimal de vagues.

plan(action: "get_waves", plan_id)plan(action: "get_critical_path", plan_id)
  • plan(action: "get_dependency_graph") renvoie le graphe orienté des tâches.
  • task(action: "get_next") renvoie la prochaine tâche débloquée, la plus prioritaire d’abord.
  • Quand une exécution reprend, les vagues sont recalculées et les vagues terminées sont sautées.

Étape 3 sur 6

L'assistant retrouve ce que le projet sait déjà

Avant chaque tâche, l'assistant lit les notes et les décisions qui s'appliquent. Il ne pose donc pas les mêmes questions encore une fois.

Sous le capot

Avant une tâche, l'assistant lit la mémoire du projet : les notes (avertissements, consignes, modèles), les décisions avec leurs raisons et, pour un projet de code, le code autour des fichiers qu'il va toucher. Une recherche par le sens trouve d'abord les meilleurs résultats.

Ensuite PO suit les liens entre les notes. Une note qui ne correspondait pas à la question peut quand même apparaître, parce qu'une note qui correspondait lui est fortement liée. Le lien s'affaiblit à chaque pas, et les notes éteintes sont écartées.

note(action: "search_semantic", query, project_slug)decision(action: "search_semantic", query)admin(action: "search_neurons", query, max_hops: 2)note(action: "get_context", entity_type: "file", entity_id)
  • Valeurs par défaut de la propagation : 20 notes de départ, 2 sauts, le signal est divisé par deux à chaque saut, 10 résultats.
  • 40 % des places de résultat sont réservées aux notes atteintes par des synapses.
  • Un score propagé vaut le score du parent x le poids de la synapse x l'énergie de la note x l'atténuation.

Étape 4 sur 6

Des assistants font les tâches, groupe par groupe

Chaque tâche va à son propre assistant. Les tâches d'un groupe tournent en même temps, et le groupe suivant attend.

Sous le capot

plan(action: "run") lance l'exécuteur sur sa propre branche git. Pour chaque vague, il démarre une session d'agent par tâche éligible et les lance en parallèle, jusqu'à une limite (4 par défaut).

Chaque tâche reçoit une consigne construite à partir de la mémoire du projet : sa description, ses étapes et ses contraintes, les notes qui lui sont liées, la persona et les skills qui correspondent, et un résumé de ce que les vagues précédentes ont fait. Un garde-fou surveille la session (inactivité, appels répétés, délais) et envoie un indice quand l'agent dérive.

plan(action: "run", plan_id, cwd, project_slug)plan(action: "run_status", plan_id)
  • Une tâche est classée simple, complexe ou créative d'après ses tags, ses étapes et ses fichiers. Ce profil fixe sa durée maximale et son budget.
  • Simple : 600 s et 0,50 $. Complexe : 3600 s et 2,00 $. Créative : 1800 s et 1,00 $.
  • Les exécutions sont enregistrées, donc une exécution peut reprendre après un redémarrage. plan(action: "cancel_run") en arrête une.

Étape 5 sur 6

Un groupe est fini quand ses vérifications passent

Avant le groupe suivant, PO vérifie le travail. Les étapes doivent être closes et aucun fichier sensible ne doit rester dans les changements. Pour un projet de code, PO vérifie aussi qu'il compile encore.

Sous le capot

Quand une vague se termine, l'exécuteur la vérifie avant de lancer la suivante. Il contrôle que les agents ont produit des commits, que chaque étape est terminée ou sautée, que le projet compile et que le diff ne contient aucun fichier sensible.

L'exécution elle-même est une machine à états. Un protocole de cycle de vie passe de approved à executing puis à post_run, et chaque passage exige un déclencheur explicite. Une tâche dont l'agent échoue ou dépasse le délai est relancée une fois par défaut, avec l'erreur comme contexte.

protocol(action: "transition", run_id, trigger: "child_completed")step(action: "get_progress", task_id)
  • Vérification du build : cargo check, npm run build ou go build ./..., selon le langage détecté.
  • Fichiers sensibles refusés : .env, credentials.json, *.pem, *.key et similaires.
  • Les tests sont une option, désactivée par défaut. plan-runner-reviewed ajoute un état awaiting_review pour une personne.

Étape 6 sur 6

Ce qui a été appris est gardé pour la prochaine fois

Quand le travail est fini, ce qui a été décidé et appris est réécrit dans la mémoire du projet. Le plan suivant part avec.

Sous le capot

Quand une tâche se termine, l'exécuteur réécrit sans appeler de modèle : il relie les commits à la tâche et au plan, crée une note de contexte à partir du journal git, et rattache les décisions aux fichiers qu'elles touchent.

L'assistant ajoute ce que lui seul sait : les décisions avec leurs alternatives, les avertissements, les modèles. Les notes utilisées ensemble se rapprochent. Les notes jamais utilisées perdent de l'énergie et deviennent périmées. Un épisode garde la demande, le chemin à travers les états et le résultat. Le plan suivant démarre à l'étape 3 avec tout cela.

decision(action: "add", task_id, rationale, alternatives)note(action: "create", note_type: "gotcha", content, anchors)episode(action: "collect", run_id, project_id)admin(action: "reinforce_neurons", note_ids)
  • La péremption grandit avec le temps écoulé depuis la dernière activité, à un rythme qui dépend du type de note. note(action: "confirm") la remet à zéro.
  • Les skills émergent de groupes de notes fortement liées (admin(action: "detect_skills")).

Responsabilités

Qui fait quoi

PO s'occupe de la mécanique, pour que l'assistant se concentre sur le travail.

PO le fait, sans qu’on le demande

  • Trie les tâches en groupes et démarre les assistants.
  • Vérifie chaque groupe : étapes closes, aucun fichier sensible, et le build pour un projet de code.
  • Relie les changements à la tâche et écrit une note sur ce qui s’est passé.
  • Garde les changements de chaque exécution sur sa propre branche git.
  • Enregistre quelles personas et quelles skills ont aidé.

L'assistant le fait, avec ses outils

  • Cherche les notes et les décisions avant de commencer.
  • Crée des plans, des tâches et des étapes, et met à jour leur statut.
  • Enregistre les décisions avec leurs alternatives et ce qu’elles touchent.
  • Écrit des avertissements, des consignes et des modèles, rattachés à ce dont ils parlent.
  • Fait avancer une procédure, étape par étape.

Points d'entrée

Trois façons de lancer la boucle

Depuis ton outil IA

Claude Code, Cursor ou un autre outil IA connecté à PO. Tu décris le résultat. Il planifie, ordonne et rappelle, puis garde ce qu'il a appris à la fin.

Depuis la conversation

La conversation intégrée à PO parle au même assistant. Chaque message porte les skills qui correspondent, les notes et les décisions qui s'appliquent, et ce qui est en cours.

Tout seul

Un plan peut tourner quand personne n'est là. Il démarre à une heure donnée ou quand un événement arrive, avec une pause entre deux démarrages. Les types de démarrage sont schedule, webhook, event et chat.

Mémoire

PO se souvient de ce que vous décidez et apprenez

Les notes, les décisions et les liens entre elles restent attachés à votre projet. PO les retrouve quand elles sont utiles. Faites défiler pour voir une mémoire se construire.

menu.pdfcaterer-quote.pdfallergies.xlsxinvoice.pdfoffers.pdfbadges.pptxQuote valid for 30 daysAllergy list sentCaterer chosen on March 5Contract signedInvitations sent on April 160 replies so farInvite partners too
FilePlanTaskNoteDecision

Exemple inventé : un petit projet d’événement. Les noms dans le graphe sont des illustrations, pas vos données. Les couleurs et les formes sont celles du graphe du produit.

  1. 1 sur 5

    Vos fichiers deviennent des points

    PO part de ce qui est dans le projet : documents, tableurs, fichiers. Chacun est un point bleu.

  2. 2 sur 5

    Les plans et les tâches arrivent

    Les plans et les tâches s’ajoutent au même schéma. Chaque tâche est liée aux fichiers qu’elle touche.

  3. 3 sur 5

    Notes et décisions restent liées

    Ce que vous apprenez devient une note. Ce que vous décidez devient une décision. Les deux restent liées aux fichiers et entre elles.

  4. 4 sur 5

    Ce qui se ressemble se regroupe

    Les éléments sur un même sujet se rapprochent. Vous voyez d’un coup d’œil les grands thèmes du projet.

  5. 5 sur 5

    PO trouve la réponse en suivant les liens

    Vous posez une question. PO trouve les notes qui correspondent (cyan). Puis il suit les liens vers les éléments voisins (violet), même si les mots sont différents.

Sous le capot : le nom des liens

Ce sont les noms que le produit donne aux liens de son graphe. Vous n’en avez pas besoin pour utiliser PO.

  • CONTAINSUn plan contient ses tâches.
  • IMPORTSUn fichier utilise un autre fichier.
  • AFFECTSUne tâche touche un fichier.
  • CO_CHANGEDDeux fichiers qui changent souvent ensemble, vu dans l’historique du code.
  • SYNAPSEUn lien entre des notes, des décisions et des fichiers. Les liens que personne n’utilise s’effacent.

Essaie

Regarde un assistant travailler avec PO

Choisis une demande. Tu vois la réponse en mots simples, et les appels que l'assistant fait à PO en coulisses. Ouvre un appel pour voir son détail.

Chat · team-weekendDémo simulée
Organize a weekend in June for my team of 12. We want a quiet place near a train station.

Two notes apply: the place must be close to a train station, and last year the menu had nothing vegetarian. I will write the plan around both.

The plan has 3 tasks in 2 waves. The shortlist and the date poll do not depend on each other, so they happen at the same time. Booking waits for both.

Réponses écrites d’avance. Aucun serveur contacté.

Démo simulée : les réponses sont écrites d'avance et aucun serveur n'est contacté. Les appels et leurs arguments sont les vrais.

Pour commencer

Donne une mémoire et un plan à tes agents

Installe l'orchestrateur, connecte Claude Code en MCP, et laisse ton premier agent lire le projet avant d'écrire une seule ligne.

Ou commence depuis le terminal

brew install this-rs/tap/project-orchestrator