Ce qui a réellement été vérifié
Fixer les entrées et les critères de réussite
Les entrées sont orders.csv, report.mjs et report.test.mjs. Attendez une modification ciblée de report.mjs, trois assertions réussies, le total 2000 et une explication. Aucun agent ne doit changer les données ni affaiblir les tests. Notez modèle, fournisseur, outils, instructions supplémentaires et durée ; des conditions différentes interdisent d’attribuer tout l’écart au Harness.
Pourquoi effectuer ces vérifications
Dans son texte de conception de 2025, Mario Zechner, créateur de Pi, privilégie un contexte visible et peu d’outils. Ici, notez lesquels des trois fichiers chaque Harness a réellement lus et quelles instructions supplémentaires il a chargées. L’article d’Anthropic sur l’évaluation distingue la conversation du résultat final. Examinez donc le journal des outils, report.mjs enregistré et les tests inchangés, pas seulement le message de conclusion. Le texte de 2025 explique la conception ; les commandes actuelles de Pi viennent de sa documentation actuelle.
Créer un petit projet avec une erreur observable
Préparez Node.js 24 et un terminal Bash dans un nouveau répertoire jetable : Bash sous macOS/Linux, Git Bash ou WSL sous Windows. harness-lab ne doit pas encore exister. L’exemple ne nécessite ni dépendances npm, ni compte, ni données privées, ni fichiers de production. Son CSV simple ne contient pas de virgules entre guillemets ; il ne s’agit pas d’un analyseur CSV général.
create_harness_lab() {
mkdir harness-lab || return
cd harness-lab || return
cat > orders.csv <<'CSV'
id,status,cents
A,paid,1200
B,refunded,700
C,paid,800
D,pending,400
CSV
cat > report.mjs <<'JS'
export function totalPaid(csv) {
const rows = csv.trim().split(/\r?\n/).slice(1);
return rows.map(row => row.split(','))
.filter(([, status]) => status !== 'pending')
.reduce((sum, [, , cents]) => sum + Number(cents), 0);
}
JS
cat > report.test.mjs <<'JS'
const { default: assert } = await import('node:assert/strict');
const { readFileSync } = await import('node:fs');
const { default: test } = await import('node:test');
const { totalPaid } = await import('./report.mjs');
const csv = readFileSync(new URL('./orders.csv', import.meta.url), 'utf8');
test('only paid orders count', () => assert.equal(totalPaid(csv), 2000));
test('refunds alone count as zero', () => assert.equal(totalPaid('id,status,cents\nB,refunded,700\n'), 0));
test('an empty ledger counts as zero', () => assert.equal(totalPaid('id,status,cents\n'), 0));
JS
cp report.mjs report.original.mjs
node --test report.test.mjs
}
create_harness_labLe premier lancement doit produire deux assertions en échec et une réussie. Le code compte les 700 centimes remboursés, soit 2700 au lieu de 2000. La règle est précise : seules les lignes paid comptent ; refunded et pending apportent zéro. Les montants sont des centimes entiers.
Préparer deux répertoires au même point de départ
Copiez avant toute modification par un agent. DSH utilise harness-lab, Pi harness-lab-pi ; les deux contiennent le même code défectueux et sa sauvegarde. Une branche de conversation n’est pas un arbre de travail séparé : ne faites pas modifier un seul répertoire par les deux agents.
copy_harness_lab() {
(cd .. && test ! -e harness-lab-pi && cp -R harness-lab harness-lab-pi)
}
copy_harness_labEffectuer la tâche dans DSH
- 01
Vérifier environnement et modèle
Suivez le démarrage Alpha lié, avec sa compilation depuis le commit exact. Configurez vos identifiants dans Settings → Models, jamais dans l’instruction, et notez le modèle choisi.
- 02
Sélectionner explicitement le projet
Ajoutez le chemin absolu de harness-lab au sélecteur d’espace de travail. Une nouvelle interface web n’en sélectionne aucun, même si dsh a démarré depuis un répertoire de projet.
- 03
Vérifier les permissions effectives
Pour cet exercice local jetable, choisissez workspace-write si disponible et examinez les demandes d’autorisation. Ce préréglage associe le mode workspace-write à ask ; l’exécuteur configuré applique la limite. Chaque écriture ne déclenche donc pas nécessairement une fenêtre.
- 04
Exécuter et observer
Envoyez l’instruction commune. Examinez lectures, commandes, modifications et tests. Si l’agent demande un accès hors du projet ou une dépendance sans rapport, arrêtez et resserrez la tâche.
Effectuer la même tâche dans Pi
Installez Pi selon son démarrage officiel, puis entrez dans harness-lab-pi. Utilisez /login et /model pour choisir un modèle compatible, identique à celui de DSH si possible. Commencez avec les outils réduits ci-dessous ; la découverte optionnelle est désactivée pour éviter le chargement implicite d’extensions ou d’instructions étrangères à l’exercice.
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
cd ../harness-lab-pipi --no-extensions --no-skills --no-prompt-templates --no-themes --no-context-files --tools read,grep,find,lsPi n’intègre pas de système de permissions pour les fichiers, les processus, le réseau ou les identifiants. La liste autorisée limite les outils proposés au modèle, pas les droits système du processus. Pour un projet non fiable, utilisez un conteneur, une machine virtuelle ou une autre isolation système vérifiée. Le guide officiel explique pourquoi déplacer l’exécution des outils ne suffit pas à isoler les autres extensions de l’hôte.
pi -c --no-extensions --no-skills --no-prompt-templates --no-themes --no-context-files --tools read,edit,write,bash,grep,find,lsDonner aux deux agents la même tâche délimitée
Dans ce projet jetable, corrige report.mjs pour que totalPaid compte uniquement les lignes paid. Lis d’abord orders.csv et report.test.mjs, exécute node --test report.test.mjs et rapporte l’échec initial. Ne modifie ni orders.csv, ni report.test.mjs, ni report.original.mjs ; n’installe aucun paquet et n’accède pas aux autres répertoires. Fais la modification minimale, relance les trois assertions et calcule le total d’orders.csv. Fournis le fichier modifié, les résultats observés, le total et les limites. Distingue un problème d’environnement d’une assertion échouée.Vérifier indépendamment du message final de l’agent
node --test report.test.mjs
node --input-type=module -e "import {readFileSync} from 'node:fs'; import {totalPaid} from './report.mjs'; console.log(totalPaid(readFileSync('orders.csv','utf8')))"
diff -u report.original.mjs report.mjsAttendez trois tests réussis et, séparément, le total 2000. Le diff remplace normalement le filtre par status === 'paid'. Une autre solution convient si elle respecte la règle et les tests. diff renvoie 1 lorsque les fichiers diffèrent : c’est attendu ici, pas un échec de test. L’absence de Node ou un accès refusé relève de l’environnement.
Comparer le travail réellement effectué
| Jeton | Rôle | Vérifier |
|---|---|---|
| Contexte initial | DSH : sélection de l’espace, examen de la session et des outils. Pi : répertoire courant et contexte découvert ; ici, la découverte optionnelle est explicitement désactivée. | Notez répertoire et contexte exacts ; une instruction identique ne garantit pas un contexte identique. |
| Approbations et isolation | DSH combine isolation et approbations. Pi contrôle l’exposition des outils ; une limite système supplémentaire se configure séparément. | Consignez la limite effective et les approbations ; le nombre de fenêtres n’est pas une mesure de sécurité. |
| Planification et délégation | La composition DSH peut inclure plans et sous-agents. Pi laisse plan-mode et les sous-agents aux extensions ou paquets. | Ces trois fichiers n’en ont pas besoin. L’exemple officiel plan-mode montre l’approche sans imposer son installation. |
| Revue et reprise | DSH enregistre les événements de session ; Pi propose /session, /resume, /tree et /fork. | Gardez la modification testée et une note de reprise. L’historique donne du contexte, sans restaurer les fichiers modifiés. |
| Coût et rapidité | Modèle, instructions, extensions et attente d’approbation influencent le résultat. | Indiquez les observations ou « non mesuré ». Une tâche synthétique ne suffit pas à établir un classement général. |
Suspendre, reprendre et restaurer explicitement
Avant d’arrêter, demandez objectif, fichiers modifiés, commandes exactes avec résultats et prochaine étape. Dans DSH, rouvrez la session et vérifiez l’espace. Dans Pi, pi -c reprend la dernière session du projet ; pi -r permet d’en choisir une. /tree et /fork divisent l’historique, sans annuler les fichiers. Préservez la tentative avant de restaurer uniquement l’implémentation de l’exercice.
cp report.mjs report.attempt.mjs
cp report.original.mjs report.mjs
node --test report.test.mjsLes deux échecs initiaux doivent réapparaître : c’est une vérification volontaire de la restauration. Conservez report.attempt.mjs pour comparer. Dans un vrai dépôt, utilisez une branche ou un arbre de travail propre et une restauration ciblée après revue ; n’écrasez pas d’autres travaux avec ces commandes.
Choisir après une revue complète
Essayez DSH si un espace web partagé, l’état visible des sessions et outils et des workflows composés vous conviennent. Essayez Pi si vous préférez votre terminal, un lancement CLI explicite et un petit noyau extensible. Décidez après la même tâche et la lecture du diff. Aucune interface ne garantit un correctif juste ni ne sécurise seule du code non fiable.
Harness/version :
Modèle/fournisseur :
Espace et fichiers initiaux :
Outils/permissions effectifs :
Instructions et approbations supplémentaires :
Tests : __ échecs initiaux ; __ réussites finales
Total observé :
Fichiers modifiés :
Durée/usage annoncé (ou non mesuré) :
Restauration :
Limites :Continuer avec un objectif concret
Consulter les sources officielles
Questions fréquentes
Avant de faire un changement
Réponses sur les formats, la compatibilité, les preuves et le retour en arrière.
Que vérifie ce guide ?
Ce guide couvre : Sources DSH Alpha fixées et documentation officielle actuelle des CLI, sessions et extensions de Pi ; Exemple synthétique de commandes, correction de référence et restauration ciblée exécutés localement ; Aucun benchmark comparatif de modèles ni résultat métier réel d’un fournisseur n’est revendiqué
Par quoi dois-je commencer ?
Partez d’un résultat observable : un rapport inclut à tort des commandes remboursées. Préparez deux copies indépendantes, choisissez le même modèle si les deux configurations le permettent et conservez les tests d’acceptation. Comparez le travail nécessaire pour obtenir une modification vérifiable, plutôt que des présentations de produits.
Quelle limite faut-il surtout retenir ?
Les étapes DSH utilisent 0.1.3-alpha.1 compilé depuis d347e703908d0406b7a7ef80e3a0e594d86b2215. Les commandes Pi ont été vérifiées dans la documentation officielle le 6 septembre 2026. L’exemple de commandes et sa correction ont été exécutés localement ; les prompts DSH/Pi n’ont pas fait l’objet d’un comparatif avec des modèles.
Trois tests réussis prouvent-ils qu’un Harness est meilleur ?
Non : ils montrent que cette implémentation satisfait ces assertions. Élargissez les tâches en gardant modèle, entrées et critères constants avant de généraliser.
Peut-on partager les fichiers de session entre DSH et Pi ?
Ne supposez pas leurs formats compatibles. Copiez le projet et une note textuelle, en conservant les sessions propres à chaque outil. La migration DSH Alpha n’est pas un importateur de sessions Pi.
Faut-il installer un plugin plan-mode ?
Non. Une boucle inspection → modification → test suffit. Consultez l’exemple Pi si ce workflow vous est utile ; charger une extension reste une décision de confiance distincte.
Continuer à apprendre
Continuer à partir des preuves vérifiées
Comparez les artefacts publiés ou revenez à la documentation d'installation.