Ho appena approfondito MiroThinker 1.5, e il loro modo di comprimere gli Agent è un po' strano, ma una volta capito, risulta davvero utile. Il problema centrale è "come inserire 400 utilizzi di Tool in un contesto di 256K". Hanno fatto un'operazione estremamente audace: hanno applicato una maschera fisica all'Observation (risultato del tool) nella storia di ReAct, che si basa su think-action-observation. A parte le ultime K iterazioni, hanno sostituito tutti i risultati dei Tool delle centinaia di iterazioni precedenti con la frase "Il risultato del tool è omesso per risparmiare token". Tuttavia, hanno mantenuto intatti tutti i <thought>. C'è un aspetto molto controintuitivo: questo agent sta facendo una ricerca approfondita, quindi lascia solo le ultime K iterazioni, ovvero 5, e non ha più nulla delle precedenti, come può rispondere alle domande? Qui c'è un presupposto molto sottile ma cruciale: finché il Thought è sufficientemente denso, in realtà si avvicina all'infinito a un Summary. Ogni generazione di Thought è essenzialmente un'informazione a fette dell'attuale Observation. Quando T1 viene generato, ha già "mangiato" i dati chiave di O1 nella sua mente. Anche se O1 è stato sostituito con un segnaposto, T1 è ancora presente. T1 diventa il "pacchetto di compressione delle informazioni" di O1. Non è necessario avere un Agent di Summary separato, questa catena di Thought completa è in sé un "riassunto dinamico" ad alta fedeltà che si aggiorna continuamente.