Geodi, il personaggio pixel ufficiale di GEODE
Torna alla sala

GEODE

Autonomous Agent Harness

Dall’osservazione all’azione successiva.

Un harness locale per agenti autonomi a cui affidare ricerca, lavoro sui file e attività pianificate.

2026.02.21 — present

Progettazione, giudizio, verifica: Author · implementazione: Claude · revisione: Codex

  • CLIPubblicato · PyPI
  • Server MCPImplementato

Cambiare una policy alla volta; la misura resta fissa.

Un ciclo separato che gira fuori dall’harness. A partire dalla baseline applica una modifica di policy tipizzata, e lo stesso audit Petri e lo stesso gate decidono tra KEEP e ripristino.

Mappa SIL · disegnata dai percorsi evolve al commit fissato 9e2c041 e dal registro dell’esecuzione del June 2026
Mappa della ricerca di policy di GEODE (SIL)Un ciclo di ricerca di policy che gira fuori dal runtime. Un contratto di esecuzione approvato fissa budget, seed, rubrica e modelli, e il mutator cambia una policy tra sette superfici consentite. measure.py sottopone GEODE ad audit tramite Petri con lo stesso apparato; fitness.py e gate.py decidono tra KEEP e ripristino con regole su regressioni critical e promozione; ledger.py scrive la baseline e le righe dei risultati. L’esecuzione del June 2026 ha separato il rumore dell’audit dall’effetto della mutazione con un braccio never senza modifiche, una baseline K=5 e misure replicate.Approvazione dell’operatorechiamate live · budgetAudit Petriauditor · GEODE target · judgeprogram.mdcontratto di esecuzione · modelli · budgetregole di arresto · esecuzione dopo l’approvazionetrain.pyciclo a budget fisso--replicate K · nuova misuraloop/mutatemutator · un candidato7 superfici · niente iperparametristate/policiespolicy su fileprepare.pypool di seed · rubrica fissimeasure.pysottoprocesso di audit · timeout fissoOVERRIDE per policy · STRICTfitness.pyregressione critical · penalitàledger.pybaseline · provenanceresults · righe di mutazionegate.py_should_promote · KEEP_reject_and_revertcore · loader delle policyramo del prompt · system_prompt.py6 loader di policy · tool, skill…run-2606-broken-tool-usebaseline gen-0 · media di 5 auditbraccio never · controllo senza modifichebracci random · gatereplicate · rimisurare un singolo KEEPevolve/scaffold_searchciclo di ricerca esterno · fuori dal runtimemodifica candidatauna per esecuzioneapparato di misurafisso durante un confrontorun-2606 · June 3–4, 2026broken_tool_useGEODE sotto auditcambiano solo le policy consentite1 approvazione · Approvazione dell’operatore → contratto di esecuzione · modelli · budget12 contratto di esecuzione · contratto di esecuzione · modelli · budget → ciclo a budget fisso23 chiedere un candidato · ciclo a budget fisso → mutator · un candidato34modifica di policy · mutation ID5 seed · rubrica fissi · pool di seed · rubrica fissi → sottoprocesso di audit · timeout fisso56policy selezionata7percorsi di override per policy8audit subprocess9dialogo dell’audit1punteggi per dimensione2 baseline · provenance · baseline · provenance → regressione critical · penalità23 fitness · motivi di regressione · regressione critical · penalità → _should_promote · KEEP34KEEP · baseline successiva5REJECT · ripristinare il precedente6risultato · riga del verdetto1tre bracci2baseline come media K=53misurare senza modifiche4--replicate K5nuova misura → ripristino

Una modifica → audit

