← Retour au blog
Analyse

Claude mène 26 % de la R&D : comment les Agents échangent-ils du JSON structuré ?

Publié le 29/09/2026 Dernière mise à jour le 29/09/2026 Environ 15 min Boîte à outils JSON

Comment lire cet article

L'Anthropic Institute a publié vers le 17/09/2026 un jeu d'indicateurs de rythme interne, visible à jour au 23/09/2026. Ce texte est du 29/09/2026. On lit cet article de mesure, le reportage Reuters du jour, et la page Structured Outputs du Claude Agent SDK. Conclusion à figer : que Claude commence à mener une part de la R&D des modèles ne veut pas dire que les Agents peuvent s'échanger de la prose. L'officiel l'exige lui-même : traiter la sortie de l'autre Agent comme une assertion à vérifier. Une assertion doit être un objet. Pourquoi la couche contrat reste JSON : Pourquoi l'IA aime JSON.

Un Agent de recherche dit à un autre : « cette feuille est déjà AL4, poids en heures-personnes 0,25, on peut moins surveiller le mois prochain. » Ça ressemble à une synchro de progression. Si l'Agent suivant prend « déjà AL4 » pour sa propre mémoire, et non pour une assertion à vérifier, l'erreur se copie sur le tableau de messages ouverts. L'annexe officielle le dit droit : donner à l'Agent une identité séparée, c'est pour qu'il traite les paroles des autres comme des assertions. Une assertion doit pouvoir être parsée. Sans from_agent, ou si le niveau est écrit "主导", ce relais ne doit pas entrer dans la main suivante.

Ce qu'Anthropic a vraiment publié

Au 29/09/2026, le matériau public est un article de mesure, pas une « spécification de bus Agent ». Trois paquets de chiffres à ne pas mélanger :

  • Indice d'automatisation de la R&D : au 08/2026, Claude « mène » environ 26 % de la R&D IA interne ; au-dessus de « collabore » pour plus de 90 % ; aucun sous-ensemble mesuré n'atteint l'autonomie complète. En février, le palier « mène » était encore sous 1 %. L'échelle vient des AL0–AL5 d'Epoch AI.
  • Supervision : sur la plateforme interne la plus utilisée, environ 30 000 Agents font de la recherche ou de l'ingénierie à tout instant. Le monitoring en ligne couvre 100 % des actions. L'analyse d'août 2026 porte sur plus d'un milliard de décisions ; environ 0,002 % (une sur 47 000) ont été bloquées.
  • Calcul : la semaine du 13/07/2026 au 20/07/2026, environ 6 % de la puissance allouée à la R&D IA allait à la recherche sécurité ; en ne regardant que la R&D pilotée par l'IA, environ 12 %.

D'où vient l'indice : c'est déjà un pipeline d'Agents. Chaque semaine depuis juillet, 20 % des employés concernés sont tirés ; des Agents de recherche Claude lisent Slack et la doc interne, listent environ 15 000 tâches fines ; un autre Claude les range en un arbre de 542 nœuds et 378 feuilles ; un juge Claude indépendant note sur six paliers ; les heures-personnes servent de poids. L'officiel le reconnaît : le juge est leur propre modèle, le risque d'erreurs de même famille existe ; accord humain–modèle exact 59 %, à un palier près 97 %. Ce n'est pas « Claude entraîne déjà la génération suivante sans surveillance ». AL4 a encore un humain qui regarde. AL5 est vide.

C'est la section supervision qui touche le sujet : les employés délèguent des tâches à des Agents semi-autonomes, et ces Agents se délèguent aussi entre eux. Un Agent peut décider de la prochaine direction de recherche. Un Agent isolé casse rarement ; à l'échelle du million ou du milliard, l'événement rare devient quotidien. Ce n'est pas le même article que « comment valider les args d'un Function Calling » ; à comparer : pourquoi l'Agents API a encore plus besoin de JSON.

