feat(Fase2): context injection pi→agy — environment, session_state, durable_memory, web_context
Best practice context engineering (Lost in the Middle, TACL 2024; tag XML Gemini): - Tool agy inietta automaticamente un blocco di contesto prima della richiesta utente (che resta SEMPRE per ultima, anti lost-in-the-middle). - <environment_snapshot>: cwd, OS, data/ora, git branch + file modificati. - <session_state>: ultimi messaggi utente pi compatti (non il transcript grezzo). - <durable_memory>: archivio memory.json auto-aggiornato oltre una soglia di turni. - <web_context>: ricerca web Strada A via Gemini API (googleSearch grounding) con webSearch=auto|on. - Token cap ~1500 (contextTokens), configurabile. - Nuovi parametri tool agy: injectContext (default true), webSearch (override). - Nuove chiavi config: contextInject, contextTokens, webSearch. - README aggiornato.
This commit is contained in:
@@ -71,6 +71,28 @@ Il comando `/agy:status` apre un overlay TUI con lo stato dell'estensione:
|
||||
|
||||
Chiudi con `Enter` o `Esc`.
|
||||
|
||||
### Context Injection (Fase 2) — `pi → agy`
|
||||
|
||||
Quando il tool `agy` (o altri con l'opzione `injectContext`) invia un prompt a
|
||||
Gemini, l'estensione **inietta automaticamente** un blocco di contesto prima
|
||||
della richiesta utente, seguendo le best practice di context engineering:
|
||||
|
||||
```
|
||||
<environment_snapshot> ← cwd, OS, data/ora, git branch + file modificati
|
||||
<session_state> ← ultimi messaggi utente pi (compatti, non il transcript)
|
||||
<durable_memory> ← archivio fatti chiave (memory.json, auto-aggiornato)
|
||||
<web_context> ← risultati ricerca web (Strada A, se pertinente)
|
||||
--------------------------------
|
||||
[ RICHIESTA UTENTE ] ← sempre per ultima (anti lost-in-the-middle)
|
||||
```
|
||||
|
||||
- **Tag XML** e richiesta per ultima (evidenze “Lost in the Middle”, TACL 2024)
|
||||
- **Token cap** default ~1500 (chiave `contextTokens`)
|
||||
- **Memoria durevole** automatica: oltre una soglia di turni, i punti chiave
|
||||
vengono condensati in `~/.config/agy-pi/memory.json` invece di rigirare tutto
|
||||
- **Ricerca web** (Strada A): con `webSearch=auto|on` l'estensione cerca con
|
||||
l'API Gemini (`googleSearch` grounding) e inietta i risultati nel `<web_context>`
|
||||
|
||||
| Chiave | Default | Descrizione |
|
||||
|---|---|---|
|
||||
| `geminiApiKey` | — | Chiave API Google Gemini (STT/TTS) |
|
||||
@@ -85,6 +107,9 @@ Chiudi con `Enter` o `Esc`.
|
||||
| `agyBin` | `agy` | Path del binario agy |
|
||||
| `agyDefaultModel` | — | Modello predefinito per le chiamate agy |
|
||||
| `agyTimeoutMs` | `180000` | Timeout esecuzione agy (ms) |
|
||||
| `contextInject` | `true` | Iniezione contesto nel prompt agy |
|
||||
| `contextTokens` | `1500` | Token cap per il contesto iniettato |
|
||||
| `webSearch` | `auto` | Ricerca web Strada A: `auto` \| `on` \| `off` |
|
||||
|
||||
Le variabili d'ambiente (`GEMINI_API_KEY`, `AGY_STT_BACKEND`, ecc.) hanno
|
||||
priorità sul file di config quando impostate.
|
||||
|
||||
Reference in New Issue
Block a user