Context poisoning

Scopri cos'è il context poisoning, come riconoscerlo in una sessione di Bob Shell e come recuperare avviando una nuova sessione o migliorando l'igiene del contesto.

Informazioni sul context poisoning

Il context poisoning si verifica quando informazioni errate o irrilevanti entrano nella finestra di contesto e rimangono nel transcript. Bob tratta queste informazioni come fatti nelle richieste successive. Le risposte deviano. Le chiamate agli strumenti diventano imprecise. L'obiettivo del lavoro va perso.

Questo è diverso da una singola risposta errata. I dati errati si trovano in Messages (o sono entrati tramite una lettura di file, un incolla di output di comando o un commento obsoleto). Bob li reinvia a ogni richiesta fino a quando non azzeri o avvii una nuova sessione.

Per informazioni su come si riempie la finestra e quando avviare una nuova sessione, consulta Gestione della finestra di contesto.

Sintomi

Probabilmente stai affrontando un context poisoning quando noti uno dei seguenti:

  • Output peggiore: I suggerimenti si ripetono, divagano o smettono di corrispondere al repository.
  • Uso errato degli strumenti: I passaggi degli strumenti nel transcript non corrispondono più a ciò che hai chiesto.
  • Lavoro multi-step bloccato: I flussi di lavoro multi-prompt lunghi si bloccano o si fermano.
  • Correzioni di breve durata: Un prompt correttivo aiuta una volta, ma poi il problema ritorna.
  • Confusione degli strumenti: Bob usa gli strumenti in modo errato anche se le definizioni degli strumenti non sono cambiate.

Se Messages è già grande, controlla prima l'utilizzo dei token. Poisoning e finestra sovraffollata spesso si verificano insieme.

Cause comuni

CausaCosa succede
Fatti errati nella sessioneBob afferma qualcosa di errato. Gli scambi successivi lo trattano come verità in Messages.
Testo del repository obsoleto o erratoCommenti obsoleti, frammenti di README o documenti generati inducono in errore le letture dei file.
Incolla eccessiviLog o snippet con rumore, troncamenti o caratteri nascosti finiscono in Messages.
CondensazioneBob riassume i Messages più vecchi. I dettagli utili scompaiono. Ciò che rimane può dominare la sessione.
Contesto irrilevanteFile non correlati, vecchi piani o un precedente obiettivo del lavoro esistono ancora nel transcript.

Una volta che il contesto errato è in Messages, persiste in ogni richiesta successiva. Bob non ignora in modo affidabile il testo plausibile solo perché è errato.

Limiti dei prompt correttivi

Incollare definizioni degli strumenti, regole o un prompt correttivo rigoroso nella conversazione potrebbe mascherare il problema per uno o due scambi. La cronologia di Messages avvelenata è ancora lì. La prossima domanda fuori tema può far riemergere lo stesso problema.

La soluzione affidabile è una nuova sessione: esci e riesegui bob per ricominciare da capo. Questo cancella i Messages avvelenati mantenendo Rules e i file del progetto su disco.

Recupero

  • Avvia una nuova sessione uscendo e rieseguendo bob. Questo cancella i Messages avvelenati mantenendo Rules e i file del progetto su disco.
  • Incolla meno. Invia solo le righe di log o gli errori di cui Bob ha bisogno. I dump di grandi dimensioni aumentano Messages e introducono più rischi.
  • Suddividi l'obiettivo del lavoro. Usa sessioni separate per passi non correlati in modo che un transcript obsoleto non venga trascinato avanti.
  • Controlla l'output degli strumenti. Se uno strumento restituisce dati errati, fermati e avvia una nuova sessione piuttosto che lasciare che Bob costruisca su di essi in Messages.
  • Fidati dei test, non del testo. Quando commenti e codice non concordano, indirizza Bob verso verifiche eseguibili. Questa è la stessa indicazione delle best practice per la finestra di contesto.

Prevenzione

La maggior parte della prevenzione è il risultato di una buona igiene del contesto:

  • Definisci l'obiettivo del lavoro prima dell'esplorazione del repository (gestione della finestra di contesto).
  • Mantieni AGENTS.md e Rules brevi e operativi.
  • Aggiungi file e log quando necessario, non in anticipo.
  • Azzera quando Messages cresce senza progressi.

Per letture a livello di repository, usa i subagent in modo che la sessione veda i risultati del subagent, non ogni passo dello strumento in Messages.

Ulteriori informazioni

Come valuti questo argomento?