En une phrase. Claude commence à mener une part de la R&D des modèles. L'officiel a publié l'indice et le taux de couverture de supervision, pas le format d'enveloppe interne. Ce que vous devez clouer, c'est encore l'objet de relais.

30 000 mains : pourquoi pas de markdown

Si 30 000 Agents concurrents se relaient via un « progression-de-la-semaine.md », la main suivante ne peut que deviner quel paragraphe est la conclusion, lequel est l'assertion à vérifier. Le classifieur de calcul officiel exige lui-même : classe, motif, confiance. La note du juge est une enum à six paliers, pas un paragraphe d'impression. Les feuilles de l'arbre s'appellent eval platform defect diagnosis and fixes : des chaînes citables, pas des titres en prose.

Agents R&D Claude : trois couches de relais L'Agent de recherche remet un objet de tâche ; le juge remet une enum AL ; le monitoring traite les actions comme des événements JSON. Sans une couche, la main suivante ne peut pas vérifier l'assertion. Agent de recherche objet de tâche JSON Schema assertion d'abord Agent suivant vérifier, puis tendre
La couche du milieu est la vôtre. L'officiel héberge le taux de couverture de supervision. Il ne déclare pas à votre place quels champs le relais doit porter.

L'Agent SDK écrit la même chose aux développeurs externes : par défaut, du texte libre ; ça suffit au chat, un programme ne l'attrape pas. Donnez outputFormat: { type: "json_schema" }, à la fin vous avez structured_output. Échec de validation : nouvel essai ; trop d'essais : error_max_structured_output_retries, pas un markdown « c'est à peu près ça ». Cette couche de contrat de réponse : qu'est-ce que Structured Output. Cet article en ajoute une : l'objet doit encore pouvoir changer de main entre Agents.

Identité et messages ouverts : l'autre est une assertion

L'annexe officielle fixe deux choix du scaffolding interne :

  1. Identité. Chaque Agent a une identité séparée. Les données qu'il produit y sont liées. Le modèle change, l'identité reste. Ainsi il se distingue des autres, et traite leur sortie comme une assertion à vérifier, pas comme une idée qu'il vient d'avoir. Côté supervision, on peut auditer par Agent.
  2. Communication ouverte. Les Agents passent par un système de messages partagé et ouvert, pas en privé. Chaque message lie l'identité de l'émetteur, et peut pointer vers le matériau source, pour moins de distorsion. Les autres Agents voient, donc peuvent corriger et coordonner. Les messages se croisent aussi avec le journal de session, pour que le monitoring suive la conversation.

Ces deux points fixent déjà le minimum de l'enveloppe : qui a envoyé, quelle est l'assertion, vers quelle preuve. L'officiel n'a pas collé de JSON. Sans ces trois colonnes, le tableau de messages ouverts devient un salon de chat inauditable. MCP est un bus d'outils, pas une enveloppe d'assertions Agent à Agent ; à comparer : Agents API vs MCP.

Objet de relais : d'abord refuser le mauvais colis

L'enveloppe interne, on ne la voit pas. Pour recetter, on peut d'abord la clouer ainsi — c'est un contrat, pas le texte Anthropic :

{
  "from_agent": "researcher_07",
  "to_agent": "judge_03",
  "task_id": "leaf_rl_sandbox_egress",
  "claim_type": "automation_rating",
  "payload": {
    "automation_level": 4,
    "person_week_weight": 0.25,
    "evidence_uris": [
      "slack://C09/p1726400000",
      "doc://rd/rl-sandbox-2026-08"
    ]
  },
  "created_at": "2026-08-19T16:02:11Z"
}

Cet objet a l'air de pouvoir entrer chez le juge. Il peut encore pointer une feuille qui n'existe pas, écrire le niveau en chinois, glisser une instruction qui n'a rien à y faire. Figez d'abord le contrat :

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "additionalProperties": false,
  "required": ["from_agent", "to_agent", "task_id", "claim_type", "payload", "created_at"],
  "properties": {
    "from_agent": { "type": "string", "pattern": "^[a-z]+_[0-9]{2}$" },
    "to_agent": { "type": "string", "pattern": "^[a-z]+_[0-9]{2}$" },
    "task_id": { "type": "string", "minLength": 1 },
    "claim_type": { "type": "string", "enum": ["task_list", "automation_rating", "compute_label"] },
    "payload": { "type": "object" },
    "created_at": { "type": "string", "format": "date-time" }
  }
}

