Vai al contenuto

← Skills

system-one-design

Trasforma un passo domanda-ed-estrazione in domande tipizzate — una condizione ciascuna, nomi di opzione che non portano il verdetto, un numero in risposta — e non lasciare mai che quel numero fermi il lavoro da solo.

PatternProvenienza: cleanStato: activev0.3.0 · Apache-2.0

Conferita da chi ha letto la scheda, non rivendicata dal file su se stesso. Una scheda che l'agente distilla durante un'esecuzione che ha consumato contenuti non affidabili nasce contaminata e resta in attesa di revisione prima di essere mai recuperata.

Quando viene in mente

  • estrarre un sì o un no dalla prosa di un modello
  • classificare molti elementi con un modello
  • chiedere a un modello di dare un voto
  • la risposta di un modello decide cosa succede dopo

Il valore di solito sta in Evita e Verifica. Fai è la sezione che scrivono tutti.

Il corpo della scheda qui sopra è una traduzione. L'originale inglese è ciò che la CLI importa, ciò che l'agente legge in esecuzione e ciò che l'hash qui sotto attesta.

Trigger

Un passo fa a un modello una domanda la cui risposta è uno di pochi valori noti — sì o no, una di cinque etichette, un livello da basso ad alto — e poi legge quel valore nella prosa che ha scritto. Oppure la stessa domanda viene posta a centinaia di elementi. È una decisione tipizzata travestita da chat.

Fai

  1. Ponila come domanda tipizzata (chimera decide, POST /api/decide o lo strumento decide): noul per sì/no, choice per una di un insieme, score per livelli ordinati. Torna una probabilità.
  2. Una condizione per domanda. "È un errore e viene dal database?" sono due domande; poni entrambe e combina le risposte nel codice, dove la regola è visibile.
  3. Dai alle opzioni nomi che non portano il verdetto (niente "yes", "safe", "pass") e metti il significato nei criteri. Un'opzione jolly ("other") è dove finisce una lettura incerta — dalle un criterio stretto o lasciala fuori. Fai in modo che le prime parole delle opzioni siano diverse: un modello locale legge l'etichetta dal primo token, quindi coding e coding_agent non si possono mai distinguere (24 dei 231 item pubblici di JevBench sono rimasti senza lettura così). Sull'opzione jolly, misurato su 1.000 oggetti di commit: un "other" ampio ha assorbito il 78% degli item che appartenevano a un'opzione nominata, uno stretto il 58%; toglierlo ha portato l'F1 delle classi nominate da 0,24 a 0,43, al prezzo che gli item davvero fuori dall'insieme finiscano su un'opzione nominata.
  4. Mostra al modello solo la cosa giudicata: non l'output degli strumenti intorno, non una frase che perora una risposta.
  5. Scegli ogni soglia da esempi etichettati, mai a occhio, e tieni il numero accanto alla decisione che ha alimentato.
  6. Tieni aritmetica, date e conteggi nel codice: calcola il fatto, mettilo nello stato e fai la domanda su di esso. Un modello di decisione legge; non calcola (nel livello difficile di JevBench il modello locale ha azzeccato 1 item su 15 di date e numeri).

Evita

Lasciare che il numero chiuda, salti o approvi il lavoro. Una decisione può aggiungere controllo — una revisione, un avviso, una seconda verifica — e nient'altro: l'unica decisione di questo progetto che poteva dire "fermati qui" ha peggiorato ogni modello che guidava, e tanto più quanto migliore era il modello.

Evita anche di leggere la risposta dopo un ragionamento (il numero collassa a 0 o 1), di dividere un giudizio in atomi che descrivono qualcosa che entrambe le classi condividono (un atomo "distrugge dati?" ha segnalato puliture legittime quanto attacchi) e di prendere una probabilità grezza per calibrata. Tieni lo stato essenziale: una riga per ogni fatto che non è scattato (una colonna di "none") ha spostato il numero su ogni item, e lo stesso contenuto ripetuto si legge come uno schema che non c'è.

Verifica

  • Il linter accetta ogni domanda (una domanda rifiutata non arriva mai a un modello).
  • Ogni domanda risponde in entrambi i sensi sui tuoi elementi; una che dice sempre la stessa cosa sta leggendo il formato, non il testo.
  • Con uno stato lungo e un modello locale, il prompt sta nella finestra di contesto — un taglio silenzioso passa per un risultato del modello.
  • Da qualche parte, un campione etichettato mostra che il numero separa i casi che contano — e copre ogni modo in cui la decisione sbaglia, su entrambi i lati; un campione di un solo tipo di errore calibra solo quel tipo.
  • Prima di leggere un cambio di formulazione come un effetto, rifai la domanda invariata e guarda quanto si muove il numero da solo.

Rischio

Una risposta tipizzata sembra più certa della prosa, e non lo è: un modello piccolo può ordinare bene e comunque sbagliare con sicurezza a metà della sua scala. Tratta un numero non calibrato come un indizio, registralo e calibra sulle tue etichette prima che una soglia significhi qualcosa.

Come usarla

La scheda è un dato. Clona il repository e importala per percorso — ciò che arriva dalla rete è trattato come contaminato e trattenuto in attesa di approvazione, che è il comportamento desiderabile e il motivo per cui qui non c'è un installatore in una riga.

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/system-one-design/SKILL.md

Integrità

SHA-256 del file così com'è pubblicato. Chi lo importa può verificare che ciò che ha ricevuto sia ciò che questa pagina mostrava.

347bfae9f826835f3351a60983b826f9b59fe5a7a9c1b87bf1a7bc3415ece699

Leggi la scheda nel repository →