Guida all'Architettura dell'Estensione Chrome con Transformers.js
Una guida tecnica descrive come integrare Transformers.js in un'estensione Chrome sotto i vincoli di Manifest V3 (MV3). L'architettura suddivide le responsabilità su tre runtime: un service worker in background ospita i modelli AI e orchestra l'esecuzione degli strumenti, un pannello laterale fornisce l'interfaccia chat, e uno script di contenuto gestisce l'estrazione e l'evidenziazione del DOM. Il background esegue tutta l'inferenza—generazione di testo tramite Gemma 4 (onnx-community/gemma-4-E2B-it-ONNX) e embeddings tramite MiniLM (onnx-community/all-MiniLM-L6-v2-ONNX)—per evitare caricamenti duplicati dei modelli e mantenere reattiva l'interfaccia. La messaggistica è tipizzata tramite enum, con il background come unico coordinatore. Lo stato è distribuito: la cronologia delle conversazioni rimane nella memoria del background, le preferenze degli strumenti usano chrome.storage.local, i vettori della cronologia semantica usano IndexedDB, e il contenuto della pagina estratto è memorizzato nella cache per URL. Il ciclo di chiamata degli strumenti separa i messaggi interni del modello dai messaggi chat rivolti all'interfaccia, analizzando l'output del modello per le chiamate agli strumenti ed eseguendole in modo deterministico. La configurazione di build usa Vite con output multi-entry per ogni runtime. La guida enfatizza una chiara separazione delle responsabilità e considerazioni pratiche sul ciclo di vita di MV3, come la sospensione del service worker e la gestione della cache dei modelli.
Fatti principali
- Utilizza Transformers.js per inferenza AI locale in un'estensione Chrome con Manifest V3.
- Tre runtime: service worker in background, pannello laterale, script di contenuto.
- Il background ospita i modelli: Gemma 4 per generazione di testo, MiniLM per embeddings.
- Tutta l'inferenza viene eseguita in background per evitare caricamenti duplicati.
- La messaggistica usa enum tipizzati; il background è l'unico coordinatore.
- Stato suddiviso: conversazione in memoria, impostazioni in chrome.storage.local, vettori in IndexedDB, cache pagina per URL.
- Il ciclo di chiamata degli strumenti separa i messaggi interni del modello dai messaggi chat dell'interfaccia.
- Build con Vite multi-entry per background.js, sidebar.html, content.js.
Entità
Istituzioni
- Hugging Face
- Chrome Web Store
- GitHub