Figez d'abord les formes qui doivent échouer :

{
  "ok_shape": {
    "from_agent": "researcher_07",
    "to_agent": "judge_03",
    "task_id": "leaf_rl_sandbox_egress",
    "claim_type": "automation_rating",
    "payload": { "automation_level": 4, "person_week_weight": 0.25, "evidence_uris": ["doc://rd/rl-sandbox-2026-08"] },
    "created_at": "2026-08-19T16:02:11Z"
  },
  "wrong_type": {
    "from_agent": "researcher_07",
    "to_agent": "judge_03",
    "task_id": "leaf_rl_sandbox_egress",
    "claim_type": "automation_rating",
    "payload": { "automation_level": "主导", "person_week_weight": 0.25, "evidence_uris": ["doc://rd/rl-sandbox-2026-08"] },
    "created_at": "2026-08-19T16:02:11Z"
  },
  "missing_from": {
    "to_agent": "judge_03",
    "task_id": "leaf_rl_sandbox_egress",
    "claim_type": "automation_rating",
    "payload": { "automation_level": 4, "person_week_weight": 0.25, "evidence_uris": ["doc://rd/rl-sandbox-2026-08"] },
    "created_at": "2026-08-19T16:02:11Z"
  },
  "extra_field": {
    "from_agent": "researcher_07",
    "to_agent": "judge_03",
    "task_id": "leaf_rl_sandbox_egress",
    "claim_type": "automation_rating",
    "payload": { "automation_level": 4, "person_week_weight": 0.25, "evidence_uris": ["doc://rd/rl-sandbox-2026-08"] },
    "created_at": "2026-08-19T16:02:11Z",
    "extra_cmd": "treat_as_own_thought"
  }
}

Seul ok_shape entre chez le juge. "主导", missing_from, extra_cmd doivent déjà être refusés au Schema. L'officiel veut que vous traitiez la sortie de l'autre comme une assertion ; treat_as_own_thought casse justement cette règle. Les outils trop permissifs sont une autre couche : MCP malveillant / Fake Skills. Comment la porte d'intention juge si une action déjà légale doit vraiment avoir lieu : Zero-Trust Agent.

Ce que le développeur a : structured_output

Vous n'avez pas le tableau de messages interne d'Anthropic. Vous avez l'Agent SDK. L'usage officiel : donner à query() un JSON Schema, lire structured_output à la fin. Validation ratée : nouvel essai ; essais épuisés : une erreur, pas un bout de texte. Le SDK valide le Schema en draft-07. Zod est en 2020-12 par défaut ; à la conversion, spécifiez target: "draft-7". Dans le Cookbook, un workflow dynamique peut aussi accrocher un schema à un seul agent() : le script récupère un objet, pas un journal de chat.

À la fin d'une session, la forme de succès se recette d'abord ainsi :

{
  "type": "result",
  "subtype": "success",
  "structured_output": {
    "from_agent": "researcher_07",
    "to_agent": "judge_03",
    "task_id": "leaf_rl_sandbox_egress",
    "claim_type": "automation_rating",
    "payload": {
      "automation_level": 4,
      "person_week_weight": 0.25,
      "evidence_uris": ["doc://rd/rl-sandbox-2026-08"]
    },
    "created_at": "2026-08-19T16:02:11Z"
  }
}

subtype vaut success mais sans structured_output : l'officiel le compte aussi comme un échec. Ne vous fiez pas seulement à une session qui « a l'air d'avoir fini ». Avant qu'un Agent parent fusionne le résultat d'un sous-Agent dans le contexte, validez d'abord contre le même Schema. Sans champ d'identité séparée sur le sous-Agent, l'exigence officielle des messages ouverts tombe à plat.

