Zum Hauptinhalt springen
Zurück zu Lernen
14Betrieb18 Min. LesezeitAnfänger

PRAXIS · REPRODUZIEREN, BEHEBEN, PRÜFEN

DeepSeek-Harness-Praxis: zwei überprüfbare Reparaturen

Mit zwei kleinen Aufgaben eine wiederholbare Routine aufbauen: eine Bestellsumme korrigieren und einen Cache reparieren, der Konfigurationsänderungen ignoriert. Beide haben Eingaben, sichtbare Fehler, kopierbare Prompts und unabhängige Prüfungen. Zuerst im Wegwerfprojekt üben, danach an wichtigen Aufgaben arbeiten.

Zuletzt überprüft
6. Sept. 2026
Quellstand des Leitfadens
0.1.3-alpha.1
Installationsstatus
Eintrag des gewählten Elements prüfen
Überprüfter Umfang
  • Fester DSH-Alpha-Quellstand und Primärquellen zu Kontextverwaltung und Evaluation
  • Zwei synthetische Node-Beispiele, Referenzkorrekturen und gezielte Dateiwiederherstellung lokal ausgeführt
  • Kein Modellvergleich mit Messwerten und kein echtes Ergebnis eines externen Dienstes behauptet
Auf dieser Seite
  1. Was tatsächlich geprüft wurde
  2. Vor dem Prompt die Grenze festlegen
  3. Ein kleines Projekt mit sichtbarem Fehler anlegen
  4. Zuerst eine reproduzierbare Diagnose verlangen
  5. Gezielte Reparatur erlauben und unabhängig prüfen
  6. Zweite Aufgabe: geänderte Einstellung, altes Cache-Objekt
  7. Warum diese Prüfungen zur Übung gehören
  8. Eine pausierte Aufgabe leicht fortsetzbar machen
  9. Je nach beobachtetem Fehler wiederherstellen
  10. Eine bewährte Routine als kleinen Skill festhalten

Was tatsächlich geprüft wurde

Vor dem Prompt die Grenze festlegen

  1. 01

    Mit einer bekannten Laufzeit beginnen

    Den Schnellstart für 0.1.3-alpha.1 und den fixierten Commit nutzen. Modell unter Settings → Models wählen. Zugangsdaten gehören in die Anbieter-Konfiguration, nicht in Prompts oder Testbeispiele.

  2. 02

    Projekt und Laufzeit trennen

    Ein eigenes Übungsverzeichnis anlegen und in der Web UI auswählen. Die offizielle Quelllaufzeit nicht in dieser Website oder unter einem Projekt mit inkompatiblen node_modules in übergeordneten Verzeichnissen installieren.

  3. 03

    Die erste Aufgabe klein halten

    Wirksame Sandbox und Freigaben prüfen. Im Wegwerfprojekt nur den nötigen Auftrag ausführen; für drei Dateien keine Plugins oder Abhängigkeiten hinzufügen.

Ein kleines Projekt mit sichtbarem Fehler anlegen

Verwenden Sie Node.js 24 und ein Bash-Terminal in einem neuen Wegwerfverzeichnis: Bash unter macOS/Linux, Git Bash oder WSL unter Windows. harness-lab darf noch nicht existieren. Das Beispiel benötigt keine npm-Abhängigkeiten, Konten, privaten Daten oder Produktionsdateien. Das vereinfachte CSV enthält keine Kommas in Anführungszeichen; es ist keine Übung für einen allgemeinen CSV-Parser.

bash
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_lab
Drei Dateien anlegen und den Fehler reproduzieren

Beim ersten Lauf müssen zwei Prüfungen scheitern und eine bestehen. Der Fehler zählt die 700 Cent einer erstatteten Bestellung mit: 2700 statt 2000. Die Regel lautet: Nur Zeilen mit Status paid zählen; refunded und pending tragen null bei. Alle Beträge sind ganze Cent.

Zuerst eine reproduzierbare Diagnose verlangen

text
Untersuche ausschließlich orders.csv, report.mjs und report.test.mjs, ohne Dateien zu ändern. Erkläre die Testregel, benenne die erstattete Zeile und führe node --test report.test.mjs aus. Warum liefert der Filter 2700 statt 2000? Wenn der Befehl nicht ausführbar ist, melde das echte Umgebungsproblem und erfinde keine Ausgabe.
Erster Schritt: Fehler vor der Codeänderung belegen

Eine hilfreiche Diagnose nennt Zeile B, status !== 'pending' und zwei fehlgeschlagene Assertions. „Danach sollte es funktionieren“ ist kein Testergebnis. Bei Vorschlägen für neue CSV-Bibliotheken oder große Umbauten auf vorhandenes Beispiel und Kriterien zurückführen.

Gezielte Reparatur erlauben und unabhängig prüfen

