feat(Opzione4): workflow vocale a 2 fasi con overlay TUI + vocalPlanningMode

- Dopo la trascrizione F12, agy genera un PIANO (direttiva plan-first: 'produci
  solo il piano, NON eseguire nulla, attendi conferma') invece di avviare un
  loop agentico autonomo.
- Con vocalPlanningMode=true (default) un overlay TUI (ctx.ui.custom) mostra
  trascrizione + piano proposto e attende la conferma dell'utente:
    Enter esegui | Esc annulla | E modifica | F12 registra di nuovo
- E entra in modalità modifica del testo del piano; F12 ri-avvia la registrazione.
- vocalPlanningMode=false ripristina l'esecuzione diretta (autonomia piena).
- Nuova chiave config vocalPlanningMode (bool).
- README aggiornato.
This commit is contained in:
2026-08-11 00:08:09 +02:00
parent d357bc58f5
commit db36e78555
2 changed files with 157 additions and 7 deletions
+27
View File
@@ -110,6 +110,7 @@ della richiesta utente, seguendo le best practice di context engineering:
| `contextInject` | `true` | Iniezione contesto nel prompt agy |
| `contextTokens` | `1500` | Token cap per il contesto iniettato |
| `webSearch` | `auto` | Ricerca web Strada A: `auto` \| `on` \| `off` |
| `vocalPlanningMode` | `true` | Piano + conferma in overlay dopo il vocale |
Le variabili d'ambiente (`GEMINI_API_KEY`, `AGY_STT_BACKEND`, ecc.) hanno
priorità sul file di config quando impostate.
@@ -122,6 +123,32 @@ Il flusso: registra → taglia il silenzio → **trascrive con la Gemini API dir
interpreta con Gemini usando il contesto della conversazione → inserisce il
risultato come prompt su pi.
Con `vocalPlanningMode=true` (default) il flusso è **a 2 fasi con overlay TUI**:
dopo la trascrizione, l'estensione genera un **piano** e mostra un popup di
conferma con la trascrizione e il piano proposto:
```
🎙️ Conferma vocale
Trascrizione: "Aggiorna i docs..."
📋 Piano proposto: ...
Enter esegui • Esc annulla • E modifica • F12 registra di nuovo
```
- **Enter** → esegue il piano (invia il risultato a pi)
- **Esc** → annulla, nessuna azione
- **E** → modifica il testo del piano manualmente
- **F12** → registra di nuovo
Questa modalità evita che l'interpretazione vocale avvii autonomamente loop
agentici o modifiche a sorpresa: la direttiva di Gemini è "produci solo il piano,
non eseguire nulla", e l'esecuzione parte solo dopo la tua conferma. Per tornare
all'esecuzione diretta, imposta `vocalPlanningMode=false` con
`/agy:config set vocalPlanningMode false`.
Il testo scritto nel campo editor prima di avviare la registrazione viene letto
(`getEditorText`) e **combinato con la trascrizione audio** nel piano, poi
l'editor viene svuotato per evitare reinvii duplicati.
**Requisito**: la key Gemini API in `~/.agy-chat/gemini-key` (chmod 600) o nella
variabile d'ambiente `GEMINI_API_KEY`.