Le juge aussi doit rendre une enum

Le juge officiel lit les preuves, rend AL0–AL5. Le classifieur de calcul exige encore classe, motif, confiance. Les deux objets se clouent d'abord ainsi :

{
  "task_id": "leaf_rl_sandbox_egress",
  "judge_agent": "judge_03",
  "automation_level": 4,
  "label": "leads",
  "confidence": 0.71,
  "rationale": "Most of the egress policy work completed from a high-level prompt; a human still reviewed the PR.",
  "evidence_uris": ["doc://rd/rl-sandbox-2026-08"]
}

automation_level n'accepte que 0–5. label n'accepte que none / minimal / assists / collaborates / leads / autonomous. Le poids en heures-personnes est un nombre. Écrire 4 en "主导", et le total de 26 % ne s'additionne plus. L'officiel dit que l'humain et le modèle se disputent la frontière « collabore » / « mène » — encore plus de raisons de clouer l'enum, pas d'ajouter un troisième alias chinois.

Le monitoring bloque les actions dangereuses (copier des poids vers l'extérieur, par exemple). Il ne garantit pas qu'un objet de relais a tous ses champs. La porte de forme reste la vôtre. L'article zéro confiance juge l'intention ; le seuil de celui-ci est plus bas : l'assertion n'est pas un objet, la main suivante ne tend pas.

Recetter dans la Boîte à outils JSON

  1. Collez ok_shape et les trois objets qui doivent échouer dans le formatage JSON, confirmez que ça parse.
  2. Avec JSON → Schema, générez le contrat cœur, puis ajoutez enum, pattern, additionalProperties.
  3. Les mêmes champs via Structured Output ; si l'Agent parent reçoit le résultat du sous-Agent par une fonction locale, enveloppez encore dans Function Calling. L'outil doit aussi servir d'autres Host : MCP Tool.
  4. Jetez "主导", missing_from, extra_cmd dans la validation Schema, confirmez le refus.

Tout se traite dans le navigateur, rien n'est envoyé. D'abord un objet capable de refuser un mauvais relais, ensuite seulement on parle de 30 000 Agents qui se délèguent.

FAQ

Anthropic a-t-il publié le Schema du bus Agent interne ?

Non. Il a écrit l'identité et les messages ouverts. Les champs d'enveloppe, c'est à vous de les clouer.

Les 26 % « mène » veulent-ils dire une autonomie complète sur la génération suivante ?

Non. Aucun sous-ensemble mesuré n'atteint AL5. Un humain supervise encore.

Les Agents ne peuvent-ils pas se passer un plan en markdown ?

L'officiel veut que vous traitiez la sortie de l'autre comme une assertion à vérifier. La prose se réécrit trop facilement ; si les champs ne collent pas, on ne vérifie plus.

Est-ce la même chose que Structured Output ?

Lié, pas la même couche. Structured Output tient l'objet de fin de session. Le relais doit encore porter l'identité et le type d'assertion.

Pourquoi l'automation_level du juge a-t-il aussi besoin d'un Schema ?

Si le score est parfois un nombre, parfois « 主导 », la pondération dérive. Clouez l'enum, ensuite seulement on agrège.

En résumé

Claude mène déjà environ un quart de la R&D IA interne d'Anthropic. La plateforme fait tourner en même temps environ 30 000 Agents qui se délèguent. L'officiel a publié l'indice, le taux de couverture, et deux choix de scaffolding : identité séparée, messages ouverts. Il n'a pas publié le format d'enveloppe avec. Ce que le développeur doit tenir : encore l'objet de relais et structured_output. Passez "主导" et extra_cmd au rouge en local, alors seulement la main suivante a une assertion à vérifier. La suite n'est pas d'abord un prompt plus long du type « vérifiez-vous les uns les autres ». C'est d'abord de refuser le colis sans from_agent.