Roomy Chat
A cosa serve
Roomy Chat è l'editor conversazionale persistente del romanzo. Serve a fare domande, discutere problemi narrativi, chiedere valutazioni e coinvolgere specialisti senza trasformare ogni richiesta in una lavorazione formale dell'Assistente editoriale o del Senior Editor.
La Chat conosce il romanzo attivo e può usare il Mondo del romanzo e il contesto disponibile per rispondere.
Conversazioni persistenti
Ogni chat appartiene a un romanzo e viene salvata. Puoi:
- creare una nuova chat;
- riaprire conversazioni precedenti;
- rinominarle;
- eliminarle con conferma.
Quando invii una richiesta, il tuo messaggio compare subito nella conversazione. Roomy mostra l'attività effettiva del Supervisor e degli eventuali specialisti; quando il percorso richiede una synthesis, il testo della risposta appare progressivamente se il provider supporta lo streaming. Una risposta diretta viene mostrata appena il Supervisor l'ha completata.
Durante l'elaborazione compare anche una riga compatta con il profilo Roomy, il provider e il modello effettivi, lo stato e i token o la latenza quando disponibili. In caso di fallback, la riga identifica il modello realmente usato.
Se apri Roomy Chat senza una conversazione selezionata, Roomy apre normalmente la più recente disponibile per il romanzo attivo.
Romanzo attivo e isolamento della conversazione
Roomy Chat usa sempre il romanzo attivo del selettore globale. L'ultimo romanzo selezionato viene ricordato per utente nel workspace corrente e può essere ripristinato dopo la ricreazione della sessione; la memoria di un workspace non viene usata come selezione valida in un altro workspace.
Prima di costruire il contesto della richiesta e prima di chiamare l'LLM, Roomy esegue una guardia finale che verifica contemporaneamente che:
- il romanzo presente nella sessione coincida con quello su cui la pagina Chat è stata renderizzata;
- il romanzo esista ancora nel workspace corrente;
- la conversazione selezionata appartenga effettivamente a quel romanzo.
Se una di queste condizioni non è più vera, la richiesta viene bloccata prima della chiamata AI. Roomy non tenta di adattare automaticamente una conversazione di un altro romanzo e non invia all'LLM un contesto cross-novel.
Questa guardia copre anche il primo invio dopo session recreation o un cambio di contesto avvenuto tra rendering e submit: una vecchia conversazione non può essere riutilizzata silenziosamente con il nuovo romanzo attivo.
Titoli delle chat
La prima richiesta dell'utente viene usata per creare un titolo breve e leggibile della conversazione. Questa operazione è deterministica: Roomy non effettua una chiamata AI aggiuntiva solo per inventare il titolo.
Anche vecchie conversazioni con nomi generici possono essere rinominate automaticamente usando la prima domanda salvata.
Che cosa conosce la Chat
La Chat riceve il contesto del romanzo e può recuperare informazioni strutturate su entità pertinenti, per esempio:
- Personaggi;
- Luoghi;
- Oggetti;
- Gruppi;
- Struttura narrativa e altri dati canonici utili;
- storico della conversazione corrente.
Non deve confondere informazioni in attesa di riconciliazione con canon stabile. Le informazioni puramente narrative segnate come pending o unsupported vengono mantenute separate finché non sono verificate o decise dall'autrice.
Contesto mirato
Roomy può usare il testo della richiesta per recuperare le entità pertinenti e il livello di dettaglio utile. In questa fase il contesto Chat non viene ridotto aggressivamente: una conversazione può aver bisogno del contesto del romanzo, delle entità coinvolte e dei turni precedenti.
Quando una domanda riguarda esplicitamente storia, evoluzione o profilo completo di un'entità, può essere necessario includere anche informazioni storiche. Per una domanda semplice, invece, è preferibile il profilo corrente.
Supervisor: risposta diretta o specialisti
Roomy Chat usa un contratto del Supervisor specifico per il workflow conversazionale. In una sola chiamata il Supervisor decide se:
- rispondere direttamente usando il contesto Roomy disponibile;
- coinvolgere uno o più specialisti quando aggiungono competenza reale.
Non viene eseguita una seconda chiamata AI soltanto per decidere quale modalità usare.
Una domanda come «Chi è Vittoria?» può quindi essere completata direttamente dal Chat Supervisor se il contesto disponibile contiene già la risposta. In questo caso il percorso normale richiede una sola chiamata LLM.
Una domanda come «Il comportamento medico descritto in questa scena è plausibile?» può invece richiedere uno specialista pertinente. Per ogni specialista selezionato il Supervisor prepara un compito focalizzato sul suo dominio.
Se l'utente chiede esplicitamente un certo specialista e quello specialista è disponibile, il Supervisor deve tenerne conto.
Il Supervisor usato dall'analisi editoriale del capitolo conserva invece il proprio contratto di selezione specialistica: il direct answer è una capacità della Chat, non del Chapter Editor.
Specialisti isolati
Gli specialisti lavorano come consulenti separati. Un medico non deve fingere di essere uno storico e uno storico non deve decidere la qualità letteraria complessiva del capitolo.
Quando sono selezionati più specialisti, Roomy mantiene il bounded parallelism dell'orchestrazione: il numero di esecuzioni concorrenti è limitato, l'ordine finale dei contributi resta stabile e il fallimento di un singolo agente non annulla automaticamente gli altri.
Gli eventi live di questi worker vengono inoltrati al pannello LLM tramite un relay thread-safe: i thread degli specialisti non aggiornano direttamente Streamlit. Il pannello viene aggiornato dal thread orchestratore.
Se uno specialista fallisce
Un errore di uno specialista non deve essere trasformato in un parere inventato. Roomy registra il contributo come non disponibile e può continuare la risposta con le informazioni rimaste, quando il workflow lo consente.
L'Editor/Supervisor finale deve sapere che quel parere non è arrivato.
Quando viene eseguita la synthesis
La synthesis viene eseguita quando il Chat Supervisor ha richiesto specialisti. La risposta finale non è una semplice concatenazione dei contributi: Roomy li valuta criticamente rispetto alla domanda, al romanzo e alle eventuali divergenze.
Uno specialista può sbagliare, essere irrilevante o basarsi su un'ipotesi non supportata. Il suo contributo è consulenza, non autorità.
La synthesis rimane anche come fallback di sicurezza. Se il Supervisor seleziona zero specialisti ma la direct_answer restituita è assente o vuota, Roomy non interrompe la Chat: usa il precedente percorso di synthesis.
In termini operativi:
- richiesta semplice con direct answer valida:
chat_supervisore risposta; - richiesta specialistica:
chat_supervisor→ specialisti →chat_synthesis; - direct answer non valida:
chat_supervisor→chat_synthesisdi fallback.
Il risultato del Supervisor espone inoltre il percorso applicativo chat_direct oppure chat_synthesis. Nella telemetria LLM la presenza della call chat_synthesis distingue quantitativamente il secondo percorso: una direct chat normale ha una sola logical LLM call.
Pannello LLM
Quando il workflow espone lo stato delle chiamate, il pannello identifica il ruolo professionale della chiamata oltre a provider e modello, per esempio Supervisor o il nome dello specialista coinvolto. Mostra inoltre lo stato del tentativo e, quando disponibili, fallback, token e latenza.
Il pannello è osservabilità: non modifica l'esito della risposta e non sostituisce i dati persistiti della telemetria.
Ricerca esterna
Gli specialisti possono, quando configurato e giustificato, richiedere una verifica esterna attraverso il sistema di ricerca di Roomy.
Il Fact Checker non è uno specialista selezionabile dal Supervisor: è una capacità condivisa di verifica. La ricerca restituisce evidenze, non canon.
Persistenza dei messaggi
La richiesta dell'utente viene salvata prima dell'esecuzione AI. Dopo una generazione riuscita, Roomy salva invece come un unico risultato transazionale la risposta dell'Editor e tutti gli eventuali contributi specialistici, comprese le informazioni tecniche già previste come provider, modello e uso token.
La risposta mostrata durante la generazione è provvisoria: diventa parte dello storico canonico solo dopo il salvataggio atomico della risposta completa e dei contributi. Se generazione o salvataggio falliscono, il messaggio dell'utente resta disponibile e la risposta incompleta non viene registrata come completata.
Se il salvataggio del risultato generato fallisce prima del commit, Roomy non conserva una risposta dell'Editor con provenienza specialistica parziale e segnala esplicitamente che il salvataggio completo non è stato confermato. Il messaggio dell'utente già salvato rimane nella conversazione.
Con SQLite cloud esiste anche un caso distinto: il commit locale può riuscire ma il successivo snapshot cloud può non essere confermato. In quel caso la risposta e tutti i contributi sono già registrati localmente come unità completa; Roomy segnala il problema di durabilità cloud e non ripete automaticamente la generazione.
Questo contratto non modifica il formato delle conversazioni esistenti: vecchie Chat possono essere riaperte e continuate normalmente, purché appartengano al romanzo attivo.
Questo materiale entra anche nel Portable Workspace secondo le regole già previste per le conversazioni; la telemetria tecnica resta invece dato operativo.
Chat e manoscritto
Roomy Chat non è un comando implicito di riscrittura del manoscritto. Una risposta conversazionale non sostituisce automaticamente una scena e non diventa official.
Se vuoi produrre una nuova versione concreta di una scena, usa una trasformazione dell'Assistente editoriale oppure trasferisci consapevolmente il risultato nel testo.
Chat e Mondo
Allo stesso modo, una frase detta da Roomy in Chat non diventa automaticamente canon. Il Mondo ha propri meccanismi di modifica, approvazione e riconciliazione.
La conversazione può aiutarti a prendere una decisione; la decisione autoriale deve poi essere registrata nello strumento appropriato.
Chat e Senior Editor
Roomy Chat è adatta a domande locali e ragionamento iterativo. Senior Editor è invece una revisione persistente dell'opera completa con snapshot e output finali strutturati.
Chiedere in Chat «che ne pensi del romanzo?» non equivale a eseguire il Senior Editor.
Chat e Assistente editoriale
Usa la Chat se vuoi dialogare: «Questo comportamento di Emma è credibile?», «Quali problemi vedi in questa scelta?», «Fammi ragionare sulle alternative».
Usa l'Assistente editoriale quando vuoi un'operazione ripetibile su una scena o capitolo: analisi, proofreading, riduzione, riscrittura, sintesi o proposta di nuova versione.
Eliminare una chat
L'eliminazione della conversazione richiede conferma ed è definitiva per quella chat. Non elimina il romanzo o il Mondo, ma cancella lo storico conversazionale associato.
Esempio
Chiedi: «È plausibile che questo personaggio sopravviva tre giorni con questa ferita?». Il Supervisor può coinvolgere Medicina, lo specialista può chiedere una verifica esterna se davvero necessaria, e Roomy sintetizza il risultato rispetto al romanzo. La risposta resta nella Chat. Se decidi di modificare la scena, sei tu a passare all'Editor o a una trasformazione appropriata.
Se invece chiedi «Chi è Vittoria?» e l'informazione è già nel contesto Roomy, il Supervisor può fornire direttamente la risposta senza una synthesis LLM aggiuntiva.
Regola pratica
Chat semplice = una decisione che può essere già la risposta.
Chat agentica = Supervisor → specialisti → synthesis.
Assistente editoriale = lavorare su una specifica versione di testo.
Senior Editor = revisionare sistematicamente l'opera completa.