Geodi, die offizielle Pixelfigur von GEODE
Zurück zum Saal

GEODE

Autonomous Agent Harness

Von der Beobachtung zur nächsten Handlung.

Ein lokales Harness für autonome Agenten, dem sich Recherche, Dateiarbeit und geplante Aufgaben übergeben lassen.

2026.02.21 — present

Entwurf, Urteil, Verifikation: Author · Implementierung: Claude · Review: Codex

  • CLIVeröffentlicht · PyPI
  • MCP-ServerImplementiert

Kandidatenannahme und Release-Befugnis sind getrennte Urteile.

Crucible ist ein Experiment-Kernel, getrennt von der Policy-Suche. Ein Kandidaten-Commit wird gegen die erlaubten Flächen und einen eingefrorenen Vertrag validiert, gepaarte Aufgaben werden in einem separaten Mess-Checkout aggregiert, und das Ergebnis lautet KEEP, REJECT oder INVALID.

Crucible-Karte · gezeichnet nach dem fixierten Commit 9e2c041 und den öffentlichen Artefakten 23e3428
GEODE-Crucible-KarteEin Experiment-Kernel, der Kandidatenannahme, sealed-Eignung und Produkt-Release als getrennte Befugnisse hält. Der Supervisor übernimmt einen Kandidaten-Commit von einem Erzeuger, prüft ihn gegen die erlaubte Fläche und den frozen evaluator und führt tau2-Aufgaben in einem isolierten Mess-Checkout aus. promotion.py aggregiert gepaarte Ergebnisse nach vorregistrierten Tasks und Families zu KEEP, REJECT oder INVALID; KEEP verschiebt nur den Such-Head. Die sealed-Evaluation beurteilt ein train bundle an einem nur einmal genutzten disjoint test pack; selbst ELIGIBLE erreicht nur eine eligible ref, ohne Release-Befugnis.Modelle für actor · userr14 · r35: gpt-5.4/hightau2-UmgebungAufgaben · simulierter NutzerGEODE-Produkt-Releasekeine Verbindung · eigene Befugnissearch/producersErzeuger-Befehl · konfiguriertreplay producersearch/supervisor.pypropose → preflightevaluate → decide → recordcontract.pyerlaubte Fläche · candidate difffrozen evaluator · vorregistriertattempt/feedback.jsonFehlercodes · IDs der train-Aufgabenmeasurement checkoutisoliert vom Erzeugerassays/tau2-Lauf · receiptAufgaben-Verifierpromotion.pyAggregat paired · task · familyKEEP · REJECT · INVALIDattestation/bundle.pytrain bundle · neu berechnetes KEEPattestation/sealed.pydisjoint test pack · einmal genutztELIGIBLE · release_authority nonerefs/cruciblesearch/* headeligible/*geode-eval-artifactsr14 · train KEEP → sealed REJECTr35 · INVALID · 0 Paare · nullevolve/crucibleexterner Experiment-Kernel · getrennt von SILsearch · train-Urteilattestation · sealed1 Kandidaten anfordern · propose → preflight → search/producers12 ein Kandidaten-Commit · search/producers → propose → preflight23 erlaubte Fläche · diff-Prüfung · propose → preflight → erlaubte Fläche · candidate diff34isolierter Checkout5Lauf unter festem Vertrag6Dialog actor · Nutzer7Modellaufrufe8paired evidence9vorregistrierte Aggregation10KEEP · Head verschoben1paired evidence2vorregistrierte Aggregation3REJECT · INVALID4Fehlercodes · Aufgaben-IDs1record · ref receipt2 nur train bundle · einmal · train bundle · neu berechnetes KEEP → disjoint test pack · einmal genutzt23 nur eligible ref · ELIGIBLE · release_authority none → eligible/*31öffentliche verdict.json2sealed decision.json

train-Urteil

Ein Kandidat innerhalb der erlaubten Fläche wird in einem isolierten Checkout unter festem Vertrag gemessen, und vorregistrierte Regeln entscheiden über KEEP, REJECT oder INVALID.

  1. propose → preflightsearch/supervisor.pyAusführen · Entscheiden: Kandidaten anfordernsearch/producers

    Der Such-Supervisor fordert von einem Erzeuger einen Kandidaten an. Der Kandidat von r14 war ein früherer Kandidat (r13), den der replay producer erneut angewandt hat, kein neu von einem LLM erzeugter.

  2. search/producersDaten: ein Kandidaten-Commitpropose → preflightsearch/supervisor.py

    Ein Erzeuger liefert einen einzelnen Kandidaten-Commit innerhalb der erlaubten Pfade.

  3. propose → preflightsearch/supervisor.pyAusführen · Entscheiden: erlaubte Fläche · diff-Prüfungerlaubte Fläche · candidate diffcontract.py

    Der candidate diff muss innerhalb der vom Vertrag erlaubten Fläche bleiben, und der frozen evaluator wird verifiziert. In r14 und r35 war das erlaubte Ziel eine einzige Datei, tau2_agent_policy.md; core und die Crucible-Implementierung waren als evaluator-Pfad fixiert.

  4. evaluate → decide → recordsearch/supervisor.pyAusführen · Entscheiden: isolierter Checkoutisoliert vom Erzeugermeasurement checkout

    Der Kandidat wird in einem vom Erzeuger getrennten Mess-Checkout geprüft.

  5. isoliert vom Erzeugermeasurement checkoutAusführen · Entscheiden: Lauf unter festem Vertragtau2-Lauf · receiptassays/

    Baseline und Kandidat laufen mit demselben Vertrag, demselben Seed und denselben Aufgaben.

  6. tau2-Lauf · receiptassays/Daten: Dialog actor · Nutzertau2-Umgebung

    Der GEODE-Agent (actor) spricht in der tau2-Aufgabenumgebung mit dem simulierten Nutzer, der dem evaluator gehört.

  7. tau2-Lauf · receiptassays/Daten: ModellaufrufeModelle für actor · user

    In r14 und r35 waren actor und simulierter Nutzer beide gpt-5.4/high (Abonnement).

  8. Aufgaben-Verifierassays/Daten: paired evidenceAggregat paired · task · familypromotion.py

    Die Ergebnisse des Aufgaben-Verifiers werden als Paare aus Baseline und Kandidat festgehalten.

  9. frozen evaluator · vorregistriertcontract.pyAusführen · Entscheiden: vorregistrierte AggregationAggregat paired · task · familypromotion.py

    Gepaarte Ergebnisse werden nach Task und vorregistrierter Family aggregiert; Budget, Coverage, Infrastruktur und Sicherheitsbedingungen werden getrennt geprüft.

  10. KEEP · REJECT · INVALIDpromotion.pyAusführen · Entscheiden: KEEP · Head verschobensearch/* headrefs/crucible

    Bei KEEP wird der nächste Head von refs/crucible/search/* zum Kandidaten. Die promotion_authority eines train-Urteils ist none.

Ablehnung · ungültig · Rückmeldung

REJECT und INVALID behalten den Head, und der nächste Kandidat erhält nur Fehlercodes und feste IDs von train-Aufgaben. INVALID ist kein Score von 0.

  1. Aufgaben-Verifierassays/Daten: paired evidenceAggregat paired · task · familypromotion.py

    Die Ergebnisse des Aufgaben-Verifiers werden als Paare aus Baseline und Kandidat festgehalten.

  2. frozen evaluator · vorregistriertcontract.pyAusführen · Entscheiden: vorregistrierte AggregationAggregat paired · task · familypromotion.py

    Gepaarte Ergebnisse werden nach Task und vorregistrierter Family aggregiert; Budget, Coverage, Infrastruktur und Sicherheitsbedingungen werden getrennt geprüft.

  3. KEEP · REJECT · INVALIDpromotion.pyDaten: REJECT · INVALIDFehlercodes · IDs der train-Aufgabenattempt/feedback.json

    Bei Ablehnung oder Ungültigkeit bleibt der vorherige Head, und Kandidat und Aufzeichnungen werden aufbewahrt. Ein INVALID-Mittelwert ist null, nicht 0.

  4. Fehlercodes · IDs der train-Aufgabenattempt/feedback.jsonDaten: Fehlercodes · Aufgaben-IDssearch/producers

    Die Rückmeldung an den nächsten Kandidaten beschränkt sich auf Fehlercodes und feste IDs von train-Aufgaben; Trajektorien oder Antworten des evaluator werden nicht weitergegeben.

sealed-Eignung · eigene Befugnis

Ein train-KEEP verschiebt nur den Such-Head. Die sealed-Eignung reicht nur bis zur eligible ref; Produkt-Release und Deployment sind eigene Befugnisse außerhalb von Crucible.

  1. evaluate → decide → recordsearch/supervisor.pyDaten: record · ref receipttrain bundle · neu berechnetes KEEPattestation/bundle.py

    Ein train bundle gilt nur, wenn Vertrag, Belege für Baseline und Kandidat, das neu berechnete KEEP, die Herkunftskette des Vorschlags, die Aufzeichnung des Supervisors und das receipt der angewandten ref alle zusammenhängen. Es ist kein anderer Name für Verbesserung.

  2. train bundle · neu berechnetes KEEPattestation/bundle.pyAusführen · Entscheiden: nur train bundle · einmaldisjoint test pack · einmal genutztattestation/sealed.py

    Die sealed-Evaluation nutzt ein zu train disjunktes test pack, einmal, mit 0 Infrastruktur-Wiederholungen.

  3. ELIGIBLE · release_authority noneattestation/sealed.pyAusführen · Entscheiden: nur eligible refeligible/*refs/crucible

    Selbst ELIGIBLE schreibt nur refs/crucible/eligible/*, und release_authority ist auf none fixiert.

Öffentliche Aufzeichnungen · r14 · r35

r14 war train KEEP, dann sealed REJECT; r35 (July 13, 2026) war INVALID wegen unvollständiger Coverage und Kontamination der Infrastruktur (0 gepaarte Zeilen, Mittelwert null), der Head blieb unverändert.

  1. KEEP · REJECT · INVALIDpromotion.pyDaten: öffentliche verdict.jsongeode-eval-artifacts

    Die öffentlichen Artefakte sind normalisierte Aufzeichnungen, fixiert auf 23e3428. Der vorregistrierte Hash der train-Konfiguration von r14 weicht von den Bytes der öffentlichen Konfiguration ab, daher ist die gesamte Originalkette nicht neu zertifiziert.

  2. attestation/sealed.pyDaten: sealed decision.jsonr14 · train KEEP → sealed REJECTgeode-eval-artifacts

    r14: KEEP auf telecom train, 6 Aufgaben × 1 Versuch (6 gepaarte Zeilen, keine Hochstufungsbefugnis), dann ein separates sealed-Urteil REJECT (keine Release-Befugnis).

Alle Verbindungen in gleicher Stärke. Wird ein Ablauf gewählt, ist nur sein Pfad hervorgehoben, mit nummerierten Schritten.

  • Durchgezogen · Richtung, in die Anfragen, Kandidaten und Ergebnisse fließen
  • Gestrichelt · ausführen, entscheiden, autorisieren, konfigurieren
  • Dicke schwarze Linie · der gewählte Ablauf; Nummern geben die Reihenfolge an
  • Kasten · eine Code- oder Aufzeichnungsgrenze, Pfad in der Kopfzeile
  • Innerer Chip · eine Komponente in dieser Grenze
  • Gestrichelter Kasten · außerhalb dieser Grenze
  • Such-Supervisor
  • Vertrag · Urteil · Attestierung
  • refs · Aufzeichnungen
  • Erzeuger · Ausführung

Crucible ist ein von SIL getrennter Kernel; die beiden Suchen sind keine gemeinsame Pipeline, die die Kandidaten der jeweils anderen hochstuft. Der Kasten für das Produkt-Release hat keine eingehende Verbindung.

Drei Befugnisse
Ein train-KEEP verschiebt den Such-Head, ein sealed ELIGIBLE zeichnet eine eligible ref auf, und das Produkt-Release ist eine eigene Entscheidung außerhalb von Crucible. Ein früheres Urteil verleiht nie eine spätere Befugnis.
null ist nicht 0
r35 plante 9 Aufgaben × 3 Versuche (27 Zeilen pro Arm), hatte aber 0 vergleichbare Paare, daher sind Mittelwert und Verbesserung null. Es sind nicht 27 gescheiterte Aufgaben und keine Erfolgsquote von 0%.