Vai al contenuto

Skills

chimera-ground-it-in-the-source

Prendi la firma dalla versione installata, non dalla memoria — un'API plausibile è indistinguibile da una reale finché non viene eseguita.

PatternProvenienza: cleanStato: activev0.1.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

  • chiamo una libreria che non ho scritto
  • come si chiama il parametro
  • l'API è cambiata tra le versioni
  • uso un framework andando a memoria
  • AttributeError su un metodo che dovrebbe esistere

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

Stai per scrivere una chiamata verso la libreria, il framework o la CLI di qualcun altro: un nome di metodo, un argomento keyword, una chiave di configurazione, la forma di un valore di ritorno, un flag. Vale in modo particolarmente netto quando il ricordo sembra sicuro, perché la sicurezza viene prodotta allo stesso modo che l'API esista o no.

Non si applica ai builtin del linguaggio che usi di continuo, e non è un'istruzione ad andare a cercare la documentazione prima di scrivere dict.get. Il discrimine è se sbagliare verrebbe intercettato subito dalla prossima cosa che esegui.

Fai

  1. Ricava la versione effettivamente installata, non quella di cui ricordi di aver letto: uv pip show <pkg>, oppure python -c "import pkg; print(pkg.__version__)".
  2. Leggi la cosa installata. python -c "import inspect, pkg; print(inspect.signature(pkg.fn))", oppure apri il file sotto site-packages, oppure lancia --help sul binario che sta nel PATH. È questa l'autorità, perché è il codice che verrà eseguito.
  3. Quando usi un post di blog, un README trovato in rete, o il tuo stesso ricordo, trattalo come un'ipotesi e confermalo contro il passo 2. I siti di documentazione descrivono l'ultima release; il tuo lockfile potrebbe non fissarla.
  4. Esegui la chiamata una volta in uno snippet usa-e-getta e stampa il valore di ritorno reale prima di scrivere codice che indicizza dentro la tua assunzione su di esso. Le forme annidate — ["choices"][0]["message"] — sono il punto in cui la memoria è meno affidabile e meno propensa a fallire in modo rumoroso.
  5. Lascia la prova accanto al codice: la versione, e la firma o l'output di help che hai letto. Basta un commento o il corpo della PR, e dice a chi legge dopo di te contro cosa è stato scritto il codice.

Evita

Scrivere testo che ha la forma di un'API. Il fallimento non è un refuso — un refuso solleva subito un errore e si corregge in pochi secondi. È un nome che rispetta ogni singola convenzione di naming della libreria e non esiste:

Uno vero, preso da questo repository, e la forma è il punto — la supposizione non era assurda, era ragionevole:


from chimera.core.checkpoint import WorkspaceGuard, diff_snapshots   # ImportError

# Where it actually is. One grep, before writing the line, would have found it.
from chimera.core.checkpoint import WorkspaceGuard
from chimera.evolution.diff_gate import diff_snapshots

Il costo non è stata l'eccezione — un ImportError è rumoroso ed economico. Il costo è che la stessa supposizione sicura di sé su un comportamento fallisce in silenzio, e te ne accorgi solo quando il numero che ha prodotto si rivela sbagliato.

Evita anche di ancorarti alla versione sbagliata. Leggere la documentazione corrente di un pacchetto fissato due major indietro produce codice corretto rispetto a una libreria che non stai eseguendo — e il messaggio d'errore, quando arriva, punta alla tua chiamata invece che al disallineamento.

Ed evita di accettare un type checker che passa come forma di ancoraggio quando il pacchetto non distribuisce stub. Contro una dipendenza non tipizzata, Any inghiotte ogni attributo che ti inventi; il controllo riporta successo perché non aveva nulla da controllare.

Verifica

Per ogni chiamata non ovvia nel diff, sai indicare dove l'hai vista — una firma che hai stampato, una riga in site-packages, un --help che hai eseguito? Se per una qualsiasi la risposta onesta è "sembrava giusta", quella chiamata non è verificata, e dirlo costa una frase.

Il controllo più forte è eseguibile: lancia lo snippet del passo 4 contro la versione installata e incolla il suo output. Un import che si risolve e una chiamata che restituisce la forma che ti aspettavi sono due fatti diversi; è il secondo quello su cui stai contando.

Rischio

Applicato a tutto, questo trasforma il codice di routine in ricerca e rallenta il lavoro senza alcun guadagno. Spendilo sulla chiamata che non conosci, su quella sensibile alla versione e sulla forma di ritorno annidata — non sulle cento righe che le circondano.

Il rischio più sottile è ancorarsi troppo letteralmente. Il sorgente installato ti mostrerà volentieri _internal_helper, che esiste, funziona oggi, e non è una promessa di nessuno. Il sorgente ti dice cosa c'è; la documentazione ti dice cosa è supportato. Quando i due divergono, preferisci la superficie documentata, e se ti spingi oltre consapevolmente, dillo nel commento invece di lasciare che chi legge dopo di te assuma che fosse una scelta sanzionata.

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/chimera-ground-it-in-the-source/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.

9a51bb6b117c736dba1de11a166efed09ad200134e153ad553f4701302025398

Leggi la scheda nel repository