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
| Causa | Cosa succede |
|---|---|
| Fatti errati nella sessione | Bob afferma qualcosa di errato. Gli scambi successivi lo trattano come verità in Messages. |
| Testo del repository obsoleto o errato | Commenti obsoleti, frammenti di README o documenti generati inducono in errore le letture dei file. |
| Incolla eccessivi | Log o snippet con rumore, troncamenti o caratteri nascosti finiscono in Messages. |
| Condensazione | Bob riassume i Messages più vecchi. I dettagli utili scompaiono. Ciò che rimane può dominare la sessione. |
| Contesto irrilevante | File 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.mde 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.