AutoSaddler : des agents qui réécrivent leur propre harnais
Permettez aux agents de proposer des améliorations des harnais au sein des portes d’évaluation afin que la self-modification reste mesurable.
Utilisez ceci comme une version révisée destinée aux opérateurs des idées présentées dans « AutoSaddler : Enseigner aux agents IA à améliorer leur propre harnais » : étapes claires, emplacements de code ordonnés et notes de récupération qui survivent au transfert de tâches. L’aperçu fonctionne le mieux lorsqu’il est considéré comme une surface mesurable. Capturez un enregistrement exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Préférez des unités petites et testables à des scripts complexes. Lorsqu’une étape échoue, l’échec doit pointer vers une seule responsabilité plutôt que vers un processus embrouillé.
Le problème : les agents échouent pour des raisons allant au-delà du modèle
Pour résoudre le problème : les agents échouent pour des raisons allant au-delà du modèle ; il convient donc de définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définites des vérifications de succès et refusez les terminaisons partielles silencieuses. Préférez des sorties structurées avec validation de schéma plutôt que du texte libre lorsque l’étape suivante consiste en du code ou une appel à outil.
AI Agent
│
┌──────────┴──────────┐
│ │
Model Harness
│
┌─────────────────┼─────────────────┐
│ │ │
Prompts Tools Middleware
│ │ │
└─────────────────┼─────────────────┘
│
Agent Loop Logic
│
▼
Execution
│
▼
Trace
De l’ingénierie des prompts à l’ingénierie de l’exploitation
Que ce soit pour l’ingénierie des prompts ou l’ingénierie d’exploitation, il convient de définir les entrées, le responsable de chaque étape ainsi que les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts permet d’éviter des factures inattendues lorsque le processus passe de l’environnement de démonstration à des environnements partagés. Préférez les sorties structurées avec validation de schéma aux textes libres lorsque l’étape suivante consiste en du code ou une appel à outil.
Gestion des correctifs
Pour les correctifs Steering, définissez les entrées, le responsable de l’étape et les critères de sortie avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les flags fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Authentifiez-vous au niveau du gateway et réautorisez-vous au niveau du plan de données. Un simple token porteur ne constitue pas une frontière entre les tenants. Pour les correctifs Steering, définissez les entrées, le responsable de l’étape et les critères de sortie avant de modifier le code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un pipeline embrouillé.
Correctifs de capacités
Lorsque vous travaillez sur des correctifs de capacité, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définez des vérifications de succès et refusez les terminations partielles silencieuses. Enregistrez le nom de l’outil, le hash des arguments, la latence et le résultat pour chaque appel. Sans cette trace, les boucles d’agent de débogage gaspillent des heures.
Les traces d’exécution deviennent le signal d’entraînement
Lorsque l’on travaille avec des traces d’exécution qui servent de signal d’entraînement, il faut d’abord établir le cahier des charges : les entrées requises, le signal de succès, ainsi que ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Notez les temps d’exécution ainsi que le coût en tokens ou requêtes à côté des résultats fonctionnels. Une visibilité précoce du coût évite des factures inattendues lorsque le parcours passe de l’environnement de démonstration à des environnements partagés. Enregistrez le nom outil, l’hash des arguments, la latence et le résultat de chaque appel. Sans cette trace, le débogage de boucles d’agent prend des heures inutilement.
Task
↓
Model reasoning / response
↓
Tool selection
↓
Tool arguments
↓
Tool result
↓
Middleware
↓
Next model action
↓
Final answer
↓
Evaluation
Task failed
│
▼
Agent never inspected repository metadata
│
▼
Why?
│
▼
Tool existed but description didn't expose its purpose
│
▼
Diagnosis
│
▼
Update tool description
│
▼
Evaluate again
Boucle d’optimisation d’AutoSaddler
Lorsque vous travaillez sur le cycle d’optimisation d’AutoSaddler, notez d’abord les exigences : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de garantir l’intégrité des modifications ultérieures du code. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du système. Enregistrez le nom outil, le hash des arguments, la latence et le résultat de chaque appel. Sans ces traces, le débogage des boucles d’agent prend des heures. Lorsque vous travaillez sur le cycle d’optimisation d’AutoSaddler, notez d’abord les exigences : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de garantir l’intégrité des modifications ultérieures du code. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’erreur doit indiquer une seule responsabilité et non un processus embrouillé.
Training Cases
│
▼
Run Agent
│
▼
Execution Traces
│
▼
┌───────────────────┐
│ Diagnosis-Patch │
│ │
│ Find root cause │
│ Propose patch │
└─────────┬─────────┘
│
▼
New Candidate
│
▼
Evaluate
│
┌─────────┴─────────┐
│ │
Improved Regressed
│ │
└─────────┬─────────┘
▼
Reflection
│
▼
Reusable Lessons
│
▼
EvoDAG
│
▼
Candidate Evolution
│
▼
Development Gate
│
▼
Best Generalizing Harness
1. Diagnostic-Patch : identifier le véritable problème
- Le Diagnostic-Patch : identifier le véritable problème fonctionne le mieux lorsqu’il est traité comme une surface mesurable. Capturez un enregistrement exemplaire, un cas d’échec ainsi que la note de réversion avant d’élargir le périmètre. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Nommez les artefacts, définites des critères de succès et refusez toute complétion partielle silencieuse. Exposez des outils dotés de schémas restreints et de labels explicites indiquant les effets secondaires. Les hôtes doivent savoir quels appels modifient l’état avant d’approuver automatiquement.
2. Réflexion : tirer des leçons du résultat
- Réflexion : apprendre des résultats fonctionne le mieux lorsqu’ils sont considérés comme une donnée mesurable. Enregistrez un exemple réussi, un cas d’échec ainsi que la note de réversion avant d’élargir le périmètre. Notez les temps d’exécution ainsi que le coût en tokens ou requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe d’un environnement de démonstration à des environnements partagés. Mettez à disposition des outils dotés de schémas restreints et de labels explicites indiquant les effets secondaires. Les hôtes doivent savoir quels appels modifient l’état avant d’approuver automatiquement.
Patch:
Add stronger instruction to inspect repository metadata.
Observed:
✓ Fixed cases A, B, C
✓ Existing cases remain stable
✗ Case D still failsLesson:
Instruction improves metadata discovery,
but does not address downstream tool selection.
3. Évolution : n’oubliez pas ce qui a fonctionné
- Évolution : n’oubliez pas que ce qui a fonctionné le mieux est ce qui peut être mesuré. Capturez un exemple parfait de fonctionnement, un cas d’échec et les notes de réversion avant d’élargir le périmètre. Gardez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système. Exposez des outils dotés de schémas restreints et de labels explicites indiquant les effets secondaires. Les hôtes doivent savoir quels appels modifient l’état du système avant de valider automatiquement ces actions.
- Évolution : n’oubliez pas que ce qui a fonctionné le mieux est ce qui peut être mesuré. Capturez un exemple parfait de fonctionnement, un cas d’échec et les notes de réversion avant d’élargir le périmètre. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’erreur doit permettre d’identifier une seule responsabilité plutôt qu’un ensemble de processus embrouillés.
Patch 1 → Patch 2 → Patch 3
Base
/ | \
/ | \
P1 P2 P3
│ / \ │
│ / \ │
P4 P5 P6 P7
\ /
\ /
P8
La mesure de protection la plus importante : la généralisation
Pour assurer la mesure de protection la plus importante, à savoir la généralisation, il convient de définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définites des vérifications de succès et refusez toute exécution partielle silencieuse. Authentifiez-vous au niveau du gateway et réautorisez-vous au niveau du plan de données. Un simple token porteur ne constitue pas une frontière entre les tenants.
Training cases
│
▼
Generate candidate
│
▼
Evaluate
│
▼
Development split
│
▼
Does the improvement generalize?
│
┌──┴──┐
│ │
Yes No
│ │
▼ ▼
Keep Reject
Pourquoi une exécution fiable est importante
Pour comprendre pourquoi une exécution fiable est importante, il convient de définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Enregistrez les temps d’exécution ainsi que le coût des jetons ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts permet d’éviter des factures inattendues lorsque le processus passe de l’environnement de démonstration à des environnements partagés. Authentifiez-vous au niveau du gateway et réautorisez-vous au niveau du plan de données. Un simple jeton porteur ne constitue pas une frontière entre les tenants.
Run
│
▼
Append-only Events
│
┌─────────────┼─────────────┐
▼ ▼ ▼
Candidates Evaluations Sessions
│ │ │
└─────────────┼─────────────┘
▼
Snapshot
│
▼
Final Result
La reproductibilité est considérée comme une priorité absolue
Comme la reproductibilité est considérée comme une priorité absolue, il convient de définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les flags fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans avoir à lire l’ensemble du système. Authentifiez-vous au niveau du gateway et réautorisez-vous au niveau du plan de données. Un simple token porteur ne constitue pas une frontière entre les tenants. Comme la reproductibilité est considérée comme une priorité absolue, il convient de définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité plutôt que
plutôt qu’un ensemble de pipelines emmêlés.Candidate A
│
├── Prompt version X
├── Harness commit Y
├── Dataset revision Z
└── Model configuration M
V1 vs V2
Lorsque vous travaillez sur la comparaison entre V1 et V2, notez d’abord les conditions contractuelles : entrées requises, signal de succès, et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de maintenir l’honnêteté des modifications ultérieures du code. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définez des vérifications de succès, et refusez les terminations partielles silencieuses. Enregistrez le nom de l’outil, le hash des arguments, la latence et le résultat de chaque appel. Sans cette trace, les boucles d’analyse des erreurs perdent des heures.
V1
Lors du travail sur la version V1, notez d’abord le contrat : les entrées requises, le signal de succès, ainsi que ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite des factures inattendues lorsque le système passe de l’environnement de démonstration à des environnements partagés. Journalisez le nom outil, l’hash des arguments, la latence et le résultat de chaque appel. Sans ce suivi, le débogage de boucles d’agent prend des heures inutilement.
V2
Lors du travail sur la version V2, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de garantir l’intégrité des modifications ultérieures du code. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du système. Enregistrez le nom de l’outil, le hash des arguments, la latence et le résultat de chaque appel. Sans ces traces, le débogage de processus en boucle perd des heures. Lors du travail sur la version V2, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de garantir l’intégrité des modifications ultérieures du code. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’erreur doit indiquer une seule responsabilité et non un processus embrouillé.
AutoSaddler Core
│
Scenario Plugin
│
┌───────────────┼───────────────┐
▼ ▼ ▼
Harness Benchmark Evaluator
│ │ │
└───────────────┼───────────────┘
▼
Evidence Builder
│
▼
Optimizer Engine
Les plugins rendent l’idée extensible
Les plugins rendent l’idée d’extensibilité efficace lorsqu’ils sont considérés comme une surface mesurable. Capturez un transcript exemplaire, un cas d’échec et la note de réversion avant d’élargir le périmètre. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Nommez les artefacts, définites des critères de succès et refusez toute mise en œuvre partielle silencieuse. Exposez des outils dotés de schémas restreints et de labels explicites indiquant leurs effets secondaires. Les hôtes doivent savoir quels appels modifient l’état avant d’approuver automatiquement.
AutoSaddler
│
┌───────────┼───────────┐
▼ ▼ ▼
Agent A Agent B Agent C
│ │ │
Plugin A Plugin B Plugin C
Qu’est-ce qui rend AutoSaddler différent ?
Qu’est-ce qui rend AutoSaddler différent ? Il fonctionne le mieux lorsqu’il est considéré comme une surface mesurable. Capturez un exemple réussi, un cas d’échec ainsi que la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe d’un environnement de démonstration à des environnements partagés. Faites appel à des outils dotés de schémas restreints et de labels explicites indiquant les effets secondaires. Les hôtes doivent savoir quels appels modifient l’état avant d’approuver automatiquement.
1. Il optimise l’ensemble du système
- Cette approche optimise l’ensemble du système lorsqu’il est considéré comme une surface mesurable. Il convient de recueillir un exemple idéal, un cas d’échec et des notes de réversion avant d’élargir le périmètre. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans devoir lire l’ensemble du système.
- Cette approche optimise l’ensemble du système lorsqu’il est considéré comme une surface mesurable. Il convient de recueillir un exemple idéal, un cas d’échec et des notes de réversion avant d’élargir le périmètre. Préférez des unités petites et testables aux scripts complexes. Lorsqu’une étape échoue, l’erreur doit indiquer une responsabilité précise plutôt qu’un processus embrouillé.
2. Elle diagnostique avant de modifier
Pour le point 2, il diagnostique avant de modifier : il faut définir les entrées, le responsable de l’étape et les critères d’arrêt avant de changer du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définites des vérifications de succès et refusez les terminations partielles silencieuses. Authentifiez-vous au niveau du gateway et réautorisez-vous au niveau du plan de données. Un simple token porteur ne constitue pas une frontière entre les tenants.
3. Il utilise des interventions structurées
Pour le point 3, des interventions structurées sont utilisées : il convient de définir les entrées, le responsable de chaque étape ainsi que les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu, sans avoir à deviner l’état caché. Il faut enregistrer les temps d’exécution ainsi que le coût des jetons ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts permet d’éviter des factures inattendues lorsque le processus passe de l’environnement de démonstration à des environnements partagés. L’authentification a lieu au niveau du gateway, tandis que la réautorisation s’effectue au niveau du plan de données. Un simple jeton porteur ne constitue pas une frontière entre les différents services.
4. Il apprend à partir des régressions
Pour le point 4 : il apprend à partir des régressions ; il faut définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Conservez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les opérateurs peuvent auditer sans avoir à lire l’ensemble du système. Authentifiez-vous au niveau du gateway et réautorisez-vous au niveau du plan de données. Un simple token porteur ne constitue pas une frontière entre les tenants. Pour le point 4 : il apprend à partir des régressions ; il faut définir les entrées, le responsable de l’étape et les critères d’arrêt avant de modifier du code. Les opérateurs doivent pouvoir relancer l’étape à partir d’un point de contrôle connu sans deviner l’état caché. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’échec doit indiquer une seule responsabilité et non un pipeline embrouillé.
5. Il optimise pour la généralisation
Lorsque vous travaillez sur le point 5, il optimise pour la généralisation, notez d’abord les conditions requises : entrées nécessaires, signal de succès, et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définez des vérifications de succès, et refusez les terminations partielles silencieuses. Enregistrez le nom de l’outil, le hash des arguments, la latence et le résultat de chaque appel. Sans ce suivi, les boucles d’analyse des erreurs perdent des heures.
6. Il conserve l’histoire évolutive
Lorsque vous travaillez sur la section 6, qui conserve l’histoire évolutive, notez d’abord le contrat : les entrées requises, le signal de succès et ce qui se passe en cas d’échec partiel. Cette liste de contrôle permet de rester honnête lors des modifications ultérieures du code. Enregistrez les temps d’exécution ainsi que le coût en tokens ou en requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le processus passe de l’environnement de démonstration à des environnements partagés. Conservez le nom outil, l’hash des arguments, la latence et le résultat de chaque appel. Sans ce suivi, les boucles d’analyse des erreurs perdent des heures précieuses.
7. Il est durable
Lorsque vous travaillez sur le point 7 – la durabilité –, notez d’abord les conditions du contrat : entrées requises, signal de succès et conséquences en cas d’échec partiel. Cette liste de contrôle permet de garantir l’honnêteté des modifications ultérieures du code. Gardez la configuration en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du système. Enregistrez le nom de l’outil, le hash des arguments, la latence et le résultat de chaque appel. Sans ces traces, le débogage devient une perte de temps considérable. Lorsque vous travaillez sur le point 7 – la durabilité –, notez d’abord les conditions du contrat : entrées requises, signal de succès et conséquences en cas d’échec partiel. Cette liste de contrôle permet de garantir l’honnêteté des modifications ultérieures du code. Préférez des unités petites et testables plutôt que des scripts complexes. Lorsqu’une étape échoue, l’erreur doit indiquer une seule responsabilité et non un processus embrouillé.
Que pourrait venir ensuite ?
Que peut-il se passer ensuite ? Cette approche fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un exemple réussi, un cas d’échec ainsi que la note de réversion avant d’élargir le périmètre. Considérez cette étape comme un contrat entre les entrées et les sorties validées. Donnez des noms aux artefacts, définez des critères de succès et refusez toute mise en œuvre partielle silencieuse. Exposez des outils dotés de schémas restreints et de labels explicites indiquant leurs effets secondaires. Les hôtes doivent savoir quels appels modifient l’état avant d’approuver automatiquement.
Optimisation continue du harness
L’optimisation continue des harnais fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un enregistrement idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Enregistrez les temps d’exécution ainsi que le coût des tokens ou des requêtes à côté des résultats fonctionnels. Une visibilité précoce des coûts évite les factures inattendues lorsque le parcours passe de la démonstration aux environnements partagés. Exposez des outils dotés de schémas restreints et de labels explicites indiquant les effets secondaires. Les hôtes doivent savoir quels appels modifient l’état avant d’approuver automatiquement.
Évolution automatique des outils
L’évolution automatique des outils fonctionne le mieux lorsqu’elle est considérée comme une surface mesurable. Capturez un enregistrement idéal, un cas d’échec et la note de réversion avant d’élargir le périmètre. Conservez les configurations en dehors du code de l’application. Les fichiers d’environnement, les bases de données secrètes et les indicateurs fonctionnels doivent être regroupés en un seul endroit que les administrateurs peuvent auditer sans devoir lire l’ensemble du réseau.
Optimisation du middleware
Apprentissage inter-agents
Optimisation consciente des coûts
Quality
+
Reliability
+
Latency
+
Token Cost
+
Tool Cost