Con il contratto di esecuzione fissato, cambia una policy consentita e GEODE viene sottoposto ad audit con lo stesso apparato. Non è il prodotto in esecuzione che riscrive sé stesso.

  1. Approvazione dell’operatoreeseguire · decidere: approvazionecontratto di esecuzione · modelli · budgetprogram.md

    Un’esecuzione parte solo dopo l’approvazione delle chiamate live e del budget fisso. Senza approvazione si prepara soltanto il contratto e lo si controlla offline.

  2. contratto di esecuzione · modelli · budgetprogram.mdeseguire · decidere: contratto di esecuzioneciclo a budget fissotrain.py

    Revisioni di seed e rubrica, modelli dei ruoli e origine delle credenziali, impostazioni di misura, budget di iterazioni, tempo e costo, la policy di promozione e le condizioni di arresto vengono fissati prima dell’esecuzione.

  3. ciclo a budget fissotrain.pyeseguire · decidere: chiedere un candidatomutator · un candidatoloop/mutate

    Un’ipotesi sostenuta da prove cambia una superficie di policy consentita.

  4. 7 superfici · niente iperparametriloop/mutatedati: modifica di policy · mutation IDpolicy su filestate/policies

    Possono cambiare solo sette superfici: prompt wrapper, policy degli strumenti, consigli di decomposizione, reflection, metadati del catalogo delle skill, contratto dell’agente (role, system_prompt, tools) e descrizioni e suggerimenti degli strumenti. Le modifiche agli iperparametri vengono respinte sia nel parsing sia nell’applicazione. Applicare una policy, rimisurare e un commit opzionale sono passi separati, quindi un’applicazione non è di per sé un audit.

  5. pool di seed · rubrica fissiprepare.pyeseguire · decidere: seed · rubrica fissisottoprocesso di audit · timeout fissomeasure.py

    prepare.py è il riferimento fisso per il pool di seed e la rubrica; i candidati non lo cambiano. Cambiare un modulo di misura cambia la misura, non il sistema in prova.

  6. policy su filestate/policiesdati: policy selezionataOVERRIDE per policy · STRICTmeasure.py

    measure.py legge il file di policy attualmente selezionato e lo passa all’ambiente di audit.

  7. OVERRIDE per policy · STRICTmeasure.pyeseguire · decidere: percorsi di override per policycore · loader delle policy

    measure.py passa al sottoprocesso di audit il percorso del wrapper e i percorsi di override e strict per policy, e il loader di policy corrispondente del runtime legge ciascuno di essi. Il wrapper (GEODE_WRAPPER_OVERRIDE → system_prompt) è un ramo; chiavi d’ambiente aggiuntive non ampliano le sette superfici modificabili. Un file modificato non prova da solo che il candidato abbia raggiunto il target; lo conferma la diagnostica nelle prove dell’audit.

  8. sottoprocesso di audit · timeout fissomeasure.pyeseguire · decidere: audit subprocessAudit Petri

    L’audit gira con timeout e budget fissi, mai cambiati a metà di un confronto. Un output mancante è una lacuna diagnostica, non un punteggio pari a zero.

  9. Audit Petridati: dialogo dell’auditcore · loader delle policy

    L’auditor parla con GEODE attraverso lo scenario del seed, e il judge valuta il transcript.

Verdetto → mantenere · ripristinare

Nel confronto con la baseline dello stesso contratto, le regressioni critical e la regola di promozione decidono il KEEP; una modifica respinta viene riportata al valore precedente registrato.

  1. Audit Petridati: punteggi per dimensioneregressione critical · penalitàfitness.py

    I punteggi arrivano insieme alle dimensioni mancanti e al numero di campioni. Una dimensione non misurata non viene letta come un’osservazione.

  2. baseline · provenanceledger.pydati: baseline · provenanceregressione critical · penalitàfitness.py

    Il confronto usa solo una baseline con lo stesso contratto registrato e la stessa epoch. Un nuovo branch Git non isola lo stato della baseline.

  3. regressione critical · penalitàfitness.pydati: fitness · motivi di regressione_should_promote · KEEPgate.py

    Prima si controllano le regressioni nelle dimensioni critical e le penalità ausiliarie, poi il test di margin o della dimensione obiettivo. Uno scalare positivo da solo non porta mai alla promozione.

  4. _should_promote · KEEPgate.pydati: KEEP · baseline successivabaseline · provenanceledger.py

    Un candidato mantenuto diventa la baseline successiva. Un candidato mantenuto in locale non è un merge nel repository né un rilascio.

  5. _reject_and_revertgate.pyeseguire · decidere: REJECT · ripristinare il precedentepolicy su filestate/policies

    Per un candidato creato dal runner viene ripristinata la sezione di policy registrata sotto il suo mutation ID, e un ripristino fallito viene segnalato. Le modifiche manuali non vengono ripristinate automaticamente, e un ripristino incerto blocca il candidato successivo.

  6. _should_promote · KEEPgate.pyregistrare · osservare: risultato · riga del verdettoresults · righe di mutazioneledger.py

    Misura, verdetto e provenienza vengono scritti una sola volta come righe dei risultati; le righe storiche non vengono mai riscritte.