text
Behebe in diesem Wegwerfprojekt report.mjs, sodass totalPaid nur paid-Zeilen zählt. Lies zuerst orders.csv und report.test.mjs, führe node --test report.test.mjs aus und beschreibe den ursprünglichen Fehler. Verändere weder orders.csv noch report.test.mjs oder report.original.mjs. Installiere keine Pakete und greife nicht auf andere Verzeichnisse zu. Ändere die Implementierung minimal, wiederhole alle drei Prüfungen und berechne die Summe aus orders.csv. Nenne geänderte Datei, beobachtetes Testergebnis, Summe und Grenzen. Unterscheide einen Umgebungsfehler von einer fehlgeschlagenen Assertion.
Kopierbarer Aufgaben-Prompt
bash
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.mjs
Führen Sie diese Befehle selbst in harness-lab aus

Erwartet werden drei bestandene Tests und separat die Summe 2000. Der Diff ersetzt üblicherweise den Filter durch status === 'paid'. Eine andere Lösung ist zulässig, wenn Regel und Tests erhalten bleiben. diff beendet sich bei Unterschieden mit Code 1: Hier ist das erwartet, kein Testfehler. Fehlendes Node oder verweigerte Rechte sind Umgebungsprobleme.

text
.filter(([, status]) => status === 'paid')
Referenzänderung für dieses Beispiel

Die lokal ausgeführte Referenz ändert nur den Filter; Daten und Tests bleiben gleich. Testausgabe und separat berechnete Summe gemeinsam aufbewahren. Ein grüner Terminal-Screenshot ohne Befehl und Diff genügt nicht.

Zweite Aufgabe: geänderte Einstellung, altes Cache-Objekt

Die zwei zusätzlichen Dateien im selben Projekt anlegen. account bleibt demo, mode wechselt von light zu dark. Der Cache vergleicht nur account und liefert fälschlich das alte Objekt. Konfiguration ändern und eine konstruierte Instanz ungültig machen sind unterschiedliche Schritte.

bash
create_cache_lab() {
test ! -e cache.mjs && test ! -e cache.test.mjs && test ! -e cache.original.mjs || return
cat > cache.mjs <<'JS'
let cached;
export function getSettings(config) {
  if (!cached || cached.account !== config.account) cached = { ...config };
  return cached;
}
JS
cat > cache.test.mjs <<'JS'
const { default: assert } = await import('node:assert/strict');
const { default: test } = await import('node:test');
const { getSettings } = await import('./cache.mjs');
test('a changed setting refreshes the instance', () => {
  const first = getSettings({ account: 'demo', mode: 'light' });
  const second = getSettings({ account: 'demo', mode: 'dark' });
  assert.notEqual(second, first);
  assert.equal(second.mode, 'dark');
  assert.equal(getSettings({ account: 'demo', mode: 'dark' }), second);
});
JS
cp cache.mjs cache.original.mjs
node --test cache.test.mjs
}
create_cache_lab
Den Cache-Fehler ohne Datenbank oder Zugangsdaten reproduzieren
text
Untersuche cache.mjs und cache.test.mjs und reproduziere den Fehler. Ändere den Cache: Eine Änderung an account ODER mode muss eine neue Instanz erzeugen; gleiche Werte müssen dieselbe Instanz wiederverwenden. Originaltest beibehalten, bei Bedarf eine separate Prüfung für account ergänzen. Keine Abhängigkeiten, Timer oder globale Cache-Löschung. Führe node --test cache.test.mjs aus und erkläre die identitätsbestimmenden Eingaben.
Kopierbarer Aufgaben-Prompt
text
if (!cached || cached.account !== config.account || cached.mode !== config.mode) cached = { ...config };
Referenzkorrektur: beide verhaltensrelevanten Eingaben berücksichtigen

node --test cache.test.mjs ausführen. Die geprüfte Referenz besteht: Geändertes mode liefert ein anderes Objekt mit dark; der nächste gleiche Aufruf verwendet es wieder. Hier gibt es nur account und mode. Im echten Dienst alle Konstruktionseingaben erfassen, Lesefehler weiterhin korrekt behandeln und Rotation ohne Ausgabe geheimer Werte prüfen. Das zertifiziert keinen Produktionscache oder Zahlungsanbieter.

Warum diese Prüfungen zur Übung gehören

Anthropics Kontextbeitrag behandelt gezieltes Nachladen und strukturierte Notizen; der Evaluationsbeitrag trennt Gesprächsprotokoll und Ergebnis. Unsere Anwendung: mit den benannten Dateien beginnen, gespeicherte Änderungen erneut lesen und echte Testausgaben samt Summe neben dem Diff aufbewahren. HANDOFF.md hält Pfade, ausgeführte Befehle und offene Aufgaben fest, damit eine fortgesetzte Sitzung die aktuellen Dateien erneut prüft. So werden Kontext, Nachweis und Übergabe verbunden, ohne lange Prompts oder Protokolle als Qualitätsbeweis zu behandeln.

Eine pausierte Aufgabe leicht fortsetzbar machen

report.original.mjs und cache.original.mjs unverändert lassen. Vor einer neuen Sitzung eine Notiz mit aktuellen Dateien, letzten Befehlen und offenen Punkten verlangen. Beim Fortsetzen Dateien lesen und Tests wiederholen: Eine Zusammenfassung kann veraltet sein. Eine DSH-Sitzung ist Verlauf, kein Ersatz für Versionsverwaltung oder Sicherung.

text
Schreibe HANDOFF.md für diese Übung: Ziel, geänderte Dateien, ursprüngliche Fehler, exakt ausgeführte Befehle und Ergebnisse, offene Probleme und nächste Prüfung. Keine Zugangsdaten und keine Behauptung nicht ausgeführter Tests. Eine neue Sitzung muss anhand der Notiz und aktuellen Dateien fortfahren können.
Konkreter Übergabeauftrag

Je nach beobachtetem Fehler wiederherstellen

  1. 01

    Ein Befehl startet nicht

    Node-Version, Arbeitsverzeichnis und ausgewählten Arbeitsbereich prüfen. Erst die Umgebung reparieren, statt fehlende Programme oder Rechte durch Codeänderungen zu kaschieren.

  2. 02

    Tests oder fremde Dateien wurden geändert

    Stoppen, Versuch sichern und Diff lesen. Nur betroffene Übungsdateien aus ihren bekannten Originalen wiederherstellen und Kriterien erneut festlegen.

  3. 03

    Modell oder Anbieter nicht verfügbar

    Dateien und Übergabe behalten, Anbieter außerhalb des Prompts konfigurieren und dieselbe oder eine neue Sitzung mit gleichen Kriterien nutzen. Ein API-Fehler ist kein erfolgreicher Codetest.

bash
cp report.mjs report.attempt.mjs
cp report.original.mjs report.mjs
node --test report.test.mjs
Versuch aufbewahren und nur die Übungsdatei zurücksetzen

Danach müssen die ursprünglichen zwei Fehler wieder auftreten: Das ist der beabsichtigte Wiederherstellungstest. report.attempt.mjs bleibt zum Vergleich erhalten. Im echten Repository eine saubere Branch oder einen Worktree und eine geprüfte dateispezifische Wiederherstellung nutzen; diese Überschreibbefehle nicht auf andere Arbeit anwenden.

Eine bewährte Routine als kleinen Skill festhalten

Nach der Übung Untersuchen, Reproduzieren, Ändern, Testen und Übergeben dokumentieren. DSH findet lokale Skills unter anderem in .dsh/skills und .agents/skills; Namen und Rangfolge sind relevant. Ein Skill beschreibt Abläufe und verleiht keine Systemrechte. Vor der Erkennung prüfen, Befehle begrenzen und keine unbekannte Erweiterung nur wegen eines Automatisierungsversprechens laden.

Mit einem konkreten Ziel weitermachen

Offizielle Primärquellen lesen

Häufige Fragen

Bevor Sie eine Änderung vornehmen

Antworten zu Formaten, Kompatibilität, Nachweisen und Rücksetzungen.

Was prüft dieser Leitfaden?

Dieser Leitfaden behandelt: Fester DSH-Alpha-Quellstand und Primärquellen zu Kontextverwaltung und Evaluation; Zwei synthetische Node-Beispiele, Referenzkorrekturen und gezielte Dateiwiederherstellung lokal ausgeführt; Kein Modellvergleich mit Messwerten und kein echtes Ergebnis eines externen Dienstes behauptet

Womit sollte ich beginnen?

Mit zwei kleinen Aufgaben eine wiederholbare Routine aufbauen: eine Bestellsumme korrigieren und einen Cache reparieren, der Konfigurationsänderungen ignoriert. Beide haben Eingaben, sichtbare Fehler, kopierbare Prompts und unabhängige Prüfungen. Zuerst im Wegwerfprojekt üben, danach an wichtigen Aufgaben arbeiten.

Welche Grenze ist besonders wichtig?

Beide Node-Beispiele wurden lokal ausgeführt, einschließlich ursprünglicher Fehler, Referenzkorrekturen und Wiederherstellung des ursprünglichen Inhalts von report.mjs. Die DSH-Schritte gelten für 0.1.3-alpha.1 aus d347e703908d0406b7a7ef80e3a0e594d86b2215. Es sind Übungen für Ihr eingerichtetes Modell; ein tatsächliches Modellergebnis wird nicht behauptet.

Braucht jede kleine Änderung einen umfangreichen Plan?

Hier reichen kurze Diagnose und genauer Testbefehl. Größere Aufgaben können Etappen nutzen, jeweils mit prüfbarem Ergebnis und Kontrolle.

Was nach der Fertigmeldung aufbewahren?

Diff, genaue Ausgaben, Erwartungswert, Grenzen und Original sichern. Tests selbst wiederholen; eine Erklärung ist noch keine Prüfung.

Ersetzt die Aufforderung zur Vorsicht eine Sandbox?

Nein. Der Prompt formuliert Absichten. Executor, Prozessrechte und konfigurierte Betriebssystemgrenzen bestimmen den tatsächlichen Zugriff.

Lernen fortsetzen

Mit verifizierten Nachweisen fortfahren

Vergleichen Sie veröffentlichte Artefakte oder kehren Sie zur Installationsdokumentation zurück.