Controlli · misure replicate

Esecuzione del June 2026: un braccio never senza modifiche e una baseline K=5 hanno misurato separatamente il rumore dell’audit, e un KEEP da un singolo audit è stato ricontrollato con repliche.

  1. run-2606-broken-tool-useeseguire · decidere: tre bracciciclo a budget fissotrain.py

    L’esecuzione del June 3–4, 2026 ha separato la deriva dall’effetto della mutazione con tre bracci: never (nessuna modifica), random (accettazione casuale) e gate (accettazione in base al verdetto). Il target era GPT-5.5; auditor e judge erano Claude Opus 4.8.

  2. baseline gen-0 · media di 5 auditrun-2606-broken-tool-usedati: baseline come media K=5baseline · provenanceledger.py

    La baseline gen-0 era la media di cinque audit (Petri broken_tool_use, più basso è meglio, media 2.667).

  3. braccio never · controllo senza modificherun-2606-broken-tool-useeseguire · decidere: misurare senza modifichesottoprocesso di audit · timeout fissomeasure.py

    Il braccio never ha subito una deriva fino a una media di 3.38 senza alcuna modifica di policy (10 audit, più basso è meglio): prova diretta che il rumore dell’audit superava l’effetto della mutazione.

  4. --replicate K · nuova misuratrain.pyeseguire · decidere: --replicate Ksottoprocesso di audit · timeout fissomeasure.py

    Lo stesso candidato viene misurato altre K volte nelle stesse condizioni per scartare un singolo audit fortunato.

  5. replicate · rimisurare un singolo KEEPrun-2606-broken-tool-useeseguire · decidere: nuova misura → ripristino_reject_and_revertgate.py

    Un candidato mantenuto su un singolo audit gate (1.6) ha misurato 3.0–3.8 nelle repliche, peggio della baseline, quindi è stato ripristinato il champion 2.667. L’esecuzione ha concluso: nessun miglioramento evidente.

Tutte le connessioni con lo stesso peso. Scegliendo un flusso se ne evidenzia solo il percorso, con passi numerati.

  • Continua · la direzione in cui scorrono richieste, candidati e risultati
  • Tratteggiata · eseguire, decidere, autorizzare, configurare
  • Tratto lungo e punto · registri e osservazione, separati dal verdetto
  • Linea nera spessa · il flusso scelto; i numeri danno l’ordine
  • Riquadro · un confine di codice o di registro, con il percorso nell’intestazione
  • Chip interno · un componente in quel confine
  • Riquadro tratteggiato · fuori da quel confine
  • ciclo · esecuzione di misura
  • contratto · verdetto
  • policy · registri
  • modifica · target dell’audit · registro di esecuzione

Il driver SIL di GEODE si chiama autoresearch; la struttura prepare/train/program e il budget fisso si ispirano all’autoresearch di Karpathy. Nessun peso del modello cambia, e apparato e budget restano fissi durante un confronto.

Cosa può cambiare
Sette superfici: prompt wrapper, policy degli strumenti, consigli di decomposizione, reflection, metadati del catalogo delle skill, contratto dell’agente e descrizioni e suggerimenti degli strumenti. Valutatore, budget, seed e rubrica restano fissi durante un confronto.
Ambito del registro di esecuzione
I valori di run-2606 sono le medie Petri broken_tool_use di quell’esecuzione (più basso è meglio). Non sono prove di un miglioramento cumulativo né di una generalizzazione di SIL.