diff --git a/docs/it/channels/slack.md b/docs/it/channels/slack.md index 26c48557a..df8333315 100644 --- a/docs/it/channels/slack.md +++ b/docs/it/channels/slack.md @@ -1,13 +1,13 @@ --- read_when: - Configurazione di Slack o debug della modalità socket/HTTP di Slack -summary: Configurazione di Slack e comportamento di runtime (Socket Mode + URL di richiesta HTTP) +summary: Configurazione di Slack e comportamento in fase di esecuzione (Socket Mode + URL di richiesta HTTP) title: Slack x-i18n: - generated_at: "2026-04-07T08:12:56Z" + generated_at: "2026-04-08T06:02:10Z" model: gpt-5.4 provider: openai - source_hash: 2b8fd2cc6c638ee82069f0af2c2b6f6f49c87da709b941433a0343724a9907ea + source_hash: cad132131ddce688517def7c14703ad314441c67aacc4cc2a2a721e1d1c01942 source_path: channels/slack.md workflow: 15 --- @@ -24,7 +24,7 @@ Stato: pronto per la produzione per DM + canali tramite integrazioni dell'app Sl Comportamento nativo dei comandi e catalogo dei comandi. - Diagnostica tra canali e playbook di riparazione. + Diagnostica tra canali e procedure di ripristino. @@ -37,9 +37,9 @@ Stato: pronto per la produzione per DM + canali tramite integrazioni dell'app Sl Nelle impostazioni dell'app Slack premi il pulsante **[Create New App](https://api.slack.com/apps/new)**: - scegli **from a manifest** e seleziona un workspace per la tua app - - incolla il [manifest di esempio](#manifest-and-scope-checklist) qui sotto e continua per creare + - incolla il [manifesto di esempio](#manifest-and-scope-checklist) qui sotto e continua per creare l'app - genera un **App-Level Token** (`xapp-...`) con `connections:write` - - installa l'app e copia il **Bot Token** (`xoxb-...`) mostrato + - installa l'app e copia il **Bot Token** (`xoxb-...`) visualizzato @@ -83,9 +83,9 @@ openclaw gateway Nelle impostazioni dell'app Slack premi il pulsante **[Create New App](https://api.slack.com/apps/new)**: - scegli **from a manifest** e seleziona un workspace per la tua app - - incolla il [manifest di esempio](#manifest-and-scope-checklist) e aggiorna gli URL prima di creare + - incolla il [manifesto di esempio](#manifest-and-scope-checklist) e aggiorna gli URL prima della creazione - salva il **Signing Secret** per la verifica delle richieste - - installa l'app e copia il **Bot Token** (`xoxb-...`) mostrato + - installa l'app e copia il **Bot Token** (`xoxb-...`) visualizzato @@ -125,7 +125,7 @@ openclaw gateway -## Checklist di manifest e scope +## Manifesto ed elenco di controllo degli scope @@ -290,13 +290,12 @@ openclaw gateway - + Aggiungi lo scope bot `chat:write.customize` se vuoi che i messaggi in uscita usino l'identità dell'agente attivo (nome utente e icona personalizzati) invece dell'identità predefinita dell'app Slack. Se usi un'icona emoji, Slack si aspetta la sintassi `:emoji_name:`. - - + Se configuri `channels.slack.userToken`, gli scope di lettura tipici sono: - `channels:history`, `groups:history`, `im:history`, `mpim:history` @@ -305,7 +304,7 @@ openclaw gateway - `reactions:read` - `pins:read` - `emoji:read` - - `search:read` (se dipendi dalle letture di ricerca di Slack) + - `search:read` (se dipendi dalle letture della ricerca di Slack) @@ -316,26 +315,26 @@ openclaw gateway - La modalità HTTP richiede `botToken` + `signingSecret`. - `botToken`, `appToken`, `signingSecret` e `userToken` accettano stringhe in chiaro o oggetti SecretRef. -- I token di configurazione sovrascrivono il fallback env. +- I token nella configurazione hanno la precedenza sul fallback env. - Il fallback env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` si applica solo all'account predefinito. -- `userToken` (`xoxp-...`) è solo di configurazione (nessun fallback env) e usa per impostazione predefinita il comportamento di sola lettura (`userTokenReadOnly: true`). +- `userToken` (`xoxp-...`) è solo di configurazione (nessun fallback env) e per impostazione predefinita usa il comportamento di sola lettura (`userTokenReadOnly: true`). -Comportamento dello snapshot di stato: +Comportamento dell'istantanea di stato: - L'ispezione dell'account Slack traccia i campi `*Source` e `*Status` - per credenziale (`botToken`, `appToken`, `signingSecret`, `userToken`). -- Lo stato è `available`, `configured_unavailable` o `missing`. + per ogni credenziale (`botToken`, `appToken`, `signingSecret`, `userToken`). +- Lo stato può essere `available`, `configured_unavailable` o `missing`. - `configured_unavailable` significa che l'account è configurato tramite SecretRef - o un'altra sorgente di secret non inline, ma il percorso di comando/runtime corrente + o un'altra origine di segreti non inline, ma il percorso di comando/esecuzione corrente non è riuscito a risolvere il valore effettivo. -- In modalità HTTP, è incluso `signingSecretStatus`; in Socket Mode, la +- In modalità HTTP è incluso `signingSecretStatus`; in Socket Mode, la coppia richiesta è `botTokenStatus` + `appTokenStatus`. -Per le letture di azioni/directory, il token utente può essere preferito quando configurato. Per le scritture, il token bot resta preferito; le scritture con token utente sono consentite solo quando `userTokenReadOnly: false` e il token bot non è disponibile. +Per azioni/letture di directory, il user token può essere preferito quando configurato. Per le scritture, il bot token resta preferito; le scritture con user token sono consentite solo quando `userTokenReadOnly: false` e il bot token non è disponibile. -## Azioni e controlli +## Azioni e vincoli Le azioni Slack sono controllate da `channels.slack.actions.*`. @@ -343,13 +342,13 @@ Gruppi di azioni disponibili negli strumenti Slack correnti: | Gruppo | Predefinito | | ---------- | ----------- | -| messages | abilitato | -| reactions | abilitato | -| pins | abilitato | -| memberInfo | abilitato | -| emojiList | abilitato | +| messages | abilitato | +| reactions | abilitato | +| pins | abilitato | +| memberInfo | abilitato | +| emojiList | abilitato | -Le attuali azioni sui messaggi Slack includono `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` ed `emoji-list`. +Le azioni correnti sui messaggi Slack includono `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` ed `emoji-list`. ## Controllo degli accessi e instradamento @@ -362,53 +361,53 @@ Le attuali azioni sui messaggi Slack includono `send`, `upload-file`, `download- - `open` (richiede che `channels.slack.allowFrom` includa `"*"`; legacy: `channels.slack.dm.allowFrom`) - `disabled` - Flag dei DM: + Flag DM: - `dm.enabled` (predefinito true) - - `channels.slack.allowFrom` (consigliato) + - `channels.slack.allowFrom` (preferito) - `dm.allowFrom` (legacy) - - `dm.groupEnabled` (i DM di gruppo sono false per impostazione predefinita) - - `dm.groupChannels` (allowlist MPIM facoltativa) + - `dm.groupEnabled` (DM di gruppo predefiniti su false) + - `dm.groupChannels` (allowlist MPIM opzionale) Precedenza multi-account: - `channels.slack.accounts.default.allowFrom` si applica solo all'account `default`. - - Gli account con nome ereditano `channels.slack.allowFrom` quando il proprio `allowFrom` non è impostato. + - Gli account con nome ereditano `channels.slack.allowFrom` quando il loro `allowFrom` non è impostato. - Gli account con nome non ereditano `channels.slack.accounts.default.allowFrom`. L'associazione nei DM usa `openclaw pairing approve slack `. - + `channels.slack.groupPolicy` controlla la gestione dei canali: - `open` - `allowlist` - `disabled` - L'allowlist dei canali si trova in `channels.slack.channels` e dovrebbe usare ID canale stabili. + L'allowlist dei canali si trova in `channels.slack.channels` e dovrebbe usare ID di canale stabili. - Nota di runtime: se `channels.slack` è completamente assente (configurazione solo env), il runtime usa come fallback `groupPolicy="allowlist"` e registra un avviso (anche se `channels.defaults.groupPolicy` è impostato). + Nota di esecuzione: se `channels.slack` è completamente assente (configurazione solo env), in fase di esecuzione viene usato il fallback `groupPolicy="allowlist"` e viene registrato un avviso (anche se `channels.defaults.groupPolicy` è impostato). Risoluzione nome/ID: - - le voci dell'allowlist dei canali e dell'allowlist dei DM vengono risolte all'avvio quando l'accesso tramite token lo consente - - le voci irrisolte del nome del canale vengono mantenute come configurate ma ignorate per impostazione predefinita ai fini dell'instradamento - - l'autorizzazione in ingresso e l'instradamento del canale sono basati prima di tutto sugli ID; la corrispondenza diretta di username/slug richiede `channels.slack.dangerouslyAllowNameMatching: true` + - le voci nell'allowlist dei canali e nell'allowlist DM vengono risolte all'avvio quando l'accesso ai token lo consente + - le voci non risolte per nome di canale vengono mantenute come configurate ma ignorate per l'instradamento per impostazione predefinita + - l'autorizzazione in ingresso e l'instradamento del canale usano gli ID come priorità; la corrispondenza diretta con nome utente/slug richiede `channels.slack.dangerouslyAllowNameMatching: true` - I messaggi del canale sono per impostazione predefinita soggetti al controllo delle menzioni. + Per impostazione predefinita, i messaggi nel canale sono vincolati dalle menzioni. - Sorgenti delle menzioni: + Origini delle menzioni: - menzione esplicita dell'app (`<@botId>`) - pattern regex di menzione (`agents.list[].groupChat.mentionPatterns`, fallback `messages.groupChat.mentionPatterns`) - - comportamento implicito di risposta nel thread al bot (disabilitato quando `thread.requireExplicitMention` è `true`) + - comportamento implicito di risposta nei thread al bot (disabilitato quando `thread.requireExplicitMention` è `true`) - Controlli per canale (`channels.slack.channels.`; nomi solo tramite risoluzione all'avvio o `dangerouslyAllowNameMatching`): + Controlli per canale (`channels.slack.channels.`; i nomi solo tramite risoluzione all'avvio o `dangerouslyAllowNameMatching`): - `requireMention` - `users` (allowlist) @@ -416,7 +415,7 @@ Le attuali azioni sui messaggi Slack includono `send`, `upload-file`, `download- - `skills` - `systemPrompt` - `tools`, `toolsBySender` - - formato della chiave `toolsBySender`: `id:`, `e164:`, `username:`, `name:` o wildcard `"*"` + - formato chiave `toolsBySender`: `id:`, `e164:`, `username:`, `name:` oppure wildcard `"*"` (le chiavi legacy senza prefisso continuano a essere mappate solo a `id:`) @@ -424,28 +423,28 @@ Le attuali azioni sui messaggi Slack includono `send`, `upload-file`, `download- ## Thread, sessioni e tag di risposta -- I DM sono instradati come `direct`; i canali come `channel`; gli MPIM come `group`. -- Con il valore predefinito `session.dmScope=main`, i DM di Slack confluiscono nella sessione principale dell'agente. -- Sessioni del canale: `agent::slack:channel:`. -- Le risposte nei thread possono creare suffissi di sessione del thread (`:thread:`) quando applicabile. +- I DM vengono instradati come `direct`; i canali come `channel`; gli MPIM come `group`. +- Con l'impostazione predefinita `session.dmScope=main`, i DM Slack collassano nella sessione principale dell'agente. +- Sessioni canale: `agent::slack:channel:`. +- Le risposte nei thread possono creare suffissi di sessione thread (`:thread:`) quando applicabile. - Il valore predefinito di `channels.slack.thread.historyScope` è `thread`; il valore predefinito di `thread.inheritParent` è `false`. -- `channels.slack.thread.initialHistoryLimit` controlla quanti messaggi esistenti del thread vengono recuperati quando inizia una nuova sessione del thread (predefinito `20`; imposta `0` per disabilitare). -- `channels.slack.thread.requireExplicitMention` (predefinito `false`): quando è `true`, sopprime le menzioni implicite nel thread in modo che il bot risponda solo a menzioni esplicite `@bot` all'interno dei thread, anche quando il bot ha già partecipato al thread. Senza questo, le risposte in un thread a cui partecipa il bot bypassano il controllo `requireMention`. +- `channels.slack.thread.initialHistoryLimit` controlla quanti messaggi esistenti del thread vengono recuperati quando inizia una nuova sessione thread (predefinito `20`; imposta `0` per disabilitare). +- `channels.slack.thread.requireExplicitMention` (predefinito `false`): quando è `true`, sopprime le menzioni implicite nei thread così il bot risponde solo a menzioni `@bot` esplicite all'interno dei thread, anche quando il bot ha già partecipato al thread. Senza questa opzione, le risposte in un thread con partecipazione del bot aggirano il vincolo `requireMention`. -Controlli del threading delle risposte: +Controlli del thread di risposta: - `channels.slack.replyToMode`: `off|first|all|batched` (predefinito `off`) - `channels.slack.replyToModeByChatType`: per `direct|group|channel` -- fallback legacy per le chat dirette: `channels.slack.dm.replyToMode` +- fallback legacy per chat dirette: `channels.slack.dm.replyToMode` -Sono supportati tag di risposta manuali: +Sono supportati i tag di risposta manuali: - `[[reply_to_current]]` - `[[reply_to:]]` -Nota: `replyToMode="off"` disabilita **tutto** il threading delle risposte in Slack, inclusi i tag espliciti `[[reply_to_*]]`. Questo differisce da Telegram, dove i tag espliciti vengono comunque rispettati in modalità `"off"`. La differenza riflette i modelli di threading delle piattaforme: i thread di Slack nascondono i messaggi al canale, mentre le risposte di Telegram restano visibili nel flusso principale della chat. +Nota: `replyToMode="off"` disabilita **tutto** il threading delle risposte in Slack, inclusi i tag espliciti `[[reply_to_*]]`. Questo differisce da Telegram, dove i tag espliciti vengono comunque rispettati in modalità `"off"`. La differenza riflette i modelli di threading delle piattaforme: i thread di Slack nascondono i messaggi dal canale, mentre le risposte di Telegram restano visibili nel flusso principale della chat. -## Reazioni di conferma +## Reazioni di ack `ackReaction` invia un'emoji di conferma mentre OpenClaw elabora un messaggio in ingresso. @@ -458,7 +457,7 @@ Ordine di risoluzione: Note: -- Slack si aspetta shortcodes (ad esempio `"eyes"`). +- Slack si aspetta shortcodes (per esempio `"eyes"`). - Usa `""` per disabilitare la reazione per l'account Slack o globalmente. ## Streaming del testo @@ -467,23 +466,27 @@ Note: - `off`: disabilita lo streaming dell'anteprima in tempo reale. - `partial` (predefinito): sostituisce il testo di anteprima con l'output parziale più recente. -- `block`: aggiunge aggiornamenti di anteprima suddivisi in blocchi. +- `block`: aggiunge aggiornamenti di anteprima a blocchi. - `progress`: mostra testo di stato dell'avanzamento durante la generazione, poi invia il testo finale. -`channels.slack.nativeStreaming` controlla lo streaming nativo del testo di Slack quando `streaming` è `partial` (predefinito: `true`). +`channels.slack.streaming.nativeTransport` controlla lo streaming di testo nativo di Slack quando `channels.slack.streaming.mode` è `partial` (predefinito: `true`). -- Deve essere disponibile un thread di risposta perché appaia lo streaming nativo del testo. La selezione del thread continua comunque a seguire `replyToMode`. In assenza di un thread, viene usata la normale anteprima bozza. -- I contenuti multimediali e i payload non testuali usano il fallback alla consegna normale. +- Deve essere disponibile un thread di risposta perché compaiano lo streaming di testo nativo e lo stato del thread assistant di Slack. La selezione del thread continua comunque a seguire `replyToMode`. +- Le radici di canale e chat di gruppo possono comunque usare la normale anteprima bozza quando lo streaming nativo non è disponibile. +- I DM Slack di livello superiore restano per impostazione predefinita fuori thread, quindi non mostrano l'anteprima in stile thread; usa risposte nel thread o `typingReaction` se vuoi progressi visibili lì. +- I payload multimediali e non testuali usano il fallback alla consegna normale. - Se lo streaming fallisce a metà risposta, OpenClaw usa il fallback alla consegna normale per i payload rimanenti. -Usa l'anteprima bozza invece dello streaming nativo del testo di Slack: +Usa l'anteprima bozza invece dello streaming di testo nativo di Slack: ```json5 { channels: { slack: { - streaming: "partial", - nativeStreaming: false, + streaming: { + mode: "partial", + nativeTransport: false, + }, }, }, } @@ -491,12 +494,13 @@ Usa l'anteprima bozza invece dello streaming nativo del testo di Slack: Chiavi legacy: -- `channels.slack.streamMode` (`replace | status_final | append`) viene migrato automaticamente in `channels.slack.streaming`. -- il booleano `channels.slack.streaming` viene migrato automaticamente in `channels.slack.nativeStreaming`. +- `channels.slack.streamMode` (`replace | status_final | append`) viene migrato automaticamente a `channels.slack.streaming.mode`. +- il booleano `channels.slack.streaming` viene migrato automaticamente a `channels.slack.streaming.mode` e `channels.slack.streaming.nativeTransport`. +- il legacy `channels.slack.nativeStreaming` viene migrato automaticamente a `channels.slack.streaming.nativeTransport`. ## Fallback della reazione di digitazione -`typingReaction` aggiunge una reazione temporanea al messaggio Slack in ingresso mentre OpenClaw elabora una risposta, poi la rimuove quando l'esecuzione termina. Questo è particolarmente utile al di fuori delle risposte nei thread, che usano un indicatore di stato predefinito "sta scrivendo...". +`typingReaction` aggiunge una reazione temporanea al messaggio Slack in ingresso mentre OpenClaw elabora una risposta, poi la rimuove quando l'esecuzione termina. È particolarmente utile fuori dalle risposte nei thread, che usano un indicatore di stato predefinito "sta digitando...". Ordine di risoluzione: @@ -505,24 +509,24 @@ Ordine di risoluzione: Note: -- Slack si aspetta shortcodes (ad esempio `"hourglass_flowing_sand"`). -- La reazione è best-effort e la pulizia viene tentata automaticamente al termine della risposta o del percorso di errore. +- Slack si aspetta shortcodes (per esempio `"hourglass_flowing_sand"`). +- La reazione è best-effort e il cleanup viene tentato automaticamente dopo il completamento della risposta o del percorso di errore. ## Media, suddivisione in blocchi e consegna - Gli allegati di file Slack vengono scaricati da URL privati ospitati da Slack (flusso di richiesta autenticato con token) e scritti nel media store quando il recupero riesce e i limiti di dimensione lo consentono. + Gli allegati file di Slack vengono scaricati da URL privati ospitati da Slack (flusso di richiesta autenticato tramite token) e scritti nell'archivio media quando il recupero riesce e i limiti di dimensione lo consentono. - Il limite di dimensione in ingresso in runtime è per impostazione predefinita `20MB`, salvo override tramite `channels.slack.mediaMaxMb`. + Il limite di dimensione in ingresso in fase di esecuzione è per impostazione predefinita `20MB`, salvo override con `channels.slack.mediaMaxMb`. - i blocchi di testo usano `channels.slack.textChunkLimit` (predefinito 4000) - - `channels.slack.chunkMode="newline"` abilita la suddivisione con priorità ai paragrafi + - `channels.slack.chunkMode="newline"` abilita la suddivisione dando priorità ai paragrafi - gli invii di file usano le API di upload di Slack e possono includere risposte nei thread (`thread_ts`) - - il limite dei media in uscita segue `channels.slack.mediaMaxMb` quando configurato; altrimenti gli invii del canale usano i valori predefiniti per tipo MIME dalla pipeline dei media + - il limite dei media in uscita segue `channels.slack.mediaMaxMb` quando configurato; altrimenti gli invii del canale usano i valori predefiniti per tipo MIME dalla pipeline media @@ -531,26 +535,26 @@ Note: - `user:` per i DM - `channel:` per i canali - I DM di Slack vengono aperti tramite le API di conversazione di Slack quando si invia a destinazioni utente. + I DM Slack vengono aperti tramite le API di conversazione di Slack quando si invia verso destinazioni utente. ## Comandi e comportamento slash -- La modalità automatica dei comandi nativi è **disattivata** per Slack (`commands.native: "auto"` non abilita i comandi nativi di Slack). -- Abilita gli handler dei comandi nativi di Slack con `channels.slack.commands.native: true` (o globale `commands.native: true`). +- La modalità automatica dei comandi nativi è **disattivata** per Slack (`commands.native: "auto"` non abilita i comandi nativi Slack). +- Abilita gli handler dei comandi nativi Slack con `channels.slack.commands.native: true` (o globale `commands.native: true`). - Quando i comandi nativi sono abilitati, registra in Slack i comandi slash corrispondenti (nomi `/`), con un'eccezione: - registra `/agentstatus` per il comando di stato (Slack riserva `/status`) - Se i comandi nativi non sono abilitati, puoi eseguire un singolo comando slash configurato tramite `channels.slack.slashCommand`. -- I menu degli argomenti nativi ora adattano la loro strategia di rendering: +- I menu argomento nativi ora adattano la propria strategia di rendering: - fino a 5 opzioni: blocchi di pulsanti - - 6-100 opzioni: menu di selezione statico - - oltre 100 opzioni: selezione esterna con filtro asincrono delle opzioni quando sono disponibili gli handler delle opzioni di interattività + - 6-100 opzioni: menu statico di selezione + - più di 100 opzioni: selezione esterna con filtro asincrono delle opzioni quando sono disponibili gli handler delle opzioni di interattività - se i valori delle opzioni codificati superano i limiti di Slack, il flusso usa il fallback ai pulsanti - Per payload di opzioni lunghi, i menu degli argomenti dei comandi slash usano una finestra di conferma prima di inviare un valore selezionato. -Impostazioni predefinite del comando slash: +Impostazioni predefinite dei comandi slash: - `enabled: false` - `name: "openclaw"` @@ -561,11 +565,11 @@ Le sessioni slash usano chiavi isolate: - `agent::slack:slash:` -e continuano comunque a instradare l'esecuzione del comando verso la sessione della conversazione di destinazione (`CommandTargetSessionKey`). +e continuano a instradare l'esecuzione del comando rispetto alla sessione della conversazione di destinazione (`CommandTargetSessionKey`). ## Risposte interattive -Slack può visualizzare controlli interattivi di risposta creati dall'agente, ma questa funzionalità è disabilitata per impostazione predefinita. +Slack può eseguire il rendering di controlli interattivi di risposta creati dagli agenti, ma questa funzionalità è disabilitata per impostazione predefinita. Abilitala globalmente: @@ -599,42 +603,42 @@ Oppure abilitala solo per un account Slack: } ``` -Quando è abilitata, gli agenti possono emettere direttive di risposta solo per Slack: +Quando è abilitata, gli agenti possono emettere direttive di risposta solo Slack: - `[[slack_buttons: Approve:approve, Reject:reject]]` - `[[slack_select: Choose a target | Canary:canary, Production:production]]` -Queste direttive vengono compilate in Slack Block Kit e instradano clic o selezioni attraverso il percorso eventi di interazione Slack esistente. +Queste direttive vengono compilate in Slack Block Kit e instradano clic o selezioni di nuovo attraverso il percorso eventi di interazione Slack esistente. Note: -- Questa è un'interfaccia utente specifica di Slack. Gli altri canali non traducono le direttive Slack Block Kit nei propri sistemi di pulsanti. +- Si tratta di UI specifica per Slack. Gli altri canali non traducono le direttive Slack Block Kit nei propri sistemi di pulsanti. - I valori dei callback interattivi sono token opachi generati da OpenClaw, non valori grezzi creati dall'agente. -- Se i blocchi interattivi generati superano i limiti di Slack Block Kit, OpenClaw usa il fallback alla risposta di testo originale invece di inviare un payload di blocchi non valido. +- Se i blocchi interattivi generati superano i limiti di Slack Block Kit, OpenClaw usa il fallback alla risposta testuale originale invece di inviare un payload blocks non valido. ## Approvazioni exec in Slack -Slack può agire come client di approvazione nativo con pulsanti e interazioni interattive, invece di usare il fallback alla Web UI o al terminale. +Slack può agire come client di approvazione nativo con pulsanti interattivi e interazioni, invece di usare il fallback alla Web UI o al terminale. -- Le approvazioni exec usano `channels.slack.execApprovals.*` per l'instradamento nativo di DM/canali. -- Le approvazioni dei plugin possono comunque essere risolte tramite la stessa superficie nativa di pulsanti Slack quando la richiesta arriva già in Slack e il tipo di ID di approvazione è `plugin:`. -- L'autorizzazione dell'approvatore continua a essere applicata: solo gli utenti identificati come approvatori possono approvare o rifiutare richieste tramite Slack. +- Le approvazioni exec usano `channels.slack.execApprovals.*` per l'instradamento nativo in DM/canale. +- Le approvazioni dei plugin possono comunque risolversi tramite la stessa superficie nativa di pulsanti Slack quando la richiesta arriva già in Slack e il tipo di ID approvazione è `plugin:`. +- L'autorizzazione degli approvatori continua a essere applicata: solo gli utenti identificati come approvatori possono approvare o negare richieste tramite Slack. -Questo usa la stessa superficie condivisa di pulsanti di approvazione degli altri canali. Quando `interactivity` è abilitato nelle impostazioni della tua app Slack, i prompt di approvazione vengono visualizzati come pulsanti Block Kit direttamente nella conversazione. -Quando questi pulsanti sono presenti, sono l'esperienza utente primaria per l'approvazione; OpenClaw -dovrebbe includere un comando `/approve` manuale solo quando il risultato dello strumento indica che le -approvazioni in chat non sono disponibili o che l'approvazione manuale è l'unico percorso. +Questo usa la stessa superficie condivisa dei pulsanti di approvazione degli altri canali. Quando `interactivity` è abilitato nelle impostazioni della tua app Slack, le richieste di approvazione vengono renderizzate come pulsanti Block Kit direttamente nella conversazione. +Quando questi pulsanti sono presenti, costituiscono la UX di approvazione primaria; OpenClaw +dovrebbe includere un comando manuale `/approve` solo quando il risultato dello strumento indica che le +approvazioni in chat non sono disponibili o che l'approvazione manuale è l'unico percorso possibile. Percorso di configurazione: - `channels.slack.execApprovals.enabled` -- `channels.slack.execApprovals.approvers` (facoltativo; usa come fallback `commands.ownerAllowFrom` quando possibile) +- `channels.slack.execApprovals.approvers` (opzionale; usa il fallback a `commands.ownerAllowFrom` quando possibile) - `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, predefinito: `dm`) - `agentFilter`, `sessionFilter` Slack abilita automaticamente le approvazioni exec native quando `enabled` non è impostato o è `"auto"` e viene risolto almeno un approvatore. Imposta `enabled: false` per disabilitare esplicitamente Slack come client di approvazione nativo. -Imposta `enabled: true` per forzare l'attivazione delle approvazioni native quando gli approvatori vengono risolti. +Imposta `enabled: true` per forzare le approvazioni native quando vengono risolti gli approvatori. Comportamento predefinito senza configurazione esplicita delle approvazioni exec Slack: @@ -647,7 +651,7 @@ Comportamento predefinito senza configurazione esplicita delle approvazioni exec ``` La configurazione nativa esplicita di Slack è necessaria solo quando vuoi sovrascrivere gli approvatori, aggiungere filtri o -scegliere la consegna alla chat di origine: +scegliere la consegna nella chat di origine: ```json5 { @@ -663,24 +667,24 @@ scegliere la consegna alla chat di origine: } ``` -L'inoltro condiviso `approvals.exec` è separato. Usalo solo quando i prompt di approvazione exec devono essere inoltrati anche -ad altre chat o a destinazioni esplicite fuori banda. Anche l'inoltro condiviso `approvals.plugin` è +L'inoltro condiviso `approvals.exec` è separato. Usalo solo quando le richieste di approvazione exec devono anche +essere instradate verso altre chat o destinazioni esplicite fuori banda. Anche l'inoltro condiviso `approvals.plugin` è separato; i pulsanti nativi Slack possono comunque risolvere le approvazioni dei plugin quando tali richieste arrivano già in Slack. -Anche `/approve` nella stessa chat funziona nei canali e nei DM di Slack che supportano già i comandi. Vedi [Approvazioni exec](/it/tools/exec-approvals) per il modello completo di inoltro delle approvazioni. +Anche `/approve` nella stessa chat funziona in canali e DM Slack che già supportano i comandi. Vedi [Approvazioni exec](/it/tools/exec-approvals) per il modello completo di inoltro delle approvazioni. ## Eventi e comportamento operativo -- Le modifiche/eliminazioni dei messaggi e i thread broadcast vengono mappati in eventi di sistema. -- Gli eventi di aggiunta/rimozione delle reazioni vengono mappati in eventi di sistema. -- Gli eventi di ingresso/uscita dei membri, creazione/ridenominazione del canale e aggiunta/rimozione dei pin vengono mappati in eventi di sistema. +- Le modifiche/eliminazioni dei messaggi e i broadcast dei thread vengono mappati in eventi di sistema. +- Gli eventi di aggiunta/rimozione di reazioni vengono mappati in eventi di sistema. +- Gli eventi di ingresso/uscita dei membri, creazione/rinomina dei canali e aggiunta/rimozione dei pin vengono mappati in eventi di sistema. - `channel_id_changed` può migrare le chiavi di configurazione del canale quando `configWrites` è abilitato. - I metadati di topic/purpose del canale sono trattati come contesto non attendibile e possono essere iniettati nel contesto di instradamento. -- Il messaggio iniziale del thread e il seeding iniziale del contesto della cronologia del thread vengono filtrati dagli allowlist del mittente configurati quando applicabile. -- Le azioni di blocco e le interazioni modali emettono eventi di sistema strutturati `Slack interaction: ...` con campi payload avanzati: - - azioni di blocco: valori selezionati, etichette, valori del selettore e metadati `workflow_*` - - eventi modali `view_submission` e `view_closed` con metadati del canale instradato e input del modulo +- Il seeding del contesto del thread starter e della cronologia iniziale del thread viene filtrato dalle allowlist di mittenti configurate quando applicabile. +- Le block actions e le interazioni con modali emettono eventi di sistema strutturati `Slack interaction: ...` con campi payload ricchi: + - block actions: valori selezionati, etichette, valori picker e metadati `workflow_*` + - eventi modali `view_submission` e `view_closed` con metadati del canale instradati e input del modulo ## Puntatori al riferimento di configurazione @@ -689,19 +693,19 @@ Riferimento principale: - [Riferimento di configurazione - Slack](/it/gateway/configuration-reference#slack) Campi Slack ad alto segnale: - - modalità/autenticazione: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` + - modalità/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` - accesso DM: `dm.enabled`, `dmPolicy`, `allowFrom` (legacy: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` - - interruttore di compatibilità: `dangerouslyAllowNameMatching` (break-glass; tienilo disattivato salvo necessità) - - accesso ai canali: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention` + - interruttore di compatibilità: `dangerouslyAllowNameMatching` (ultima risorsa; lascialo disattivato salvo necessità) + - accesso canale: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention` - threading/cronologia: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` - - consegna: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `nativeStreaming` + - consegna: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport` - operazioni/funzionalità: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly` ## Risoluzione dei problemi - Controlla, in ordine: + Verifica, in ordine: - `groupPolicy` - allowlist dei canali (`channels.slack.channels`) @@ -719,11 +723,11 @@ openclaw doctor - Controlla: + Verifica: - `channels.slack.dm.enabled` - - `channels.slack.dmPolicy` (o il legacy `channels.slack.dm.policy`) - - approvazioni di associazione / voci di allowlist + - `channels.slack.dmPolicy` (o legacy `channels.slack.dm.policy`) + - approvazioni di associazione / voci dell'allowlist ```bash openclaw pairing list slack @@ -746,11 +750,11 @@ openclaw pairing list slack - signing secret - percorso webhook - - URL di richiesta Slack (Eventi + Interattività + Comandi slash) - - `webhookPath` univoco per account HTTP + - URL di richiesta Slack (Eventi + Interattività + Comandi Slash) + - `webhookPath` univoco per ogni account HTTP - Se `signingSecretStatus: "configured_unavailable"` appare negli snapshot - dell'account, l'account HTTP è configurato ma il runtime corrente non è riuscito + Se `signingSecretStatus: "configured_unavailable"` appare nelle + istantanee dell'account, l'account HTTP è configurato ma il runtime corrente non è riuscito a risolvere il signing secret supportato da SecretRef. @@ -758,10 +762,10 @@ openclaw pairing list slack Verifica se intendevi usare: - - modalità comandi nativi (`channels.slack.commands.native: true`) con i corrispondenti comandi slash registrati in Slack + - modalità di comando nativo (`channels.slack.commands.native: true`) con i corrispondenti comandi slash registrati in Slack - oppure modalità comando slash singolo (`channels.slack.slashCommand.enabled: true`) - Controlla anche `commands.useAccessGroups` e le allowlist di canale/utente. + Controlla anche `commands.useAccessGroups` e le allowlist di canali/utenti. @@ -771,7 +775,7 @@ openclaw pairing list slack - [Associazione](/it/channels/pairing) - [Gruppi](/it/channels/groups) - [Sicurezza](/it/gateway/security) -- [Instradamento dei canali](/it/channels/channel-routing) +- [Instradamento del canale](/it/channels/channel-routing) - [Risoluzione dei problemi](/it/channels/troubleshooting) - [Configurazione](/it/gateway/configuration) - [Comandi slash](/it/tools/slash-commands) diff --git a/docs/it/concepts/memory.md b/docs/it/concepts/memory.md index b21f09596..7fe21c6ac 100644 --- a/docs/it/concepts/memory.md +++ b/docs/it/concepts/memory.md @@ -5,128 +5,160 @@ read_when: summary: Come OpenClaw ricorda le cose tra una sessione e l'altra title: Panoramica della memoria x-i18n: - generated_at: "2026-04-06T03:06:46Z" + generated_at: "2026-04-08T06:00:56Z" model: gpt-5.4 provider: openai - source_hash: d19d4fa9c4b3232b7a97f7a382311d2a375b562040de15e9fe4a0b1990b825e7 + source_hash: 3bb8552341b0b651609edaaae826a22fdc535d240aed4fad4af4b069454004af source_path: concepts/memory.md workflow: 15 --- # Panoramica della memoria -OpenClaw ricorda le cose scrivendo **semplici file Markdown** nel workspace del -tuo agente. Il modello "ricorda" solo ciò che viene salvato su disco -- non c'è -alcuno stato nascosto. +OpenClaw ricorda le cose scrivendo **semplici file Markdown** nello spazio di +lavoro del tuo agente. Il modello "ricorda" solo ciò che viene salvato su disco: +non esiste alcuno stato nascosto. ## Come funziona -Il tuo agente ha tre file correlati alla memoria: +Il tuo agente ha tre file relativi alla memoria: -- **`MEMORY.md`** -- memoria a lungo termine. Fatti durevoli, preferenze e - decisioni. Viene caricato all'inizio di ogni sessione DM. +- **`MEMORY.md`** -- memoria a lungo termine. Fatti duraturi, preferenze e + decisioni. Caricato all'inizio di ogni sessione di messaggi diretti. - **`memory/YYYY-MM-DD.md`** -- note giornaliere. Contesto in corso e osservazioni. Le note di oggi e di ieri vengono caricate automaticamente. -- **`DREAMS.md`** (sperimentale, facoltativo) -- Dream Diary e riepiloghi delle - scansioni di dreaming per la revisione umana. +- **`DREAMS.md`** (sperimentale, facoltativo) -- Diario dei sogni e riepiloghi + delle sessioni di dreaming per la revisione umana. -Questi file si trovano nel workspace dell'agente (predefinito `~/.openclaw/workspace`). +Questi file si trovano nello spazio di lavoro dell'agente (predefinito `~/.openclaw/workspace`). -Se vuoi che il tuo agente ricordi qualcosa, chiediglielo semplicemente: "Ricorda che +Se vuoi che il tuo agente ricordi qualcosa, basta chiederglielo: "Ricorda che preferisco TypeScript." Lo scriverà nel file appropriato. ## Strumenti di memoria -L'agente ha due strumenti per lavorare con la memoria: +L'agente dispone di due strumenti per lavorare con la memoria: -- **`memory_search`** -- trova note pertinenti usando la ricerca semantica, anche quando - la formulazione è diversa dall'originale. -- **`memory_get`** -- legge uno specifico file di memoria o un intervallo di righe. +- **`memory_search`** -- trova note pertinenti usando la ricerca semantica, anche + quando la formulazione è diversa dall'originale. +- **`memory_get`** -- legge un file di memoria specifico o un intervallo di righe. Entrambi gli strumenti sono forniti dal plugin di memoria attivo (predefinito: `memory-core`). +## Plugin complementare Memory Wiki + +Se vuoi che la memoria duratura si comporti più come una base di conoscenza +mantenuta che come semplici note grezze, usa il plugin incluso `memory-wiki`. + +`memory-wiki` compila la conoscenza duratura in un archivio wiki con: + +- struttura delle pagine deterministica +- affermazioni ed evidenze strutturate +- tracciamento delle contraddizioni e dell'attualità +- dashboard generate +- digest compilati per i consumer agent/runtime +- strumenti nativi wiki come `wiki_search`, `wiki_get`, `wiki_apply` e `wiki_lint` + +Non sostituisce il plugin di memoria attivo. Il plugin di memoria attivo +continua a gestire il richiamo, la promozione e il dreaming. `memory-wiki` +aggiunge accanto ad esso un livello di conoscenza ricco di provenienza. + +Vedi [Memory Wiki](/it/plugins/memory-wiki). + ## Ricerca nella memoria Quando è configurato un provider di embedding, `memory_search` usa la **ricerca -ibrida** -- combinando la similarità vettoriale (significato semantico) con la corrispondenza di parole chiave -(termini esatti come ID e simboli di codice). Funziona subito una volta che hai -una chiave API per qualsiasi provider supportato. +ibrida** -- combinando similarità vettoriale (significato semantico) con +corrispondenza di parole chiave (termini esatti come ID e simboli di codice). +Funziona subito, non appena disponi di una chiave API per qualsiasi provider supportato. -OpenClaw rileva automaticamente il tuo provider di embedding dalle chiavi API disponibili. Se -hai configurato una chiave OpenAI, Gemini, Voyage o Mistral, la ricerca nella memoria è -abilitata automaticamente. +OpenClaw rileva automaticamente il tuo provider di embedding dalle chiavi API +disponibili. Se hai configurato una chiave OpenAI, Gemini, Voyage o Mistral, la +ricerca nella memoria viene abilitata automaticamente. -Per i dettagli su come funziona la ricerca, le opzioni di ottimizzazione e la configurazione del provider, vedi -[Ricerca nella memoria](/it/concepts/memory-search). +Per i dettagli su come funziona la ricerca, le opzioni di regolazione e la +configurazione del provider, vedi +[Memory Search](/it/concepts/memory-search). ## Backend di memoria -Basato su SQLite. Funziona subito con ricerca per parole chiave, similarità vettoriale e -ricerca ibrida. Nessuna dipendenza aggiuntiva. +Basato su SQLite. Funziona subito con ricerca per parole chiave, similarità +vettoriale e ricerca ibrida. Nessuna dipendenza aggiuntiva. -Sidecar local-first con reranking, espansione delle query e la possibilità di indicizzare -directory esterne al workspace. +Sidecar local-first con reranking, espansione delle query e la possibilità di +indicizzare directory esterne allo spazio di lavoro. -Memoria cross-session nativa per l'AI con modellazione dell'utente, ricerca semantica e -consapevolezza multi-agente. Installazione del plugin. +Memoria cross-session AI-native con modellazione dell'utente, ricerca semantica +e consapevolezza multi-agente. Installazione tramite plugin. + + + +## Livello wiki della conoscenza + + + +Compila la memoria duratura in un archivio wiki ricco di provenienza con +affermazioni, dashboard, modalità bridge e flussi di lavoro compatibili con Obsidian. ## Flush automatico della memoria -Prima che la [compattazione](/it/concepts/compaction) riassuma la tua conversazione, OpenClaw +Prima che la [compaction](/it/concepts/compaction) riepiloghi la tua conversazione, OpenClaw esegue un turno silenzioso che ricorda all'agente di salvare il contesto importante nei file -di memoria. È attivo per impostazione predefinita -- non devi configurare nulla. +di memoria. È attivo per impostazione predefinita: non devi configurare nulla. -Il flush della memoria evita la perdita di contesto durante la compattazione. Se il tuo agente ha -fatti importanti nella conversazione che non sono ancora stati scritti in un file, verranno -salvati automaticamente prima che avvenga il riepilogo. +Il flush della memoria previene la perdita di contesto durante la compaction. Se +nella conversazione sono presenti fatti importanti che il tuo agente non ha +ancora scritto in un file, verranno salvati automaticamente prima che venga +generato il riepilogo. ## Dreaming (sperimentale) -Il dreaming è un passaggio facoltativo di consolidamento in background per la memoria. Raccoglie -segnali a breve termine, assegna un punteggio ai candidati e promuove solo gli elementi qualificati nella -memoria a lungo termine (`MEMORY.md`). +Il dreaming è un passaggio opzionale di consolidamento della memoria in background. Raccoglie +segnali a breve termine, valuta i candidati e promuove nella memoria a lungo +termine (`MEMORY.md`) solo gli elementi qualificati. -È progettato per mantenere alto il rapporto segnale/rumore nella memoria a lungo termine: +È progettato per mantenere alta la qualità della memoria a lungo termine: -- **Attivazione facoltativa**: disabilitato per impostazione predefinita. -- **Pianificato**: quando è abilitato, `memory-core` gestisce automaticamente un job cron ricorrente - per una scansione completa di dreaming. -- **Con soglia**: le promozioni devono superare le soglie di punteggio, frequenza di richiamo e - diversità delle query. -- **Rivedibile**: i riepiloghi delle fasi e le voci del diario vengono scritti in `DREAMS.md` - per la revisione umana. +- **Attivazione esplicita**: disabilitato per impostazione predefinita. +- **Pianificato**: quando è abilitato, `memory-core` gestisce automaticamente un + job cron ricorrente per una sessione completa di dreaming. +- **Con soglia**: le promozioni devono superare soglie di punteggio, frequenza + di richiamo e diversità delle query. +- **Verificabile**: i riepiloghi delle fasi e le voci del diario vengono scritti + in `DREAMS.md` per la revisione umana. -Per il comportamento delle fasi, i segnali di punteggio e i dettagli del Dream Diary, vedi -[Dreaming (sperimentale)](/concepts/dreaming). +Per il comportamento delle fasi, i segnali di punteggio e i dettagli del Diario +dei sogni, vedi [Dreaming (experimental)](/it/concepts/dreaming). ## CLI ```bash -openclaw memory status # Controlla lo stato dell'indice e del provider +openclaw memory status # Controlla lo stato dell'indice e il provider openclaw memory search "query" # Cerca dalla riga di comando openclaw memory index --force # Ricostruisce l'indice ``` -## Ulteriori letture +## Approfondimenti - [Builtin Memory Engine](/it/concepts/memory-builtin) -- backend SQLite predefinito - [QMD Memory Engine](/it/concepts/memory-qmd) -- sidecar local-first avanzato -- [Honcho Memory](/it/concepts/memory-honcho) -- memoria cross-session nativa per l'AI +- [Honcho Memory](/it/concepts/memory-honcho) -- memoria cross-session AI-native +- [Memory Wiki](/it/plugins/memory-wiki) -- archivio di conoscenza compilato e strumenti nativi wiki - [Memory Search](/it/concepts/memory-search) -- pipeline di ricerca, provider e - ottimizzazione -- [Dreaming (experimental)](/concepts/dreaming) -- promozione in background + regolazione +- [Dreaming (experimental)](/it/concepts/dreaming) -- promozione in background dal richiamo a breve termine alla memoria a lungo termine -- [Riferimento alla configurazione della memoria](/it/reference/memory-config) -- tutte le opzioni di configurazione -- [Compattazione](/it/concepts/compaction) -- come la compattazione interagisce con la memoria +- [Memory configuration reference](/it/reference/memory-config) -- tutte le opzioni di configurazione +- [Compaction](/it/concepts/compaction) -- come la compaction interagisce con la memoria diff --git a/docs/it/concepts/model-providers.md b/docs/it/concepts/model-providers.md index 1f9b30148..5be4ae03b 100644 --- a/docs/it/concepts/model-providers.md +++ b/docs/it/concepts/model-providers.md @@ -1,38 +1,38 @@ --- read_when: - - Ti serve un riferimento per la configurazione dei modelli provider per provider - - Vuoi configurazioni di esempio o comandi di onboarding CLI per i provider di modelli + - Hai bisogno di un riferimento per la configurazione dei modelli provider per provider + - Vuoi configurazioni di esempio o comandi CLI di onboarding per i provider di modelli summary: Panoramica dei provider di modelli con configurazioni di esempio + flussi CLI title: Provider di modelli x-i18n: - generated_at: "2026-04-08T02:15:56Z" + generated_at: "2026-04-08T06:02:39Z" model: gpt-5.4 provider: openai - source_hash: 26b36a2bc19a28a7ef39aa8e81a0050fea1d452ac4969122e5cdf8755e690258 + source_hash: 558ac9e34b67fcc3dd6791a01bebc17e1c34152fa6c5611593d681e8cfa532d9 source_path: concepts/model-providers.md workflow: 15 --- # Provider di modelli -Questa pagina copre i **provider di LLM/modelli** (non i canali chat come WhatsApp/Telegram). -Per le regole di selezione dei modelli, vedi [/concepts/models](/it/concepts/models). +Questa pagina tratta i **provider LLM/modello** (non i canali di chat come WhatsApp/Telegram). +Per le regole di selezione del modello, vedi [/concepts/models](/it/concepts/models). ## Regole rapide - I riferimenti ai modelli usano `provider/model` (esempio: `opencode/claude-opus-4-6`). -- Se imposti `agents.defaults.models`, diventa l'allowlist. +- Se imposti `agents.defaults.models`, diventa la allowlist. - Helper CLI: `openclaw onboard`, `openclaw models list`, `openclaw models set `. -- Le regole di runtime per il fallback, i probe di cooldown e la persistenza delle override di sessione sono - documentate in [/concepts/model-failover](/it/concepts/model-failover). +- Le regole di runtime per il fallback, i probe di cooldown e la persistenza + della sovrascrittura di sessione sono documentate in [/concepts/model-failover](/it/concepts/model-failover). - `models.providers.*.models[].contextWindow` sono metadati nativi del modello; `models.providers.*.models[].contextTokens` è il limite effettivo di runtime. - I plugin provider possono iniettare cataloghi di modelli tramite `registerProvider({ catalog })`; OpenClaw unisce quell'output in `models.providers` prima di scrivere `models.json`. -- I manifest dei provider possono dichiarare `providerAuthEnvVars` così le sonde generiche di autenticazione - basate su variabili d'ambiente non devono caricare il runtime del plugin. La mappa rimanente - delle variabili d'ambiente del core ora serve solo per provider core/non-plugin e per alcuni casi +- I manifest dei provider possono dichiarare `providerAuthEnvVars` in modo che i probe generici + di autenticazione basati su env non debbano caricare il runtime del plugin. La mappa restante + delle variabili env del core ora serve solo per provider non-plugin/core e per alcuni casi di precedenza generica, come l'onboarding Anthropic con priorità alla chiave API. - I plugin provider possono anche gestire il comportamento runtime del provider tramite `normalizeModelId`, `normalizeTransport`, `normalizeConfig`, @@ -52,218 +52,217 @@ Per le regole di selezione dei modelli, vedi [/concepts/models](/it/concepts/mod `resolveDefaultThinkingLevel`, `applyConfigDefaults`, `isModernModelRef`, `prepareRuntimeAuth`, `resolveUsageAuth`, `fetchUsageSnapshot`, e `onModelSelected`. -- Nota: `capabilities` del runtime del provider sono metadati condivisi del runner (famiglia - del provider, particolarità di trascrizione/tooling, suggerimenti di transport/cache). Non sono la - stessa cosa del [modello di capability pubblico](/it/plugins/architecture#public-capability-model) - che descrive ciò che registra un plugin (inferenza testuale, voce, ecc.). +- Nota: il runtime `capabilities` del provider è metadato condiviso del runner (famiglia + del provider, particolarità di transcript/tooling, suggerimenti su transport/cache). Non è la + stessa cosa del [modello pubblico delle capability](/it/plugins/architecture#public-capability-model) + che descrive ciò che un plugin registra (inferenza testuale, voce, ecc.). ## Comportamento del provider gestito dal plugin -I plugin provider ora possono gestire la maggior parte della logica specifica del provider, mentre OpenClaw mantiene -il ciclo di inferenza generico. +I plugin provider possono ora gestire la maggior parte della logica specifica del provider, mentre OpenClaw mantiene +il loop di inferenza generico. Suddivisione tipica: - `auth[].run` / `auth[].runNonInteractive`: il provider gestisce i flussi di onboarding/login per `openclaw onboard`, `openclaw models auth` e la configurazione headless -- `wizard.setup` / `wizard.modelPicker`: il provider gestisce etichette delle scelte di autenticazione, - alias legacy, suggerimenti per l'allowlist dell'onboarding e voci di configurazione nei picker di onboarding/modello -- `catalog`: il provider appare in `models.providers` -- `normalizeModelId`: il provider normalizza gli id dei modelli legacy/preview prima della - ricerca o canonicalizzazione +- `wizard.setup` / `wizard.modelPicker`: il provider gestisce etichette di scelta dell'autenticazione, + alias legacy, suggerimenti di allowlist per l'onboarding e voci di configurazione nei selettori di onboarding/modello +- `catalog`: il provider compare in `models.providers` +- `normalizeModelId`: il provider normalizza gli id dei modelli legacy/preview prima + della ricerca o della canonizzazione - `normalizeTransport`: il provider normalizza `api` / `baseUrl` della famiglia di transport prima dell'assemblaggio generico del modello; OpenClaw controlla prima il provider corrispondente, - poi gli altri plugin provider con capacità di hook finché uno non modifica effettivamente il + poi gli altri plugin provider compatibili con hook finché uno non modifica effettivamente il transport -- `normalizeConfig`: il provider normalizza la configurazione `models.providers.` prima che il - runtime la usi; OpenClaw controlla prima il provider corrispondente, poi gli altri - plugin provider con capacità di hook finché uno non modifica effettivamente la configurazione. Se nessun +- `normalizeConfig`: il provider normalizza la configurazione `models.providers.` prima + che il runtime la usi; OpenClaw controlla prima il provider corrispondente, poi gli altri + plugin provider compatibili con hook finché uno non modifica effettivamente la configurazione. Se nessun hook provider riscrive la configurazione, gli helper Google-family inclusi continuano comunque a normalizzare le voci provider Google supportate. -- `applyNativeStreamingUsageCompat`: il provider applica riscritture di compatibilità dell'uso dello streaming nativo guidate dall'endpoint per i provider di configurazione -- `resolveConfigApiKey`: il provider risolve l'autenticazione tramite marker d'ambiente per i provider di configurazione +- `applyNativeStreamingUsageCompat`: il provider applica riscritture di compatibilità per l'uso dello streaming nativo guidate dall'endpoint per i provider di configurazione +- `resolveConfigApiKey`: il provider risolve l'autenticazione tramite marker env per i provider di configurazione senza forzare il caricamento completo dell'autenticazione runtime. `amazon-bedrock` ha anche un - resolver integrato per marker d'ambiente AWS qui, anche se l'autenticazione runtime di Bedrock usa + risolutore integrato di marker env AWS qui, anche se l'autenticazione runtime di Bedrock usa la catena predefinita dell'SDK AWS. -- `resolveSyntheticAuth`: il provider può esporre la disponibilità di autenticazione locale/self-hosted o altra - autenticazione basata su configurazione senza persistere segreti in chiaro -- `shouldDeferSyntheticProfileAuth`: il provider può contrassegnare i placeholder di profili sintetici memorizzati - come di precedenza inferiore rispetto all'autenticazione basata su env/config -- `resolveDynamicModel`: il provider accetta id modello non ancora presenti nel - catalogo statico locale -- `prepareDynamicModel`: il provider necessita di un refresh dei metadati prima di ritentare +- `resolveSyntheticAuth`: il provider può esporre la disponibilità di autenticazione locale/self-hosted o di altro tipo + basata sulla configurazione senza persistere segreti in chiaro +- `shouldDeferSyntheticProfileAuth`: il provider può contrassegnare i placeholder di profilo sintetico memorizzati + come a precedenza più bassa rispetto all'autenticazione basata su env/config +- `resolveDynamicModel`: il provider accetta id di modelli non ancora presenti nel catalogo statico locale +- `prepareDynamicModel`: il provider richiede un aggiornamento dei metadati prima di ritentare la risoluzione dinamica -- `normalizeResolvedModel`: il provider necessita di riscritture del transport o del base URL +- `normalizeResolvedModel`: il provider richiede riscritture di transport o URL base - `contributeResolvedModelCompat`: il provider contribuisce flag di compatibilità per i propri modelli vendor anche quando arrivano tramite un altro transport compatibile -- `capabilities`: il provider pubblica particolarità di trascrizione/tooling/famiglia provider -- `normalizeToolSchemas`: il provider ripulisce gli schemi degli strumenti prima che il - runner incorporato li veda +- `capabilities`: il provider pubblica particolarità di transcript/tooling/famiglia provider +- `normalizeToolSchemas`: il provider ripulisce gli schemi degli strumenti prima che il runner + incorporato li veda - `inspectToolSchemas`: il provider espone avvisi di schema specifici del transport dopo la normalizzazione -- `resolveReasoningOutputMode`: il provider sceglie contratti di output del ragionamento nativi o con tag -- `prepareExtraParams`: il provider imposta valori predefiniti o normalizza i parametri di richiesta per modello -- `createStreamFn`: il provider sostituisce il normale percorso di streaming con un - transport completamente personalizzato -- `wrapStreamFn`: il provider applica wrapper di compatibilità per header/body/modello della richiesta -- `resolveTransportTurnState`: il provider fornisce header o metadati di transport nativi +- `resolveReasoningOutputMode`: il provider sceglie contratti di output di reasoning + nativi o con tag +- `prepareExtraParams`: il provider imposta valori predefiniti o normalizza parametri di richiesta per modello +- `createStreamFn`: il provider sostituisce il normale percorso di stream con un transport + completamente personalizzato +- `wrapStreamFn`: il provider applica wrapper di compatibilità a header/body/modello della richiesta +- `resolveTransportTurnState`: il provider fornisce header o metadati nativi del transport per turno -- `resolveWebSocketSessionPolicy`: il provider fornisce header nativi della sessione WebSocket +- `resolveWebSocketSessionPolicy`: il provider fornisce header di sessione WebSocket nativi o una policy di cool-down della sessione - `createEmbeddingProvider`: il provider gestisce il comportamento degli embedding di memoria quando - appartiene al plugin provider invece che allo switchboard embedding del core -- `formatApiKey`: il provider formatta i profili di autenticazione memorizzati nella stringa `apiKey` - di runtime attesa dal transport -- `refreshOAuth`: il provider gestisce il refresh OAuth quando i refresher condivisi `pi-ai` - non sono sufficienti -- `buildAuthDoctorHint`: il provider aggiunge indicazioni di riparazione quando il refresh OAuth + deve appartenere al plugin provider invece che allo switchboard embedding del core +- `formatApiKey`: il provider formatta i profili di autenticazione memorizzati nella stringa runtime + `apiKey` attesa dal transport +- `refreshOAuth`: il provider gestisce l'aggiornamento OAuth quando i refresher condivisi + `pi-ai` non sono sufficienti +- `buildAuthDoctorHint`: il provider aggiunge indicazioni di riparazione quando l'aggiornamento OAuth fallisce - `matchesContextOverflowError`: il provider riconosce errori di overflow della finestra di contesto - specifici del provider che le euristiche generiche non rileverebbero -- `classifyFailoverReason`: il provider mappa errori grezzi del transport/API specifici del provider - in motivi di failover come rate limit o overload -- `isCacheTtlEligible`: il provider decide quali id modello upstream supportano il TTL della cache del prompt -- `buildMissingAuthMessage`: il provider sostituisce l'errore generico dell'auth store + specifici del provider che le euristiche generiche non intercetterebbero +- `classifyFailoverReason`: il provider mappa errori raw di transport/API specifici del provider + in motivi di failover come limite di frequenza o sovraccarico +- `isCacheTtlEligible`: il provider decide quali id di modelli upstream supportano il TTL della cache dei prompt +- `buildMissingAuthMessage`: il provider sostituisce l'errore generico dell'auth-store con un suggerimento di recupero specifico del provider - `suppressBuiltInModel`: il provider nasconde righe upstream obsolete e può restituire un - errore gestito dal vendor per i fallimenti di risoluzione diretta + errore gestito dal vendor per errori di risoluzione diretta - `augmentModelCatalog`: il provider aggiunge righe di catalogo sintetiche/finali dopo - discovery e unione della configurazione -- `isBinaryThinking`: il provider gestisce la UX di thinking binario on/off + discovery e merge della configurazione +- `isBinaryThinking`: il provider gestisce l'esperienza utente thinking binaria on/off - `supportsXHighThinking`: il provider abilita `xhigh` per i modelli selezionati -- `resolveDefaultThinkingLevel`: il provider gestisce la policy `/think` predefinita per una +- `resolveDefaultThinkingLevel`: il provider gestisce la policy predefinita di `/think` per una famiglia di modelli -- `applyConfigDefaults`: il provider applica valori predefiniti globali specifici del provider - durante la materializzazione della configurazione in base a modalità di autenticazione, env o famiglia di modelli -- `isModernModelRef`: il provider gestisce il matching dei modelli preferiti per live/smoke -- `prepareRuntimeAuth`: il provider trasforma una credenziale configurata in un - token runtime di breve durata -- `resolveUsageAuth`: il provider risolve le credenziali di uso/quota per `/usage` - e superfici correlate di stato/reporting -- `fetchUsageSnapshot`: il provider gestisce il fetch/parsing dell'endpoint di uso mentre - il core mantiene comunque la shell di riepilogo e la formattazione +- `applyConfigDefaults`: il provider applica valori globali predefiniti specifici del provider + durante la materializzazione della configurazione in base alla modalità auth, all'env o alla famiglia di modelli +- `isModernModelRef`: il provider gestisce il matching del modello preferito per live/smoke +- `prepareRuntimeAuth`: il provider trasforma una credenziale configurata in un token runtime + di breve durata +- `resolveUsageAuth`: il provider risolve le credenziali di utilizzo/quota per `/usage` + e le relative superfici di stato/reporting +- `fetchUsageSnapshot`: il provider gestisce il fetch/parsing dell'endpoint di utilizzo mentre + il core continua a gestire shell di riepilogo e formattazione - `onModelSelected`: il provider esegue effetti collaterali post-selezione come - telemetria o bookkeeping della sessione gestito dal provider + telemetria o bookkeeping di sessione gestito dal provider -Esempi bundled attuali: +Esempi inclusi attuali: - `anthropic`: fallback forward-compat per Claude 4.6, suggerimenti di riparazione auth, fetch dell'endpoint - di uso, metadati cache-TTL/famiglia provider e valori predefiniti globali - della configurazione consapevoli dell'autenticazione -- `amazon-bedrock`: riconoscimento dell'overflow del contesto e classificazione dei - motivi di failover per errori specifici di Bedrock come throttle/not-ready, più - la famiglia di replay condivisa `anthropic-by-model` per le sole policy di replay Claude - sul traffico Anthropic -- `anthropic-vertex`: guardie di replay-policy solo per Claude sul traffico + di utilizzo, metadati cache-TTL/famiglia provider e valori predefiniti globali di configurazione + consapevoli dell'autenticazione +- `amazon-bedrock`: rilevamento dell'overflow di contesto e classificazione dei + motivi di failover gestiti dal provider per errori throttle/not-ready specifici di Bedrock, più + la famiglia di replay condivisa `anthropic-by-model` per protezioni di replay-policy + solo Claude sul traffico Anthropic +- `anthropic-vertex`: protezioni di replay-policy solo Claude sul traffico Anthropic-message -- `openrouter`: id modello pass-through, wrapper di richiesta, suggerimenti di capability - del provider, sanificazione della Gemini thought-signature sul traffico Gemini in proxy, - iniezione del reasoning proxy tramite la famiglia di stream `openrouter-thinking`, - inoltro dei metadati di routing e policy cache-TTL -- `github-copilot`: onboarding/device login, fallback forward-compat del modello, - suggerimenti di trascrizione Claude-thinking, scambio di token runtime e fetch dell'endpoint - di uso -- `openai`: fallback forward-compat per GPT-5.4, normalizzazione diretta del transport OpenAI, - suggerimenti per autenticazione mancante consapevoli di Codex, soppressione di Spark, righe di catalogo - sintetiche OpenAI/Codex, policy di thinking/modello live, normalizzazione degli alias dei token - di uso (`input` / `output` e famiglie `prompt` / `completion`), la famiglia di stream condivisa +- `openrouter`: id modello pass-through, wrapper di richiesta, suggerimenti di capability del provider, + sanificazione della thought-signature Gemini su traffico Gemini via proxy, iniezione del + reasoning via proxy tramite la famiglia stream `openrouter-thinking`, inoltro dei metadati + di routing e policy cache-TTL +- `github-copilot`: onboarding/login del dispositivo, fallback modello forward-compat, + suggerimenti transcript Claude-thinking, scambio token runtime e fetch dell'endpoint + di utilizzo +- `openai`: fallback forward-compat GPT-5.4, normalizzazione diretta del transport OpenAI, + suggerimenti missing-auth consapevoli di Codex, soppressione di Spark, righe di catalogo sintetiche + OpenAI/Codex, policy thinking/live-model, normalizzazione degli alias dei token di utilizzo + (`input` / `output` e famiglie `prompt` / `completion`), la famiglia stream condivisa `openai-responses-defaults` per wrapper nativi OpenAI/Codex, - metadati della famiglia provider, registrazione bundled del provider di generazione immagini - per `gpt-image-1` e registrazione bundled del provider di generazione video + metadati di famiglia provider, registrazione inclusa del provider di generazione immagini + per `gpt-image-1` e registrazione inclusa del provider di generazione video per `sora-2` -- `google` e `google-gemini-cli`: fallback forward-compat per Gemini 3.1, - validazione nativa del replay Gemini, sanificazione del replay bootstrap, modalità - di output del ragionamento con tag, matching dei modelli moderni, registrazione bundled del provider - di generazione immagini per i modelli Gemini image-preview e registrazione bundled del provider - di generazione video per i modelli Veo; Gemini CLI OAuth inoltre - gestisce la formattazione del token del profilo auth, il parsing del token di uso e il fetch - dell'endpoint quota per le superfici di uso -- `moonshot`: transport condiviso, normalizzazione del payload di thinking gestita dal plugin -- `kilocode`: transport condiviso, header di richiesta gestiti dal plugin, payload di reasoning - normalizzato, sanificazione della thought-signature per proxy-Gemini e policy - cache-TTL -- `zai`: fallback forward-compat per GLM-5, valori predefiniti `tool_stream`, policy cache-TTL, - policy binary-thinking/live-model e autenticazione di uso + fetch quota; - gli id sconosciuti `glm-5*` sono sintetizzati dal template bundled `glm-4.7` -- `xai`: normalizzazione nativa del transport Responses, riscritture dell'alias `/fast` per - le varianti veloci Grok, valore predefinito `tool_stream`, pulizia di schema degli strumenti / - payload di reasoning specifica xAI e registrazione bundled del provider di generazione video +- `google` e `google-gemini-cli`: fallback forward-compat Gemini 3.1, + validazione del replay Gemini nativo, sanificazione del replay bootstrap, modalità + di output reasoning con tag, matching del modello moderno, registrazione inclusa del provider + di generazione immagini per modelli Gemini image-preview e registrazione inclusa del + provider di generazione video per modelli Veo; Gemini CLI OAuth inoltre + gestisce la formattazione del token del profilo auth, il parsing del token di utilizzo e il fetch + dell'endpoint quota per le superfici di utilizzo +- `moonshot`: transport condiviso, normalizzazione del payload thinking gestita dal plugin +- `kilocode`: transport condiviso, header di richiesta gestiti dal plugin, normalizzazione del payload di reasoning, + sanificazione della thought-signature Gemini via proxy e policy cache-TTL +- `zai`: fallback forward-compat GLM-5, valori predefiniti `tool_stream`, policy cache-TTL, + policy binary-thinking/live-model e autenticazione utilizzo + fetch quota; + gli id sconosciuti `glm-5*` vengono sintetizzati dal template incluso `glm-4.7` +- `xai`: normalizzazione del transport Responses nativo, riscritture dell'alias `/fast` per + varianti Grok fast, `tool_stream` predefinito, pulizia degli schemi strumento / + payload di reasoning specifica xAI e registrazione inclusa del provider di generazione video per `grok-imagine-video` -- `mistral`: metadati delle capability gestiti dal plugin -- `opencode` e `opencode-go`: metadati delle capability gestiti dal plugin più - sanificazione della thought-signature per proxy-Gemini -- `alibaba`: catalogo di generazione video gestito dal plugin per riferimenti diretti ai modelli Wan +- `mistral`: metadati capability gestiti dal plugin +- `opencode` e `opencode-go`: metadati capability gestiti dal plugin più + sanificazione della thought-signature Gemini via proxy +- `alibaba`: catalogo di generazione video gestito dal plugin per riferimenti diretti a modelli Wan come `alibaba/wan2.6-t2v` -- `byteplus`: cataloghi gestiti dal plugin più registrazione bundled del provider di generazione video - per i modelli Seedance text-to-video/image-to-video -- `fal`: registrazione bundled del provider di generazione video per provider di terze parti ospitati - registrazione del provider di generazione immagini per i modelli immagine FLUX più registrazione bundled +- `byteplus`: cataloghi gestiti dal plugin più registrazione inclusa del provider di generazione video + per modelli Seedance text-to-video/image-to-video +- `fal`: registrazione inclusa del provider di generazione video per provider ospitati di terze parti + registrazione del provider di generazione immagini per modelli immagine FLUX più registrazione inclusa del provider di generazione video per modelli video ospitati di terze parti - `cloudflare-ai-gateway`, `huggingface`, `kimi`, `nvidia`, `qianfan`, `stepfun`, `synthetic`, `venice`, `vercel-ai-gateway` e `volcengine`: solo cataloghi gestiti dal plugin -- `qwen`: cataloghi gestiti dal plugin per i modelli testuali più registrazioni condivise - del provider media-understanding e video-generation per le sue superfici multimodali; - la generazione video Qwen usa gli endpoint video Standard DashScope con - modelli Wan bundled come `wan2.6-t2v` e `wan2.7-r2v` -- `runway`: registrazione del provider di generazione video gestita dal plugin - per modelli nativi Runway basati su task come `gen4.5` -- `minimax`: cataloghi gestiti dal plugin, registrazione bundled del provider di generazione video - per i modelli video Hailuo, registrazione bundled del provider di generazione immagini +- `qwen`: cataloghi gestiti dal plugin per modelli testuali più registrazioni condivise + dei provider media-understanding e video-generation per le sue superfici multimodali; + la generazione video Qwen usa gli endpoint video Standard DashScope con modelli Wan inclusi + come `wan2.6-t2v` e `wan2.7-r2v` +- `runway`: registrazione del provider di generazione video gestita dal plugin per modelli nativi + basati su task Runway come `gen4.5` +- `minimax`: cataloghi gestiti dal plugin, registrazione inclusa del provider di generazione video + per modelli video Hailuo, registrazione inclusa del provider di generazione immagini per `image-01`, selezione ibrida della replay-policy Anthropic/OpenAI - e logica di autenticazione/snapshot dell'uso -- `together`: cataloghi gestiti dal plugin più registrazione bundled del provider di generazione video - per i modelli video Wan -- `xiaomi`: cataloghi gestiti dal plugin più logica di autenticazione/snapshot dell'uso + e logica auth/snapshot di utilizzo +- `together`: cataloghi gestiti dal plugin più registrazione inclusa del provider di generazione video + per modelli video Wan +- `xiaomi`: cataloghi gestiti dal plugin più logica auth/snapshot di utilizzo -Il plugin bundled `openai` ora gestisce entrambi gli id provider: `openai` e +Il plugin incluso `openai` ora gestisce entrambi gli id provider: `openai` e `openai-codex`. -Questo copre i provider che rientrano ancora nei normali transport di OpenClaw. Un provider -che richiede un esecutore di richieste totalmente personalizzato è una superficie di estensione +Questo copre i provider che rientrano ancora nei transport normali di OpenClaw. Un provider +che necessita di un esecutore di richieste totalmente personalizzato è una superficie di estensione separata e più profonda. ## Rotazione delle chiavi API -- Supporta la rotazione generica dei provider per provider selezionati. +- Supporta la rotazione generica del provider per provider selezionati. - Configura più chiavi tramite: - - `OPENCLAW_LIVE__KEY` (singola override live, massima priorità) - - `_API_KEYS` (elenco separato da virgole o punto e virgola) + - `OPENCLAW_LIVE__KEY` (singolo override live, priorità più alta) + - `_API_KEYS` (lista separata da virgole o punti e virgola) - `_API_KEY` (chiave primaria) - - `_API_KEY_*` (elenco numerato, ad esempio `_API_KEY_1`) + - `_API_KEY_*` (lista numerata, per esempio `_API_KEY_1`) - Per i provider Google, `GOOGLE_API_KEY` è incluso anche come fallback. -- L'ordine di selezione delle chiavi preserva la priorità e rimuove i duplicati. +- L'ordine di selezione delle chiavi preserva la priorità e deduplica i valori. - Le richieste vengono ritentate con la chiave successiva solo in caso di risposte con rate limit (per esempio `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, - `workers_ai ... quota limit exceeded`, o messaggi periodici di limite d'uso). -- I fallimenti non dovuti a rate limit falliscono immediatamente; non viene tentata alcuna rotazione delle chiavi. + `workers_ai ... quota limit exceeded` o messaggi periodici di limite d'uso). +- Gli errori non dovuti a rate limit falliscono immediatamente; non viene tentata alcuna rotazione delle chiavi. - Quando tutte le chiavi candidate falliscono, viene restituito l'errore finale dell'ultimo tentativo. ## Provider integrati (catalogo pi-ai) -OpenClaw include il catalogo pi‑ai. Questi provider non richiedono alcuna -configurazione `models.providers`; basta impostare l'autenticazione + scegliere un modello. +OpenClaw include il catalogo pi-ai. Questi provider non richiedono alcuna configurazione +`models.providers`; basta impostare l'autenticazione e scegliere un modello. ### OpenAI - Provider: `openai` - Auth: `OPENAI_API_KEY` -- Rotazione opzionale: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, più `OPENCLAW_LIVE_OPENAI_KEY` (singola override) +- Rotazione opzionale: `OPENAI_API_KEYS`, `OPENAI_API_KEY_1`, `OPENAI_API_KEY_2`, più `OPENCLAW_LIVE_OPENAI_KEY` (singolo override) - Modelli di esempio: `openai/gpt-5.4`, `openai/gpt-5.4-pro` - CLI: `openclaw onboard --auth-choice openai-api-key` - Il transport predefinito è `auto` (prima WebSocket, fallback SSE) - Override per modello tramite `agents.defaults.models["openai/"].params.transport` (`"sse"`, `"websocket"` o `"auto"`) - Il warm-up WebSocket di OpenAI Responses è abilitato per impostazione predefinita tramite `params.openaiWsWarmup` (`true`/`false`) - L'elaborazione prioritaria OpenAI può essere abilitata tramite `agents.defaults.models["openai/"].params.serviceTier` -- `/fast` e `params.fastMode` mappano le richieste Responses dirette `openai/*` a `service_tier=priority` su `api.openai.com` +- `/fast` e `params.fastMode` mappano le richieste dirette `openai/*` Responses a `service_tier=priority` su `api.openai.com` - Usa `params.serviceTier` quando vuoi un livello esplicito invece del toggle condiviso `/fast` -- Gli header di attribuzione nascosti di OpenClaw (`originator`, `version`, - `User-Agent`) si applicano solo al traffico OpenAI nativo verso `api.openai.com`, non - a proxy generici compatibili con OpenAI -- I percorsi OpenAI nativi mantengono anche `store` di Responses, suggerimenti di cache del prompt e +- Gli header di attribuzione OpenClaw nascosti (`originator`, `version`, + `User-Agent`) si applicano solo al traffico nativo OpenAI verso `api.openai.com`, non + ai proxy generici compatibili con OpenAI +- I percorsi OpenAI nativi mantengono anche `store` di Responses, suggerimenti per la cache dei prompt e modellazione del payload di compatibilità reasoning OpenAI; i percorsi proxy no -- `openai/gpt-5.3-codex-spark` è intenzionalmente soppresso in OpenClaw perché l'API OpenAI live lo rifiuta; Spark è trattato solo come Codex +- `openai/gpt-5.3-codex-spark` è intenzionalmente soppresso in OpenClaw perché l'API OpenAI live lo rifiuta; Spark è trattato come solo Codex ```json5 { @@ -275,12 +274,12 @@ configurazione `models.providers`; basta impostare l'autenticazione + scegliere - Provider: `anthropic` - Auth: `ANTHROPIC_API_KEY` -- Rotazione opzionale: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, più `OPENCLAW_LIVE_ANTHROPIC_KEY` (singola override) +- Rotazione opzionale: `ANTHROPIC_API_KEYS`, `ANTHROPIC_API_KEY_1`, `ANTHROPIC_API_KEY_2`, più `OPENCLAW_LIVE_ANTHROPIC_KEY` (singolo override) - Modello di esempio: `anthropic/claude-opus-4-6` - CLI: `openclaw onboard --auth-choice apiKey` -- Le richieste Anthropic pubbliche dirette supportano il toggle condiviso `/fast` e `params.fastMode`, incluso il traffico autenticato con chiave API e OAuth inviato a `api.anthropic.com`; OpenClaw lo mappa a `service_tier` di Anthropic (`auto` vs `standard_only`) -- Nota Anthropic: lo staff Anthropic ci ha detto che l'uso in stile Claude CLI di OpenClaw è di nuovo consentito, quindi OpenClaw tratta il riuso di Claude CLI e l'uso di `claude -p` come autorizzati per questa integrazione finché Anthropic non pubblica una nuova policy. -- Il setup-token Anthropic resta disponibile come percorso di token OpenClaw supportato, ma OpenClaw ora preferisce il riuso di Claude CLI e `claude -p` quando disponibili. +- Le richieste Anthropic pubbliche dirette supportano il toggle condiviso `/fast` e `params.fastMode`, incluso il traffico autenticato con chiave API e OAuth inviato a `api.anthropic.com`; OpenClaw lo mappa a Anthropic `service_tier` (`auto` vs `standard_only`) +- Nota Anthropic: il personale Anthropic ci ha detto che l'uso in stile Claude CLI di OpenClaw è di nuovo consentito, quindi OpenClaw tratta il riuso di Claude CLI e l'uso di `claude -p` come autorizzati per questa integrazione, a meno che Anthropic non pubblichi una nuova policy. +- Il setup-token Anthropic rimane disponibile come percorso token OpenClaw supportato, ma OpenClaw ora preferisce il riuso di Claude CLI e `claude -p` quando disponibili. ```json5 { @@ -296,13 +295,13 @@ configurazione `models.providers`; basta impostare l'autenticazione + scegliere - CLI: `openclaw onboard --auth-choice openai-codex` o `openclaw models auth login --provider openai-codex` - Il transport predefinito è `auto` (prima WebSocket, fallback SSE) - Override per modello tramite `agents.defaults.models["openai-codex/"].params.transport` (`"sse"`, `"websocket"` o `"auto"`) -- `params.serviceTier` viene inoltrato anche nelle richieste native Codex Responses (`chatgpt.com/backend-api`) -- Gli header di attribuzione nascosti di OpenClaw (`originator`, `version`, +- `params.serviceTier` viene inoltrato anche sulle richieste native Codex Responses (`chatgpt.com/backend-api`) +- Gli header di attribuzione OpenClaw nascosti (`originator`, `version`, `User-Agent`) vengono allegati solo sul traffico Codex nativo verso - `chatgpt.com/backend-api`, non su proxy generici compatibili con OpenAI + `chatgpt.com/backend-api`, non ai proxy generici compatibili con OpenAI - Condivide lo stesso toggle `/fast` e la stessa configurazione `params.fastMode` di `openai/*` diretto; OpenClaw lo mappa a `service_tier=priority` -- `openai-codex/gpt-5.3-codex-spark` resta disponibile quando il catalogo OAuth Codex lo espone; dipende dai diritti -- `openai-codex/gpt-5.4` mantiene `contextWindow = 1050000` nativo e un `contextTokens = 272000` di runtime predefinito; esegui l'override del limite di runtime con `models.providers.openai-codex.models[].contextTokens` +- `openai-codex/gpt-5.3-codex-spark` rimane disponibile quando il catalogo OAuth Codex lo espone; dipende dai diritti +- `openai-codex/gpt-5.4` mantiene `contextWindow = 1050000` nativo e un `contextTokens = 272000` di runtime predefinito; sovrascrivi il limite runtime con `models.providers.openai-codex.models[].contextTokens` - Nota sulla policy: OpenAI Codex OAuth è esplicitamente supportato per strumenti/workflow esterni come OpenClaw. ```json5 @@ -323,10 +322,10 @@ configurazione `models.providers`; basta impostare l'autenticazione + scegliere } ``` -### Altre opzioni hosted in stile abbonamento +### Altre opzioni ospitate in stile abbonamento -- [Qwen Cloud](/it/providers/qwen): superficie provider Qwen Cloud più mappatura degli endpoint Alibaba DashScope e Coding Plan -- [MiniMax](/it/providers/minimax): accesso MiniMax Coding Plan tramite OAuth o chiave API +- [Qwen Cloud](/it/providers/qwen): superficie provider Qwen Cloud più mapping degli endpoint Alibaba DashScope e Coding Plan +- [MiniMax](/it/providers/minimax): accesso MiniMax Coding Plan OAuth o tramite chiave API - [GLM Models](/it/providers/glm): endpoint Z.AI Coding Plan o API generali ### OpenCode @@ -347,37 +346,37 @@ configurazione `models.providers`; basta impostare l'autenticazione + scegliere - Provider: `google` - Auth: `GEMINI_API_KEY` -- Rotazione opzionale: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, fallback `GOOGLE_API_KEY` e `OPENCLAW_LIVE_GEMINI_KEY` (singola override) +- Rotazione opzionale: `GEMINI_API_KEYS`, `GEMINI_API_KEY_1`, `GEMINI_API_KEY_2`, fallback `GOOGLE_API_KEY` e `OPENCLAW_LIVE_GEMINI_KEY` (singolo override) - Modelli di esempio: `google/gemini-3.1-pro-preview`, `google/gemini-3-flash-preview` -- Compatibilità: la configurazione legacy di OpenClaw che usa `google/gemini-3.1-flash-preview` viene normalizzata a `google/gemini-3-flash-preview` +- Compatibilità: la configurazione legacy di OpenClaw che usa `google/gemini-3.1-flash-preview` viene normalizzata in `google/gemini-3-flash-preview` - CLI: `openclaw onboard --auth-choice gemini-api-key` - Le esecuzioni Gemini dirette accettano anche `agents.defaults.models["google/"].params.cachedContent` - (o il legacy `cached_content`) per inoltrare un handle nativo del provider - `cachedContents/...`; i cache hit Gemini vengono esposti come OpenClaw `cacheRead` + (o il legacy `cached_content`) per inoltrare un handle + `cachedContents/...` nativo del provider; gli hit della cache Gemini emergono come OpenClaw `cacheRead` ### Google Vertex e Gemini CLI - Provider: `google-vertex`, `google-gemini-cli` -- Auth: Vertex usa gcloud ADC; Gemini CLI usa il proprio flusso OAuth -- Attenzione: Gemini CLI OAuth in OpenClaw è un'integrazione non ufficiale. Alcuni utenti hanno segnalato restrizioni sull'account Google dopo aver usato client di terze parti. Controlla i termini di Google e usa un account non critico se scegli di procedere. -- Gemini CLI OAuth viene distribuito come parte del plugin bundled `google`. +- Auth: Vertex usa gcloud ADC; Gemini CLI usa il suo flusso OAuth +- Attenzione: Gemini CLI OAuth in OpenClaw è un'integrazione non ufficiale. Alcuni utenti hanno segnalato restrizioni sugli account Google dopo aver usato client di terze parti. Consulta i termini di Google e usa un account non critico se scegli di procedere. +- Gemini CLI OAuth è incluso come parte del plugin `google`. - Installa prima Gemini CLI: - `brew install gemini-cli` - oppure `npm install -g @google/gemini-cli` - Abilita: `openclaw plugins enable google` - Login: `openclaw models auth login --provider google-gemini-cli --set-default` - Modello predefinito: `google-gemini-cli/gemini-3-flash-preview` - - Nota: **non** incolli un client id o un secret in `openclaw.json`. Il flusso di login CLI memorizza - i token nei profili auth sull'host del gateway. - - Se le richieste falliscono dopo il login, imposta `GOOGLE_CLOUD_PROJECT` o `GOOGLE_CLOUD_PROJECT_ID` sull'host del gateway. - - Le risposte JSON di Gemini CLI vengono analizzate da `response`; l'uso usa come fallback + - Nota: **non** incolli un client id o secret in `openclaw.json`. Il flusso di login CLI memorizza + i token nei profili di autenticazione sull'host gateway. + - Se le richieste falliscono dopo il login, imposta `GOOGLE_CLOUD_PROJECT` o `GOOGLE_CLOUD_PROJECT_ID` sull'host gateway. + - Le risposte JSON di Gemini CLI vengono parse da `response`; l'utilizzo usa come fallback `stats`, con `stats.cached` normalizzato in OpenClaw `cacheRead`. ### Z.AI (GLM) - Provider: `zai` - Auth: `ZAI_API_KEY` -- Modello di esempio: `zai/glm-5` +- Modello di esempio: `zai/glm-5.1` - CLI: `openclaw onboard --auth-choice zai-api-key` - Alias: `z.ai/*` e `z-ai/*` vengono normalizzati in `zai/*` - `zai-api-key` rileva automaticamente l'endpoint Z.AI corrispondente; `zai-coding-global`, `zai-coding-cn`, `zai-global` e `zai-cn` forzano una superficie specifica @@ -395,8 +394,8 @@ configurazione `models.providers`; basta impostare l'autenticazione + scegliere - Auth: `KILOCODE_API_KEY` - Modello di esempio: `kilocode/kilo/auto` - CLI: `openclaw onboard --auth-choice kilocode-api-key` -- Base URL: `https://api.kilo.ai/api/gateway/` -- Il catalogo statico di fallback include `kilocode/kilo/auto`; la discovery live di +- URL base: `https://api.kilo.ai/api/gateway/` +- Il catalogo di fallback statico include `kilocode/kilo/auto`; la discovery live di `https://api.kilo.ai/api/gateway/models` può espandere ulteriormente il catalogo runtime. - Il routing upstream esatto dietro `kilocode/kilo/auto` è gestito da Kilo Gateway, @@ -404,30 +403,30 @@ configurazione `models.providers`; basta impostare l'autenticazione + scegliere Vedi [/providers/kilocode](/it/providers/kilocode) per i dettagli di configurazione. -### Altri plugin provider bundled +### Altri plugin provider inclusi - OpenRouter: `openrouter` (`OPENROUTER_API_KEY`) - Modello di esempio: `openrouter/auto` -- OpenClaw applica gli header di attribuzione dell'app documentati da OpenRouter solo quando +- OpenClaw applica gli header di attribuzione app documentati da OpenRouter solo quando la richiesta punta effettivamente a `openrouter.ai` -- I marker Anthropic `cache_control` specifici di OpenRouter sono allo stesso modo limitati - a route OpenRouter verificate, non a URL proxy arbitrari -- OpenRouter resta sul percorso in stile proxy compatibile con OpenAI, quindi la modellazione nativa delle richieste - solo-OpenAI (`serviceTier`, `store` di Responses, - suggerimenti di cache del prompt, payload di compatibilità reasoning OpenAI) non viene inoltrata -- I riferimenti OpenRouter basati su Gemini mantengono solo la sanificazione della thought-signature per proxy-Gemini; - la validazione del replay Gemini nativo e le riscritture bootstrap restano disattivate +- I marker `cache_control` specifici di OpenRouter per Anthropic sono analogamente limitati + alle route OpenRouter verificate, non a URL proxy arbitrari +- OpenRouter rimane sul percorso in stile proxy compatibile con OpenAI, quindi la modellazione + nativa delle richieste solo OpenAI (`serviceTier`, `store` di Responses, + suggerimenti per la cache dei prompt, payload di compatibilità reasoning OpenAI) non viene inoltrata +- I riferimenti OpenRouter basati su Gemini mantengono solo la sanificazione della thought-signature + proxy-Gemini; la validazione del replay Gemini nativo e le riscritture bootstrap restano disattivate - Kilo Gateway: `kilocode` (`KILOCODE_API_KEY`) - Modello di esempio: `kilocode/kilo/auto` -- I riferimenti Kilo basati su Gemini mantengono lo stesso percorso di sanificazione della thought-signature - per proxy-Gemini; `kilocode/kilo/auto` e altri suggerimenti che non supportano il proxy-reasoning - saltano l'iniezione del proxy reasoning +- I riferimenti Kilo basati su Gemini mantengono lo stesso percorso di sanificazione della + thought-signature proxy-Gemini; `kilocode/kilo/auto` e altri suggerimenti proxy che non supportano reasoning + saltano l'iniezione di reasoning via proxy - MiniMax: `minimax` (chiave API) e `minimax-portal` (OAuth) - Auth: `MINIMAX_API_KEY` per `minimax`; `MINIMAX_OAUTH_TOKEN` o `MINIMAX_API_KEY` per `minimax-portal` - Modello di esempio: `minimax/MiniMax-M2.7` o `minimax-portal/MiniMax-M2.7` -- La configurazione onboarding/chiave API di MiniMax scrive definizioni esplicite del modello M2.7 con - `input: ["text", "image"]`; il catalogo provider bundled mantiene i riferimenti chat - solo testuali finché quella configurazione provider non viene materializzata +- L'onboarding/configurazione con chiave API di MiniMax scrive definizioni esplicite dei modelli M2.7 con + `input: ["text", "image"]`; il catalogo provider incluso mantiene i riferimenti chat + solo testo finché quella configurazione provider non viene materializzata - Moonshot: `moonshot` (`MOONSHOT_API_KEY`) - Modello di esempio: `moonshot/kimi-k2.5` - Kimi Coding: `kimi` (`KIMI_API_KEY` o `KIMICODE_API_KEY`) @@ -453,43 +452,43 @@ Vedi [/providers/kilocode](/it/providers/kilocode) per i dettagli di configurazi - BytePlus: `byteplus` (`BYTEPLUS_API_KEY`) - Modello di esempio: `byteplus-plan/ark-code-latest` - xAI: `xai` (`XAI_API_KEY`) - - Le richieste xAI bundled native usano il percorso xAI Responses + - Le richieste xAI native incluse usano il percorso xAI Responses - `/fast` o `params.fastMode: true` riscrivono `grok-3`, `grok-3-mini`, `grok-4` e `grok-4-0709` nelle rispettive varianti `*-fast` - `tool_stream` è attivo per impostazione predefinita; imposta `agents.defaults.models["xai/"].params.tool_stream` su `false` per - disattivarlo + disabilitarlo - Mistral: `mistral` (`MISTRAL_API_KEY`) - Modello di esempio: `mistral/mistral-large-latest` - CLI: `openclaw onboard --auth-choice mistral-api-key` - Groq: `groq` (`GROQ_API_KEY`) - Cerebras: `cerebras` (`CEREBRAS_API_KEY`) - I modelli GLM su Cerebras usano gli id `zai-glm-4.7` e `zai-glm-4.6`. - - Base URL compatibile con OpenAI: `https://api.cerebras.ai/v1`. + - URL base compatibile con OpenAI: `https://api.cerebras.ai/v1`. - GitHub Copilot: `github-copilot` (`COPILOT_GITHUB_TOKEN` / `GH_TOKEN` / `GITHUB_TOKEN`) -- Modello di esempio per Hugging Face Inference: `huggingface/deepseek-ai/DeepSeek-R1`; CLI: `openclaw onboard --auth-choice huggingface-api-key`. Vedi [Hugging Face (Inference)](/it/providers/huggingface). +- Modello di esempio Hugging Face Inference: `huggingface/deepseek-ai/DeepSeek-R1`; CLI: `openclaw onboard --auth-choice huggingface-api-key`. Vedi [Hugging Face (Inference)](/it/providers/huggingface). -## Provider tramite `models.providers` (custom/base URL) +## Provider tramite `models.providers` (URL base/personalizzato) -Usa `models.providers` (o `models.json`) per aggiungere provider **custom** o +Usa `models.providers` (o `models.json`) per aggiungere provider **personalizzati** o proxy compatibili con OpenAI/Anthropic. -Molti dei plugin provider bundled qui sotto pubblicano già un catalogo predefinito. -Usa voci esplicite `models.providers.` solo quando vuoi sovrascrivere il -base URL, gli header o l'elenco dei modelli predefiniti. +Molti dei plugin provider inclusi qui sotto pubblicano già un catalogo predefinito. +Usa voci esplicite `models.providers.` solo quando vuoi sovrascrivere +l'URL base, gli header o la lista di modelli predefiniti. ### Moonshot AI (Kimi) -Moonshot viene distribuito come plugin provider bundled. Usa il provider integrato per +Moonshot è incluso come plugin provider. Usa il provider integrato per impostazione predefinita e aggiungi una voce esplicita `models.providers.moonshot` solo quando -devi sovrascrivere il base URL o i metadati del modello: +devi sovrascrivere l'URL base o i metadati del modello: - Provider: `moonshot` - Auth: `MOONSHOT_API_KEY` - Modello di esempio: `moonshot/kimi-k2.5` - CLI: `openclaw onboard --auth-choice moonshot-api-key` o `openclaw onboard --auth-choice moonshot-api-key-cn` -ID dei modelli Kimi K2: +ID modello Kimi K2: [//]: # "moonshot-kimi-k2-model-refs:start" @@ -536,7 +535,7 @@ Kimi Coding usa l'endpoint compatibile con Anthropic di Moonshot AI: } ``` -Il legacy `kimi/k2p5` resta accettato come id modello di compatibilità. +Il legacy `kimi/k2p5` continua a essere accettato come id modello di compatibilità. ### Volcano Engine (Doubao) @@ -556,12 +555,12 @@ Volcano Engine (火山引擎) fornisce accesso a Doubao e ad altri modelli in Ci ``` L'onboarding usa per impostazione predefinita la superficie coding, ma il catalogo generale `volcengine/*` -viene registrato allo stesso tempo. +viene registrato contemporaneamente. -Nei picker di onboarding/configurazione modello, la scelta auth Volcengine preferisce sia le righe +Nei selettori di onboarding/configurazione del modello, la scelta auth Volcengine preferisce sia le righe `volcengine/*` sia quelle `volcengine-plan/*`. Se questi modelli non sono ancora caricati, -OpenClaw usa come fallback il catalogo non filtrato invece di mostrare un picker vuoto -limitato al provider. +OpenClaw ripiega sul catalogo non filtrato invece di mostrare un selettore +vuoto con ambito provider. Modelli disponibili: @@ -597,12 +596,12 @@ BytePlus ARK fornisce accesso agli stessi modelli di Volcano Engine per gli uten ``` L'onboarding usa per impostazione predefinita la superficie coding, ma il catalogo generale `byteplus/*` -viene registrato allo stesso tempo. +viene registrato contemporaneamente. -Nei picker di onboarding/configurazione modello, la scelta auth BytePlus preferisce sia le righe +Nei selettori di onboarding/configurazione del modello, la scelta auth BytePlus preferisce sia le righe `byteplus/*` sia quelle `byteplus-plan/*`. Se questi modelli non sono ancora caricati, -OpenClaw usa come fallback il catalogo non filtrato invece di mostrare un picker vuoto -limitato al provider. +OpenClaw ripiega sul catalogo non filtrato invece di mostrare un selettore +vuoto con ambito provider. Modelli disponibili: @@ -652,27 +651,27 @@ MiniMax è configurato tramite `models.providers` perché usa endpoint personali - MiniMax OAuth (globale): `--auth-choice minimax-global-oauth` - MiniMax OAuth (CN): `--auth-choice minimax-cn-oauth` -- MiniMax chiave API (globale): `--auth-choice minimax-global-api` -- MiniMax chiave API (CN): `--auth-choice minimax-cn-api` +- Chiave API MiniMax (globale): `--auth-choice minimax-global-api` +- Chiave API MiniMax (CN): `--auth-choice minimax-cn-api` - Auth: `MINIMAX_API_KEY` per `minimax`; `MINIMAX_OAUTH_TOKEN` o `MINIMAX_API_KEY` per `minimax-portal` Vedi [/providers/minimax](/it/providers/minimax) per dettagli di configurazione, opzioni dei modelli e snippet di configurazione. -Sul percorso di streaming compatibile con Anthropic di MiniMax, OpenClaw disattiva thinking per +Sul percorso di streaming compatibile con Anthropic di MiniMax, OpenClaw disabilita thinking per impostazione predefinita a meno che tu non lo imposti esplicitamente, e `/fast on` riscrive `MiniMax-M2.7` in `MiniMax-M2.7-highspeed`. Suddivisione delle capability gestita dal plugin: -- I valori predefiniti text/chat restano su `minimax/MiniMax-M2.7` +- I valori predefiniti testo/chat restano su `minimax/MiniMax-M2.7` - La generazione immagini è `minimax/image-01` o `minimax-portal/image-01` -- La comprensione delle immagini è `MiniMax-VL-01` gestita dal plugin su entrambi i percorsi auth MiniMax +- La comprensione immagini è `MiniMax-VL-01` gestito dal plugin su entrambi i percorsi auth MiniMax - La ricerca web resta sull'id provider `minimax` ### Ollama -Ollama viene distribuito come plugin provider bundled e usa l'API nativa di Ollama: +Ollama è incluso come plugin provider e usa l'API nativa di Ollama: - Provider: `ollama` - Auth: Nessuna richiesta (server locale) @@ -692,26 +691,26 @@ ollama pull llama3.3 } ``` -Ollama viene rilevato localmente su `http://127.0.0.1:11434` quando abiliti la funzione con -`OLLAMA_API_KEY`, e il plugin provider bundled aggiunge Ollama direttamente a -`openclaw onboard` e al picker dei modelli. Vedi [/providers/ollama](/it/providers/ollama) +Ollama viene rilevato localmente su `http://127.0.0.1:11434` quando scegli di attivarlo con +`OLLAMA_API_KEY`, e il plugin provider incluso aggiunge Ollama direttamente a +`openclaw onboard` e al selettore di modelli. Vedi [/providers/ollama](/it/providers/ollama) per onboarding, modalità cloud/locale e configurazione personalizzata. ### vLLM -vLLM viene distribuito come plugin provider bundled per server locali/self-hosted compatibili con OpenAI: +vLLM è incluso come plugin provider per server locali/self-hosted compatibili con OpenAI: - Provider: `vllm` - Auth: Opzionale (dipende dal tuo server) -- Base URL predefinito: `http://127.0.0.1:8000/v1` +- URL base predefinito: `http://127.0.0.1:8000/v1` -Per abilitare l'auto-discovery locale (qualsiasi valore va bene se il tuo server non impone l'autenticazione): +Per attivare l'auto-discovery locale (qualsiasi valore va bene se il tuo server non impone l'autenticazione): ```bash export VLLM_API_KEY="vllm-local" ``` -Poi imposta un modello (sostituiscilo con uno degli ID restituiti da `/v1/models`): +Poi imposta un modello (sostituisci con uno degli ID restituiti da `/v1/models`): ```json5 { @@ -725,21 +724,21 @@ Vedi [/providers/vllm](/it/providers/vllm) per i dettagli. ### SGLang -SGLang viene distribuito come plugin provider bundled per server self-hosted veloci +SGLang è incluso come plugin provider per server self-hosted veloci compatibili con OpenAI: - Provider: `sglang` - Auth: Opzionale (dipende dal tuo server) -- Base URL predefinito: `http://127.0.0.1:30000/v1` +- URL base predefinito: `http://127.0.0.1:30000/v1` -Per abilitare l'auto-discovery locale (qualsiasi valore va bene se il tuo server non +Per attivare l'auto-discovery locale (qualsiasi valore va bene se il tuo server non impone l'autenticazione): ```bash export SGLANG_API_KEY="sglang-local" ``` -Poi imposta un modello (sostituiscilo con uno degli ID restituiti da `/v1/models`): +Poi imposta un modello (sostituisci con uno degli ID restituiti da `/v1/models`): ```json5 { @@ -788,21 +787,21 @@ Esempio (compatibile con OpenAI): Note: -- Per i provider personalizzati, `reasoning`, `input`, `cost`, `contextWindow` e `maxTokens` sono opzionali. - Se omessi, OpenClaw usa come valori predefiniti: +- Per i provider personalizzati, `reasoning`, `input`, `cost`, `contextWindow` e `maxTokens` sono facoltativi. + Se omessi, OpenClaw usa i seguenti valori predefiniti: - `reasoning: false` - `input: ["text"]` - `cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }` - `contextWindow: 200000` - `maxTokens: 8192` - Consigliato: imposta valori espliciti che corrispondano ai limiti del tuo proxy/modello. -- Per `api: "openai-completions"` su endpoint non nativi (qualsiasi `baseUrl` non vuoto il cui host non sia `api.openai.com`), OpenClaw forza `compat.supportsDeveloperRole: false` per evitare errori 400 del provider per ruoli `developer` non supportati. -- I percorsi in stile proxy compatibili con OpenAI saltano anche la modellazione nativa delle richieste solo-OpenAI: - niente `service_tier`, niente `store` di Responses, niente suggerimenti di cache del prompt, niente - modellazione del payload di compatibilità reasoning OpenAI e nessun header di attribuzione nascosto - di OpenClaw. -- Se `baseUrl` è vuoto/omesso, OpenClaw mantiene il comportamento predefinito di OpenAI (che risolve a `api.openai.com`). -- Per sicurezza, un valore esplicito `compat.supportsDeveloperRole: true` viene comunque sovrascritto sugli endpoint non nativi `openai-completions`. +- Per `api: "openai-completions"` su endpoint non nativi (qualsiasi `baseUrl` non vuoto il cui host non sia `api.openai.com`), OpenClaw forza `compat.supportsDeveloperRole: false` per evitare errori provider 400 dovuti a ruoli `developer` non supportati. +- I percorsi in stile proxy compatibili con OpenAI saltano anche la modellazione delle richieste nativa solo OpenAI: + niente `service_tier`, niente `store` di Responses, niente suggerimenti per la cache dei prompt, niente + modellazione del payload di compatibilità reasoning OpenAI e nessun header di attribuzione OpenClaw + nascosto. +- Se `baseUrl` è vuoto/omesso, OpenClaw mantiene il comportamento OpenAI predefinito (che risolve a `api.openai.com`). +- Per sicurezza, un `compat.supportsDeveloperRole: true` esplicito viene comunque sovrascritto sugli endpoint `openai-completions` non nativi. ## Esempi CLI @@ -816,7 +815,7 @@ Vedi anche: [/gateway/configuration](/it/gateway/configuration) per esempi compl ## Correlati -- [Models](/it/concepts/models) — configurazione dei modelli e alias -- [Model Failover](/it/concepts/model-failover) — catene di fallback e comportamento dei retry +- [Models](/it/concepts/models) — configurazione e alias dei modelli +- [Model Failover](/it/concepts/model-failover) — catene di fallback e comportamento dei tentativi - [Configuration Reference](/it/gateway/configuration-reference#agent-defaults) — chiavi di configurazione del modello - [Providers](/it/providers) — guide di configurazione per provider diff --git a/docs/it/concepts/qa-e2e-automation.md b/docs/it/concepts/qa-e2e-automation.md index 1b604e484..2f3ca578c 100644 --- a/docs/it/concepts/qa-e2e-automation.md +++ b/docs/it/concepts/qa-e2e-automation.md @@ -1,33 +1,32 @@ --- read_when: - - Estendere qa-lab o qa-channel - - Aggiungere scenari QA supportati dal repository - - Creare un'automazione QA più realistica attorno alla dashboard del Gateway -summary: Struttura dell'automazione QA privata per qa-lab, qa-channel, scenari predefiniti e report di protocollo + - Estensione di qa-lab o qa-channel + - Aggiunta di scenari QA supportati dal repository + - Creazione di un'automazione QA più realistica intorno alla dashboard del Gateway +summary: Struttura privata dell'automazione QA per qa-lab, qa-channel, scenari iniziali e report di protocollo title: Automazione QA E2E x-i18n: - generated_at: "2026-04-08T02:14:03Z" + generated_at: "2026-04-08T06:00:44Z" model: gpt-5.4 provider: openai - source_hash: 3b4aa5acc8e77303f4045d4f04372494cae21b89d2fdaba856dbb4855ced9d27 + source_hash: 57da147dc06abf9620290104e01a83b42182db1806514114fd9e8467492cda99 source_path: concepts/qa-e2e-automation.md workflow: 15 --- # Automazione QA E2E -Lo stack QA privato è pensato per esercitare OpenClaw in modo più realistico, -con una forma simile a quella dei canali, rispetto a quanto possa fare un -singolo test unitario. +Lo stack QA privato è pensato per testare OpenClaw in un modo più realistico e +simile a un canale rispetto a quanto possa fare un singolo test unitario. Componenti attuali: -- `extensions/qa-channel`: canale di messaggi sintetico con superfici per DM, canale, thread, - reazione, modifica ed eliminazione. +- `extensions/qa-channel`: canale di messaggistica sintetico con superfici per messaggi diretti, canale, thread, + reazioni, modifiche ed eliminazioni. - `extensions/qa-lab`: interfaccia utente di debug e bus QA per osservare la trascrizione, - iniettare messaggi in ingresso ed esportare un report in Markdown. -- `qa/`: risorse predefinite supportate dal repository per l'attività iniziale e gli scenari QA - di base. + inserire messaggi in ingresso ed esportare un report in Markdown. +- `qa/`: risorse iniziali supportate dal repository per il task iniziale e gli + scenari QA di base. L'attuale flusso operativo QA è un sito QA a due pannelli: @@ -40,13 +39,13 @@ Eseguilo con: pnpm qa:lab:up ``` -Questo compila il sito QA, avvia il percorso gateway supportato da Docker ed espone la -pagina QA Lab in cui un operatore o un ciclo di automazione può assegnare all'agente una -missione QA, osservare il comportamento reale del canale e registrare ciò che ha funzionato, fallito o -è rimasto bloccato. +Questo comando compila il sito QA, avvia la corsia del gateway supportata da Docker ed espone la +pagina di QA Lab dove un operatore o un ciclo di automazione può assegnare all'agente una +missione QA, osservare il comportamento reale del canale e registrare cosa ha funzionato, cosa è fallito o +cosa è rimasto bloccato. -Per un'iterazione più rapida dell'interfaccia utente di QA Lab senza ricompilare ogni volta l'immagine Docker, -avvia lo stack con un bundle QA Lab montato tramite bind: +Per iterare più rapidamente sull'interfaccia utente di QA Lab senza ricompilare ogni volta l'immagine Docker, +avvia lo stack con un bundle di QA Lab montato tramite bind: ```bash pnpm openclaw qa docker-build-image @@ -57,17 +56,18 @@ pnpm qa:lab:watch `qa:lab:up:fast` mantiene i servizi Docker su un'immagine precompilata e monta tramite bind `extensions/qa-lab/web/dist` nel container `qa-lab`. `qa:lab:watch` -ricompila quel bundle a ogni modifica e il browser si ricarica automaticamente quando cambia l'hash -delle risorse di QA Lab. +ricompila quel bundle a ogni modifica e il browser si ricarica automaticamente quando l'hash +delle risorse di QA Lab cambia. -## Risorse predefinite supportate dal repository +## Risorse iniziali supportate dal repository -Le risorse predefinite si trovano in `qa/`: +Le risorse iniziali si trovano in `qa/`: -- `qa/scenarios.md` +- `qa/scenarios/index.md` +- `qa/scenarios/*.md` -Queste sono intenzionalmente incluse in git in modo che il piano QA sia visibile sia agli esseri umani sia -all'agente. L'elenco di base dovrebbe rimanere abbastanza ampio da coprire: +Questi file sono intenzionalmente in git in modo che il piano QA sia visibile sia agli esseri umani sia all' +agente. L'elenco di base dovrebbe rimanere sufficientemente ampio da coprire: - chat in DM e nei canali - comportamento dei thread @@ -75,13 +75,13 @@ all'agente. L'elenco di base dovrebbe rimanere abbastanza ampio da coprire: - callback cron - richiamo della memoria - cambio di modello -- passaggio a subagent +- passaggio a un subagente - lettura del repository e della documentazione -- una piccola attività di build come Lobster Invaders +- un piccolo task di build come Lobster Invaders ## Reportistica -`qa-lab` esporta un report di protocollo in Markdown dalla timeline del bus osservata. +`qa-lab` esporta un report di protocollo in Markdown dalla timeline del bus osservato. Il report dovrebbe rispondere a: - Cosa ha funzionato diff --git a/docs/it/concepts/streaming.md b/docs/it/concepts/streaming.md index dc59dd3da..6af7bdad4 100644 --- a/docs/it/concepts/streaming.md +++ b/docs/it/concepts/streaming.md @@ -1,15 +1,15 @@ --- read_when: - - Vuoi spiegare come funzionano lo streaming o il chunking nei canali - - Stai modificando il comportamento dello streaming a blocchi o del chunking nei canali - - Stai eseguendo il debug di risposte a blocchi duplicate/anticipate o del preview streaming nei canali -summary: Comportamento di streaming + chunking (risposte a blocchi, preview streaming nei canali, mappatura delle modalità) + - Spiegare come funzionano lo streaming o il chunking sui canali + - Modificare il comportamento dello streaming a blocchi o del chunking del canale + - Eseguire il debug di risposte a blocchi duplicate/premature o dello streaming di anteprima del canale +summary: Comportamento di streaming + chunking (risposte a blocchi, streaming di anteprima del canale, mappatura delle modalità) title: Streaming e Chunking x-i18n: - generated_at: "2026-04-05T13:50:57Z" + generated_at: "2026-04-08T06:00:57Z" model: gpt-5.4 provider: openai - source_hash: 44b0d08c7eafcb32030ef7c8d5719c2ea2d34e4bac5fdad8cc8b3f4e9e9fad97 + source_hash: a8e847bb7da890818cd79dec7777f6ae488e6d6c0468e948e56b6b6c598e0000 source_path: concepts/streaming.md workflow: 15 --- @@ -18,48 +18,48 @@ x-i18n: OpenClaw ha due livelli di streaming separati: -- **Streaming a blocchi (canali):** emette **blocchi** completati mentre l'assistente scrive. Si tratta di normali messaggi del canale (non delta di token). -- **Preview streaming (Telegram/Discord/Slack):** aggiorna un **messaggio di anteprima** temporaneo durante la generazione. +- **Streaming a blocchi (canali):** emette **blocchi** completati mentre l'assistente scrive. Questi sono normali messaggi del canale (non delta di token). +- **Streaming di anteprima (Telegram/Discord/Slack):** aggiorna un **messaggio di anteprima** temporaneo durante la generazione. -Oggi **non esiste un vero streaming a delta di token** verso i messaggi del canale. Il preview streaming è basato sui messaggi (invio + modifiche/aggiunte). +Al momento **non esiste un vero streaming token-delta** verso i messaggi del canale. Lo streaming di anteprima è basato sui messaggi (invio + modifiche/append). ## Streaming a blocchi (messaggi del canale) -Lo streaming a blocchi invia l'output dell'assistente in blocchi grossolani man mano che diventa disponibile. +Lo streaming a blocchi invia l'output dell'assistente in chunk grossolani man mano che diventano disponibili. ``` -Output del modello +Model output └─ text_delta/events ├─ (blockStreamingBreak=text_end) - │ └─ il chunker emette blocchi man mano che il buffer cresce + │ └─ chunker emits blocks as buffer grows └─ (blockStreamingBreak=message_end) - └─ il chunker svuota il buffer a message_end - └─ invio al canale (risposte a blocchi) + └─ chunker flushes at message_end + └─ channel send (block replies) ``` Legenda: -- `text_delta/events`: eventi di streaming del modello (possono essere radi per i modelli non streaming). +- `text_delta/events`: eventi del flusso del modello (possono essere radi per i modelli non in streaming). - `chunker`: `EmbeddedBlockChunker` che applica limiti min/max + preferenza di interruzione. -- `channel send`: messaggi effettivi in uscita (risposte a blocchi). +- `channel send`: messaggi effettivamente inviati in uscita (risposte a blocchi). **Controlli:** - `agents.defaults.blockStreamingDefault`: `"on"`/`"off"` (predefinito off). -- Override per canale: `*.blockStreaming` (e varianti per account) per forzare `"on"`/`"off"` per canale. +- Override del canale: `*.blockStreaming` (e varianti per account) per forzare `"on"`/`"off"` per canale. - `agents.defaults.blockStreamingBreak`: `"text_end"` o `"message_end"`. - `agents.defaults.blockStreamingChunk`: `{ minChars, maxChars, breakPreference? }`. - `agents.defaults.blockStreamingCoalesce`: `{ minChars?, maxChars?, idleMs? }` (unisce i blocchi in streaming prima dell'invio). - Limite rigido del canale: `*.textChunkLimit` (ad esempio `channels.whatsapp.textChunkLimit`). -- Modalità chunk del canale: `*.chunkMode` (`length` predefinito, `newline` divide sulle righe vuote, cioè ai confini dei paragrafi, prima del chunking per lunghezza). -- Limite morbido Discord: `channels.discord.maxLinesPerMessage` (predefinito 17) divide le risposte alte per evitare il clipping nell'interfaccia. +- Modalità di chunking del canale: `*.chunkMode` (`length` predefinito, `newline` divide sulle righe vuote (confini dei paragrafi) prima del chunking per lunghezza). +- Limite morbido di Discord: `channels.discord.maxLinesPerMessage` (predefinito 17) divide le risposte alte per evitare il clipping dell'interfaccia. **Semantica dei confini:** -- `text_end`: trasmette i blocchi non appena il chunker li emette; svuota il buffer a ogni `text_end`. -- `message_end`: attende che il messaggio dell'assistente termini, poi svuota l'output bufferizzato. +- `text_end`: trasmette i blocchi non appena il chunker li emette; svuota a ogni `text_end`. +- `message_end`: attende che il messaggio dell'assistente finisca, poi svuota l'output nel buffer. -`message_end` usa comunque il chunker se il testo bufferizzato supera `maxChars`, quindi può emettere più chunk alla fine. +`message_end` usa comunque il chunker se il testo nel buffer supera `maxChars`, quindi può emettere più chunk alla fine. ## Algoritmo di chunking (limiti basso/alto) @@ -67,30 +67,30 @@ Il chunking a blocchi è implementato da `EmbeddedBlockChunker`: - **Limite basso:** non emette finché il buffer non è >= `minChars` (a meno che non sia forzato). - **Limite alto:** preferisce divisioni prima di `maxChars`; se forzato, divide a `maxChars`. -- **Preferenza di interruzione:** `paragraph` → `newline` → `sentence` → `whitespace` → interruzione rigida. -- **Code fence:** non divide mai all'interno delle fence; quando è forzato a `maxChars`, chiude e riapre la fence per mantenere valido il Markdown. +- **Preferenza di interruzione:** `paragraph` → `newline` → `sentence` → `whitespace` → interruzione forzata. +- **Blocchi di codice:** non divide mai all'interno dei blocchi; quando è forzato a `maxChars`, chiude e riapre il blocco per mantenere valido il Markdown. -`maxChars` è vincolato al `textChunkLimit` del canale, quindi non puoi superare i limiti per canale. +`maxChars` è limitato a `textChunkLimit` del canale, quindi non puoi superare i limiti per canale. ## Coalescenza (unione dei blocchi in streaming) Quando lo streaming a blocchi è abilitato, OpenClaw può **unire chunk di blocchi consecutivi** -prima di inviarli. Questo riduce lo “spam di singole righe” pur continuando a fornire +prima di inviarli. Questo riduce lo “spam di righe singole” pur fornendo un output progressivo. -- La coalescenza attende **intervalli di inattività** (`idleMs`) prima di svuotare il buffer. -- I buffer sono limitati da `maxChars` e vengono svuotati se lo superano. +- La coalescenza attende **intervalli di inattività** (`idleMs`) prima di svuotare. +- I buffer sono limitati da `maxChars` e verranno svuotati se li superano. - `minChars` impedisce l'invio di frammenti minuscoli finché non si accumula abbastanza testo (lo svuotamento finale invia sempre il testo rimanente). - Il separatore deriva da `blockStreamingChunk.breakPreference` (`paragraph` → `\n\n`, `newline` → `\n`, `sentence` → spazio). -- Sono disponibili override per canale tramite `*.blockStreamingCoalesce` (incluse le configurazioni per account). -- Il valore predefinito di coalescenza `minChars` viene portato a 1500 per Signal/Slack/Discord salvo override. +- Sono disponibili override del canale tramite `*.blockStreamingCoalesce` (incluse le configurazioni per account). +- Il valore predefinito di coalescenza `minChars` viene aumentato a 1500 per Signal/Slack/Discord, salvo override. -## Ritmo umano tra i blocchi +## Cadenza umana tra i blocchi Quando lo streaming a blocchi è abilitato, puoi aggiungere una **pausa casuale** tra -le risposte a blocchi (dopo il primo blocco). Questo rende le risposte multi-bolla +le risposte a blocchi (dopo il primo blocco). Questo rende le risposte con più bolle più naturali. - Configurazione: `agents.defaults.humanDelay` (override per agente tramite `agents.list[].humanDelay`). @@ -101,68 +101,69 @@ più naturali. Questo corrisponde a: -- **Trasmettere i chunk:** `blockStreamingDefault: "on"` + `blockStreamingBreak: "text_end"` (emette man mano). I canali non Telegram richiedono anche `*.blockStreaming: true`. -- **Trasmettere tutto alla fine:** `blockStreamingBreak: "message_end"` (svuota una volta sola, eventualmente in più chunk se è molto lungo). +- **Trasmettere i chunk:** `blockStreamingDefault: "on"` + `blockStreamingBreak: "text_end"` (emette man mano). I canali diversi da Telegram richiedono anche `*.blockStreaming: true`. +- **Trasmettere tutto alla fine:** `blockStreamingBreak: "message_end"` (svuota una volta, possibilmente in più chunk se molto lungo). - **Nessuno streaming a blocchi:** `blockStreamingDefault: "off"` (solo risposta finale). -**Nota sui canali:** Lo streaming a blocchi è **disattivato a meno che** -`*.blockStreaming` non sia esplicitamente impostato su `true`. I canali possono trasmettere una preview live +**Nota sul canale:** lo streaming a blocchi è **disattivato a meno che** +`*.blockStreaming` non sia impostato esplicitamente su `true`. I canali possono trasmettere un'anteprima live (`channels..streaming`) senza risposte a blocchi. -Promemoria sulla posizione della configurazione: i valori predefiniti `blockStreaming*` si trovano in +Promemoria sulla posizione della configurazione: i valori predefiniti `blockStreaming*` si trovano sotto `agents.defaults`, non nella configurazione root. -## Modalità di preview streaming +## Modalità di streaming di anteprima Chiave canonica: `channels..streaming` Modalità: -- `off`: disabilita il preview streaming. -- `partial`: singola anteprima che viene sostituita con il testo più recente. -- `block`: l'anteprima si aggiorna in passaggi suddivisi in chunk/aggiunti. +- `off`: disabilita lo streaming di anteprima. +- `partial`: una singola anteprima che viene sostituita con il testo più recente. +- `block`: l'anteprima viene aggiornata in passaggi a chunk/in append. - `progress`: anteprima di avanzamento/stato durante la generazione, risposta finale al completamento. -### Mappatura per canale +### Mappatura dei canali -| Canale | `off` | `partial` | `block` | `progress` | -| -------- | ----- | --------- | ------- | ----------------- | -| Telegram | ✅ | ✅ | ✅ | corrisponde a `partial` | -| Discord | ✅ | ✅ | ✅ | corrisponde a `partial` | -| Slack | ✅ | ✅ | ✅ | ✅ | +| Canale | `off` | `partial` | `block` | `progress` | +| -------- | ----- | --------- | ------- | ------------------ | +| Telegram | ✅ | ✅ | ✅ | mappa a `partial` | +| Discord | ✅ | ✅ | ✅ | mappa a `partial` | +| Slack | ✅ | ✅ | ✅ | ✅ | Solo Slack: -- `channels.slack.nativeStreaming` abilita/disabilita le chiamate API di streaming nativo di Slack quando `streaming=partial` (predefinito: `true`). +- `channels.slack.streaming.nativeTransport` abilita/disabilita le chiamate API di streaming native di Slack quando `channels.slack.streaming.mode="partial"` (predefinito: `true`). +- Lo streaming nativo di Slack e lo stato del thread assistant di Slack richiedono una destinazione in thread di risposta; i DM di primo livello non mostrano quell'anteprima in stile thread. Migrazione delle chiavi legacy: - Telegram: `streamMode` + booleano `streaming` vengono migrati automaticamente all'enum `streaming`. - Discord: `streamMode` + booleano `streaming` vengono migrati automaticamente all'enum `streaming`. -- Slack: `streamMode` viene migrato automaticamente all'enum `streaming`; il booleano `streaming` viene migrato automaticamente a `nativeStreaming`. +- Slack: `streamMode` viene migrato automaticamente a `streaming.mode`; il booleano `streaming` viene migrato automaticamente a `streaming.mode` più `streaming.nativeTransport`; il legacy `nativeStreaming` viene migrato automaticamente a `streaming.nativeTransport`. -### Comportamento a runtime +### Comportamento in runtime Telegram: -- Usa gli aggiornamenti di anteprima `sendMessage` + `editMessageText` tra DM e gruppi/topic. -- Il preview streaming viene saltato quando lo streaming a blocchi di Telegram è esplicitamente abilitato (per evitare doppio streaming). +- Usa aggiornamenti di anteprima `sendMessage` + `editMessageText` in DM e gruppi/topic. +- Lo streaming di anteprima viene saltato quando lo streaming a blocchi di Telegram è esplicitamente abilitato (per evitare il doppio streaming). - `/reasoning stream` può scrivere il ragionamento nell'anteprima. Discord: - Usa messaggi di anteprima con invio + modifica. - La modalità `block` usa il chunking delle bozze (`draftChunk`). -- Il preview streaming viene saltato quando lo streaming a blocchi di Discord è esplicitamente abilitato. +- Lo streaming di anteprima viene saltato quando lo streaming a blocchi di Discord è esplicitamente abilitato. Slack: - `partial` può usare lo streaming nativo di Slack (`chat.startStream`/`append`/`stop`) quando disponibile. - `block` usa anteprime bozza in stile append. -- `progress` usa testo di anteprima dello stato, poi la risposta finale. +- `progress` usa il testo di anteprima dello stato, poi la risposta finale. ## Correlati -- [Messaggi](/concepts/messages) — ciclo di vita e consegna dei messaggi -- [Retry](/concepts/retry) — comportamento di retry in caso di errore di consegna +- [Messaggi](/it/concepts/messages) — ciclo di vita e consegna dei messaggi +- [Retry](/it/concepts/retry) — comportamento di retry in caso di errore di consegna - [Canali](/it/channels) — supporto dello streaming per canale diff --git a/docs/it/gateway/configuration-reference.md b/docs/it/gateway/configuration-reference.md index 3aa7eca76..2962bd019 100644 --- a/docs/it/gateway/configuration-reference.md +++ b/docs/it/gateway/configuration-reference.md @@ -2,55 +2,69 @@ read_when: - Hai bisogno della semantica esatta dei campi di configurazione o dei valori predefiniti - Stai convalidando blocchi di configurazione di canali, modelli, gateway o strumenti -summary: Riferimento completo per ogni chiave di configurazione di OpenClaw, valori predefiniti e impostazioni dei canali +summary: Riferimento della configurazione del gateway per le chiavi principali di OpenClaw, i valori predefiniti e i link ai riferimenti dedicati dei sottosistemi title: Riferimento della configurazione x-i18n: - generated_at: "2026-04-08T02:20:19Z" + generated_at: "2026-04-08T06:06:14Z" model: gpt-5.4 provider: openai - source_hash: 2c7991b948cbbb7954a3e26280089ab00088e7f4878ec0b0540c3c9acf222ebb + source_hash: 2f9ab34fb56897a77cb038d95bea21e8530d8f0402b66d1ee97c73822a1e8fd4 source_path: gateway/configuration-reference.md workflow: 15 --- # Riferimento della configurazione -Ogni campo disponibile in `~/.openclaw/openclaw.json`. Per una panoramica orientata alle attività, vedi [Configurazione](/it/gateway/configuration). +Riferimento della configurazione principale per `~/.openclaw/openclaw.json`. Per una panoramica orientata alle attività, vedi [Configurazione](/it/gateway/configuration). -Il formato della configurazione è **JSON5** (commenti + virgole finali consentiti). Tutti i campi sono facoltativi — OpenClaw usa valori predefiniti sicuri quando vengono omessi. +Questa pagina copre le principali superfici di configurazione di OpenClaw e rimanda altrove quando un sottosistema ha un proprio riferimento più approfondito. **Non** cerca di incorporare in linea ogni catalogo di comandi di proprietà di canali/plugin né ogni impostazione avanzata di memoria/QMD in un’unica pagina. + +Fonte di verità del codice: + +- `openclaw config schema` stampa lo JSON Schema live usato per la convalida e la Control UI, con i metadati bundled/plugin/channel uniti quando disponibili +- `config.schema.lookup` restituisce un nodo di schema con ambito di percorso per gli strumenti di analisi approfondita +- `pnpm config:docs:check` / `pnpm config:docs:gen` convalidano l’hash baseline della documentazione di configurazione rispetto alla superficie dello schema corrente + +Riferimenti approfonditi dedicati: + +- [Riferimento della configurazione della memoria](/it/reference/memory-config) per `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` e la configurazione del dreaming sotto `plugins.entries.memory-core.config.dreaming` +- [Slash Commands](/it/tools/slash-commands) per il catalogo corrente dei comandi built-in + bundled +- pagine del canale/plugin proprietario per le superfici di comando specifiche del canale + +Il formato di configurazione è **JSON5** (commenti + virgole finali consentiti). Tutti i campi sono facoltativi: OpenClaw usa valori predefiniti sicuri quando vengono omessi. --- ## Canali -Ogni canale si avvia automaticamente quando la relativa sezione di configurazione esiste (a meno che `enabled: false`). +Ogni canale si avvia automaticamente quando esiste la sua sezione di configurazione (a meno che `enabled: false`). ### Accesso a DM e gruppi -Tutti i canali supportano policy per i DM e policy per i gruppi: +Tutti i canali supportano criteri per i DM e criteri per i gruppi: -| Policy DM | Comportamento | +| Criterio DM | Comportamento | | ------------------- | -------------------------------------------------------------- | -| `pairing` (predefinita) | I mittenti sconosciuti ricevono un codice di abbinamento monouso; il proprietario deve approvare | -| `allowlist` | Solo i mittenti in `allowFrom` (o nell'archivio allow degli abbinamenti) | +| `pairing` (predefinito) | I mittenti sconosciuti ricevono un codice di pairing monouso; il proprietario deve approvare | +| `allowlist` | Solo i mittenti in `allowFrom` (o nell’archivio allow abbinato) | | `open` | Consenti tutti i DM in ingresso (richiede `allowFrom: ["*"]`) | | `disabled` | Ignora tutti i DM in ingresso | -| Policy gruppo | Comportamento | -| --------------------- | ----------------------------------------------------- | -| `allowlist` (predefinita) | Solo i gruppi che corrispondono all'allowlist configurata | -| `open` | Ignora le allowlist dei gruppi (si applica comunque il gating per menzioni) | +| Criterio di gruppo | Comportamento | +| --------------------- | ------------------------------------------------------ | +| `allowlist` (predefinito) | Solo i gruppi che corrispondono all’allowlist configurata | +| `open` | Bypassa le allowlist dei gruppi (il gating per menzione continua ad applicarsi) | | `disabled` | Blocca tutti i messaggi di gruppo/stanza | `channels.defaults.groupPolicy` imposta il valore predefinito quando `groupPolicy` di un provider non è impostato. -I codici di abbinamento scadono dopo 1 ora. Le richieste DM di abbinamento in sospeso sono limitate a **3 per canale**. -Se un blocco provider manca completamente (`channels.` assente), la policy di gruppo a runtime torna a `allowlist` (fail-closed) con un avviso all'avvio. +I codici di pairing scadono dopo 1 ora. Le richieste DM di pairing in sospeso sono limitate a **3 per canale**. +Se un blocco provider manca completamente (`channels.` assente), il criterio di gruppo a runtime ricade su `allowlist` (fail-closed) con un avviso all’avvio. ### Override del modello per canale -Usa `channels.modelByChannel` per fissare specifici ID canale a un modello. I valori accettano `provider/model` o alias di modello configurati. La mappatura del canale si applica quando una sessione non ha già un override del modello (ad esempio impostato tramite `/model`). +Usa `channels.modelByChannel` per fissare ID di canale specifici a un modello. I valori accettano `provider/model` o alias di modello configurati. La mappatura del canale si applica quando una sessione non ha già un override del modello (ad esempio impostato tramite `/model`). ```json5 { @@ -73,7 +87,7 @@ Usa `channels.modelByChannel` per fissare specifici ID canale a un modello. I va ### Valori predefiniti dei canali e heartbeat -Usa `channels.defaults` per il comportamento condiviso di group-policy e heartbeat tra i provider: +Usa `channels.defaults` per il criterio di gruppo condiviso e il comportamento dell’heartbeat tra i provider: ```json5 { @@ -91,15 +105,15 @@ Usa `channels.defaults` per il comportamento condiviso di group-policy e heartbe } ``` -- `channels.defaults.groupPolicy`: policy di gruppo di fallback quando `groupPolicy` a livello provider non è impostato. -- `channels.defaults.contextVisibility`: modalità predefinita di visibilità del contesto supplementare per tutti i canali. Valori: `all` (predefinita, include tutto il contesto citato/thread/storico), `allowlist` (include solo il contesto di mittenti consentiti), `allowlist_quote` (come allowlist ma conserva il contesto esplicito di citazione/risposta). Override per canale: `channels..contextVisibility`. -- `channels.defaults.heartbeat.showOk`: include gli stati dei canali sani nell'output heartbeat. -- `channels.defaults.heartbeat.showAlerts`: include gli stati degradati/in errore nell'output heartbeat. -- `channels.defaults.heartbeat.useIndicator`: mostra un output heartbeat compatto in stile indicatore. +- `channels.defaults.groupPolicy`: criterio di gruppo di fallback quando un `groupPolicy` a livello provider non è impostato. +- `channels.defaults.contextVisibility`: modalità predefinita di visibilità del contesto supplementare per tutti i canali. Valori: `all` (predefinito, include tutto il contesto citato/thread/storia), `allowlist` (include il contesto solo dai mittenti in allowlist), `allowlist_quote` (come allowlist ma mantiene il contesto esplicito di citazione/risposta). Override per canale: `channels..contextVisibility`. +- `channels.defaults.heartbeat.showOk`: include gli stati dei canali sani nell’output heartbeat. +- `channels.defaults.heartbeat.showAlerts`: include gli stati degradati/con errore nell’output heartbeat. +- `channels.defaults.heartbeat.useIndicator`: rende l’output heartbeat compatto in stile indicatore. ### WhatsApp -WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia automaticamente quando esiste una sessione collegata. +WhatsApp viene eseguito tramite il canale web del gateway (Baileys Web). Si avvia automaticamente quando esiste una sessione collegata. ```json5 { @@ -150,9 +164,9 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto } ``` -- I comandi in uscita usano per impostazione predefinita l'account `default` se presente; altrimenti il primo ID account configurato (ordinato). -- `channels.whatsapp.defaultAccount` facoltativo sostituisce quella selezione dell'account predefinito di fallback quando corrisponde a un ID account configurato. -- La directory di autenticazione legacy Baileys single-account viene migrata da `openclaw doctor` in `whatsapp/default`. +- I comandi in uscita usano per impostazione predefinita l’account `default` se presente; altrimenti il primo ID account configurato (ordinato). +- L’opzionale `channels.whatsapp.defaultAccount` sostituisce tale selezione di account predefinito di fallback quando corrisponde a un ID account configurato. +- La legacy single-account Baileys auth dir viene migrata da `openclaw doctor` in `whatsapp/default`. - Override per account: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. @@ -171,24 +185,24 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto "*": { requireMention: true }, "-1001234567890": { allowFrom: ["@admin"], - systemPrompt: "Mantieni le risposte brevi.", + systemPrompt: "Keep answers brief.", topics: { "99": { requireMention: false, skills: ["search"], - systemPrompt: "Rimani in tema.", + systemPrompt: "Stay on topic.", }, }, }, }, customCommands: [ - { command: "backup", description: "Backup Git" }, - { command: "generate", description: "Crea un'immagine" }, + { command: "backup", description: "Git backup" }, + { command: "generate", description: "Create an image" }, ], historyLimit: 50, replyToMode: "first", // off | first | all | batched linkPreview: true, - streaming: "partial", // off | partial | block | progress (predefinito: off; abilitalo esplicitamente per evitare limiti di frequenza nelle modifiche delle anteprime) + streaming: "partial", // off | partial | block | progress (default: off; opt in explicitly to avoid preview-edit rate limits) actions: { reactions: true, sendMessage: true }, reactionNotifications: "own", // off | own | all mediaMaxMb: 100, @@ -211,13 +225,13 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto } ``` -- Token del bot: `channels.telegram.botToken` o `channels.telegram.tokenFile` (solo file regolari; i symlink sono rifiutati), con `TELEGRAM_BOT_TOKEN` come fallback per l'account predefinito. -- `channels.telegram.defaultAccount` facoltativo sostituisce la selezione predefinita dell'account quando corrisponde a un ID account configurato. -- Nelle configurazioni multi-account (2+ ID account), imposta un valore predefinito esplicito (`channels.telegram.defaultAccount` o `channels.telegram.accounts.default`) per evitare il routing di fallback; `openclaw doctor` avvisa quando manca o non è valido. +- Bot token: `channels.telegram.botToken` oppure `channels.telegram.tokenFile` (solo file regolare; i symlink vengono rifiutati), con `TELEGRAM_BOT_TOKEN` come fallback per l’account predefinito. +- L’opzionale `channels.telegram.defaultAccount` sostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. +- Nelle configurazioni multi-account (2+ ID account), imposta un predefinito esplicito (`channels.telegram.defaultAccount` o `channels.telegram.accounts.default`) per evitare il routing di fallback; `openclaw doctor` avvisa quando manca o non è valido. - `configWrites: false` blocca le scritture di configurazione avviate da Telegram (migrazioni ID supergruppo, `/config set|unset`). -- Le voci `bindings[]` di primo livello con `type: "acp"` configurano binding ACP persistenti per i topic del forum (usa il canonico `chatId:topic:topicId` in `match.peer.id`). La semantica dei campi è condivisa in [Agenti ACP](/it/tools/acp-agents#channel-specific-settings). -- Le anteprime di streaming Telegram usano `sendMessage` + `editMessageText` (funziona in chat dirette e di gruppo). -- Policy di retry: vedi [Policy di retry](/it/concepts/retry). +- Le voci top-level `bindings[]` con `type: "acp"` configurano binding ACP persistenti per i topic dei forum (usa il canonico `chatId:topic:topicId` in `match.peer.id`). La semantica dei campi è condivisa in [ACP Agents](/it/tools/acp-agents#channel-specific-settings). +- Le anteprime stream di Telegram usano `sendMessage` + `editMessageText` (funziona in chat dirette e di gruppo). +- Criterio di retry: vedi [Criterio di retry](/it/concepts/retry). ### Discord @@ -264,7 +278,7 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto requireMention: true, users: ["987654321098765432"], skills: ["docs"], - systemPrompt: "Solo risposte brevi.", + systemPrompt: "Short answers only.", }, }, }, @@ -272,7 +286,7 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto historyLimit: 20, textChunkLimit: 2000, chunkMode: "length", // length | newline - streaming: "off", // off | partial | block | progress (progress corrisponde a partial su Discord) + streaming: "off", // off | partial | block | progress (progress maps to partial on Discord) maxLinesPerMessage: 17, ui: { components: { @@ -283,7 +297,7 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto enabled: true, idleHours: 24, maxAgeHours: 0, - spawnSubagentSessions: false, // opt-in per sessions_spawn({ thread: true }) + spawnSubagentSessions: false, // opt-in for sessions_spawn({ thread: true }) }, voice: { enabled: true, @@ -319,36 +333,36 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto } ``` -- Token: `channels.discord.token`, con `DISCORD_BOT_TOKEN` come fallback per l'account predefinito. -- Le chiamate dirette in uscita che forniscono un `token` Discord esplicito usano quel token per la chiamata; le impostazioni di retry/policy dell'account provengono comunque dall'account selezionato nello snapshot runtime attivo. -- `channels.discord.defaultAccount` facoltativo sostituisce la selezione predefinita dell'account quando corrisponde a un ID account configurato. -- Usa `user:` (DM) o `channel:` (canale guild) come target di consegna; gli ID numerici nudi sono rifiutati. +- Token: `channels.discord.token`, con `DISCORD_BOT_TOKEN` come fallback per l’account predefinito. +- Le chiamate dirette in uscita che forniscono un `token` Discord esplicito usano quel token per la chiamata; le impostazioni di retry/criterio dell’account provengono comunque dall’account selezionato nello snapshot runtime attivo. +- L’opzionale `channels.discord.defaultAccount` sostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. +- Usa `user:` (DM) o `channel:` (canale guild) per i target di consegna; gli ID numerici senza prefisso vengono rifiutati. - Gli slug delle guild sono in minuscolo con gli spazi sostituiti da `-`; le chiavi dei canali usano il nome slugificato (senza `#`). Preferisci gli ID delle guild. -- I messaggi creati dai bot vengono ignorati per impostazione predefinita. `allowBots: true` li abilita; usa `allowBots: "mentions"` per accettare solo i messaggi dei bot che menzionano il bot (i propri messaggi restano comunque filtrati). -- `channels.discord.guilds..ignoreOtherMentions` (e gli override di canale) scarta i messaggi che menzionano un altro utente o ruolo ma non il bot (esclusi @everyone/@here). +- I messaggi scritti da bot vengono ignorati per impostazione predefinita. `allowBots: true` li abilita; usa `allowBots: "mentions"` per accettare solo i messaggi dei bot che menzionano il bot (i propri messaggi restano comunque filtrati). +- `channels.discord.guilds..ignoreOtherMentions` (e gli override di canale) elimina i messaggi che menzionano un altro utente o ruolo ma non il bot (escludendo @everyone/@here). - `maxLinesPerMessage` (predefinito 17) divide i messaggi alti anche quando sono sotto i 2000 caratteri. -- `channels.discord.threadBindings` controlla il routing vincolato ai thread Discord: - - `enabled`: override Discord per le funzionalità di sessione vincolate al thread (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` e consegna/routing vincolati) - - `idleHours`: override Discord per l'auto-unfocus per inattività in ore (`0` lo disabilita) - - `maxAgeHours`: override Discord per età massima rigida in ore (`0` lo disabilita) - - `spawnSubagentSessions`: interruttore opt-in per la creazione automatica/vincolo del thread con `sessions_spawn({ thread: true })` -- Le voci `bindings[]` di primo livello con `type: "acp"` configurano binding ACP persistenti per canali e thread (usa l'id di canale/thread in `match.peer.id`). La semantica dei campi è condivisa in [Agenti ACP](/it/tools/acp-agents#channel-specific-settings). -- `channels.discord.ui.components.accentColor` imposta il colore di accento per i contenitori componenti v2 di Discord. -- `channels.discord.voice` abilita le conversazioni nei canali vocali Discord e gli eventuali override auto-join + TTS. -- `channels.discord.voice.daveEncryption` e `channels.discord.voice.decryptionFailureTolerance` vengono passati alle opzioni DAVE di `@discordjs/voice` (predefiniti `true` e `24`). +- `channels.discord.threadBindings` controlla il routing legato ai thread di Discord: + - `enabled`: override Discord per le funzionalità di sessione thread-bound (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` e consegna/routing vincolati) + - `idleHours`: override Discord per l’auto-unfocus da inattività in ore (`0` disabilita) + - `maxAgeHours`: override Discord per l’età massima rigida in ore (`0` disabilita) + - `spawnSubagentSessions`: interruttore opt-in per la creazione/associazione automatica di thread `sessions_spawn({ thread: true })` +- Le voci top-level `bindings[]` con `type: "acp"` configurano binding ACP persistenti per canali e thread (usa l’ID canale/thread in `match.peer.id`). La semantica dei campi è condivisa in [ACP Agents](/it/tools/acp-agents#channel-specific-settings). +- `channels.discord.ui.components.accentColor` imposta il colore di accento per i container Discord components v2. +- `channels.discord.voice` abilita le conversazioni nei canali vocali Discord e gli override opzionali auto-join + TTS. +- `channels.discord.voice.daveEncryption` e `channels.discord.voice.decryptionFailureTolerance` vengono passati a `@discordjs/voice` come opzioni DAVE (predefiniti `true` e `24`). - OpenClaw tenta inoltre il recupero della ricezione vocale uscendo/rientrando in una sessione vocale dopo ripetuti errori di decrittazione. -- `channels.discord.streaming` è la chiave canonica della modalità stream. I valori legacy `streamMode` e booleani `streaming` vengono migrati automaticamente. -- `channels.discord.autoPresence` mappa la disponibilità runtime alla presenza del bot (healthy => online, degraded => idle, exhausted => dnd) e consente override facoltativi del testo di stato. -- `channels.discord.dangerouslyAllowNameMatching` riabilita la corrispondenza su nome/tag mutabili (modalità compatibilità break-glass). +- `channels.discord.streaming` è la chiave canonica per la modalità stream. I valori legacy `streamMode` e booleani `streaming` vengono migrati automaticamente. +- `channels.discord.autoPresence` mappa la disponibilità runtime alla presenza del bot (healthy => online, degraded => idle, exhausted => dnd) e consente override opzionali del testo di stato. +- `channels.discord.dangerouslyAllowNameMatching` riabilita il matching su nome/tag mutabili (modalità di compatibilità break-glass). - `channels.discord.execApprovals`: consegna nativa Discord delle approvazioni exec e autorizzazione degli approvatori. - `enabled`: `true`, `false` o `"auto"` (predefinito). In modalità auto, le approvazioni exec si attivano quando gli approvatori possono essere risolti da `approvers` o `commands.ownerAllowFrom`. - - `approvers`: ID utente Discord autorizzati ad approvare richieste exec. Usa `commands.ownerAllowFrom` come fallback se omesso. - - `agentFilter`: allowlist facoltativa di ID agente. Omettila per inoltrare approvazioni per tutti gli agenti. - - `sessionFilter`: pattern facoltativi di chiave sessione (sottostringa o regex). - - `target`: dove inviare le richieste di approvazione. `"dm"` (predefinito) invia ai DM degli approvatori, `"channel"` invia al canale di origine, `"both"` invia a entrambi. Quando il target include `"channel"`, i pulsanti sono utilizzabili solo dagli approvatori risolti. + - `approvers`: ID utente Discord autorizzati ad approvare richieste exec. Se omesso, ricade su `commands.ownerAllowFrom`. + - `agentFilter`: allowlist opzionale di ID agente. Ometti per inoltrare approvazioni per tutti gli agenti. + - `sessionFilter`: pattern opzionali di chiavi di sessione (substring o regex). + - `target`: dove inviare i prompt di approvazione. `"dm"` (predefinito) invia ai DM degli approvatori, `"channel"` invia al canale di origine, `"both"` invia a entrambi. Quando il target include `"channel"`, i pulsanti sono utilizzabili solo dagli approvatori risolti. - `cleanupAfterResolve`: quando `true`, elimina i DM di approvazione dopo approvazione, rifiuto o timeout. -**Modalità di notifica reazioni:** `off` (nessuna), `own` (messaggi del bot, predefinita), `all` (tutti i messaggi), `allowlist` (da `guilds..users` su tutti i messaggi). +**Modalità di notifica delle reazioni:** `off` (nessuna), `own` (messaggi del bot, predefinito), `all` (tutti i messaggi), `allowlist` (da `guilds..users` su tutti i messaggi). ### Google Chat @@ -379,11 +393,11 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto } ``` -- JSON dell'account di servizio: inline (`serviceAccount`) o basato su file (`serviceAccountFile`). -- È supportato anche SecretRef per l'account di servizio (`serviceAccountRef`). +- JSON del service account: inline (`serviceAccount`) o basato su file (`serviceAccountFile`). +- È supportato anche SecretRef per il service account (`serviceAccountRef`). - Fallback env: `GOOGLE_CHAT_SERVICE_ACCOUNT` o `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. -- Usa `spaces/` o `users/` come target di consegna. -- `channels.googlechat.dangerouslyAllowNameMatching` riabilita la corrispondenza su principal email mutabili (modalità compatibilità break-glass). +- Usa `spaces/` o `users/` per i target di consegna. +- `channels.googlechat.dangerouslyAllowNameMatching` riabilita il matching sull’email principal mutabile (modalità di compatibilità break-glass). ### Slack @@ -405,7 +419,7 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto allowBots: false, users: ["U123"], skills: ["docs"], - systemPrompt: "Solo risposte brevi.", + systemPrompt: "Short answers only.", }, }, historyLimit: 50, @@ -433,8 +447,10 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto typingReaction: "hourglass_flowing_sand", textChunkLimit: 4000, chunkMode: "length", - streaming: "partial", // off | partial | block | progress (modalità anteprima) - nativeStreaming: true, // usa l'API di streaming nativa di Slack quando streaming=partial + streaming: { + mode: "partial", // off | partial | block | progress + nativeTransport: true, // use Slack native streaming API when mode=partial + }, mediaMaxMb: 20, execApprovals: { enabled: "auto", // true | false | "auto" @@ -448,34 +464,35 @@ WhatsApp funziona tramite il canale web del gateway (Baileys Web). Si avvia auto } ``` -- **Modalità socket** richiede sia `botToken` sia `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` come fallback env dell'account predefinito). -- **Modalità HTTP** richiede `botToken` più `signingSecret` (alla radice o per account). -- `botToken`, `appToken`, `signingSecret` e `userToken` accettano stringhe - in chiaro o oggetti SecretRef. -- Gli snapshot account Slack espongono campi per sorgente/stato delle credenziali come +- La **modalità socket** richiede sia `botToken` sia `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` per il fallback env dell’account predefinito). +- La **modalità HTTP** richiede `botToken` più `signingSecret` (alla root o per-account). +- `botToken`, `appToken`, `signingSecret` e `userToken` accettano stringhe in chiaro + o oggetti SecretRef. +- Gli snapshot account Slack espongono campi per-credential di origine/stato come `botTokenSource`, `botTokenStatus`, `appTokenStatus` e, in modalità HTTP, - `signingSecretStatus`. `configured_unavailable` significa che l'account è - configurato tramite SecretRef ma l'attuale percorso di comando/runtime non ha potuto - risolvere il valore del segreto. + `signingSecretStatus`. `configured_unavailable` significa che l’account è + configurato tramite SecretRef ma il percorso corrente di comando/runtime non ha potuto + risolvere il valore del secret. - `configWrites: false` blocca le scritture di configurazione avviate da Slack. -- `channels.slack.defaultAccount` facoltativo sostituisce la selezione predefinita dell'account quando corrisponde a un ID account configurato. -- `channels.slack.streaming` è la chiave canonica della modalità stream. I valori legacy `streamMode` e booleani `streaming` vengono migrati automaticamente. +- L’opzionale `channels.slack.defaultAccount` sostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. +- `channels.slack.streaming.mode` è la chiave canonica della modalità stream Slack. `channels.slack.streaming.nativeTransport` controlla il transport streaming nativo di Slack. I valori legacy `streamMode`, booleani `streaming` e `nativeStreaming` vengono migrati automaticamente. - Usa `user:` (DM) o `channel:` per i target di consegna. -**Modalità di notifica reazioni:** `off`, `own` (predefinita), `all`, `allowlist` (da `reactionAllowlist`). +**Modalità di notifica delle reazioni:** `off`, `own` (predefinito), `all`, `allowlist` (da `reactionAllowlist`). -**Isolamento sessione thread:** `thread.historyScope` è per-thread (predefinito) o condiviso nel canale. `thread.inheritParent` copia il transcript del canale padre nei nuovi thread. +**Isolamento della sessione thread:** `thread.historyScope` è per-thread (predefinito) o condiviso tra canali. `thread.inheritParent` copia la trascrizione del canale padre nei nuovi thread. -- `typingReaction` aggiunge una reazione temporanea al messaggio Slack in ingresso mentre una risposta è in esecuzione, poi la rimuove al completamento. Usa uno shortcode emoji Slack come `"hourglass_flowing_sand"`. +- Lo streaming nativo Slack più lo stato thread in stile assistant Slack "is typing..." richiedono un target di risposta thread. I DM top-level restano off-thread per impostazione predefinita, quindi usano `typingReaction` o la consegna normale invece dell’anteprima in stile thread. +- `typingReaction` aggiunge una reazione temporanea al messaggio Slack in ingresso mentre è in esecuzione una risposta, quindi la rimuove al completamento. Usa uno shortcode emoji Slack come `"hourglass_flowing_sand"`. - `channels.slack.execApprovals`: consegna nativa Slack delle approvazioni exec e autorizzazione degli approvatori. Stesso schema di Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID utente Slack), `agentFilter`, `sessionFilter` e `target` (`"dm"`, `"channel"` o `"both"`). -| Gruppo di azioni | Predefinito | Note | -| ---------------- | ----------- | ------------------------ | -| reactions | abilitato | Reagire + elencare reazioni | -| messages | abilitato | Leggere/inviare/modificare/eliminare | -| pins | abilitato | Fissare/rimuovere/elencare | -| memberInfo | abilitato | Informazioni membro | -| emojiList | abilitato | Elenco emoji personalizzate | +| Gruppo di azioni | Predefinito | Note | +| ---------------- | ----------- | ---------------------- | +| reactions | enabled | Reagisci + elenca reazioni | +| messages | enabled | Leggi/invia/modifica/elimina | +| pins | enabled | Fissa/rimuovi/elenca | +| memberInfo | enabled | Informazioni membro | +| emojiList | enabled | Elenco emoji personalizzate | ### Mattermost @@ -499,7 +516,7 @@ Mattermost viene distribuito come plugin: `openclaw plugins install @openclaw/ma native: true, // opt-in nativeSkills: true, callbackPath: "/api/channels/mattermost/command", - // URL esplicito facoltativo per distribuzioni con reverse proxy/pubbliche + // Optional explicit URL for reverse-proxy/public deployments callbackUrl: "https://gateway.example.com/api/channels/mattermost/command", }, textChunkLimit: 4000, @@ -509,23 +526,23 @@ Mattermost viene distribuito come plugin: `openclaw plugins install @openclaw/ma } ``` -Modalità chat: `oncall` (risponde a @-mention, predefinita), `onmessage` (ogni messaggio), `onchar` (messaggi che iniziano con un prefisso trigger). +Modalità chat: `oncall` (risponde con @-mention, predefinita), `onmessage` (ogni messaggio), `onchar` (messaggi che iniziano con prefisso trigger). Quando i comandi nativi Mattermost sono abilitati: - `commands.callbackPath` deve essere un percorso (ad esempio `/api/channels/mattermost/command`), non un URL completo. -- `commands.callbackUrl` deve risolversi all'endpoint gateway di OpenClaw ed essere raggiungibile dal server Mattermost. -- I callback slash nativi sono autenticati con i token per-comando restituiti - da Mattermost durante la registrazione dei comandi slash. Se la registrazione fallisce o nessun - comando viene attivato, OpenClaw rifiuta i callback con +- `commands.callbackUrl` deve risolversi nell’endpoint gateway OpenClaw ed essere raggiungibile dal server Mattermost. +- Le callback native slash sono autenticate con i token per-comando restituiti + da Mattermost durante la registrazione del comando slash. Se la registrazione fallisce o nessun + comando viene attivato, OpenClaw rifiuta le callback con `Unauthorized: invalid command token.` -- Per host di callback privati/tailnet/interni, Mattermost potrebbe richiedere - che `ServiceSettings.AllowedUntrustedInternalConnections` includa l'host/dominio di callback. +- Per host callback privati/tailnet/interni, Mattermost potrebbe richiedere + che `ServiceSettings.AllowedUntrustedInternalConnections` includa l’host/dominio di callback. Usa valori host/dominio, non URL completi. -- `channels.mattermost.configWrites`: consenti o nega le scritture di configurazione avviate da Mattermost. +- `channels.mattermost.configWrites`: consente o nega le scritture di configurazione avviate da Mattermost. - `channels.mattermost.requireMention`: richiede `@mention` prima di rispondere nei canali. - `channels.mattermost.groups..requireMention`: override per-canale del gating per menzione (`"*"` per il predefinito). -- `channels.mattermost.defaultAccount` facoltativo sostituisce la selezione predefinita dell'account quando corrisponde a un ID account configurato. +- L’opzionale `channels.mattermost.defaultAccount` sostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. ### Signal @@ -534,7 +551,7 @@ Quando i comandi nativi Mattermost sono abilitati: channels: { signal: { enabled: true, - account: "+15555550123", // binding facoltativo dell'account + account: "+15555550123", // optional account binding dmPolicy: "pairing", allowFrom: ["+15551234567", "uuid:123e4567-e89b-12d3-a456-426614174000"], configWrites: true, @@ -546,15 +563,15 @@ Quando i comandi nativi Mattermost sono abilitati: } ``` -**Modalità di notifica reazioni:** `off`, `own` (predefinita), `all`, `allowlist` (da `reactionAllowlist`). +**Modalità di notifica delle reazioni:** `off`, `own` (predefinito), `all`, `allowlist` (da `reactionAllowlist`). -- `channels.signal.account`: fissa l'avvio del canale a una specifica identità account Signal. -- `channels.signal.configWrites`: consenti o nega le scritture di configurazione avviate da Signal. -- `channels.signal.defaultAccount` facoltativo sostituisce la selezione predefinita dell'account quando corrisponde a un ID account configurato. +- `channels.signal.account`: fissa l’avvio del canale a una specifica identità account Signal. +- `channels.signal.configWrites`: consente o nega le scritture di configurazione avviate da Signal. +- L’opzionale `channels.signal.defaultAccount` sostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. ### BlueBubbles -BlueBubbles è il percorso iMessage consigliato (supportato da plugin, configurato sotto `channels.bluebubbles`). +BlueBubbles è il percorso iMessage consigliato (basato su plugin, configurato sotto `channels.bluebubbles`). ```json5 { @@ -562,16 +579,16 @@ BlueBubbles è il percorso iMessage consigliato (supportato da plugin, configura bluebubbles: { enabled: true, dmPolicy: "pairing", - // serverUrl, password, percorso webhook, controlli gruppo e azioni avanzate: - // vedi /channels/bluebubbles + // serverUrl, password, webhookPath, group controls, and advanced actions: + // see /channels/bluebubbles }, }, } ``` -- Percorsi chiave core trattati qui: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. -- `channels.bluebubbles.defaultAccount` facoltativo sostituisce la selezione predefinita dell'account quando corrisponde a un ID account configurato. -- Le voci `bindings[]` di primo livello con `type: "acp"` possono associare conversazioni BlueBubbles a sessioni ACP persistenti. Usa un handle o una stringa target BlueBubbles (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) in `match.peer.id`. Semantica condivisa dei campi: [Agenti ACP](/it/tools/acp-agents#channel-specific-settings). +- Percorsi di chiave core trattati qui: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. +- L’opzionale `channels.bluebubbles.defaultAccount` sostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. +- Le voci top-level `bindings[]` con `type: "acp"` possono collegare le conversazioni BlueBubbles a sessioni ACP persistenti. Usa un handle BlueBubbles o una stringa target (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) in `match.peer.id`. Semantica dei campi condivisa: [ACP Agents](/it/tools/acp-agents#channel-specific-settings). - La configurazione completa del canale BlueBubbles è documentata in [BlueBubbles](/it/channels/bluebubbles). ### iMessage @@ -600,15 +617,15 @@ OpenClaw avvia `imsg rpc` (JSON-RPC su stdio). Non è richiesto alcun daemon o p } ``` -- `channels.imessage.defaultAccount` facoltativo sostituisce la selezione predefinita dell'account quando corrisponde a un ID account configurato. +- L’opzionale `channels.imessage.defaultAccount` sostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. -- Richiede Accesso completo al disco per il database Messaggi. +- Richiede Full Disk Access al DB di Messages. - Preferisci target `chat_id:`. Usa `imsg chats --limit 20` per elencare le chat. -- `cliPath` può puntare a un wrapper SSH; imposta `remoteHost` (`host` o `user@host`) per il recupero allegati via SCP. +- `cliPath` può puntare a un wrapper SSH; imposta `remoteHost` (`host` o `user@host`) per il recupero allegati SCP. - `attachmentRoots` e `remoteAttachmentRoots` limitano i percorsi degli allegati in ingresso (predefinito: `/Users/*/Library/Messages/Attachments`). -- SCP usa il controllo rigoroso della chiave host, quindi assicurati che la chiave host del relay esista già in `~/.ssh/known_hosts`. -- `channels.imessage.configWrites`: consenti o nega le scritture di configurazione avviate da iMessage. -- Le voci `bindings[]` di primo livello con `type: "acp"` possono associare conversazioni iMessage a sessioni ACP persistenti. Usa un handle normalizzato o un target chat esplicito (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) in `match.peer.id`. Semantica condivisa dei campi: [Agenti ACP](/it/tools/acp-agents#channel-specific-settings). +- SCP usa il controllo rigoroso delle host key, quindi assicurati che la host key del relay esista già in `~/.ssh/known_hosts`. +- `channels.imessage.configWrites`: consente o nega le scritture di configurazione avviate da iMessage. +- Le voci top-level `bindings[]` con `type: "acp"` possono collegare conversazioni iMessage a sessioni ACP persistenti. Usa un handle normalizzato o un target chat esplicito (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) in `match.peer.id`. Semantica dei campi condivisa: [ACP Agents](/it/tools/acp-agents#channel-specific-settings). @@ -621,7 +638,7 @@ exec ssh -T gateway-host imsg "$@" ### Matrix -Matrix è supportato da estensione ed è configurato sotto `channels.matrix`. +Matrix è supportato da extension ed è configurato sotto `channels.matrix`. ```json5 { @@ -651,25 +668,25 @@ Matrix è supportato da estensione ed è configurato sotto `channels.matrix`. } ``` -- L'autenticazione con token usa `accessToken`; l'autenticazione con password usa `userId` + `password`. -- `channels.matrix.proxy` instrada il traffico HTTP Matrix tramite un proxy HTTP(S) esplicito. Gli account nominati possono sostituirlo con `channels.matrix.accounts..proxy`. +- L’autenticazione token usa `accessToken`; quella password usa `userId` + `password`. +- `channels.matrix.proxy` instrada il traffico HTTP Matrix tramite un proxy HTTP(S) esplicito. Gli account nominati possono sovrascriverlo con `channels.matrix.accounts..proxy`. - `channels.matrix.network.dangerouslyAllowPrivateNetwork` consente homeserver privati/interni. `proxy` e questo opt-in di rete sono controlli indipendenti. -- `channels.matrix.defaultAccount` seleziona l'account preferito nelle configurazioni multi-account. -- `channels.matrix.autoJoin` è predefinito a `off`, quindi le stanze invitate e i nuovi inviti in stile DM vengono ignorati finché non imposti `autoJoin: "allowlist"` con `autoJoinAllowlist` oppure `autoJoin: "always"`. +- `channels.matrix.defaultAccount` seleziona l’account preferito nelle configurazioni multi-account. +- `channels.matrix.autoJoin` è predefinito su `off`, quindi le stanze invitate e i nuovi inviti in stile DM vengono ignorati finché non imposti `autoJoin: "allowlist"` con `autoJoinAllowlist` oppure `autoJoin: "always"`. - `channels.matrix.execApprovals`: consegna nativa Matrix delle approvazioni exec e autorizzazione degli approvatori. - `enabled`: `true`, `false` o `"auto"` (predefinito). In modalità auto, le approvazioni exec si attivano quando gli approvatori possono essere risolti da `approvers` o `commands.ownerAllowFrom`. - - `approvers`: ID utente Matrix (ad es. `@owner:example.org`) autorizzati ad approvare richieste exec. - - `agentFilter`: allowlist facoltativa di ID agente. Omettila per inoltrare approvazioni per tutti gli agenti. - - `sessionFilter`: pattern facoltativi di chiave sessione (sottostringa o regex). - - `target`: dove inviare le richieste di approvazione. `"dm"` (predefinito), `"channel"` (stanza di origine) o `"both"`. - - Override per account: `channels.matrix.accounts..execApprovals`. -- `channels.matrix.dm.sessionScope` controlla il modo in cui i DM Matrix vengono raggruppati in sessioni: `per-user` (predefinito) condivide per peer instradato, mentre `per-room` isola ogni stanza DM. -- Le sonde di stato Matrix e le ricerche nella directory live usano la stessa policy proxy del traffico runtime. -- La configurazione completa di Matrix, le regole di targeting e gli esempi di configurazione sono documentati in [Matrix](/it/channels/matrix). + - `approvers`: ID utente Matrix (es. `@owner:example.org`) autorizzati ad approvare richieste exec. + - `agentFilter`: allowlist opzionale di ID agente. Ometti per inoltrare approvazioni per tutti gli agenti. + - `sessionFilter`: pattern opzionali di chiavi di sessione (substring o regex). + - `target`: dove inviare i prompt di approvazione. `"dm"` (predefinito), `"channel"` (stanza di origine) o `"both"`. + - Override per-account: `channels.matrix.accounts..execApprovals`. +- `channels.matrix.dm.sessionScope` controlla come i DM Matrix vengono raggruppati in sessioni: `per-user` (predefinito) condivide per peer instradato, mentre `per-room` isola ogni stanza DM. +- Le probe di stato Matrix e le ricerche live nella directory usano lo stesso criterio proxy del traffico runtime. +- La configurazione completa di Matrix, le regole di targeting e gli esempi di setup sono documentati in [Matrix](/it/channels/matrix). ### Microsoft Teams -Microsoft Teams è supportato da estensione ed è configurato sotto `channels.msteams`. +Microsoft Teams è supportato da extension ed è configurato sotto `channels.msteams`. ```json5 { @@ -677,19 +694,19 @@ Microsoft Teams è supportato da estensione ed è configurato sotto `channels.ms msteams: { enabled: true, configWrites: true, - // appId, appPassword, tenantId, webhook, policy team/canale: - // vedi /channels/msteams + // appId, appPassword, tenantId, webhook, team/channel policies: + // see /channels/msteams }, }, } ``` -- Percorsi chiave core trattati qui: `channels.msteams`, `channels.msteams.configWrites`. -- La configurazione completa di Teams (credenziali, webhook, policy DM/gruppo, override per-team/per-canale) è documentata in [Microsoft Teams](/it/channels/msteams). +- Percorsi di chiave core trattati qui: `channels.msteams`, `channels.msteams.configWrites`. +- La configurazione completa di Teams (credenziali, webhook, criterio DM/gruppi, override per-team/per-channel) è documentata in [Microsoft Teams](/it/channels/msteams). ### IRC -IRC è supportato da estensione ed è configurato sotto `channels.irc`. +IRC è supportato da extension ed è configurato sotto `channels.irc`. ```json5 { @@ -710,8 +727,8 @@ IRC è supportato da estensione ed è configurato sotto `channels.irc`. } ``` -- Percorsi chiave core trattati qui: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. -- `channels.irc.defaultAccount` facoltativo sostituisce la selezione predefinita dell'account quando corrisponde a un ID account configurato. +- Percorsi di chiave core trattati qui: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. +- L’opzionale `channels.irc.defaultAccount` sostituisce la selezione dell’account predefinito quando corrisponde a un ID account configurato. - La configurazione completa del canale IRC (host/porta/TLS/canali/allowlist/gating per menzione) è documentata in [IRC](/it/channels/irc). ### Multi-account (tutti i canali) @@ -724,11 +741,11 @@ Esegui più account per canale (ognuno con il proprio `accountId`): telegram: { accounts: { default: { - name: "Bot principale", + name: "Primary bot", botToken: "123456:ABC...", }, alerts: { - name: "Bot avvisi", + name: "Alerts bot", botToken: "987654:XYZ...", }, }, @@ -738,25 +755,25 @@ Esegui più account per canale (ognuno con il proprio `accountId`): ``` - `default` viene usato quando `accountId` è omesso (CLI + routing). -- I token env si applicano solo all'account **default**. -- Le impostazioni di base del canale si applicano a tutti gli account salvo override per account. +- I token env si applicano solo all’account **default**. +- Le impostazioni base del canale si applicano a tutti gli account salvo override per-account. - Usa `bindings[].match.accountId` per instradare ogni account a un agente diverso. -- Se aggiungi un account non predefinito tramite `openclaw channels add` (o onboarding del canale) mentre sei ancora in una configurazione di canale top-level single-account, OpenClaw promuove prima i valori single-account top-level con ambito account nella mappa account del canale, così l'account originale continua a funzionare. La maggior parte dei canali li sposta in `channels..accounts.default`; Matrix può invece preservare un target nominato/predefinito esistente corrispondente. -- I binding esistenti solo-canale (senza `accountId`) continuano a corrispondere all'account predefinito; i binding con ambito account restano facoltativi. -- `openclaw doctor --fix` ripara anche forme miste spostando i valori single-account top-level con ambito account nell'account promosso scelto per quel canale. La maggior parte dei canali usa `accounts.default`; Matrix può invece preservare un target nominato/predefinito esistente corrispondente. +- Se aggiungi un account non predefinito tramite `openclaw channels add` (o onboarding del canale) mentre sei ancora in una configurazione top-level a canale single-account, OpenClaw promuove prima i valori top-level single-account con ambito account nella mappa account del canale così che l’account originale continui a funzionare. La maggior parte dei canali li sposta in `channels..accounts.default`; Matrix può invece preservare un target nominato/default corrispondente esistente. +- I binding esistenti solo-canale (senza `accountId`) continuano a corrispondere all’account predefinito; i binding con ambito account restano opzionali. +- `openclaw doctor --fix` ripara anche le forme miste spostando i valori top-level single-account con ambito account nell’account promosso scelto per quel canale. La maggior parte dei canali usa `accounts.default`; Matrix può preservare un target nominato/default corrispondente esistente. -### Altri canali di estensione +### Altri canali extension -Molti canali di estensione sono configurati come `channels.` e documentati nelle rispettive pagine dedicate (ad esempio Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat e Twitch). -Vedi l'indice completo dei canali: [Canali](/it/channels). +Molti canali extension sono configurati come `channels.` e documentati nelle rispettive pagine di canale dedicate (ad esempio Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat e Twitch). +Vedi l’indice completo dei canali: [Canali](/it/channels). ### Gating per menzione nelle chat di gruppo -I messaggi di gruppo richiedono per impostazione predefinita una **menzione obbligatoria** (menzione metadata o pattern regex sicuri). Si applica a chat di gruppo WhatsApp, Telegram, Discord, Google Chat e iMessage. +I messaggi di gruppo per impostazione predefinita **richiedono menzione** (menzione metadati o pattern regex sicuri). Si applica alle chat di gruppo WhatsApp, Telegram, Discord, Google Chat e iMessage. **Tipi di menzione:** -- **Menzioni metadata**: @-mention native della piattaforma. Ignorate in modalità self-chat di WhatsApp. +- **Menzioni nei metadati**: @-mention native della piattaforma. Ignorate in modalità self-chat di WhatsApp. - **Pattern di testo**: pattern regex sicuri in `agents.list[].groupChat.mentionPatterns`. I pattern non validi e le ripetizioni annidate non sicure vengono ignorati. - Il gating per menzione viene applicato solo quando il rilevamento è possibile (menzioni native o almeno un pattern). @@ -771,7 +788,7 @@ I messaggi di gruppo richiedono per impostazione predefinita una **menzione obbl } ``` -`messages.groupChat.historyLimit` imposta il valore globale predefinito. I canali possono sostituirlo con `channels..historyLimit` (o per-account). Imposta `0` per disabilitarlo. +`messages.groupChat.historyLimit` imposta il valore globale predefinito. I canali possono sovrascriverlo con `channels..historyLimit` (o per-account). Imposta `0` per disabilitare. #### Limiti cronologia DM @@ -788,7 +805,7 @@ I messaggi di gruppo richiedono per impostazione predefinita una **menzione obbl } ``` -Risoluzione: override per-DM → valore predefinito del provider → nessun limite (tutto mantenuto). +Risoluzione: override per-DM → predefinito provider → nessun limite (tutto mantenuto). Supportati: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`. @@ -815,18 +832,24 @@ Includi il tuo numero in `allowFrom` per abilitare la modalità self-chat (ignor } ``` -### Comandi (gestione dei comandi in chat) +### Comandi (gestione dei comandi chat) ```json5 { commands: { - native: "auto", // registra i comandi nativi quando supportati - text: true, // analizza i /comandi nei messaggi chat - bash: false, // consenti ! (alias: /bash) + native: "auto", // register native commands when supported + nativeSkills: "auto", // register native skill commands when supported + text: true, // parse /commands in chat messages + bash: false, // allow ! (alias: /bash) bashForegroundMs: 2000, - config: false, // consenti /config - debug: false, // consenti /debug - restart: false, // consenti /restart + strumento di riavvio gateway + config: false, // allow /config + mcp: false, // allow /mcp + plugins: false, // allow /plugins + debug: false, // allow /debug + restart: true, // allow /restart + gateway restart tool + ownerAllowFrom: ["discord:123456789012345678"], + ownerDisplay: "raw", // raw | hash + ownerDisplaySecret: "${OWNER_ID_HASH_SECRET}", allowFrom: { "*": ["user1"], discord: ["user:123"], @@ -838,22 +861,38 @@ Includi il tuo numero in `allowFrom` per abilitare la modalità self-chat (ignor -- I comandi di testo devono essere messaggi **autonomi** con `/` iniziale. +- Questo blocco configura le superfici di comando. Per il catalogo corrente dei comandi built-in + bundled, vedi [Slash Commands](/it/tools/slash-commands). +- Questa pagina è un **riferimento delle chiavi di configurazione**, non il catalogo completo dei comandi. I comandi di proprietà di canali/plugin come QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` e Talk `/voice` sono documentati nelle loro pagine di canale/plugin più [Slash Commands](/it/tools/slash-commands). +- I comandi di testo devono essere messaggi **standalone** con `/` iniziale. - `native: "auto"` attiva i comandi nativi per Discord/Telegram, lascia Slack disattivato. +- `nativeSkills: "auto"` attiva i comandi nativi Skills per Discord/Telegram, lascia Slack disattivato. - Override per canale: `channels.discord.commands.native` (bool o `"auto"`). `false` cancella i comandi registrati in precedenza. -- `channels.telegram.customCommands` aggiunge voci extra al menu bot di Telegram. +- Sovrascrivi la registrazione delle Skills native per canale con `channels..commands.nativeSkills`. +- `channels.telegram.customCommands` aggiunge voci extra al menu del bot Telegram. - `bash: true` abilita `! ` per la shell host. Richiede `tools.elevated.enabled` e mittente in `tools.elevated.allowFrom.`. -- `config: true` abilita `/config` (lettura/scrittura di `openclaw.json`). Per i client gateway `chat.send`, le scritture persistenti `/config set|unset` richiedono anche `operator.admin`; il solo `/config show` in lettura resta disponibile per i normali client operator con ambito scrittura. -- `channels..configWrites` controlla le mutazioni di configurazione per canale (predefinito: true). -- Per i canali multi-account, anche `channels..accounts..configWrites` controlla le scritture che puntano a quell'account (ad esempio `/allowlist --config --account ` o `/config set channels..accounts....`). -- `allowFrom` è per-provider. Quando impostato, è l'**unica** fonte di autorizzazione (le allowlist/abbinamenti del canale e `useAccessGroups` vengono ignorati). -- `useAccessGroups: false` consente ai comandi di bypassare le policy dei gruppi di accesso quando `allowFrom` non è impostato. +- `config: true` abilita `/config` (legge/scrive `openclaw.json`). Per i client gateway `chat.send`, le scritture persistenti `/config set|unset` richiedono anche `operator.admin`; la sola lettura `/config show` resta disponibile ai normali client operator con ambito scrittura. +- `mcp: true` abilita `/mcp` per la configurazione del server MCP gestita da OpenClaw sotto `mcp.servers`. +- `plugins: true` abilita `/plugins` per il rilevamento plugin, l’installazione e i controlli di abilitazione/disabilitazione. +- `channels..configWrites` regola le mutazioni di configurazione per canale (predefinito: true). +- Per i canali multi-account, anche `channels..accounts..configWrites` regola le scritture che prendono di mira quell’account (ad esempio `/allowlist --config --account ` o `/config set channels..accounts....`). +- `restart: false` disabilita `/restart` e le azioni dello strumento di riavvio gateway. Predefinito: `true`. +- `ownerAllowFrom` è l’allowlist esplicita del proprietario per comandi/strumenti solo-proprietario. È separata da `allowFrom`. +- `ownerDisplay: "hash"` applica hash agli ID del proprietario nel system prompt. Imposta `ownerDisplaySecret` per controllare l’hashing. +- `allowFrom` è per-provider. Quando impostato, è l’**unica** fonte di autorizzazione (le allowlist/pairing del canale e `useAccessGroups` vengono ignorati). +- `useAccessGroups: false` consente ai comandi di bypassare i criteri dei gruppi di accesso quando `allowFrom` non è impostato. +- Mappa della documentazione dei comandi: + - catalogo built-in + bundled: [Slash Commands](/it/tools/slash-commands) + - superfici di comando specifiche del canale: [Canali](/it/channels) + - comandi QQ Bot: [QQ Bot](/it/channels/qqbot) + - comandi di pairing: [Pairing](/it/channels/pairing) + - comando card di LINE: [LINE](/it/channels/line) + - memory dreaming: [Dreaming](/it/concepts/dreaming) --- -## Valori predefiniti dell'agente +## Valori predefiniti dell’agente ### `agents.defaults.workspace` @@ -867,7 +906,7 @@ Predefinito: `~/.openclaw/workspace`. ### `agents.defaults.repoRoot` -Radice repository facoltativa mostrata nella riga Runtime del system prompt. Se non impostata, OpenClaw la rileva automaticamente risalendo dal workspace. +Root opzionale del repository mostrata nella riga Runtime del system prompt. Se non impostata, OpenClaw rileva automaticamente risalendo dal workspace. ```json5 { @@ -877,7 +916,7 @@ Radice repository facoltativa mostrata nella riga Runtime del system prompt. Se ### `agents.defaults.skills` -Allowlist predefinita facoltativa di Skills per gli agenti che non impostano +Allowlist predefinita opzionale di Skills per gli agenti che non impostano `agents.list[].skills`. ```json5 @@ -885,19 +924,19 @@ Allowlist predefinita facoltativa di Skills per gli agenti che non impostano agents: { defaults: { skills: ["github", "weather"] }, list: [ - { id: "writer" }, // eredita github, weather - { id: "docs", skills: ["docs-search"] }, // sostituisce i predefiniti - { id: "locked-down", skills: [] }, // nessuna Skills + { id: "writer" }, // inherits github, weather + { id: "docs", skills: ["docs-search"] }, // replaces defaults + { id: "locked-down", skills: [] }, // no skills ], }, } ``` -- Ometti `agents.defaults.skills` per Skills senza restrizioni per impostazione predefinita. -- Ometti `agents.list[].skills` per ereditare i predefiniti. -- Imposta `agents.list[].skills: []` per nessuna Skills. -- Una lista `agents.list[].skills` non vuota è l'insieme finale per quell'agente; - non viene unita ai predefiniti. +- Ometti `agents.defaults.skills` per avere Skills senza restrizioni per impostazione predefinita. +- Ometti `agents.list[].skills` per ereditare i valori predefiniti. +- Imposta `agents.list[].skills: []` per non avere Skills. +- Un elenco non vuoto `agents.list[].skills` è l’insieme finale per quell’agente; non + viene unito ai valori predefiniti. ### `agents.defaults.skipBootstrap` @@ -913,7 +952,7 @@ Disabilita la creazione automatica dei file bootstrap del workspace (`AGENTS.md` Controlla quando i file bootstrap del workspace vengono iniettati nel system prompt. Predefinito: `"always"`. -- `"continuation-skip"`: i turni di continuazione sicura (dopo una risposta completata dell'assistente) saltano la reiniezione del bootstrap del workspace, riducendo la dimensione del prompt. Le esecuzioni heartbeat e i retry dopo compaction ricostruiscono comunque il contesto. +- `"continuation-skip"`: i turni di continuazione sicuri (dopo una risposta assistant completata) saltano la re-iniezione del bootstrap del workspace, riducendo la dimensione del prompt. Le esecuzioni heartbeat e i retry dopo compattazione ricostruiscono comunque il contesto. ```json5 { @@ -943,12 +982,12 @@ Numero massimo totale di caratteri iniettati in tutti i file bootstrap del works ### `agents.defaults.bootstrapPromptTruncationWarning` -Controlla il testo di avviso visibile all'agente quando il contesto bootstrap viene troncato. +Controlla il testo di avviso visibile all’agente quando il contesto bootstrap viene troncato. Predefinito: `"once"`. - `"off"`: non iniettare mai testo di avviso nel system prompt. -- `"once"`: inietta l'avviso una sola volta per ogni firma di troncamento univoca (consigliato). -- `"always"`: inietta l'avviso a ogni esecuzione quando esiste un troncamento. +- `"once"`: inietta l’avviso una volta per ogni firma di troncamento univoca (consigliato). +- `"always"`: inietta l’avviso a ogni esecuzione quando esiste troncamento. ```json5 { @@ -958,11 +997,11 @@ Predefinito: `"once"`. ### `agents.defaults.imageMaxDimensionPx` -Dimensione massima in pixel per il lato più lungo delle immagini nei blocchi immagine di transcript/strumenti prima delle chiamate al provider. +Dimensione massima in pixel del lato più lungo delle immagini nei blocchi immagine di transcript/tool prima delle chiamate provider. Predefinito: `1200`. -Valori inferiori riducono in genere l'uso di vision token e la dimensione del payload della richiesta per esecuzioni ricche di screenshot. -Valori più alti conservano maggior dettaglio visivo. +Valori più bassi di solito riducono l’uso dei token vision e la dimensione del payload di richiesta per esecuzioni ricche di screenshot. +Valori più alti preservano maggior dettaglio visivo. ```json5 { @@ -972,7 +1011,7 @@ Valori più alti conservano maggior dettaglio visivo. ### `agents.defaults.userTimezone` -Fuso orario per il contesto del system prompt (non i timestamp dei messaggi). Usa il fuso orario dell'host come fallback. +Fuso orario per il contesto del system prompt (non i timestamp dei messaggi). Ricade sul fuso orario dell’host. ```json5 { @@ -1020,7 +1059,7 @@ Formato orario nel system prompt. Predefinito: `auto` (preferenza OS). primary: "anthropic/claude-opus-4-6", fallbacks: ["openai/gpt-5.4-mini"], }, - params: { cacheRetention: "long" }, // parametri provider predefiniti globali + params: { cacheRetention: "long" }, // global default provider params pdfMaxBytesMb: 10, pdfMaxPages: 20, thinkingDefault: "low", @@ -1035,64 +1074,64 @@ Formato orario nel system prompt. Predefinito: `auto` (preferenza OS). } ``` -- `model`: accetta una stringa (`"provider/model"`) oppure un oggetto (`{ primary, fallbacks }`). +- `model`: accetta sia una stringa (`"provider/model"`) sia un oggetto (`{ primary, fallbacks }`). - La forma stringa imposta solo il modello primario. - - La forma oggetto imposta il primario più i modelli di failover ordinati. -- `imageModel`: accetta una stringa (`"provider/model"`) oppure un oggetto (`{ primary, fallbacks }`). - - Usato dal percorso dello strumento `image` come configurazione del modello vision. + - La forma oggetto imposta il primario più i modelli failover ordinati. +- `imageModel`: accetta sia una stringa (`"provider/model"`) sia un oggetto (`{ primary, fallbacks }`). + - Usato dal percorso dello strumento `image` come configurazione del suo modello vision. - Usato anche come routing di fallback quando il modello selezionato/predefinito non può accettare input immagine. -- `imageGenerationModel`: accetta una stringa (`"provider/model"`) oppure un oggetto (`{ primary, fallbacks }`). - - Usato dalla capacità condivisa di generazione immagini e da qualunque futura superficie tool/plugin che generi immagini. +- `imageGenerationModel`: accetta sia una stringa (`"provider/model"`) sia un oggetto (`{ primary, fallbacks }`). + - Usato dalla capability condivisa di generazione immagini e da ogni futura superficie tool/plugin che genera immagini. - Valori tipici: `google/gemini-3.1-flash-image-preview` per la generazione immagini nativa Gemini, `fal/fal-ai/flux/dev` per fal, oppure `openai/gpt-image-1` per OpenAI Images. - - Se selezioni direttamente un provider/modello, configura anche l'autenticazione/chiave API del provider corrispondente (ad esempio `GEMINI_API_KEY` o `GOOGLE_API_KEY` per `google/*`, `OPENAI_API_KEY` per `openai/*`, `FAL_KEY` per `fal/*`). - - Se omesso, `image_generate` può comunque inferire un provider predefinito con autenticazione disponibile. Prova prima il provider predefinito corrente, poi i restanti provider di generazione immagini registrati in ordine di provider-id. -- `musicGenerationModel`: accetta una stringa (`"provider/model"`) oppure un oggetto (`{ primary, fallbacks }`). - - Usato dalla capacità condivisa di generazione musicale e dallo strumento built-in `music_generate`. + - Se selezioni direttamente un provider/modello, configura anche l’autenticazione/API key del provider corrispondente (ad esempio `GEMINI_API_KEY` o `GOOGLE_API_KEY` per `google/*`, `OPENAI_API_KEY` per `openai/*`, `FAL_KEY` per `fal/*`). + - Se omesso, `image_generate` può comunque dedurre un provider predefinito supportato da auth. Prova prima il provider predefinito corrente, poi i restanti provider registrati di generazione immagini in ordine di provider id. +- `musicGenerationModel`: accetta sia una stringa (`"provider/model"`) sia un oggetto (`{ primary, fallbacks }`). + - Usato dalla capability condivisa di generazione musicale e dallo strumento built-in `music_generate`. - Valori tipici: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` o `minimax/music-2.5+`. - - Se omesso, `music_generate` può comunque inferire un provider predefinito con autenticazione disponibile. Prova prima il provider predefinito corrente, poi i restanti provider di generazione musicale registrati in ordine di provider-id. - - Se selezioni direttamente un provider/modello, configura anche l'autenticazione/chiave API del provider corrispondente. -- `videoGenerationModel`: accetta una stringa (`"provider/model"`) oppure un oggetto (`{ primary, fallbacks }`). - - Usato dalla capacità condivisa di generazione video e dallo strumento built-in `video_generate`. + - Se omesso, `music_generate` può comunque dedurre un provider predefinito supportato da auth. Prova prima il provider predefinito corrente, poi i restanti provider registrati di generazione musicale in ordine di provider id. + - Se selezioni direttamente un provider/modello, configura anche l’autenticazione/API key del provider corrispondente. +- `videoGenerationModel`: accetta sia una stringa (`"provider/model"`) sia un oggetto (`{ primary, fallbacks }`). + - Usato dalla capability condivisa di generazione video e dallo strumento built-in `video_generate`. - Valori tipici: `qwen/wan2.6-t2v`, `qwen/wan2.6-i2v`, `qwen/wan2.6-r2v`, `qwen/wan2.6-r2v-flash` o `qwen/wan2.7-r2v`. - - Se omesso, `video_generate` può comunque inferire un provider predefinito con autenticazione disponibile. Prova prima il provider predefinito corrente, poi i restanti provider di generazione video registrati in ordine di provider-id. - - Se selezioni direttamente un provider/modello, configura anche l'autenticazione/chiave API del provider corrispondente. - - Il provider bundled di generazione video Qwen supporta attualmente fino a 1 video in output, 1 immagine in input, 4 video in input, durata di 10 secondi e opzioni a livello provider `size`, `aspectRatio`, `resolution`, `audio` e `watermark`. -- `pdfModel`: accetta una stringa (`"provider/model"`) oppure un oggetto (`{ primary, fallbacks }`). + - Se omesso, `video_generate` può comunque dedurre un provider predefinito supportato da auth. Prova prima il provider predefinito corrente, poi i restanti provider registrati di generazione video in ordine di provider id. + - Se selezioni direttamente un provider/modello, configura anche l’autenticazione/API key del provider corrispondente. + - Il provider bundled di generazione video Qwen supporta attualmente fino a 1 video in output, 1 immagine in input, 4 video in input, 10 secondi di durata e opzioni a livello provider `size`, `aspectRatio`, `resolution`, `audio` e `watermark`. +- `pdfModel`: accetta sia una stringa (`"provider/model"`) sia un oggetto (`{ primary, fallbacks }`). - Usato dallo strumento `pdf` per il routing del modello. - - Se omesso, lo strumento PDF usa `imageModel`, poi il modello risolto di sessione/predefinito. -- `pdfMaxBytesMb`: limite di dimensione PDF predefinito per lo strumento `pdf` quando `maxBytesMb` non viene passato al momento della chiamata. -- `pdfMaxPages`: numero massimo predefinito di pagine considerate dalla modalità di fallback di estrazione nello strumento `pdf`. + - Se omesso, lo strumento PDF ricade su `imageModel`, poi sul modello risolto di sessione/predefinito. +- `pdfMaxBytesMb`: limite dimensione PDF predefinito per lo strumento `pdf` quando `maxBytesMb` non viene passato alla chiamata. +- `pdfMaxPages`: numero massimo predefinito di pagine considerate dalla modalità fallback di estrazione nello strumento `pdf`. - `verboseDefault`: livello verbose predefinito per gli agenti. Valori: `"off"`, `"on"`, `"full"`. Predefinito: `"off"`. - `elevatedDefault`: livello predefinito di output elevated per gli agenti. Valori: `"off"`, `"on"`, `"ask"`, `"full"`. Predefinito: `"on"`. -- `model.primary`: formato `provider/model` (es. `openai/gpt-5.4`). Se ometti il provider, OpenClaw prova prima un alias, poi una corrispondenza univoca di provider configurato per quell'esatto model id, e solo dopo usa il provider predefinito configurato come fallback (comportamento di compatibilità deprecato, quindi preferisci `provider/model` esplicito). Se quel provider non espone più il modello predefinito configurato, OpenClaw usa come fallback il primo provider/modello configurato invece di esporre un predefinito obsoleto di un provider rimosso. +- `model.primary`: formato `provider/model` (ad esempio `openai/gpt-5.4`). Se ometti il provider, OpenClaw prova prima un alias, poi una corrispondenza univoca con provider configurato per quell’esatto model id, e solo dopo ricade sul provider predefinito configurato (comportamento di compatibilità deprecato, quindi preferisci `provider/model` esplicito). Se quel provider non espone più il modello predefinito configurato, OpenClaw ricade sul primo provider/modello configurato invece di esporre un predefinito obsoleto di provider rimosso. - `models`: catalogo modelli configurato e allowlist per `/model`. Ogni voce può includere `alias` (scorciatoia) e `params` (specifici del provider, ad esempio `temperature`, `maxTokens`, `cacheRetention`, `context1m`). -- `params`: parametri provider predefiniti globali applicati a tutti i modelli. Impostali in `agents.defaults.params` (ad es. `{ cacheRetention: "long" }`). -- Precedenza di unione `params` (config): `agents.defaults.params` (base globale) viene sovrascritto da `agents.defaults.models["provider/model"].params` (per-modello), quindi `agents.list[].params` (id agente corrispondente) sovrascrive per chiave. Vedi [Caching del prompt](/it/reference/prompt-caching) per i dettagli. -- Gli strumenti di scrittura configurazione che mutano questi campi (ad esempio `/models set`, `/models set-image` e i comandi di aggiunta/rimozione fallback) salvano la forma oggetto canonica e conservano le liste fallback esistenti quando possibile. -- `maxConcurrent`: numero massimo di esecuzioni agente parallele tra sessioni (ogni sessione resta comunque serializzata). Predefinito: 4. +- `params`: parametri provider globali predefiniti applicati a tutti i modelli. Impostali in `agents.defaults.params` (ad es. `{ cacheRetention: "long" }`). +- Precedenza di merge di `params` (config): `agents.defaults.params` (base globale) viene sovrascritto da `agents.defaults.models["provider/model"].params` (per-modello), poi `agents.list[].params` (ID agente corrispondente) sovrascrive per chiave. Vedi [Prompt Caching](/it/reference/prompt-caching) per i dettagli. +- I writer di configurazione che mutano questi campi (ad esempio `/models set`, `/models set-image` e i comandi di aggiunta/rimozione fallback) salvano la forma oggetto canonica e preservano le liste fallback esistenti quando possibile. +- `maxConcurrent`: numero massimo di esecuzioni parallele dell’agente tra sessioni (ogni sessione resta comunque serializzata). Predefinito: 4. -**Alias shorthand built-in** (si applicano solo quando il modello è in `agents.defaults.models`): +**Scorciatoie alias built-in** (si applicano solo quando il modello è in `agents.defaults.models`): -| Alias | Modello | -| ------------------- | ------------------------------------- | -| `opus` | `anthropic/claude-opus-4-6` | -| `sonnet` | `anthropic/claude-sonnet-4-6` | -| `gpt` | `openai/gpt-5.4` | -| `gpt-mini` | `openai/gpt-5.4-mini` | -| `gpt-nano` | `openai/gpt-5.4-nano` | -| `gemini` | `google/gemini-3.1-pro-preview` | -| `gemini-flash` | `google/gemini-3-flash-preview` | +| Alias | Modello | +| ------------------- | -------------------------------------- | +| `opus` | `anthropic/claude-opus-4-6` | +| `sonnet` | `anthropic/claude-sonnet-4-6` | +| `gpt` | `openai/gpt-5.4` | +| `gpt-mini` | `openai/gpt-5.4-mini` | +| `gpt-nano` | `openai/gpt-5.4-nano` | +| `gemini` | `google/gemini-3.1-pro-preview` | +| `gemini-flash` | `google/gemini-3-flash-preview` | | `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` | -Gli alias da te configurati hanno sempre priorità sui predefiniti. +Gli alias configurati da te hanno sempre la precedenza sui predefiniti. I modelli Z.AI GLM-4.x abilitano automaticamente la modalità thinking a meno che tu non imposti `--thinking off` o definisca tu stesso `agents.defaults.models["zai/"].params.thinking`. -I modelli Z.AI abilitano `tool_stream` per impostazione predefinita per lo streaming delle chiamate strumenti. Imposta `agents.defaults.models["zai/"].params.tool_stream` su `false` per disabilitarlo. -I modelli Anthropic Claude 4.6 usano `adaptive` thinking come predefinito quando non è impostato alcun livello thinking esplicito. +I modelli Z.AI abilitano `tool_stream` per impostazione predefinita per lo streaming delle chiamate tool. Imposta `agents.defaults.models["zai/"].params.tool_stream` su `false` per disabilitarlo. +I modelli Anthropic Claude 4.6 usano per impostazione predefinita il thinking `adaptive` quando non è impostato alcun livello di thinking esplicito. ### `agents.defaults.cliBackends` -Backend CLI facoltativi per esecuzioni di fallback solo testo (nessuna chiamata strumenti). Utili come backup quando i provider API falliscono. +Backend CLI opzionali per esecuzioni di fallback solo testo (senza chiamate tool). Utili come backup quando i provider API falliscono. ```json5 { @@ -1120,9 +1159,9 @@ Backend CLI facoltativi per esecuzioni di fallback solo testo (nessuna chiamata } ``` -- I backend CLI sono orientati al testo; gli strumenti sono sempre disabilitati. -- Sessioni supportate quando `sessionArg` è impostato. -- Pass-through immagini supportato quando `imageArg` accetta percorsi file. +- I backend CLI sono text-first; gli strumenti sono sempre disabilitati. +- Le sessioni sono supportate quando `sessionArg` è impostato. +- Il pass-through delle immagini è supportato quando `imageArg` accetta percorsi file. ### `agents.defaults.heartbeat` @@ -1133,16 +1172,16 @@ Esecuzioni heartbeat periodiche. agents: { defaults: { heartbeat: { - every: "30m", // 0m disabilita + every: "30m", // 0m disables model: "openai/gpt-5.4-mini", includeReasoning: false, - lightContext: false, // predefinito: false; true mantiene solo HEARTBEAT.md tra i file bootstrap del workspace - isolatedSession: false, // predefinito: false; true esegue ogni heartbeat in una sessione nuova (senza cronologia conversazione) + lightContext: false, // default: false; true keeps only HEARTBEAT.md from workspace bootstrap files + isolatedSession: false, // default: false; true runs each heartbeat in a fresh session (no conversation history) session: "main", to: "+15555550123", - directPolicy: "allow", // allow (predefinito) | block - target: "none", // predefinito: none | opzioni: last | whatsapp | telegram | discord | ... - prompt: "Leggi HEARTBEAT.md se esiste...", + directPolicy: "allow", // allow (default) | block + target: "none", // default: none | options: last | whatsapp | telegram | discord | ... + prompt: "Read HEARTBEAT.md if it exists...", ackMaxChars: 300, suppressToolErrorWarnings: false, }, @@ -1151,13 +1190,13 @@ Esecuzioni heartbeat periodiche. } ``` -- `every`: stringa durata (ms/s/m/h). Predefinito: `30m` (autenticazione API-key) o `1h` (autenticazione OAuth). Imposta `0m` per disabilitare. -- `suppressToolErrorWarnings`: quando true, sopprime i payload di avviso errore degli strumenti durante le esecuzioni heartbeat. -- `directPolicy`: policy di consegna diretta/DM. `allow` (predefinita) consente la consegna a target diretto. `block` sopprime la consegna a target diretto ed emette `reason=dm-blocked`. +- `every`: stringa durata (ms/s/m/h). Predefinito: `30m` (auth API-key) oppure `1h` (auth OAuth). Imposta `0m` per disabilitare. +- `suppressToolErrorWarnings`: quando true, sopprime i payload di avviso di errore tool durante le esecuzioni heartbeat. +- `directPolicy`: criterio di consegna diretta/DM. `allow` (predefinito) consente la consegna a target diretti. `block` sopprime la consegna diretta al target ed emette `reason=dm-blocked`. - `lightContext`: quando true, le esecuzioni heartbeat usano un contesto bootstrap leggero e mantengono solo `HEARTBEAT.md` tra i file bootstrap del workspace. -- `isolatedSession`: quando true, ogni esecuzione heartbeat avviene in una sessione nuova senza cronologia di conversazione precedente. Stesso schema di isolamento di cron `sessionTarget: "isolated"`. Riduce il costo in token per heartbeat da ~100K a ~2-5K token. -- Per-agente: imposta `agents.list[].heartbeat`. Quando un agente definisce `heartbeat`, **solo quegli agenti** eseguono heartbeat. -- Gli heartbeat eseguono turni completi dell'agente — intervalli più brevi consumano più token. +- `isolatedSession`: quando true, ogni heartbeat viene eseguito in una sessione nuova senza cronologia di conversazione precedente. Stesso schema di isolamento del cron `sessionTarget: "isolated"`. Riduce il costo in token per-heartbeat da ~100K a ~2-5K token. +- Per-agente: imposta `agents.list[].heartbeat`. Quando un qualsiasi agente definisce `heartbeat`, **solo quegli agenti** eseguono heartbeat. +- Gli heartbeat eseguono turni completi dell’agente: intervalli più brevi consumano più token. ### `agents.defaults.compaction` @@ -1167,19 +1206,19 @@ Esecuzioni heartbeat periodiche. defaults: { compaction: { mode: "safeguard", // default | safeguard - provider: "my-provider", // id di un plugin provider di compaction registrato (facoltativo) + provider: "my-provider", // id of a registered compaction provider plugin (optional) timeoutSeconds: 900, reserveTokensFloor: 24000, identifierPolicy: "strict", // strict | off | custom - identifierInstructions: "Conserva esattamente gli ID di distribuzione, gli ID ticket e le coppie host:port.", // usato quando identifierPolicy=custom - postCompactionSections: ["Session Startup", "Red Lines"], // [] disabilita la reiniezione - model: "openrouter/anthropic/claude-sonnet-4-6", // override facoltativo del modello solo per compaction - notifyUser: true, // invia un breve avviso quando inizia la compaction (predefinito: false) + identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // used when identifierPolicy=custom + postCompactionSections: ["Session Startup", "Red Lines"], // [] disables reinjection + model: "openrouter/anthropic/claude-sonnet-4-6", // optional compaction-only model override + notifyUser: true, // send a brief notice when compaction starts (default: false) memoryFlush: { enabled: true, softThresholdTokens: 6000, - systemPrompt: "La sessione si sta avvicinando alla compaction. Archivia ora le memorie durevoli.", - prompt: "Scrivi eventuali note durature in memory/YYYY-MM-DD.md; rispondi con l'esatto token silenzioso NO_REPLY se non c'è nulla da memorizzare.", + systemPrompt: "Session nearing compaction. Store durable memories now.", + prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with the exact silent token NO_REPLY if nothing to store.", }, }, }, @@ -1187,19 +1226,19 @@ Esecuzioni heartbeat periodiche. } ``` -- `mode`: `default` o `safeguard` (riassunto a blocchi per storici lunghi). Vedi [Compaction](/it/concepts/compaction). -- `provider`: id di un plugin provider di compaction registrato. Quando impostato, viene chiamato `summarize()` del provider invece della sintesi LLM built-in. In caso di errore torna al built-in. Impostare un provider forza `mode: "safeguard"`. Vedi [Compaction](/it/concepts/compaction). -- `timeoutSeconds`: numero massimo di secondi consentito per una singola operazione di compaction prima che OpenClaw la interrompa. Predefinito: `900`. -- `identifierPolicy`: `strict` (predefinito), `off` o `custom`. `strict` antepone istruzioni built-in per la conservazione di identificatori opachi durante la sintesi di compaction. -- `identifierInstructions`: testo facoltativo personalizzato per la conservazione degli identificatori usato quando `identifierPolicy=custom`. -- `postCompactionSections`: nomi facoltativi di sezioni H2/H3 di AGENTS.md da reiniettare dopo la compaction. Predefinito `["Session Startup", "Red Lines"]`; imposta `[]` per disabilitare la reiniezione. Quando non è impostato o è impostato esplicitamente a quella coppia predefinita, sono accettate anche le intestazioni legacy `Every Session`/`Safety` come fallback. -- `model`: override facoltativo `provider/model-id` solo per la sintesi di compaction. Usalo quando la sessione principale deve mantenere un modello ma i riassunti di compaction devono girare su un altro; quando non impostato, la compaction usa il modello primario della sessione. -- `notifyUser`: quando `true`, invia un breve avviso all'utente quando inizia la compaction (ad esempio "Compattazione del contesto..."). Disabilitato per impostazione predefinita per mantenere silenziosa la compaction. -- `memoryFlush`: turno agentico silenzioso prima della auto-compaction per archiviare memorie durevoli. Saltato quando il workspace è di sola lettura. +- `mode`: `default` o `safeguard` (riassunto a blocchi per storie lunghe). Vedi [Compaction](/it/concepts/compaction). +- `provider`: ID di un plugin provider di compaction registrato. Quando impostato, viene chiamato `summarize()` del provider invece del riassunto built-in basato su LLM. In caso di errore ricade sul built-in. Impostare un provider forza `mode: "safeguard"`. Vedi [Compaction](/it/concepts/compaction). +- `timeoutSeconds`: numero massimo di secondi consentiti per una singola operazione di compaction prima che OpenClaw la interrompa. Predefinito: `900`. +- `identifierPolicy`: `strict` (predefinito), `off` o `custom`. `strict` antepone istruzioni built-in per la conservazione di identificatori opachi durante il riassunto di compaction. +- `identifierInstructions`: testo opzionale personalizzato di conservazione degli identificatori usato quando `identifierPolicy=custom`. +- `postCompactionSections`: nomi opzionali di sezioni AGENTS.md H2/H3 da re-iniettare dopo la compaction. Predefinito `["Session Startup", "Red Lines"]`; imposta `[]` per disabilitare la re-iniezione. Quando non è impostato o è esplicitamente impostato a quella coppia predefinita, vengono accettate anche le vecchie intestazioni `Every Session`/`Safety` come fallback legacy. +- `model`: override opzionale `provider/model-id` solo per il riassunto di compaction. Usalo quando la sessione principale deve mantenere un modello ma i riassunti di compaction devono essere eseguiti su un altro; se non impostato, la compaction usa il modello primario della sessione. +- `notifyUser`: quando `true`, invia un breve avviso all’utente all’inizio della compaction (ad esempio, "Compacting context..."). Disabilitato per impostazione predefinita per mantenere silenziosa la compaction. +- `memoryFlush`: turno agentic silenzioso prima della auto-compaction per archiviare memorie durevoli. Saltato quando il workspace è in sola lettura. ### `agents.defaults.contextPruning` -Esegue il pruning dei **vecchi risultati degli strumenti** dal contesto in memoria prima dell'invio all'LLM. **Non** modifica la cronologia della sessione su disco. +Esegue il pruning dei **vecchi risultati degli strumenti** dal contesto in memoria prima dell’invio all’LLM. **Non** modifica la cronologia della sessione su disco. ```json5 { @@ -1207,13 +1246,13 @@ Esegue il pruning dei **vecchi risultati degli strumenti** dal contesto in memor defaults: { contextPruning: { mode: "cache-ttl", // off | cache-ttl - ttl: "1h", // durata (ms/s/m/h), unità predefinita: minuti + ttl: "1h", // duration (ms/s/m/h), default unit: minutes keepLastAssistants: 3, softTrimRatio: 0.3, hardClearRatio: 0.5, minPrunableToolChars: 50000, softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 }, - hardClear: { enabled: true, placeholder: "[Contenuto del vecchio risultato strumento cancellato]" }, + hardClear: { enabled: true, placeholder: "[Old tool result content cleared]" }, tools: { deny: ["browser", "canvas"] }, }, }, @@ -1224,24 +1263,24 @@ Esegue il pruning dei **vecchi risultati degli strumenti** dal contesto in memor - `mode: "cache-ttl"` abilita i passaggi di pruning. -- `ttl` controlla con quale frequenza il pruning può essere rieseguito (dopo l'ultimo tocco della cache). -- Il pruning prima accorcia in modo soft i risultati degli strumenti troppo grandi, poi cancella in modo hard i risultati più vecchi se necessario. +- `ttl` controlla dopo quanto il pruning può essere eseguito di nuovo (dopo l’ultimo tocco della cache). +- Il pruning prima esegue soft-trim dei risultati tool troppo grandi, poi hard-clear dei risultati tool più vecchi se necessario. -**Soft-trim** mantiene inizio + fine e inserisce `...` nel mezzo. +**Soft-trim** conserva inizio + fine e inserisce `...` nel mezzo. -**Hard-clear** sostituisce l'intero risultato dello strumento con il placeholder. +**Hard-clear** sostituisce l’intero risultato tool con il segnaposto. Note: -- I blocchi immagine non vengono mai accorciati/cancellati. -- I rapporti sono basati sui caratteri (approssimativi), non sui token esatti. +- I blocchi immagine non vengono mai troncati/cancellati. +- I rapporti sono basati sui caratteri (approssimativi), non su conteggi token esatti. - Se esistono meno di `keepLastAssistants` messaggi assistant, il pruning viene saltato. -Vedi [Pruning delle sessioni](/it/concepts/session-pruning) per i dettagli sul comportamento. +Vedi [Session Pruning](/it/concepts/session-pruning) per i dettagli del comportamento. -### Streaming a blocchi +### Block streaming ```json5 { @@ -1251,17 +1290,17 @@ Vedi [Pruning delle sessioni](/it/concepts/session-pruning) per i dettagli sul c blockStreamingBreak: "text_end", // text_end | message_end blockStreamingChunk: { minChars: 800, maxChars: 1200 }, blockStreamingCoalesce: { idleMs: 1000 }, - humanDelay: { mode: "natural" }, // off | natural | custom (usa minMs/maxMs) + humanDelay: { mode: "natural" }, // off | natural | custom (use minMs/maxMs) }, }, } ``` - I canali non-Telegram richiedono `*.blockStreaming: true` esplicito per abilitare le risposte a blocchi. -- Override per canale: `channels..blockStreamingCoalesce` (e varianti per-account). Signal/Slack/Discord/Google Chat hanno predefinito `minChars: 1500`. +- Override di canale: `channels..blockStreamingCoalesce` (e varianti per-account). Signal/Slack/Discord/Google Chat usano per impostazione predefinita `minChars: 1500`. - `humanDelay`: pausa casuale tra risposte a blocchi. `natural` = 800–2500ms. Override per-agente: `agents.list[].humanDelay`. -Vedi [Streaming](/it/concepts/streaming) per dettagli su comportamento + chunking. +Vedi [Streaming](/it/concepts/streaming) per i dettagli su comportamento + chunking. ### Indicatori di digitazione @@ -1285,7 +1324,7 @@ Vedi [Indicatori di digitazione](/it/concepts/typing-indicators). ### `agents.defaults.sandbox` -Sandboxing facoltativo per l'agente embedded. Vedi [Sandboxing](/it/gateway/sandboxing) per la guida completa. +Sandboxing opzionale per l’agente embedded. Vedi [Sandboxing](/it/gateway/sandboxing) per la guida completa. ```json5 { @@ -1331,7 +1370,7 @@ Sandboxing facoltativo per l'agente embedded. Vedi [Sandboxing](/it/gateway/sand identityFile: "~/.ssh/id_ed25519", certificateFile: "~/.ssh/id_ed25519-cert.pub", knownHostsFile: "~/.ssh/known_hosts", - // Sono supportati anche SecretRef / contenuti inline: + // SecretRefs / inline contents also supported: // identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" }, // certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" }, // knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" }, @@ -1380,7 +1419,7 @@ Sandboxing facoltativo per l'agente embedded. Vedi [Sandboxing](/it/gateway/sand } ``` - + **Backend:** @@ -1393,39 +1432,39 @@ Quando viene selezionato `backend: "openshell"`, le impostazioni specifiche del **Configurazione backend SSH:** -- `target`: target SSH in formato `user@host[:port]` +- `target`: target SSH nel formato `user@host[:port]` - `command`: comando client SSH (predefinito: `ssh`) -- `workspaceRoot`: root remota assoluta usata per workspace per-scope +- `workspaceRoot`: root remota assoluta usata per i workspace per-scope - `identityFile` / `certificateFile` / `knownHostsFile`: file locali esistenti passati a OpenSSH - `identityData` / `certificateData` / `knownHostsData`: contenuti inline o SecretRef che OpenClaw materializza in file temporanei a runtime -- `strictHostKeyChecking` / `updateHostKeys`: controlli della policy delle chiavi host OpenSSH +- `strictHostKeyChecking` / `updateHostKeys`: impostazioni di criterio OpenSSH sulle host key -**Precedenza autenticazione SSH:** +**Precedenza auth SSH:** -- `identityData` ha priorità su `identityFile` -- `certificateData` ha priorità su `certificateFile` -- `knownHostsData` ha priorità su `knownHostsFile` -- I valori `*Data` basati su SecretRef vengono risolti dallo snapshot runtime attivo dei segreti prima che inizi la sessione sandbox +- `identityData` ha la precedenza su `identityFile` +- `certificateData` ha la precedenza su `certificateFile` +- `knownHostsData` ha la precedenza su `knownHostsFile` +- I valori `*Data` basati su SecretRef vengono risolti dallo snapshot runtime attivo dei secret prima dell’avvio della sessione sandbox **Comportamento backend SSH:** -- inizializza il workspace remoto una sola volta dopo creazione o ricreazione -- poi mantiene canonico il workspace SSH remoto -- instrada `exec`, gli strumenti file e i percorsi media via SSH -- non sincronizza automaticamente sull'host le modifiche remote -- non supporta contenitori browser sandbox +- inizializza il workspace remoto una volta dopo creazione o ricreazione +- quindi mantiene canonico il workspace SSH remoto +- instrada `exec`, gli strumenti file e i percorsi media tramite SSH +- non sincronizza automaticamente le modifiche remote di nuovo verso l’host +- non supporta container browser sandbox **Accesso al workspace:** - `none`: workspace sandbox per-scope sotto `~/.openclaw/sandboxes` -- `ro`: workspace sandbox in `/workspace`, workspace agente montato in sola lettura in `/agent` -- `rw`: workspace agente montato in lettura/scrittura in `/workspace` +- `ro`: workspace sandbox in `/workspace`, workspace agente montato in sola lettura su `/agent` +- `rw`: workspace agente montato in lettura/scrittura su `/workspace` **Scope:** -- `session`: contenitore + workspace per-sessione -- `agent`: un contenitore + workspace per agente (predefinito) -- `shared`: contenitore e workspace condivisi (nessun isolamento cross-sessione) +- `session`: container + workspace per-sessione +- `agent`: un container + workspace per agente (predefinito) +- `shared`: container e workspace condivisi (nessun isolamento tra sessioni) **Configurazione plugin OpenShell:** @@ -1440,10 +1479,10 @@ Quando viene selezionato `backend: "openshell"`, le impostazioni specifiche del from: "openclaw", remoteWorkspaceDir: "/sandbox", remoteAgentWorkspaceDir: "/agent", - gateway: "lab", // facoltativo - gatewayEndpoint: "https://lab.example", // facoltativo - policy: "strict", // id policy OpenShell facoltativo - providers: ["openai"], // facoltativo + gateway: "lab", // optional + gatewayEndpoint: "https://lab.example", // optional + policy: "strict", // optional OpenShell policy id + providers: ["openai"], // optional autoProviders: true, timeoutSeconds: 120, }, @@ -1456,14 +1495,14 @@ Quando viene selezionato `backend: "openshell"`, le impostazioni specifiche del **Modalità OpenShell:** - `mirror`: inizializza il remoto dal locale prima di exec, sincronizza indietro dopo exec; il workspace locale resta canonico -- `remote`: inizializza il remoto una sola volta quando il sandbox viene creato, poi mantiene canonico il workspace remoto +- `remote`: inizializza il remoto una volta quando viene creata la sandbox, poi mantiene canonico il workspace remoto -In modalità `remote`, le modifiche locali sull'host fatte fuori da OpenClaw non vengono sincronizzate automaticamente nel sandbox dopo il passaggio iniziale di seed. -Il trasporto è SSH verso il sandbox OpenShell, ma il plugin possiede il ciclo di vita del sandbox e l'eventuale sincronizzazione mirror. +In modalità `remote`, le modifiche locali sull’host fatte fuori da OpenClaw non vengono sincronizzate automaticamente nella sandbox dopo il passaggio di inizializzazione. +Il trasporto è SSH verso la sandbox OpenShell, ma il plugin possiede il ciclo di vita della sandbox e l’eventuale sincronizzazione mirror. -**`setupCommand`** viene eseguito una volta dopo la creazione del contenitore (tramite `sh -lc`). Richiede egress di rete, root scrivibile, utente root. +**`setupCommand`** viene eseguito una volta dopo la creazione del container (tramite `sh -lc`). Richiede uscita di rete, root scrivibile, utente root. -**I contenitori hanno predefinito `network: "none"`** — impostalo su `"bridge"` (o una rete bridge personalizzata) se l'agente ha bisogno di accesso in uscita. +**I container usano per impostazione predefinita `network: "none"`**: imposta `"bridge"` (o una rete bridge personalizzata) se l’agente ha bisogno di accesso in uscita. `"host"` è bloccato. `"container:"` è bloccato per impostazione predefinita a meno che tu non imposti esplicitamente `sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (break-glass). @@ -1471,14 +1510,14 @@ Il trasporto è SSH verso il sandbox OpenShell, ma il plugin possiede il ciclo d **`docker.binds`** monta directory host aggiuntive; i bind globali e per-agente vengono uniti. -**Browser sandboxato** (`sandbox.browser.enabled`): Chromium + CDP in un contenitore. URL noVNC iniettato nel system prompt. Non richiede `browser.enabled` in `openclaw.json`. -L'accesso osservatore noVNC usa per impostazione predefinita l'autenticazione VNC e OpenClaw emette un URL con token a breve durata (invece di esporre la password nell'URL condiviso). +**Browser sandboxed** (`sandbox.browser.enabled`): Chromium + CDP in un container. URL noVNC iniettato nel system prompt. Non richiede `browser.enabled` in `openclaw.json`. +L’accesso osservatore noVNC usa per impostazione predefinita l’autenticazione VNC e OpenClaw emette un URL token temporaneo breve (invece di esporre la password nell’URL condiviso). -- `allowHostControl: false` (predefinito) blocca le sessioni sandboxate dal puntare al browser host. -- `network` è predefinito `openclaw-sandbox-browser` (rete bridge dedicata). Impostalo su `bridge` solo quando vuoi esplicitamente una connettività bridge globale. -- `cdpSourceRange` può limitare facoltativamente l'ingresso CDP al margine del contenitore a un intervallo CIDR (ad esempio `172.21.0.1/32`). -- `sandbox.browser.binds` monta directory host aggiuntive solo nel contenitore browser sandbox. Quando impostato (incluso `[]`), sostituisce `docker.binds` per il contenitore browser. -- I valori predefiniti di avvio sono definiti in `scripts/sandbox-browser-entrypoint.sh` e ottimizzati per host in contenitore: +- `allowHostControl: false` (predefinito) blocca le sessioni sandboxed dal puntare al browser host. +- `network` è predefinito `openclaw-sandbox-browser` (rete bridge dedicata). Impostalo su `bridge` solo quando vuoi esplicitamente connettività bridge globale. +- `cdpSourceRange` limita opzionalmente l’ingresso CDP al margine del container a un intervallo CIDR (ad esempio `172.21.0.1/32`). +- `sandbox.browser.binds` monta directory host aggiuntive solo nel container browser sandbox. Quando impostato (incluso `[]`), sostituisce `docker.binds` per il container browser. +- I valori predefiniti di avvio sono definiti in `scripts/sandbox-browser-entrypoint.sh` e ottimizzati per host container: - `--remote-debugging-address=127.0.0.1` - `--remote-debugging-port=` - `--user-data-dir=${HOME}/.chrome` @@ -1498,24 +1537,24 @@ L'accesso osservatore noVNC usa per impostazione predefinita l'autenticazione VN - `--disable-extensions` (abilitato per impostazione predefinita) - `--disable-3d-apis`, `--disable-software-rasterizer` e `--disable-gpu` sono abilitati per impostazione predefinita e possono essere disabilitati con - `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0` se l'uso di WebGL/3D lo richiede. - - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` riabilita le estensioni se il tuo flusso di lavoro - dipende da esse. + `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0` se l’uso di WebGL/3D lo richiede. + - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` riabilita le estensioni se il tuo workflow + ne dipende. - `--renderer-process-limit=2` può essere modificato con `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; imposta `0` per usare il limite di processo predefinito di Chromium. - più `--no-sandbox` e `--disable-setuid-sandbox` quando `noSandbox` è abilitato. - - I predefiniti sono la baseline dell'immagine contenitore; usa un'immagine browser personalizzata con un entrypoint personalizzato per cambiare i valori predefiniti del contenitore. + - I valori predefiniti sono la baseline dell’immagine container; usa un’immagine browser personalizzata con un entrypoint personalizzato per modificare i valori predefiniti del container. -Il sandboxing del browser e `sandbox.docker.binds` sono attualmente disponibili solo con Docker. +Il browser sandboxing e `sandbox.docker.binds` sono attualmente solo Docker. -Compila le immagini: +Costruisci le immagini: ```bash -scripts/sandbox-setup.sh # immagine sandbox principale -scripts/sandbox-browser-setup.sh # immagine browser facoltativa +scripts/sandbox-setup.sh # main sandbox image +scripts/sandbox-browser-setup.sh # optional browser image ``` ### `agents.list` (override per-agente) @@ -1527,18 +1566,18 @@ scripts/sandbox-browser-setup.sh # immagine browser facoltativa { id: "main", default: true, - name: "Agente principale", + name: "Main Agent", workspace: "~/.openclaw/workspace", agentDir: "~/.openclaw/agents/main/agent", - model: "anthropic/claude-opus-4-6", // oppure { primary, fallbacks } - thinkingDefault: "high", // override per-agente del livello thinking - reasoningDefault: "on", // override per-agente della visibilità reasoning - fastModeDefault: false, // override per-agente della fast mode - params: { cacheRetention: "none" }, // sovrascrive per chiave i defaults.models corrispondenti - skills: ["docs-search"], // sostituisce agents.defaults.skills quando impostato + model: "anthropic/claude-opus-4-6", // or { primary, fallbacks } + thinkingDefault: "high", // per-agent thinking level override + reasoningDefault: "on", // per-agent reasoning visibility override + fastModeDefault: false, // per-agent fast mode override + params: { cacheRetention: "none" }, // overrides matching defaults.models params by key + skills: ["docs-search"], // replaces agents.defaults.skills when set identity: { name: "Samantha", - theme: "bradipo disponibile", + theme: "helpful sloth", emoji: "🦥", avatar: "avatars/samantha.png", }, @@ -1566,26 +1605,26 @@ scripts/sandbox-browser-setup.sh # immagine browser facoltativa } ``` -- `id`: id agente stabile (obbligatorio). -- `default`: quando sono impostati più valori, vince il primo (viene registrato un avviso). Se nessuno è impostato, il predefinito è la prima voce della lista. -- `model`: la forma stringa sostituisce solo `primary`; la forma oggetto `{ primary, fallbacks }` sostituisce entrambi (`[]` disabilita i fallback globali). I cron job che sostituiscono solo `primary` continuano a ereditare i fallback predefiniti a meno che tu non imposti `fallbacks: []`. -- `params`: parametri stream per-agente uniti sopra la voce modello selezionata in `agents.defaults.models`. Usali per override specifici dell'agente come `cacheRetention`, `temperature` o `maxTokens` senza duplicare l'intero catalogo modelli. -- `skills`: allowlist facoltativa di Skills per-agente. Se omessa, l'agente eredita `agents.defaults.skills` quando impostato; una lista esplicita sostituisce i predefiniti invece di unirsi, e `[]` significa nessuna Skills. -- `thinkingDefault`: livello thinking predefinito facoltativo per-agente (`off | minimal | low | medium | high | xhigh | adaptive`). Sostituisce `agents.defaults.thinkingDefault` per questo agente quando non è impostato alcun override per-messaggio o sessione. -- `reasoningDefault`: visibilità reasoning predefinita facoltativa per-agente (`on | off | stream`). Si applica quando non è impostato alcun override reasoning per-messaggio o sessione. -- `fastModeDefault`: valore predefinito facoltativo per-agente per la fast mode (`true | false`). Si applica quando non è impostato alcun override fast-mode per-messaggio o sessione. -- `runtime`: descrittore runtime facoltativo per-agente. Usa `type: "acp"` con i predefiniti `runtime.acp` (`agent`, `backend`, `mode`, `cwd`) quando l'agente deve usare per impostazione predefinita sessioni harness ACP. +- `id`: ID agente stabile (obbligatorio). +- `default`: quando ne sono impostati più di uno, il primo vince (viene registrato un avviso). Se nessuno è impostato, la prima voce della lista è quella predefinita. +- `model`: la forma stringa sovrascrive solo `primary`; la forma oggetto `{ primary, fallbacks }` sovrascrive entrambi (`[]` disabilita i fallback globali). I job cron che sovrascrivono solo `primary` ereditano comunque i fallback predefiniti a meno che tu non imposti `fallbacks: []`. +- `params`: parametri stream per-agente uniti sopra la voce modello selezionata in `agents.defaults.models`. Usalo per override specifici dell’agente come `cacheRetention`, `temperature` o `maxTokens` senza duplicare l’intero catalogo modelli. +- `skills`: allowlist opzionale di Skills per-agente. Se omesso, l’agente eredita `agents.defaults.skills` quando impostato; un elenco esplicito sostituisce i predefiniti invece di unirsi, e `[]` significa nessuna Skills. +- `thinkingDefault`: livello predefinito opzionale di thinking per-agente (`off | minimal | low | medium | high | xhigh | adaptive`). Sovrascrive `agents.defaults.thinkingDefault` per questo agente quando non è impostato alcun override per-messaggio o per-sessione. +- `reasoningDefault`: override opzionale per-agente della visibilità del reasoning (`on | off | stream`). Si applica quando non è impostato alcun override di reasoning per-messaggio o per-sessione. +- `fastModeDefault`: valore predefinito opzionale per-agente per la fast mode (`true | false`). Si applica quando non è impostato alcun override di fast mode per-messaggio o per-sessione. +- `runtime`: descrittore runtime opzionale per-agente. Usa `type: "acp"` con i valori predefiniti `runtime.acp` (`agent`, `backend`, `mode`, `cwd`) quando l’agente deve usare per impostazione predefinita sessioni harness ACP. - `identity.avatar`: percorso relativo al workspace, URL `http(s)` o URI `data:`. -- `identity` deriva valori predefiniti: `ackReaction` da `emoji`, `mentionPatterns` da `name`/`emoji`. -- `subagents.allowAgents`: allowlist di id agente per `sessions_spawn` (`["*"]` = qualsiasi; predefinito: solo lo stesso agente). -- Protezione ereditarietà sandbox: se la sessione richiedente è sandboxata, `sessions_spawn` rifiuta target che verrebbero eseguiti senza sandbox. +- `identity` deriva i valori predefiniti: `ackReaction` da `emoji`, `mentionPatterns` da `name`/`emoji`. +- `subagents.allowAgents`: allowlist di ID agente per `sessions_spawn` (`["*"]` = qualsiasi; predefinito: solo stesso agente). +- Guardrail di ereditarietà sandbox: se la sessione richiedente è sandboxed, `sessions_spawn` rifiuta target che verrebbero eseguiti senza sandbox. - `subagents.requireAgentId`: quando true, blocca le chiamate `sessions_spawn` che omettono `agentId` (forza la selezione esplicita del profilo; predefinito: false). --- -## Routing multi-agente +## Routing multi-agent -Esegui più agenti isolati dentro un solo Gateway. Vedi [Multi-Agent](/it/concepts/multi-agent). +Esegui più agenti isolati dentro un singolo Gateway. Vedi [Multi-Agent](/it/concepts/multi-agent). ```json5 { @@ -1602,14 +1641,14 @@ Esegui più agenti isolati dentro un solo Gateway. Vedi [Multi-Agent](/it/concep } ``` -### Campi di corrispondenza dei binding +### Campi match del binding -- `type` (facoltativo): `route` per il routing normale (type mancante equivale a route), `acp` per binding di conversazione ACP persistenti. +- `type` (opzionale): `route` per il routing normale (type mancante equivale a route), `acp` per binding di conversazione ACP persistenti. - `match.channel` (obbligatorio) -- `match.accountId` (facoltativo; `*` = qualsiasi account; omesso = account predefinito) -- `match.peer` (facoltativo; `{ kind: direct|group|channel, id }`) -- `match.guildId` / `match.teamId` (facoltativo; specifici del canale) -- `acp` (facoltativo; solo per voci `type: "acp"`): `{ mode, label, cwd, backend }` +- `match.accountId` (opzionale; `*` = qualsiasi account; omesso = account predefinito) +- `match.peer` (opzionale; `{ kind: direct|group|channel, id }`) +- `match.guildId` / `match.teamId` (opzionale; specifici del canale) +- `acp` (opzionale; solo per voci `type: "acp"`): `{ mode, label, cwd, backend }` **Ordine di corrispondenza deterministico:** @@ -1617,12 +1656,12 @@ Esegui più agenti isolati dentro un solo Gateway. Vedi [Multi-Agent](/it/concep 2. `match.guildId` 3. `match.teamId` 4. `match.accountId` (esatto, senza peer/guild/team) -5. `match.accountId: "*"` (intero canale) +5. `match.accountId: "*"` (a livello canale) 6. Agente predefinito -All'interno di ogni livello, vince la prima voce `bindings` corrispondente. +All’interno di ogni livello, vince la prima voce `bindings` corrispondente. -Per le voci `type: "acp"`, OpenClaw risolve in base all'identità esatta della conversazione (`match.channel` + account + `match.peer.id`) e non usa l'ordine a livelli dei route binding sopra. +Per le voci `type: "acp"`, OpenClaw risolve in base all’identità esatta della conversazione (`match.channel` + account + `match.peer.id`) e non usa l’ordine dei livelli di route binding sopra. ### Profili di accesso per-agente @@ -1719,7 +1758,7 @@ Per le voci `type: "acp"`, OpenClaw risolve in base all'identità esatta della c -Vedi [Sandbox & strumenti multi-agente](/it/tools/multi-agent-sandbox-tools) per i dettagli sulla precedenza. +Vedi [Sandbox & Tools multi-agent](/it/tools/multi-agent-sandbox-tools) per i dettagli sulla precedenza. --- @@ -1745,22 +1784,22 @@ Vedi [Sandbox & strumenti multi-agente](/it/tools/multi-agent-sandbox-tools) per }, resetTriggers: ["/new", "/reset"], store: "~/.openclaw/agents/{agentId}/sessions/sessions.json", - parentForkMaxTokens: 100000, // salta il fork del thread padre sopra questo conteggio token (0 disabilita) + parentForkMaxTokens: 100000, // skip parent-thread fork above this token count (0 disables) maintenance: { mode: "warn", // warn | enforce pruneAfter: "30d", maxEntries: 500, rotateBytes: "10mb", - resetArchiveRetention: "30d", // durata o false - maxDiskBytes: "500mb", // budget rigido facoltativo - highWaterBytes: "400mb", // target di pulizia facoltativo + resetArchiveRetention: "30d", // duration or false + maxDiskBytes: "500mb", // optional hard budget + highWaterBytes: "400mb", // optional cleanup target }, threadBindings: { enabled: true, - idleHours: 24, // auto-unfocus per inattività predefinito in ore (`0` disabilita) - maxAgeHours: 0, // età massima rigida predefinita in ore (`0` disabilita) + idleHours: 24, // default inactivity auto-unfocus in hours (`0` disables) + maxAgeHours: 0, // default hard max age in hours (`0` disables) }, - mainKey: "main", // legacy (il runtime usa sempre "main") + mainKey: "main", // legacy (runtime always uses "main") agentToAgent: { maxPingPongTurns: 5 }, sendPolicy: { rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }], @@ -1770,37 +1809,37 @@ Vedi [Sandbox & strumenti multi-agente](/it/tools/multi-agent-sandbox-tools) per } ``` - + -- **`scope`**: strategia base di raggruppamento delle sessioni per i contesti di chat di gruppo. - - `per-sender` (predefinita): ogni mittente ottiene una sessione isolata in un contesto di canale. - - `global`: tutti i partecipanti in un contesto di canale condividono una singola sessione (usalo solo quando il contesto condiviso è intenzionale). +- **`scope`**: strategia base di raggruppamento sessioni per contesti di chat di gruppo. + - `per-sender` (predefinito): ogni mittente ottiene una sessione isolata in un contesto canale. + - `global`: tutti i partecipanti in un contesto canale condividono una singola sessione (usare solo quando è inteso un contesto condiviso). - **`dmScope`**: come vengono raggruppati i DM. - `main`: tutti i DM condividono la sessione principale. - - `per-peer`: isolamento per id mittente tra canali. - - `per-channel-peer`: isolamento per canale + mittente (consigliato per inbox multiutente). - - `per-account-channel-peer`: isolamento per account + canale + mittente (consigliato per multi-account). -- **`identityLinks`**: mappa id canonici a peer con prefisso provider per la condivisione cross-channel della sessione. -- **`reset`**: policy di reset primaria. `daily` resetta a `atHour` ora locale; `idle` resetta dopo `idleMinutes`. Quando sono configurati entrambi, vince quello che scade per primo. -- **`resetByType`**: override per-tipo (`direct`, `group`, `thread`). Legacy `dm` accettato come alias di `direct`. -- **`parentForkMaxTokens`**: massimo `totalTokens` della sessione padre consentito quando si crea una sessione thread forked (predefinito `100000`). - - Se `totalTokens` del padre è sopra questo valore, OpenClaw avvia una nuova sessione thread invece di ereditare la cronologia transcript del padre. - - Imposta `0` per disabilitare questa protezione e consentire sempre il fork dal padre. -- **`mainKey`**: campo legacy. Il runtime usa ora sempre `"main"` per il bucket principale delle chat dirette. -- **`agentToAgent.maxPingPongTurns`**: numero massimo di turni reply-back tra agenti durante gli scambi agente-a-agente (intero, intervallo: `0`–`5`). `0` disabilita la catena ping-pong. -- **`sendPolicy`**: corrispondenza per `channel`, `chatType` (`direct|group|channel`, con alias legacy `dm`), `keyPrefix` o `rawKeyPrefix`. Il primo deny vince. -- **`maintenance`**: controlli di pulizia + retention dell'archivio sessioni. + - `per-peer`: isola per ID mittente tra canali. + - `per-channel-peer`: isola per canale + mittente (consigliato per inbox multiutente). + - `per-account-channel-peer`: isola per account + canale + mittente (consigliato per multi-account). +- **`identityLinks`**: mappa ID canonici a peer con prefisso provider per la condivisione della sessione cross-channel. +- **`reset`**: criterio di reset primario. `daily` resetta all’ora locale `atHour`; `idle` resetta dopo `idleMinutes`. Quando entrambi sono configurati, vince quello che scade prima. +- **`resetByType`**: override per tipo (`direct`, `group`, `thread`). La legacy `dm` è accettata come alias di `direct`. +- **`parentForkMaxTokens`**: numero massimo di `totalTokens` della sessione padre consentito quando si crea una sessione forkata da thread (predefinito `100000`). + - Se `totalTokens` del padre supera questo valore, OpenClaw avvia una nuova sessione thread invece di ereditare la cronologia transcript del padre. + - Imposta `0` per disabilitare questo guardrail e consentire sempre il fork dal padre. +- **`mainKey`**: campo legacy. Il runtime ora usa sempre `"main"` per il bucket principale delle chat dirette. +- **`agentToAgent.maxPingPongTurns`**: numero massimo di turni di risposta reciproca tra agenti durante gli scambi agent-to-agent (intero, intervallo: `0`–`5`). `0` disabilita la catena ping-pong. +- **`sendPolicy`**: corrispondenza per `channel`, `chatType` (`direct|group|channel`, con alias legacy `dm`), `keyPrefix` o `rawKeyPrefix`. Vince il primo deny. +- **`maintenance`**: controlli di pulizia + retention dell’archivio sessioni. - `mode`: `warn` emette solo avvisi; `enforce` applica la pulizia. - - `pruneAfter`: soglia di età per le voci obsolete (predefinito `30d`). + - `pruneAfter`: soglia temporale per voci stale (predefinito `30d`). - `maxEntries`: numero massimo di voci in `sessions.json` (predefinito `500`). - `rotateBytes`: ruota `sessions.json` quando supera questa dimensione (predefinito `10mb`). - `resetArchiveRetention`: retention per gli archivi transcript `*.reset.`. Predefinito uguale a `pruneAfter`; imposta `false` per disabilitare. - - `maxDiskBytes`: budget disco facoltativo per la directory sessioni. In modalità `warn` registra avvisi; in modalità `enforce` rimuove prima gli artefatti/sessioni più vecchi. - - `highWaterBytes`: target facoltativo dopo la pulizia del budget. Predefinito `80%` di `maxDiskBytes`. -- **`threadBindings`**: valori predefiniti globali per le funzionalità di sessione vincolate ai thread. - - `enabled`: interruttore principale predefinito (i provider possono sostituirlo; Discord usa `channels.discord.threadBindings.enabled`) - - `idleHours`: auto-unfocus per inattività predefinito in ore (`0` lo disabilita; i provider possono sostituirlo) - - `maxAgeHours`: età massima rigida predefinita in ore (`0` lo disabilita; i provider possono sostituirlo) + - `maxDiskBytes`: budget disco opzionale per la directory delle sessioni. In modalità `warn` registra avvisi; in modalità `enforce` rimuove prima gli artefatti/sessioni più vecchi. + - `highWaterBytes`: target opzionale dopo la pulizia del budget. Predefinito `80%` di `maxDiskBytes`. +- **`threadBindings`**: valori globali predefiniti per le funzionalità di sessione thread-bound. + - `enabled`: interruttore master predefinito (i provider possono sovrascrivere; Discord usa `channels.discord.threadBindings.enabled`) + - `idleHours`: auto-unfocus da inattività predefinito in ore (`0` disabilita; i provider possono sovrascrivere) + - `maxAgeHours`: età massima rigida predefinita in ore (`0` disabilita; i provider possono sovrascrivere) @@ -1811,7 +1850,7 @@ Vedi [Sandbox & strumenti multi-agente](/it/tools/multi-agent-sandbox-tools) per ```json5 { messages: { - responsePrefix: "🦞", // oppure "auto" + responsePrefix: "🦞", // or "auto" ackReaction: "👀", ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all removeAckAfterReply: false, @@ -1826,7 +1865,7 @@ Vedi [Sandbox & strumenti multi-agente](/it/tools/multi-agent-sandbox-tools) per }, }, inbound: { - debounceMs: 2000, // 0 disabilita + debounceMs: 2000, // 0 disables byChannel: { whatsapp: 5000, slack: 1500, @@ -1836,7 +1875,7 @@ Vedi [Sandbox & strumenti multi-agente](/it/tools/multi-agent-sandbox-tools) per } ``` -### Prefisso di risposta +### Prefisso della risposta Override per canale/account: `channels..responsePrefix`, `channels..accounts..responsePrefix`. @@ -1848,26 +1887,26 @@ Risoluzione (vince il più specifico): account → canale → globale. `""` disa | ----------------- | ---------------------- | --------------------------- | | `{model}` | Nome breve del modello | `claude-opus-4-6` | | `{modelFull}` | Identificatore completo del modello | `anthropic/claude-opus-4-6` | -| `{provider}` | Nome del provider | `anthropic` | -| `{thinkingLevel}` | Livello thinking corrente | `high`, `low`, `off` | +| `{provider}` | Nome provider | `anthropic` | +| `{thinkingLevel}` | Livello thinking corrente | `high`, `low`, `off` | | `{identity.name}` | Nome identità agente | (uguale a `"auto"`) | -Le variabili non distinguono maiuscole/minuscole. `{think}` è un alias di `{thinkingLevel}`. +Le variabili non fanno distinzione tra maiuscole e minuscole. `{think}` è un alias di `{thinkingLevel}`. -### Reazione di ack +### Reazione ack -- Il predefinito è `identity.emoji` dell'agente attivo, altrimenti `"👀"`. Imposta `""` per disabilitare. +- Predefinito sull’`identity.emoji` dell’agente attivo, altrimenti `"👀"`. Imposta `""` per disabilitare. - Override per canale: `channels..ackReaction`, `channels..accounts..ackReaction`. - Ordine di risoluzione: account → canale → `messages.ackReaction` → fallback identità. - Scope: `group-mentions` (predefinito), `group-all`, `direct`, `all`. -- `removeAckAfterReply`: rimuove l'ack dopo la risposta su Slack, Discord e Telegram. -- `messages.statusReactions.enabled`: abilita reazioni di stato del ciclo di vita su Slack, Discord e Telegram. +- `removeAckAfterReply`: rimuove l’ack dopo la risposta su Slack, Discord e Telegram. +- `messages.statusReactions.enabled`: abilita le reazioni di stato del ciclo di vita su Slack, Discord e Telegram. Su Slack e Discord, se non impostato mantiene abilitate le reazioni di stato quando le reazioni ack sono attive. Su Telegram, impostalo esplicitamente su `true` per abilitare le reazioni di stato del ciclo di vita. ### Debounce in ingresso -Raggruppa messaggi rapidi di solo testo dallo stesso mittente in un singolo turno agente. Media/allegati svuotano immediatamente la coda. I comandi di controllo bypassano il debounce. +Raggruppa messaggi rapidi solo testo dallo stesso mittente in un singolo turno agente. Media/allegati vengono svuotati immediatamente. I comandi di controllo bypassano il debouncing. ### TTS (text-to-speech) @@ -1910,12 +1949,12 @@ Raggruppa messaggi rapidi di solo testo dallo stesso mittente in un singolo turn } ``` -- `auto` controlla l'auto-TTS. `/tts off|always|inbound|tagged` sostituisce per sessione. -- `summaryModel` sostituisce `agents.defaults.model.primary` per l'auto-riassunto. +- `auto` controlla la modalità auto-TTS predefinita: `off`, `always`, `inbound` o `tagged`. `/tts on|off` può sovrascrivere le preferenze locali, e `/tts status` mostra lo stato effettivo. +- `summaryModel` sovrascrive `agents.defaults.model.primary` per il riepilogo automatico. - `modelOverrides` è abilitato per impostazione predefinita; `modelOverrides.allowProvider` è predefinito `false` (opt-in). -- Le chiavi API usano come fallback `ELEVENLABS_API_KEY`/`XI_API_KEY` e `OPENAI_API_KEY`. -- `openai.baseUrl` sostituisce l'endpoint OpenAI TTS. L'ordine di risoluzione è config, poi `OPENAI_TTS_BASE_URL`, poi `https://api.openai.com/v1`. -- Quando `openai.baseUrl` punta a un endpoint non OpenAI, OpenClaw lo tratta come server TTS compatibile OpenAI e allenta la validazione di modello/voce. +- Le API key ricadono su `ELEVENLABS_API_KEY`/`XI_API_KEY` e `OPENAI_API_KEY`. +- `openai.baseUrl` sovrascrive l’endpoint OpenAI TTS. Ordine di risoluzione: config, poi `OPENAI_TTS_BASE_URL`, poi `https://api.openai.com/v1`. +- Quando `openai.baseUrl` punta a un endpoint non OpenAI, OpenClaw lo tratta come un server TTS compatibile con OpenAI e allenta la convalida di modello/voce. --- @@ -1946,12 +1985,12 @@ Valori predefiniti per la modalità Talk (macOS/iOS/Android). ``` - `talk.provider` deve corrispondere a una chiave in `talk.providers` quando sono configurati più provider Talk. -- Le chiavi flat legacy di Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) sono solo per compatibilità e vengono migrate automaticamente in `talk.providers.`. -- Gli ID voce usano come fallback `ELEVENLABS_VOICE_ID` o `SAG_VOICE_ID`. +- Le chiavi Talk flat legacy (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) sono compatibilità-only e vengono migrate automaticamente in `talk.providers.`. +- Gli ID voce ricadono su `ELEVENLABS_VOICE_ID` o `SAG_VOICE_ID`. - `providers.*.apiKey` accetta stringhe in chiaro o oggetti SecretRef. -- Il fallback `ELEVENLABS_API_KEY` si applica solo quando non è configurata alcuna chiave API Talk. +- Il fallback `ELEVENLABS_API_KEY` si applica solo quando non è configurata alcuna API key Talk. - `providers.*.voiceAliases` consente alle direttive Talk di usare nomi amichevoli. -- `silenceTimeoutMs` controlla per quanto tempo la modalità Talk attende dopo il silenzio dell'utente prima di inviare il transcript. Se non impostato, mantiene la finestra di pausa predefinita della piattaforma (`700 ms su macOS e Android, 900 ms su iOS`). +- `silenceTimeoutMs` controlla quanto a lungo la modalità Talk attende dopo il silenzio dell’utente prima di inviare la trascrizione. Se non impostato, mantiene la finestra di pausa predefinita della piattaforma (`700 ms su macOS e Android, 900 ms su iOS`). --- @@ -1961,35 +2000,35 @@ Valori predefiniti per la modalità Talk (macOS/iOS/Android). `tools.profile` imposta una allowlist di base prima di `tools.allow`/`tools.deny`: -L'onboarding locale imposta per default le nuove configurazioni locali su `tools.profile: "coding"` quando non impostato (i profili espliciti esistenti vengono mantenuti). +L’onboarding locale imposta per le nuove configurazioni locali `tools.profile: "coding"` quando non impostato (i profili espliciti esistenti vengono preservati). | Profilo | Include | | ----------- | ------------------------------------------------------------------------------------------------------------------------------- | -| `minimal` | solo `session_status` | +| `minimal` | Solo `session_status` | | `coding` | `group:fs`, `group:runtime`, `group:web`, `group:sessions`, `group:memory`, `cron`, `image`, `image_generate`, `video_generate` | | `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` | -| `full` | Nessuna restrizione (uguale a non impostato) | +| `full` | Nessuna restrizione (uguale a non impostato) | ### Gruppi di strumenti -| Gruppo | Strumenti | -| ------------------ | --------------------------------------------------------------------------------------------------------------------------- | +| Gruppo | Strumenti | +| ------------------ | -------------------------------------------------------------------------------------------------------------------------- | | `group:runtime` | `exec`, `process`, `code_execution` (`bash` è accettato come alias di `exec`) | -| `group:fs` | `read`, `write`, `edit`, `apply_patch` | -| `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` | -| `group:memory` | `memory_search`, `memory_get` | -| `group:web` | `web_search`, `x_search`, `web_fetch` | -| `group:ui` | `browser`, `canvas` | -| `group:automation` | `cron`, `gateway` | -| `group:messaging` | `message` | -| `group:nodes` | `nodes` | -| `group:agents` | `agents_list` | -| `group:media` | `image`, `image_generate`, `video_generate`, `tts` | -| `group:openclaw` | Tutti gli strumenti built-in (esclude i plugin provider) | +| `group:fs` | `read`, `write`, `edit`, `apply_patch` | +| `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` | +| `group:memory` | `memory_search`, `memory_get` | +| `group:web` | `web_search`, `x_search`, `web_fetch` | +| `group:ui` | `browser`, `canvas` | +| `group:automation` | `cron`, `gateway` | +| `group:messaging` | `message` | +| `group:nodes` | `nodes` | +| `group:agents` | `agents_list` | +| `group:media` | `image`, `image_generate`, `video_generate`, `tts` | +| `group:openclaw` | Tutti gli strumenti built-in (esclude i plugin provider) | ### `tools.allow` / `tools.deny` -Policy globale di allow/deny degli strumenti (deny vince). Case-insensitive, supporta wildcard `*`. Applicata anche quando il sandbox Docker è disattivato. +Criterio globale di allow/deny per gli strumenti (deny vince). Case-insensitive, supporta wildcard `*`. Applicato anche quando la sandbox Docker è disattivata. ```json5 { @@ -1999,7 +2038,7 @@ Policy globale di allow/deny degli strumenti (deny vince). Case-insensitive, sup ### `tools.byProvider` -Limita ulteriormente gli strumenti per specifici provider o modelli. Ordine: profilo base → profilo provider → allow/deny. +Limita ulteriormente gli strumenti per provider o modelli specifici. Ordine: profilo base → profilo provider → allow/deny. ```json5 { @@ -2015,7 +2054,7 @@ Limita ulteriormente gli strumenti per specifici provider o modelli. Ordine: pro ### `tools.elevated` -Controlla l'accesso exec elevated fuori dal sandbox: +Controlla l’accesso exec elevated fuori dalla sandbox: ```json5 { @@ -2031,9 +2070,9 @@ Controlla l'accesso exec elevated fuori dal sandbox: } ``` -- L'override per-agente (`agents.list[].tools.elevated`) può solo restringere ulteriormente. -- `/elevated on|off|ask|full` salva lo stato per sessione; le direttive inline si applicano al singolo messaggio. -- `exec` elevated bypassa il sandbox e usa il percorso di escape configurato (`gateway` per impostazione predefinita, o `node` quando il target exec è `node`). +- L’override per-agente (`agents.list[].tools.elevated`) può solo restringere ulteriormente. +- `/elevated on|off|ask|full` memorizza lo stato per sessione; le direttive inline si applicano a un solo messaggio. +- `exec` elevated bypassa la sandbox e usa il percorso di escape configurato (`gateway` per impostazione predefinita, oppure `node` quando il target exec è `node`). ### `tools.exec` @@ -2057,8 +2096,8 @@ Controlla l'accesso exec elevated fuori dal sandbox: ### `tools.loopDetection` -I controlli di sicurezza dei loop strumenti sono **disabilitati per impostazione predefinita**. Imposta `enabled: true` per attivare il rilevamento. -Le impostazioni possono essere definite globalmente in `tools.loopDetection` e sostituite per-agente in `agents.list[].tools.loopDetection`. +I controlli di sicurezza dei loop tool sono **disabilitati per impostazione predefinita**. Imposta `enabled: true` per attivare il rilevamento. +Le impostazioni possono essere definite globalmente in `tools.loopDetection` e sovrascritte per-agente in `agents.list[].tools.loopDetection`. ```json5 { @@ -2079,13 +2118,13 @@ Le impostazioni possono essere definite globalmente in `tools.loopDetection` e s } ``` -- `historySize`: numero massimo di cronologie chiamate strumento conservate per l'analisi dei loop. -- `warningThreshold`: soglia per avvisi su pattern ripetuti senza progresso. -- `criticalThreshold`: soglia più alta per bloccare loop critici. -- `globalCircuitBreakerThreshold`: soglia di arresto rigido per qualsiasi esecuzione senza progresso. -- `detectors.genericRepeat`: avvisa su chiamate ripetute allo stesso strumento/con gli stessi argomenti. -- `detectors.knownPollNoProgress`: avvisa/blocca i noti strumenti di polling (`process.poll`, `command_status`, ecc.). -- `detectors.pingPong`: avvisa/blocca pattern alternati a coppia senza progresso. +- `historySize`: dimensione massima della cronologia delle chiamate tool mantenuta per l’analisi dei loop. +- `warningThreshold`: soglia di pattern ripetuti senza progresso per gli avvisi. +- `criticalThreshold`: soglia più alta di ripetizione per bloccare loop critici. +- `globalCircuitBreakerThreshold`: soglia di stop rigido per qualunque esecuzione senza progresso. +- `detectors.genericRepeat`: avvisa su chiamate ripetute stesso-tool/stessi-argomenti. +- `detectors.knownPollNoProgress`: avvisa/blocca su tool di poll noti (`process.poll`, `command_status`, ecc.). +- `detectors.pingPong`: avvisa/blocca su pattern alternati a coppie senza progresso. - Se `warningThreshold >= criticalThreshold` o `criticalThreshold >= globalCircuitBreakerThreshold`, la convalida fallisce. ### `tools.web` @@ -2096,14 +2135,14 @@ Le impostazioni possono essere definite globalmente in `tools.loopDetection` e s web: { search: { enabled: true, - apiKey: "brave_api_key", // oppure BRAVE_API_KEY env + apiKey: "brave_api_key", // or BRAVE_API_KEY env maxResults: 5, timeoutSeconds: 30, cacheTtlMinutes: 15, }, fetch: { enabled: true, - provider: "firecrawl", // facoltativo; ometti per auto-detect + provider: "firecrawl", // optional; omit for auto-detect maxChars: 50000, maxCharsCap: 50000, maxResponseBytes: 2000000, @@ -2128,7 +2167,7 @@ Configura la comprensione dei media in ingresso (immagine/audio/video): media: { concurrency: 2, asyncCompletion: { - directSend: false, // opt-in: invia direttamente al canale i task async music/video completati + directSend: false, // opt-in: send finished async music/video directly to the channel }, audio: { enabled: true, @@ -2156,28 +2195,28 @@ Configura la comprensione dei media in ingresso (immagine/audio/video): **Voce provider** (`type: "provider"` o omesso): -- `provider`: id provider API (`openai`, `anthropic`, `google`/`gemini`, `groq`, ecc.) -- `model`: override del model id -- `profile` / `preferredProfile`: selezione profilo `auth-profiles.json` +- `provider`: ID provider API (`openai`, `anthropic`, `google`/`gemini`, `groq`, ecc.) +- `model`: override model id +- `profile` / `preferredProfile`: selezione del profilo `auth-profiles.json` **Voce CLI** (`type: "cli"`): -- `command`: eseguibile da lanciare -- `args`: argomenti template (supporta `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}`, ecc.) +- `command`: eseguibile da avviare +- `args`: argomenti templated (supporta `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}`, ecc.) **Campi comuni:** -- `capabilities`: lista facoltativa (`image`, `audio`, `video`). Predefiniti: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio. +- `capabilities`: elenco opzionale (`image`, `audio`, `video`). Predefiniti: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio. - `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: override per-voce. -- I fallimenti passano alla voce successiva. +- I fallimenti ricadono sulla voce successiva. -L'autenticazione del provider segue l'ordine standard: `auth-profiles.json` → variabili env → `models.providers.*.apiKey`. +L’auth provider segue l’ordine standard: `auth-profiles.json` → variabili env → `models.providers.*.apiKey`. -**Campi completion asincrona:** +**Campi async completion:** -- `asyncCompletion.directSend`: quando `true`, i task `music_generate` - e `video_generate` completati tentano prima la consegna diretta al canale. Predefinito: `false` - (percorso legacy di wake della sessione richiedente/consegna modello). +- `asyncCompletion.directSend`: quando `true`, le attività completate async `music_generate` + e `video_generate` provano prima la consegna diretta al canale. Predefinito: `false` + (percorso legacy di riattivazione sessione richiedente/consegna modello). @@ -2196,9 +2235,9 @@ L'autenticazione del provider segue l'ordine standard: `auth-profiles.json` → ### `tools.sessions` -Controlla quali sessioni possono essere puntate dagli strumenti di sessione (`sessions_list`, `sessions_history`, `sessions_send`). +Controlla quali sessioni possono essere destinatarie degli strumenti di sessione (`sessions_list`, `sessions_history`, `sessions_send`). -Predefinito: `tree` (sessione corrente + sessioni generate da essa, come i subagenti). +Predefinito: `tree` (sessione corrente + sessioni generate da essa, come i subagent). ```json5 { @@ -2214,25 +2253,25 @@ Predefinito: `tree` (sessione corrente + sessioni generate da essa, come i subag Note: - `self`: solo la chiave della sessione corrente. -- `tree`: sessione corrente + sessioni generate dalla sessione corrente (subagenti). -- `agent`: qualsiasi sessione appartenente all'id agente corrente (può includere altri utenti se esegui sessioni per-mittente sotto lo stesso id agente). +- `tree`: sessione corrente + sessioni generate dalla sessione corrente (subagent). +- `agent`: qualsiasi sessione appartenente all’ID agente corrente (può includere altri utenti se esegui sessioni per-mittente sotto lo stesso ID agente). - `all`: qualsiasi sessione. Il targeting cross-agent richiede comunque `tools.agentToAgent`. -- Clamp sandbox: quando la sessione corrente è sandboxata e `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, la visibilità viene forzata a `tree` anche se `tools.sessions.visibility="all"`. +- Clamp sandbox: quando la sessione corrente è sandboxed e `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, la visibilità viene forzata a `tree` anche se `tools.sessions.visibility="all"`. ### `tools.sessions_spawn` -Controlla il supporto per allegati inline di `sessions_spawn`. +Controlla il supporto agli allegati inline per `sessions_spawn`. ```json5 { tools: { sessions_spawn: { attachments: { - enabled: false, // opt-in: imposta true per consentire allegati file inline - maxTotalBytes: 5242880, // 5 MB totali su tutti i file + enabled: false, // opt-in: set true to allow inline file attachments + maxTotalBytes: 5242880, // 5 MB total across all files maxFiles: 50, maxFileBytes: 1048576, // 1 MB per file - retainOnSessionKeep: false, // conserva gli allegati quando cleanup="keep" + retainOnSessionKeep: false, // keep attachments when cleanup="keep" }, }, }, @@ -2244,19 +2283,19 @@ Note: - Gli allegati sono supportati solo per `runtime: "subagent"`. Il runtime ACP li rifiuta. - I file vengono materializzati nel workspace figlio in `.openclaw/attachments//` con un `.manifest.json`. - Il contenuto degli allegati viene automaticamente redatto dalla persistenza del transcript. -- Gli input base64 vengono convalidati con controlli rigorosi su alfabeto/padding e una protezione sulle dimensioni pre-decodifica. -- I permessi dei file sono `0700` per le directory e `0600` per i file. -- La pulizia segue la policy `cleanup`: `delete` rimuove sempre gli allegati; `keep` li conserva solo quando `retainOnSessionKeep: true`. +- Gli input Base64 vengono convalidati con controlli rigorosi di alfabeto/padding e un guard pre-decode sulla dimensione. +- I permessi file sono `0700` per le directory e `0600` per i file. +- La pulizia segue il criterio `cleanup`: `delete` rimuove sempre gli allegati; `keep` li conserva solo quando `retainOnSessionKeep: true`. ### `tools.experimental` -Flag sperimentali per gli strumenti built-in. Predefiniti off a meno che non si applichi una regola di auto-enable specifica del runtime. +Flag degli strumenti built-in sperimentali. Disattivati per impostazione predefinita salvo quando si applica una regola di auto-enable specifica del runtime. ```json5 { tools: { experimental: { - planTool: true, // abilita update_plan sperimentale + planTool: true, // enable experimental update_plan }, }, } @@ -2264,9 +2303,9 @@ Flag sperimentali per gli strumenti built-in. Predefiniti off a meno che non si Note: -- `planTool`: abilita lo strumento strutturato `update_plan` per il tracciamento del lavoro multi-step non banale. -- Predefinito: `false` per i provider non OpenAI. Le esecuzioni OpenAI e OpenAI Codex lo abilitano automaticamente. -- Quando abilitato, il system prompt aggiunge anche linee guida d'uso in modo che il modello lo usi solo per lavoro sostanziale e mantenga al massimo un passo `in_progress`. +- `planTool`: abilita lo strumento strutturato sperimentale `update_plan` per il tracciamento di lavori multi-step non banali. +- Predefinito: `false` per i provider non OpenAI. Le esecuzioni OpenAI e OpenAI Codex lo abilitano automaticamente quando non è impostato; imposta `false` per disabilitare quell’auto-enable. +- Quando abilitato, il system prompt aggiunge anche linee guida d’uso così che il modello lo usi solo per lavoro sostanziale e mantenga al massimo un passaggio `in_progress`. ### `agents.defaults.subagents` @@ -2286,10 +2325,10 @@ Note: } ``` -- `model`: modello predefinito per i sub-agenti generati. Se omesso, i sub-agenti ereditano il modello del chiamante. -- `allowAgents`: allowlist predefinita degli id agente target per `sessions_spawn` quando l'agente richiedente non imposta il proprio `subagents.allowAgents` (`["*"]` = qualsiasi; predefinito: solo lo stesso agente). -- `runTimeoutSeconds`: timeout predefinito (secondi) per `sessions_spawn` quando la chiamata strumento omette `runTimeoutSeconds`. `0` significa nessun timeout. -- Policy strumenti per-subagente: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`. +- `model`: modello predefinito per i sotto-agenti generati. Se omesso, i sotto-agenti ereditano il modello del chiamante. +- `allowAgents`: allowlist predefinita di ID agente target per `sessions_spawn` quando l’agente richiedente non imposta il proprio `subagents.allowAgents` (`["*"]` = qualsiasi; predefinito: solo stesso agente). +- `runTimeoutSeconds`: timeout predefinito (secondi) per `sessions_spawn` quando la chiamata tool omette `runTimeoutSeconds`. `0` significa nessun timeout. +- Criterio strumenti per-subagent: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`. --- @@ -2300,7 +2339,7 @@ OpenClaw usa il catalogo modelli built-in. Aggiungi provider personalizzati tram ```json5 { models: { - mode: "merge", // merge (predefinito) | replace + mode: "merge", // merge (default) | replace providers: { "custom-proxy": { baseUrl: "http://localhost:4000/v1", @@ -2324,47 +2363,47 @@ OpenClaw usa il catalogo modelli built-in. Aggiungi provider personalizzati tram } ``` -- Usa `authHeader: true` + `headers` per esigenze di autenticazione personalizzate. -- Sostituisci la radice config dell'agente con `OPENCLAW_AGENT_DIR` (o `PI_CODING_AGENT_DIR`, alias legacy della variabile ambiente). -- Precedenza di merge per provider ID corrispondenti: - - I valori `baseUrl` non vuoti di `models.json` dell'agente hanno priorità. - - I valori `apiKey` non vuoti dell'agente hanno priorità solo quando quel provider non è gestito tramite SecretRef nel contesto corrente di config/auth-profile. - - I valori `apiKey` dei provider gestiti da SecretRef vengono aggiornati dai marker di origine (`ENV_VAR_NAME` per ref env, `secretref-managed` per ref file/exec) invece di persistere i segreti risolti. - - I valori header dei provider gestiti da SecretRef vengono aggiornati dai marker di origine (`secretref-env:ENV_VAR_NAME` per ref env, `secretref-managed` per ref file/exec). - - `apiKey`/`baseUrl` mancanti o vuoti dell'agente usano come fallback `models.providers` nella configurazione. - - I valori `contextWindow`/`maxTokens` dei modelli corrispondenti usano il valore più alto tra config esplicita e valori impliciti del catalogo. - - `contextTokens` del modello corrispondente conserva un limite runtime esplicito quando presente; usalo per limitare il contesto effettivo senza modificare i metadati nativi del modello. - - Usa `models.mode: "replace"` quando vuoi che la configurazione riscriva completamente `models.json`. - - La persistenza dei marker è autorevole rispetto all'origine: i marker vengono scritti dallo snapshot config attivo dell'origine (pre-risoluzione), non dai valori segreti runtime risolti. +- Usa `authHeader: true` + `headers` per esigenze auth personalizzate. +- Sovrascrivi la root config dell’agente con `OPENCLAW_AGENT_DIR` (o `PI_CODING_AGENT_DIR`, alias legacy di variabile env). +- Precedenza di merge per ID provider corrispondenti: + - I valori `baseUrl` non vuoti in `models.json` dell’agente hanno la precedenza. + - I valori `apiKey` non vuoti dell’agente hanno la precedenza solo quando quel provider non è gestito da SecretRef nel contesto corrente config/auth-profile. + - I valori `apiKey` del provider gestiti da SecretRef vengono aggiornati dai marker di origine (`ENV_VAR_NAME` per ref env, `secretref-managed` per ref file/exec) invece di persistere i secret risolti. + - I valori header del provider gestiti da SecretRef vengono aggiornati dai marker di origine (`secretref-env:ENV_VAR_NAME` per ref env, `secretref-managed` per ref file/exec). + - `apiKey`/`baseUrl` dell’agente vuoti o mancanti ricadono su `models.providers` in config. + - `contextWindow`/`maxTokens` del modello corrispondente usano il valore più alto tra config esplicita e valori catalogo impliciti. + - `contextTokens` del modello corrispondente preserva un cap runtime esplicito quando presente; usalo per limitare il contesto effettivo senza cambiare i metadati nativi del modello. + - Usa `models.mode: "replace"` quando vuoi che la config riscriva completamente `models.json`. + - La persistenza dei marker è autorevole rispetto alla sorgente: i marker vengono scritti dallo snapshot config attivo di origine (pre-risoluzione), non dai valori secret risolti a runtime. ### Dettagli dei campi provider - `models.mode`: comportamento del catalogo provider (`merge` o `replace`). -- `models.providers`: mappa provider personalizzati indicizzata per provider id. +- `models.providers`: mappa di provider personalizzati indicizzati da provider id. - `models.providers.*.api`: adapter di richiesta (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai`, ecc). - `models.providers.*.apiKey`: credenziale provider (preferisci SecretRef/sostituzione env). -- `models.providers.*.auth`: strategia di autenticazione (`api-key`, `token`, `oauth`, `aws-sdk`). +- `models.providers.*.auth`: strategia auth (`api-key`, `token`, `oauth`, `aws-sdk`). - `models.providers.*.injectNumCtxForOpenAICompat`: per Ollama + `openai-completions`, inietta `options.num_ctx` nelle richieste (predefinito: `true`). -- `models.providers.*.authHeader`: forza il trasporto della credenziale nell'header `Authorization` quando richiesto. -- `models.providers.*.baseUrl`: URL base dell'API upstream. -- `models.providers.*.headers`: header statici extra per instradamento proxy/tenant. +- `models.providers.*.authHeader`: forza il trasporto della credenziale nell’header `Authorization` quando richiesto. +- `models.providers.*.baseUrl`: URL base dell’API upstream. +- `models.providers.*.headers`: header statici aggiuntivi per routing proxy/tenant. - `models.providers.*.request`: override di trasporto per le richieste HTTP del model-provider. - - `request.headers`: header extra (uniti ai predefiniti provider). I valori accettano SecretRef. - - `request.auth`: override della strategia di autenticazione. Modalità: `"provider-default"` (usa l'autenticazione built-in del provider), `"authorization-bearer"` (con `token`), `"header"` (con `headerName`, `value`, facoltativo `prefix`). - - `request.proxy`: override del proxy HTTP. Modalità: `"env-proxy"` (usa le variabili env `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (con `url`). Entrambe le modalità accettano un sotto-oggetto `tls` facoltativo. + - `request.headers`: header aggiuntivi (uniti ai predefiniti del provider). I valori accettano SecretRef. + - `request.auth`: override della strategia auth. Modalità: `"provider-default"` (usa l’auth built-in del provider), `"authorization-bearer"` (con `token`), `"header"` (con `headerName`, `value`, `prefix` opzionale). + - `request.proxy`: override proxy HTTP. Modalità: `"env-proxy"` (usa variabili env `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (con `url`). Entrambe le modalità accettano un sotto-oggetto `tls` opzionale. - `request.tls`: override TLS per connessioni dirette. Campi: `ca`, `cert`, `key`, `passphrase` (tutti accettano SecretRef), `serverName`, `insecureSkipVerify`. - `models.providers.*.models`: voci esplicite del catalogo modelli provider. - `models.providers.*.models.*.contextWindow`: metadati nativi della finestra di contesto del modello. -- `models.providers.*.models.*.contextTokens`: limite runtime facoltativo del contesto. Usalo quando vuoi un budget di contesto effettivo più piccolo della `contextWindow` nativa del modello. -- `models.providers.*.models.*.compat.supportsDeveloperRole`: suggerimento facoltativo di compatibilità. Per `api: "openai-completions"` con `baseUrl` non vuoto e non nativo (host non `api.openai.com`), OpenClaw forza questo valore a `false` a runtime. `baseUrl` vuoto/omesso mantiene il comportamento predefinito OpenAI. -- `models.providers.*.models.*.compat.requiresStringContent`: suggerimento facoltativo di compatibilità per endpoint chat compatibili OpenAI che accettano solo stringhe. Quando `true`, OpenClaw appiattisce in stringhe semplici i puri array di testo `messages[].content` prima di inviare la richiesta. -- `plugins.entries.amazon-bedrock.config.discovery`: radice delle impostazioni di auto-discovery Bedrock. -- `plugins.entries.amazon-bedrock.config.discovery.enabled`: attiva/disattiva l'auto-discovery implicita. +- `models.providers.*.models.*.contextTokens`: cap runtime opzionale del contesto. Usalo quando vuoi un budget di contesto effettivo più piccolo della `contextWindow` nativa del modello. +- `models.providers.*.models.*.compat.supportsDeveloperRole`: hint opzionale di compatibilità. Per `api: "openai-completions"` con `baseUrl` non vuoto e non nativo (host non `api.openai.com`), OpenClaw lo forza a `false` a runtime. `baseUrl` vuoto/omesso mantiene il comportamento predefinito OpenAI. +- `models.providers.*.models.*.compat.requiresStringContent`: hint opzionale di compatibilità per endpoint chat compatibili OpenAI solo-stringa. Quando `true`, OpenClaw appiattisce gli array puramente testuali `messages[].content` in stringhe semplici prima di inviare la richiesta. +- `plugins.entries.amazon-bedrock.config.discovery`: root delle impostazioni di auto-discovery Bedrock. +- `plugins.entries.amazon-bedrock.config.discovery.enabled`: attiva/disattiva l’implicit discovery. - `plugins.entries.amazon-bedrock.config.discovery.region`: regione AWS per la discovery. -- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: filtro facoltativo per provider-id per discovery mirata. -- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: intervallo di polling per il refresh della discovery. -- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: finestra di contesto di fallback per i modelli scoperti. -- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: massimo token output di fallback per i modelli scoperti. +- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: filtro opzionale per provider-id per discovery mirata. +- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: intervallo di polling per il refresh discovery. +- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: finestra di contesto fallback per i modelli rilevati. +- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: token massimi di output fallback per i modelli rilevati. ### Esempi di provider @@ -2402,7 +2441,7 @@ OpenClaw usa il catalogo modelli built-in. Aggiungi provider personalizzati tram } ``` -Usa `cerebras/zai-glm-4.7` per Cerebras; `zai/glm-4.7` per Z.AI diretto. +Usa `cerebras/zai-glm-4.7` per Cerebras; `zai/glm-4.7` per Z.AI direct. @@ -2419,7 +2458,7 @@ Usa `cerebras/zai-glm-4.7` per Cerebras; `zai/glm-4.7` per Z.AI diretto. } ``` -Imposta `OPENCODE_API_KEY` (o `OPENCODE_ZEN_API_KEY`). Usa riferimenti `opencode/...` per il catalogo Zen oppure `opencode-go/...` per il catalogo Go. Scorciatoia: `openclaw onboard --auth-choice opencode-zen` oppure `openclaw onboard --auth-choice opencode-go`. +Imposta `OPENCODE_API_KEY` (o `OPENCODE_ZEN_API_KEY`). Usa riferimenti `opencode/...` per il catalogo Zen o riferimenti `opencode-go/...` per il catalogo Go. Scorciatoia: `openclaw onboard --auth-choice opencode-zen` o `openclaw onboard --auth-choice opencode-go`. @@ -2440,7 +2479,7 @@ Imposta `ZAI_API_KEY`. `z.ai/*` e `z-ai/*` sono alias accettati. Scorciatoia: `o - Endpoint generale: `https://api.z.ai/api/paas/v4` - Endpoint coding (predefinito): `https://api.z.ai/api/coding/paas/v4` -- Per l'endpoint generale, definisci un provider personalizzato con override del base URL. +- Per l’endpoint generale, definisci un provider personalizzato con l’override del base URL. @@ -2479,11 +2518,11 @@ Imposta `ZAI_API_KEY`. `z.ai/*` e `z-ai/*` sono alias accettati. Scorciatoia: `o } ``` -Per l'endpoint Cina: `baseUrl: "https://api.moonshot.cn/v1"` oppure `openclaw onboard --auth-choice moonshot-api-key-cn`. +Per l’endpoint Cina: `baseUrl: "https://api.moonshot.cn/v1"` oppure `openclaw onboard --auth-choice moonshot-api-key-cn`. -Gli endpoint Moonshot nativi pubblicano compatibilità d'uso dello streaming sul trasporto condiviso -`openai-completions`, e OpenClaw ora basa questa scelta sulle -capacità dell'endpoint anziché solo sul provider id built-in. +Gli endpoint nativi Moonshot dichiarano compatibilità d’uso streaming sul transport condiviso +`openai-completions`, e OpenClaw ora la determina in base alle +capability dell’endpoint invece che al solo provider id built-in. @@ -2501,11 +2540,11 @@ capacità dell'endpoint anziché solo sul provider id built-in. } ``` -Compatibile Anthropic, provider built-in. Scorciatoia: `openclaw onboard --auth-choice kimi-code-api-key`. +Compatibile con Anthropic, provider built-in. Scorciatoia: `openclaw onboard --auth-choice kimi-code-api-key`. - + ```json5 { @@ -2583,17 +2622,17 @@ Il base URL deve omettere `/v1` (il client Anthropic lo aggiunge). Scorciatoia: Imposta `MINIMAX_API_KEY`. Scorciatoie: `openclaw onboard --auth-choice minimax-global-api` oppure `openclaw onboard --auth-choice minimax-cn-api`. -Il catalogo modelli ora usa M2.7 come predefinito unico. -Nel percorso di streaming compatibile Anthropic, OpenClaw disabilita il thinking MiniMax -per impostazione predefinita a meno che tu non imposti esplicitamente `thinking`. `/fast on` oppure -`params.fastMode: true` riscrivono `MiniMax-M2.7` in +Il catalogo modelli ora usa per impostazione predefinita solo M2.7. +Sul percorso streaming compatibile con Anthropic, OpenClaw disabilita il thinking MiniMax +per impostazione predefinita a meno che tu non imposti esplicitamente `thinking`. `/fast on` o +`params.fastMode: true` riscrive `MiniMax-M2.7` in `MiniMax-M2.7-highspeed`. -Vedi [Modelli locali](/it/gateway/local-models). In breve: esegui un grande modello locale tramite API LM Studio Responses su hardware serio; mantieni uniti i modelli hosted come fallback. +Vedi [Modelli locali](/it/gateway/local-models). In breve: esegui un grande modello locale tramite l’API Responses di LM Studio su hardware serio; mantieni i modelli hosted uniti per il fallback. @@ -2614,7 +2653,7 @@ Vedi [Modelli locali](/it/gateway/local-models). In breve: esegui un grande mode }, entries: { "image-lab": { - apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // oppure stringa in chiaro + apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // or plaintext string env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" }, }, peekaboo: { enabled: true }, @@ -2624,14 +2663,14 @@ Vedi [Modelli locali](/it/gateway/local-models). In breve: esegui un grande mode } ``` -- `allowBundled`: allowlist facoltativa solo per le Skills bundled (le Skills managed/workspace non sono influenzate). -- `load.extraDirs`: radici Skills condivise extra (precedenza più bassa). +- `allowBundled`: allowlist opzionale solo per le bundled Skills (le Skills gestite/workspace non sono interessate). +- `load.extraDirs`: root condivise aggiuntive per Skills (precedenza più bassa). - `install.preferBrew`: quando true, preferisce gli installer Homebrew quando `brew` è - disponibile prima di ricorrere ad altri tipi di installer. -- `install.nodeManager`: preferenza installer node per gli spec `metadata.openclaw.install` + disponibile prima di ricadere su altri tipi di installer. +- `install.nodeManager`: preferenza del node installer per gli spec `metadata.openclaw.install` (`npm` | `pnpm` | `yarn` | `bun`). -- `entries..enabled: false` disabilita una Skills anche se bundled/installata. -- `entries..apiKey`: campo di comodità per la chiave API della Skills (quando supportato dalla Skills). +- `entries..enabled: false` disabilita una Skill anche se bundled/installata. +- `entries..apiKey`: campo di comodo per API key a livello Skill (quando supportato dalla Skill). --- @@ -2660,34 +2699,40 @@ Vedi [Modelli locali](/it/gateway/local-models). In breve: esegui un grande mode ``` - Caricati da `~/.openclaw/extensions`, `/.openclaw/extensions`, più `plugins.load.paths`. -- La discovery accetta plugin OpenClaw nativi più bundle Codex compatibili e bundle Claude, inclusi i bundle Claude senza manifest nel layout predefinito. +- Il rilevamento accetta plugin OpenClaw nativi più bundle compatibili Codex e Claude, inclusi bundle Claude manifestless con layout predefinito. - **Le modifiche di configurazione richiedono un riavvio del gateway.** -- `allow`: allowlist facoltativa (si caricano solo i plugin elencati). `deny` ha priorità. -- `plugins.entries..apiKey`: campo di comodità per la chiave API a livello plugin (quando supportato dal plugin). -- `plugins.entries..env`: mappa variabili env con scope plugin. -- `plugins.entries..hooks.allowPromptInjection`: quando `false`, il core blocca `before_prompt_build` e ignora i campi legacy che mutano il prompt da `before_agent_start`, preservando `modelOverride` e `providerOverride` legacy. Si applica agli hook dei plugin nativi e alle directory hook fornite dai bundle supportati. -- `plugins.entries..subagent.allowModelOverride`: considera esplicitamente attendibile questo plugin nel richiedere override per-esecuzione di `provider` e `model` per esecuzioni subagente in background. -- `plugins.entries..subagent.allowedModels`: allowlist facoltativa di target canonici `provider/model` per gli override subagente attendibili. Usa `"*"` solo quando vuoi intenzionalmente consentire qualsiasi modello. +- `allow`: allowlist opzionale (si caricano solo i plugin elencati). `deny` vince. +- `plugins.entries..apiKey`: campo di comodo per API key a livello plugin (quando supportato dal plugin). +- `plugins.entries..env`: mappa di variabili env con ambito plugin. +- `plugins.entries..hooks.allowPromptInjection`: quando `false`, il core blocca `before_prompt_build` e ignora i campi legacy che mutano il prompt da `before_agent_start`, preservando comunque i legacy `modelOverride` e `providerOverride`. Si applica agli hook plugin nativi e alle directory hook fornite da bundle supportate. +- `plugins.entries..subagent.allowModelOverride`: considera esplicitamente affidabile questo plugin per richiedere override `provider` e `model` per-esecuzione per le esecuzioni subagent in background. +- `plugins.entries..subagent.allowedModels`: allowlist opzionale di target canonici `provider/model` per gli override subagent affidabili. Usa `"*"` solo quando vuoi intenzionalmente consentire qualsiasi modello. - `plugins.entries..config`: oggetto di configurazione definito dal plugin (convalidato dallo schema del plugin OpenClaw nativo quando disponibile). -- `plugins.entries.firecrawl.config.webFetch`: impostazioni provider web-fetch Firecrawl. - - `apiKey`: chiave API Firecrawl (accetta SecretRef). Usa come fallback `plugins.entries.firecrawl.config.webSearch.apiKey`, il legacy `tools.web.fetch.firecrawl.apiKey` o la variabile env `FIRECRAWL_API_KEY`. +- `plugins.entries.firecrawl.config.webFetch`: impostazioni provider Firecrawl web-fetch. + - `apiKey`: API key Firecrawl (accetta SecretRef). Ricade su `plugins.entries.firecrawl.config.webSearch.apiKey`, legacy `tools.web.fetch.firecrawl.apiKey` o variabile env `FIRECRAWL_API_KEY`. - `baseUrl`: URL base API Firecrawl (predefinito: `https://api.firecrawl.dev`). - - `onlyMainContent`: estrae solo il contenuto principale delle pagine (predefinito: `true`). + - `onlyMainContent`: estrae solo il contenuto principale dalle pagine (predefinito: `true`). - `maxAgeMs`: età massima della cache in millisecondi (predefinito: `172800000` / 2 giorni). - `timeoutSeconds`: timeout della richiesta scrape in secondi (predefinito: `60`). - `plugins.entries.xai.config.xSearch`: impostazioni xAI X Search (ricerca web Grok). - `enabled`: abilita il provider X Search. - - `model`: modello Grok da usare per la ricerca (ad es. `"grok-4-1-fast"`). -- `plugins.entries.memory-core.config.dreaming`: impostazioni dreaming della memoria (sperimentale). Vedi [Dreaming](/it/concepts/dreaming) per fasi e soglie. - - `enabled`: interruttore principale dreaming (predefinito `false`). + - `model`: modello Grok da usare per la ricerca (ad esempio `"grok-4-1-fast"`). +- `plugins.entries.memory-core.config.dreaming`: impostazioni del memory dreaming (sperimentale). Vedi [Dreaming](/it/concepts/dreaming) per fasi e soglie. + - `enabled`: interruttore master dreaming (predefinito `false`). - `frequency`: cadenza cron per ogni sweep completo di dreaming (predefinito `"0 3 * * *"`). - - La policy di fase e le soglie sono dettagli implementativi (non chiavi di configurazione rivolte all'utente). -- I plugin bundle Claude abilitati possono anche contribuire con predefiniti Pi incorporati da `settings.json`; OpenClaw li applica come impostazioni agente sanitizzate, non come patch grezze della configurazione OpenClaw. -- `plugins.slots.memory`: scegli l'id del plugin memoria attivo, oppure `"none"` per disabilitare i plugin memoria. -- `plugins.slots.contextEngine`: scegli l'id del plugin motore di contesto attivo; il predefinito è `"legacy"` a meno che tu non installi e selezioni un altro motore. + - I criteri di fase e le soglie sono dettagli di implementazione (non chiavi di configurazione user-facing). +- La configurazione completa della memoria si trova in [Riferimento della configurazione della memoria](/it/reference/memory-config): + - `agents.defaults.memorySearch.*` + - `memory.backend` + - `memory.citations` + - `memory.qmd.*` + - `plugins.entries.memory-core.config.dreaming` +- I plugin bundle Claude abilitati possono anche contribuire con predefiniti Pi embedded da `settings.json`; OpenClaw li applica come impostazioni agente sanificate, non come patch raw della configurazione OpenClaw. +- `plugins.slots.memory`: scegli l’ID plugin memoria attivo, oppure `"none"` per disabilitare i plugin memoria. +- `plugins.slots.contextEngine`: scegli l’ID plugin context engine attivo; il predefinito è `"legacy"` a meno che tu non installi e selezioni un altro motore. - `plugins.installs`: metadati di installazione gestiti dalla CLI usati da `openclaw plugins update`. - Include `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`. - - Tratta `plugins.installs.*` come stato gestito; preferisci i comandi CLI alle modifiche manuali. + - Tratta `plugins.installs.*` come stato gestito; preferisci i comandi CLI rispetto alle modifiche manuali. Vedi [Plugin](/it/tools/plugin). @@ -2702,8 +2747,8 @@ Vedi [Plugin](/it/tools/plugin). evaluateEnabled: true, defaultProfile: "user", ssrfPolicy: { - dangerouslyAllowPrivateNetwork: true, // modalità predefinita trusted-network - // allowPrivateNetwork: true, // alias legacy + dangerouslyAllowPrivateNetwork: true, // default trusted-network mode + // allowPrivateNetwork: true, // legacy alias // hostnameAllowlist: ["*.example.com", "example.com"], // allowedHostnames: ["localhost"], }, @@ -2731,111 +2776,20 @@ Vedi [Plugin](/it/tools/plugin). - `evaluateEnabled: false` disabilita `act:evaluate` e `wait --fn`. - `ssrfPolicy.dangerouslyAllowPrivateNetwork` è predefinito `true` quando non impostato (modello trusted-network). -- Imposta `ssrfPolicy.dangerouslyAllowPrivateNetwork: false` per una navigazione browser rigorosa solo su rete pubblica. -- In modalità strict, gli endpoint dei profili CDP remoti (`profiles.*.cdpUrl`) sono soggetti allo stesso blocco della rete privata durante i controlli di raggiungibilità/discovery. +- Imposta `ssrfPolicy.dangerouslyAllowPrivateNetwork: false` per una navigazione browser rigorosamente solo pubblica. +- In modalità strict, gli endpoint del profilo CDP remoto (`profiles.*.cdpUrl`) sono soggetti allo stesso blocco delle reti private durante i controlli di raggiungibilità/discovery. - `ssrfPolicy.allowPrivateNetwork` resta supportato come alias legacy. - In modalità strict, usa `ssrfPolicy.hostnameAllowlist` e `ssrfPolicy.allowedHostnames` per eccezioni esplicite. -- I profili remoti sono solo attach-only (start/stop/reset disabilitati). +- I profili remoti sono solo attach (start/stop/reset disabilitati). - `profiles.*.cdpUrl` accetta `http://`, `https://`, `ws://` e `wss://`. - Usa HTTP(S) quando vuoi che OpenClaw rilevi `/json/version`; usa WS(S) - quando il provider ti fornisce un URL WebSocket DevTools diretto. -- I profili `existing-session` sono solo host e usano Chrome MCP invece di CDP. -- I profili `existing-session` possono impostare `userDataDir` per puntare a uno specifico - profilo browser basato su Chromium come Brave o Edge. -- I profili `existing-session` mantengono gli attuali limiti di percorso Chrome MCP: - azioni guidate da snapshot/ref invece del targeting con selettori CSS, hook di upload - singolo file, nessun override del timeout dialog, nessun `wait --load networkidle`, e nessun - `responsebody`, esportazione PDF, intercettazione download o azioni batch. -- I profili `openclaw` locali gestiti assegnano automaticamente `cdpPort` e `cdpUrl`; imposta - `cdpUrl` esplicitamente solo per CDP remoto. -- Ordine di auto-detect: browser predefinito se basato su Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary. -- Servizio di controllo: solo loopback (porta derivata da `gateway.port`, predefinito `18791`). -- `extraArgs` aggiunge flag extra all'avvio Chromium locale (ad esempio - `--disable-gpu`, dimensione finestra o flag di debug). - ---- - -## UI - -```json5 -{ - ui: { - seamColor: "#FF4500", - assistant: { - name: "OpenClaw", - avatar: "CB", // emoji, testo breve, URL immagine o URI data - }, - }, -} -``` - -- `seamColor`: colore di accento per la UI chrome dell'app nativa (tinta del fumetto Talk Mode, ecc.). -- `assistant`: override dell'identità della Control UI. Usa come fallback l'identità dell'agente attivo. - ---- - -## Gateway - -```json5 -{ - gateway: { - mode: "local", // local | remote - port: 18789, - bind: "loopback", - auth: { - mode: "token", // none | token | password | trusted-proxy - token: "your-token", - // password: "your-password", // oppure OPENCLAW_GATEWAY_PASSWORD - // trustedProxy: { userHeader: "x-forwarded-user" }, // per mode=trusted-proxy; vedi /gateway/trusted-proxy-auth - allowTailscale: true, - rateLimit: { - maxAttempts: 10, - windowMs: 60000, - lockoutMs: 300000, - exemptLoopback: true, - }, - }, - tailscale: { - mode: "off", // off | serve | funnel - resetOnExit: false, - }, - controlUi: { - enabled: true, - basePath: "/openclaw", - // root: "dist/control-ui", - // allowedOrigins: ["https://control.example.com"], // richiesto per Control UI non loopback - // dangerouslyAllowHostHeaderOriginFallback: false, // modalità pericolosa di fallback origine basata su header Host - // allowInsecureAuth: false, - // dangerouslyDisableDeviceAuth: false, - }, - remote: { - url: "ws://gateway.tailnet:18789", - transport: "ssh", // ssh | direct - token: "your-token", - // password: "your-password", - }, - trustedProxies: ["10.0.0.1"], - // Facoltativo. Predefinito false. - allowRealIpFallback: false, - tools: { - // Deny HTTP aggiuntivi per /tools/invoke - deny: ["browser"], - // Rimuovi strumenti dalla deny list HTTP predefinita - allow: ["gateway"], - }, - push: { - apns: { - relay: { - baseUrl: "https://relay.example.com", - timeoutMs: 10000, - }, - }, - }, - }, -} -``` - - - -- `mode`: `local` (esegue il gateway) oppure `remote` (si connette a un gateway remoto). Il gateway rifiuta di avviarsi se non è `local`. -- \ No newline at end of file + Usa HTTP(S) quando vuoi che OpenClaw scopra `/json/version`; usa WS(S) + quando il provider fornisce un URL WebSocket DevTools diretto. +- I profili `existing-session` sono host-only e usano Chrome MCP invece di CDP. +- I profili `existing-session` possono impostare `userDataDir` per puntare a un + profilo specifico di browser basato su Chromium come Brave o Edge. +- I profili `existing-session` mantengono gli attuali limiti di instradamento Chrome MCP: + azioni basate su snapshot/ref invece del targeting CSS-selector, hook di upload a un solo file, + nessun override di timeout dei dialoghi, nessun `wait --load networkidle`, e nessun + `responsebody`, export PDF, intercettazione download o azioni batch. +- I profili locali gestiti `openclaw` auto-assegnano `cdpPort` e `cdpUrl`; imposta + `cdpUrl` esplicit \ No newline at end of file diff --git a/docs/it/gateway/configuration.md b/docs/it/gateway/configuration.md index 129273d13..c4cb76925 100644 --- a/docs/it/gateway/configuration.md +++ b/docs/it/gateway/configuration.md @@ -1,15 +1,15 @@ --- read_when: - - Stai configurando OpenClaw per la prima volta - - Cerchi pattern di configurazione comuni - - Vuoi navigare verso sezioni specifiche della configurazione + - Configurare OpenClaw per la prima volta + - Cercare modelli di configurazione comuni + - Passare a sezioni specifiche della configurazione summary: 'Panoramica della configurazione: attività comuni, configurazione rapida e link al riferimento completo' title: Configurazione x-i18n: - generated_at: "2026-04-05T13:52:44Z" + generated_at: "2026-04-08T06:01:49Z" model: gpt-5.4 provider: openai - source_hash: a39a7de09c5f9540785ec67f37d435a7a86201f0f5f640dae663054f35976712 + source_hash: 199a1e515bd4003319e71593a2659bb883299a76ff67e273d92583df03c96604 source_path: gateway/configuration.md workflow: 15 --- @@ -20,14 +20,14 @@ OpenClaw legge una configurazione facoltativa in ```bash - openclaw onboard # flusso completo di onboarding + openclaw onboard # flusso di onboarding completo openclaw configure # procedura guidata di configurazione ``` @@ -58,39 +58,45 @@ Consulta il [riferimento completo](/gateway/configuration-reference) per ogni ca Apri [http://127.0.0.1:18789](http://127.0.0.1:18789) e usa la scheda **Config**. - La UI di controllo visualizza un modulo dallo schema di configurazione live, inclusi i metadati di documentazione dei campi - `title` / `description` più gli schemi di plugin e canale quando - disponibili, con un editor **Raw JSON** come via di fuga. Per UI di analisi dettagliata - e altri strumenti, il gateway espone anche `config.schema.lookup` per - recuperare un nodo di schema limitato a un percorso più i riepiloghi dei figli immediati. + La UI di controllo visualizza un modulo dallo schema di configurazione live, inclusi i metadati della documentazione dei campi + `title` / `description` più gli schemi di plugin e canali quando + disponibili, con un editor **Raw JSON** come via di fuga. Per UI di + approfondimento e altri strumenti, il gateway espone anche `config.schema.lookup` per + recuperare un nodo dello schema limitato a un percorso più riepiloghi immediati dei nodi figli. - Modifica direttamente `~/.openclaw/openclaw.json`. Il Gateway osserva il file e applica automaticamente le modifiche (vedi [hot reload](#config-hot-reload)). + Modifica direttamente `~/.openclaw/openclaw.json`. Il Gateway osserva il file e applica automaticamente le modifiche (vedi [ricaricamento a caldo](#config-hot-reload)). -## Validazione rigorosa +## Convalida rigorosa -OpenClaw accetta solo configurazioni che corrispondono completamente allo schema. Chiavi sconosciute, tipi non validi o valori non validi fanno sì che il Gateway **si rifiuti di avviarsi**. L'unica eccezione a livello root è `$schema` (stringa), così gli editor possono collegare metadati JSON Schema. +OpenClaw accetta solo configurazioni che corrispondono completamente allo schema. Chiavi sconosciute, tipi non validi o valori non validi fanno sì che il Gateway **si rifiuti di avviarsi**. L'unica eccezione a livello root è `$schema` (stringa), così gli editor possono associare metadati JSON Schema. -Note sugli strumenti di schema: +Note sugli strumenti dello schema: - `openclaw config schema` stampa la stessa famiglia di JSON Schema usata dalla UI di controllo - e dalla validazione della configurazione. -- I valori `title` e `description` dei campi vengono riportati nell'output dello schema per - editor e strumenti per moduli. -- Le voci di oggetti annidati, wildcard (`*`) e elementi di array (`[]`) ereditano gli stessi - metadati di documentazione dove esiste documentazione di campo corrispondente. -- Anche i rami di composizione `anyOf` / `oneOf` / `allOf` ereditano gli stessi metadati - di documentazione, così le varianti union/intersection mantengono lo stesso aiuto per i campi. -- `config.schema.lookup` restituisce un percorso di configurazione normalizzato con un nodo di schema superficiale (`title`, `description`, `type`, `enum`, `const`, limiti comuni - e campi di validazione simili), metadati di suggerimento UI corrispondenti e riepiloghi dei figli immediati per strumenti di analisi dettagliata. -- Gli schemi runtime di plugin/canale vengono uniti quando il gateway riesce a caricare il - registro manifest corrente. + e dalla convalida della configurazione. +- Tratta l'output di quello schema come il contratto canonico leggibile dalle macchine per + `openclaw.json`; questa panoramica e il riferimento di configurazione lo riassumono. +- I valori dei campi `title` e `description` vengono riportati nell'output dello schema per + strumenti di editing e moduli. +- Le voci di oggetti nidificati, wildcard (`*`) e elementi di array (`[]`) ereditano gli stessi + metadati della documentazione dove esiste documentazione del campo corrispondente. +- Anche i rami di composizione `anyOf` / `oneOf` / `allOf` ereditano gli stessi + metadati della documentazione, così le varianti union/intersection mantengono lo stesso aiuto per il campo. +- `config.schema.lookup` restituisce un percorso di configurazione normalizzato con un nodo di + schema superficiale (`title`, `description`, `type`, `enum`, `const`, limiti comuni + e campi di convalida simili), metadati dei suggerimenti UI corrispondenti e riepiloghi immediati dei nodi figli + per strumenti di approfondimento. +- Gli schemi runtime di plugin/canali vengono uniti quando il gateway può caricare il + registro dei manifest corrente. +- `pnpm config:docs:check` rileva divergenze tra gli artefatti di baseline della configurazione rivolti alla documentazione + e la superficie dello schema corrente. -Quando la validazione fallisce: +Quando la convalida fallisce: - Il Gateway non si avvia - Funzionano solo i comandi diagnostici (`openclaw doctor`, `openclaw logs`, `openclaw health`, `openclaw status`) @@ -114,7 +120,7 @@ Quando la validazione fallisce: - [iMessage](/it/channels/imessage) — `channels.imessage` - [Mattermost](/it/channels/mattermost) — `channels.mattermost` - Tutti i canali condividono lo stesso pattern di policy DM: + Tutti i canali condividono lo stesso modello di criterio DM: ```json5 { @@ -132,7 +138,7 @@ Quando la validazione fallisce: - Imposta il modello principale e gli eventuali fallback: + Imposta il modello primario e gli eventuali fallback: ```json5 { @@ -151,30 +157,30 @@ Quando la validazione fallisce: } ``` - - `agents.defaults.models` definisce il catalogo modelli e funge da allowlist per `/model`. + - `agents.defaults.models` definisce il catalogo dei modelli e funge da allowlist per `/model`. - I riferimenti ai modelli usano il formato `provider/model` (ad esempio `anthropic/claude-opus-4-6`). - - `agents.defaults.imageMaxDimensionPx` controlla il ridimensionamento delle immagini in trascrizione/strumenti (predefinito `1200`); valori inferiori in genere riducono l'uso di token vision nelle esecuzioni ricche di screenshot. - - Vedi [Models CLI](/concepts/models) per cambiare modello in chat e [Model Failover](/concepts/model-failover) per il comportamento di rotazione auth e fallback. - - Per provider personalizzati/self-hosted, vedi [Provider personalizzati](/gateway/configuration-reference#custom-providers-and-base-urls) nel riferimento. + - `agents.defaults.imageMaxDimensionPx` controlla il ridimensionamento delle immagini di transcript/tool (predefinito `1200`); valori più bassi di solito riducono l'uso di vision token nelle esecuzioni ricche di screenshot. + - Consulta [Models CLI](/it/concepts/models) per cambiare modello in chat e [Model Failover](/it/concepts/model-failover) per il comportamento di rotazione dell'autenticazione e fallback. + - Per provider personalizzati/self-hosted, consulta [Provider personalizzati](/it/gateway/configuration-reference#custom-providers-and-base-urls) nel riferimento. L'accesso DM è controllato per canale tramite `dmPolicy`: - - `"pairing"` (predefinito): i mittenti sconosciuti ricevono un codice pairing monouso da approvare - - `"allowlist"`: solo i mittenti in `allowFrom` (o nello store paired allow) - - `"open"`: consente tutti i DM in ingresso (richiede `allowFrom: ["*"]`) + - `"pairing"` (predefinito): i mittenti sconosciuti ricevono un codice di pairing monouso da approvare + - `"allowlist"`: solo i mittenti in `allowFrom` (o nello store allow associato) + - `"open"`: consenti tutti i DM in ingresso (richiede `allowFrom: ["*"]`) - `"disabled"`: ignora tutti i DM Per i gruppi, usa `groupPolicy` + `groupAllowFrom` o allowlist specifiche del canale. - Consulta il [riferimento completo](/gateway/configuration-reference#dm-and-group-access) per i dettagli per canale. + Consulta il [riferimento completo](/it/gateway/configuration-reference#dm-and-group-access) per i dettagli per canale. - - I messaggi di gruppo per impostazione predefinita **richiedono una menzione**. Configura i pattern per agente: + + Per impostazione predefinita, i messaggi di gruppo **richiedono una menzione**. Configura i pattern per agente: ```json5 { @@ -196,15 +202,14 @@ Quando la validazione fallisce: } ``` - - **Menzioni nei metadati**: @-mention native (tap-to-mention di WhatsApp, @bot di Telegram, ecc.) + - **Menzioni nei metadati**: @-mention native (WhatsApp tap-to-mention, Telegram @bot, ecc.) - **Pattern di testo**: pattern regex sicuri in `mentionPatterns` - - Consulta il [riferimento completo](/gateway/configuration-reference#group-chat-mention-gating) per override per canale e modalità self-chat. + - Consulta il [riferimento completo](/it/gateway/configuration-reference#group-chat-mention-gating) per gli override per canale e la modalità self-chat. - Usa `agents.defaults.skills` per una baseline condivisa, quindi fai override di - agenti specifici con `agents.list[].skills`: + Usa `agents.defaults.skills` per una baseline condivisa, quindi fai override di agenti specifici con `agents.list[].skills`: ```json5 { @@ -214,23 +219,23 @@ Quando la validazione fallisce: }, list: [ { id: "writer" }, // eredita github, weather - { id: "docs", skills: ["docs-search"] }, // sostituisce i default + { id: "docs", skills: ["docs-search"] }, // sostituisce i valori predefiniti { id: "locked-down", skills: [] }, // nessuna Skills ], }, } ``` - - Ometti `agents.defaults.skills` per avere Skills senza restrizioni per impostazione predefinita. + - Ometti `agents.defaults.skills` per Skills senza restrizioni per impostazione predefinita. - Ometti `agents.list[].skills` per ereditare i valori predefiniti. - Imposta `agents.list[].skills: []` per nessuna Skills. - - Consulta [Skills](/tools/skills), [Config Skills](/tools/skills-config) e - il [Riferimento configurazione](/gateway/configuration-reference#agentsdefaultsskills). + - Consulta [Skills](/it/tools/skills), [Configurazione delle Skills](/it/tools/skills-config), e + il [Riferimento di configurazione](/it/gateway/configuration-reference#agentsdefaultsskills). - Controlla quanto aggressivamente il gateway riavvia i canali che sembrano obsoleti: + Controlla quanto aggressivamente il gateway riavvia i canali che sembrano inattivi: ```json5 { @@ -252,20 +257,20 @@ Quando la validazione fallisce: } ``` - - Imposta `gateway.channelHealthCheckMinutes: 0` per disabilitare globalmente i riavvii del monitoraggio dello stato. - - `channelStaleEventThresholdMinutes` dovrebbe essere maggiore o uguale all'intervallo di controllo. + - Imposta `gateway.channelHealthCheckMinutes: 0` per disabilitare globalmente i riavvii del monitor di stato. + - `channelStaleEventThresholdMinutes` deve essere maggiore o uguale all'intervallo di controllo. - Usa `channels..healthMonitor.enabled` o `channels..accounts..healthMonitor.enabled` per disabilitare i riavvii automatici per un canale o account senza disabilitare il monitor globale. - - Consulta [Health Checks](/gateway/health) per il debug operativo e il [riferimento completo](/gateway/configuration-reference#gateway) per tutti i campi. + - Consulta [Controlli di stato](/it/gateway/health) per il debug operativo e il [riferimento completo](/it/gateway/configuration-reference#gateway) per tutti i campi. - - Le sessioni controllano continuità e isolamento della conversazione: + + Le sessioni controllano la continuità e l'isolamento delle conversazioni: ```json5 { session: { - dmScope: "per-channel-peer", // consigliato per multiutente + dmScope: "per-channel-peer", // consigliato per più utenti threadBindings: { enabled: true, idleHours: 24, @@ -282,13 +287,13 @@ Quando la validazione fallisce: - `dmScope`: `main` (condivisa) | `per-peer` | `per-channel-peer` | `per-account-channel-peer` - `threadBindings`: valori predefiniti globali per l'instradamento delle sessioni associate ai thread (Discord supporta `/focus`, `/unfocus`, `/agents`, `/session idle` e `/session max-age`). - - Consulta [Gestione delle sessioni](/concepts/session) per ambito, collegamenti di identità e policy di invio. - - Consulta il [riferimento completo](/gateway/configuration-reference#session) per tutti i campi. + - Consulta [Gestione delle sessioni](/it/concepts/session) per ambito, collegamenti di identità e criterio di invio. + - Consulta il [riferimento completo](/it/gateway/configuration-reference#session) per tutti i campi. - Esegui le sessioni agente in container Docker isolati: + Esegui le sessioni dell'agente in container Docker isolati: ```json5 { @@ -303,16 +308,16 @@ Quando la validazione fallisce: } ``` - Costruisci prima l'immagine: `scripts/sandbox-setup.sh` + Crea prima l'immagine: `scripts/sandbox-setup.sh` - Consulta [Sandboxing](/gateway/sandboxing) per la guida completa e il [riferimento completo](/gateway/configuration-reference#agentsdefaultssandbox) per tutte le opzioni. + Consulta [Sandboxing](/it/gateway/sandboxing) per la guida completa e il [riferimento completo](/it/gateway/configuration-reference#agentsdefaultssandbox) per tutte le opzioni. - Il push supportato da relay si configura in `openclaw.json`. + Il push supportato da relay è configurato in `openclaw.json`. - Imposta questo nella configurazione gateway: + Imposta questo nella configurazione del gateway: ```json5 { @@ -338,31 +343,31 @@ Quando la validazione fallisce: Cosa fa: - - Consente al gateway di inviare `push.test`, wake nudges e wake di riconnessione tramite il relay esterno. - - Usa un permesso di invio limitato alla registrazione inoltrato dall'app iOS paired. Il gateway non ha bisogno di un token relay valido per tutta la distribuzione. - - Associa ogni registrazione supportata da relay all'identità del gateway con cui l'app iOS ha effettuato il pairing, così un altro gateway non può riutilizzare la registrazione memorizzata. - - Mantiene le build iOS locali/manuali su APNs diretti. Gli invii supportati da relay si applicano solo alle build ufficiali distribuite che si sono registrate tramite il relay. + - Consente al gateway di inviare `push.test`, solleciti di wake e wake di riconnessione tramite il relay esterno. + - Usa un'autorizzazione di invio limitata alla registrazione inoltrata dall'app iOS associata. Il gateway non ha bisogno di un token relay valido per l'intera distribuzione. + - Associa ogni registrazione supportata da relay all'identità del gateway con cui l'app iOS è stata associata, così un altro gateway non può riutilizzare la registrazione memorizzata. + - Mantiene le build iOS locali/manuali su APNs diretto. Gli invii supportati da relay si applicano solo alle build ufficiali distribuite che si sono registrate tramite il relay. - Deve corrispondere al base URL del relay incorporato nella build iOS ufficiale/TestFlight, così il traffico di registrazione e invio raggiunge la stessa distribuzione relay. Flusso end-to-end: 1. Installa una build iOS ufficiale/TestFlight compilata con lo stesso base URL del relay. 2. Configura `gateway.push.apns.relay.baseUrl` sul gateway. - 3. Esegui il pairing dell'app iOS con il gateway e lascia che si connettano sia le sessioni node sia quelle operator. - 4. L'app iOS recupera l'identità del gateway, si registra presso il relay usando App Attest più la ricevuta dell'app e quindi pubblica il payload `push.apns.register` supportato da relay sul gateway paired. - 5. Il gateway memorizza l'handle relay e il permesso di invio, poi li usa per `push.test`, wake nudges e wake di riconnessione. + 3. Associa l'app iOS al gateway e lascia che si connettano sia le sessioni node sia quelle operatore. + 4. L'app iOS recupera l'identità del gateway, si registra presso il relay usando App Attest più la ricevuta dell'app e poi pubblica il payload `push.apns.register` supportato da relay sul gateway associato. + 5. Il gateway memorizza l'handle relay e l'autorizzazione di invio, quindi li usa per `push.test`, solleciti di wake e wake di riconnessione. Note operative: - - Se sposti l'app iOS su un gateway diverso, ricollega l'app così potrà pubblicare una nuova registrazione relay associata a quel gateway. - - Se distribuisci una nuova build iOS che punta a una distribuzione relay diversa, l'app aggiorna la registrazione relay memorizzata invece di riutilizzare la vecchia origine relay. + - Se passi l'app iOS a un gateway diverso, riconnetti l'app così può pubblicare una nuova registrazione relay associata a quel gateway. + - Se distribuisci una nuova build iOS che punta a una distribuzione relay diversa, l'app aggiorna la registrazione relay memorizzata nella cache invece di riutilizzare il vecchio relay di origine. Nota di compatibilità: - - `OPENCLAW_APNS_RELAY_BASE_URL` e `OPENCLAW_APNS_RELAY_TIMEOUT_MS` funzionano ancora come override temporanei via env. - - `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true` rimane una via di fuga di sviluppo solo loopback; non mantenere URL relay HTTP nella configurazione. + - `OPENCLAW_APNS_RELAY_BASE_URL` e `OPENCLAW_APNS_RELAY_TIMEOUT_MS` funzionano ancora come override temporanei dell'env. + - `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true` resta una via di fuga di sviluppo solo loopback; non rendere persistenti URL relay HTTP nella configurazione. - Consulta [App iOS](/platforms/ios#relay-backed-push-for-official-builds) per il flusso end-to-end e [Flusso di autenticazione e attendibilità](/platforms/ios#authentication-and-trust-flow) per il modello di sicurezza del relay. + Consulta [App iOS](/it/platforms/ios#relay-backed-push-for-official-builds) per il flusso end-to-end e [Flusso di autenticazione e trust](/it/platforms/ios#authentication-and-trust-flow) per il modello di sicurezza del relay. @@ -382,12 +387,12 @@ Quando la validazione fallisce: - `every`: stringa di durata (`30m`, `2h`). Imposta `0m` per disabilitare. - `target`: `last` | `none` | `` (ad esempio `discord`, `matrix`, `telegram` o `whatsapp`) - - `directPolicy`: `allow` (predefinito) oppure `block` per target heartbeat in stile DM - - Consulta [Heartbeat](/gateway/heartbeat) per la guida completa. + - `directPolicy`: `allow` (predefinito) o `block` per target heartbeat in stile DM + - Consulta [Heartbeat](/it/gateway/heartbeat) per la guida completa. - + ```json5 { cron: { @@ -402,9 +407,9 @@ Quando la validazione fallisce: } ``` - - `sessionRetention`: elimina le sessioni isolate completate da `sessions.json` (predefinito `24h`; imposta `false` per disabilitare). - - `runLog`: pota `cron/runs/.jsonl` in base a dimensione e righe mantenute. - - Consulta [Cron jobs](/it/automation/cron-jobs) per la panoramica della funzionalità e gli esempi CLI. + - `sessionRetention`: elimina dalle `sessions.json` le sessioni isolate completate (predefinito `24h`; imposta `false` per disabilitare). + - `runLog`: riduce `cron/runs/.jsonl` in base a dimensione e righe mantenute. + - Consulta [Job cron](/it/automation/cron-jobs) per la panoramica della funzionalità e gli esempi CLI. @@ -432,16 +437,16 @@ Quando la validazione fallisce: } ``` - Nota di sicurezza: + Nota sulla sicurezza: - Tratta tutto il contenuto dei payload hook/webhook come input non attendibile. - Usa un `hooks.token` dedicato; non riutilizzare il token condiviso del Gateway. - - L'autenticazione hook è solo header (`Authorization: Bearer ...` o `x-openclaw-token`); i token nella query string vengono rifiutati. + - L'autenticazione degli hook è solo tramite header (`Authorization: Bearer ...` o `x-openclaw-token`); i token nella query string vengono rifiutati. - `hooks.path` non può essere `/`; mantieni l'ingresso webhook su un sottopercorso dedicato come `/hooks`. - - Mantieni disabilitati i flag di bypass per contenuto non sicuro (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`) a meno che tu non stia facendo debug molto mirato. - - Se abiliti `hooks.allowRequestSessionKey`, imposta anche `hooks.allowedSessionKeyPrefixes` per limitare le chiavi di sessione selezionabili dal chiamante. - - Per agenti guidati da hook, preferisci livelli di modello moderni e forti e una policy strumenti rigorosa (ad esempio solo messaggistica più sandboxing dove possibile). + - Mantieni disabilitati i flag di bypass per contenuti non sicuri (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`) a meno che tu non stia facendo debug strettamente circoscritto. + - Se abiliti `hooks.allowRequestSessionKey`, imposta anche `hooks.allowedSessionKeyPrefixes` per limitare le chiavi di sessione selezionate dal chiamante. + - Per agenti guidati da hook, preferisci tier di modelli moderni e robusti e un criterio tool rigoroso (ad esempio solo messaggistica più sandboxing dove possibile). - Consulta il [riferimento completo](/gateway/configuration-reference#hooks) per tutte le opzioni di mapping e l'integrazione Gmail. + Consulta il [riferimento completo](/it/gateway/configuration-reference#hooks) per tutte le opzioni di mapping e l'integrazione con Gmail. @@ -463,12 +468,12 @@ Quando la validazione fallisce: } ``` - Consulta [Multi-Agent](/concepts/multi-agent) e il [riferimento completo](/gateway/configuration-reference#multi-agent-routing) per regole di binding e profili di accesso per agente. + Consulta [Multi-Agent](/it/concepts/multi-agent) e il [riferimento completo](/it/gateway/configuration-reference#multi-agent-routing) per le regole di binding e i profili di accesso per agente. - Usa `$include` per organizzare configurazioni grandi: + Usa `$include` per organizzare configurazioni di grandi dimensioni: ```json5 // ~/.openclaw/openclaw.json @@ -482,26 +487,26 @@ Quando la validazione fallisce: ``` - **File singolo**: sostituisce l'oggetto contenitore - - **Array di file**: deep-merge in ordine (l'ultimo vince) + - **Array di file**: unione profonda in ordine (vince l'ultimo) - **Chiavi sibling**: unite dopo gli include (sovrascrivono i valori inclusi) - - **Include annidati**: supportati fino a 10 livelli di profondità + - **Include nidificati**: supportati fino a 10 livelli di profondità - **Percorsi relativi**: risolti relativamente al file che include - - **Gestione errori**: errori chiari per file mancanti, errori di parsing e include circolari + - **Gestione degli errori**: errori chiari per file mancanti, errori di parsing e include circolari -## Hot reload della configurazione +## Ricaricamento a caldo della configurazione -Il Gateway osserva `~/.openclaw/openclaw.json` e applica automaticamente le modifiche — per la maggior parte delle impostazioni non è necessario alcun riavvio manuale. +Il Gateway osserva `~/.openclaw/openclaw.json` e applica automaticamente le modifiche — nella maggior parte dei casi non è necessario alcun riavvio manuale. -### Modalità di ricarica +### Modalità di ricaricamento | Modalità | Comportamento | | ---------------------- | -------------------------------------------------------------------------------------- | -| **`hybrid`** (predefinita) | Applica a caldo immediatamente le modifiche sicure. Si riavvia automaticamente per quelle critiche. | -| **`hot`** | Applica a caldo solo le modifiche sicure. Registra un avviso quando è necessario un riavvio — lo gestisci tu. | -| **`restart`** | Riavvia il Gateway a ogni modifica della configurazione, sicura o meno. | +| **`hybrid`** (predefinita) | Applica a caldo immediatamente le modifiche sicure. Riavvia automaticamente per quelle critiche. | +| **`hot`** | Applica a caldo solo le modifiche sicure. Registra un avviso quando è necessario un riavvio — te ne occupi tu. | +| **`restart`** | Riavvia il Gateway per qualsiasi modifica della configurazione, sicura o meno. | | **`off`** | Disabilita l'osservazione del file. Le modifiche hanno effetto al successivo riavvio manuale. | ```json5 @@ -514,18 +519,18 @@ Il Gateway osserva `~/.openclaw/openclaw.json` e applica automaticamente le modi ### Cosa viene applicato a caldo e cosa richiede un riavvio -La maggior parte dei campi viene applicata a caldo senza downtime. In modalità `hybrid`, le modifiche che richiedono un riavvio vengono gestite automaticamente. +La maggior parte dei campi viene applicata a caldo senza downtime. In modalità `hybrid`, le modifiche che richiedono riavvio vengono gestite automaticamente. -| Categoria | Campi | Riavvio necessario? | -| ------------------- | -------------------------------------------------------------------- | --------------- | -| Canali | `channels.*`, `web` (WhatsApp) — tutti i canali built-in ed extension | No | -| Agente e modelli | `agent`, `agents`, `models`, `routing` | No | -| Automazione | `hooks`, `cron`, `agent.heartbeat` | No | -| Sessioni e messaggi | `session`, `messages` | No | -| Strumenti e media | `tools`, `browser`, `skills`, `audio`, `talk` | No | -| UI e varie | `ui`, `logging`, `identity`, `bindings` | No | -| Server Gateway | `gateway.*` (porta, bind, auth, tailscale, TLS, HTTP) | **Sì** | -| Infrastruttura | `discovery`, `canvasHost`, `plugins` | **Sì** | +| Categoria | Campi | Riavvio necessario? | +| -------------------- | -------------------------------------------------------------------- | ------------------- | +| Canali | `channels.*`, `web` (WhatsApp) — tutti i canali built-in e di estensione | No | +| Agente e modelli | `agent`, `agents`, `models`, `routing` | No | +| Automazione | `hooks`, `cron`, `agent.heartbeat` | No | +| Sessioni e messaggi | `session`, `messages` | No | +| Strumenti e media | `tools`, `browser`, `skills`, `audio`, `talk` | No | +| UI e varie | `ui`, `logging`, `identity`, `bindings` | No | +| Server gateway | `gateway.*` (port, bind, auth, tailscale, TLS, HTTP) | **Sì** | +| Infrastruttura | `discovery`, `canvasHost`, `plugins` | **Sì** | `gateway.reload` e `gateway.remote` sono eccezioni — modificarli **non** attiva un riavvio. @@ -534,23 +539,24 @@ La maggior parte dei campi viene applicata a caldo senza downtime. In modalità ## RPC di configurazione (aggiornamenti programmatici) -Le RPC di scrittura del control-plane (`config.apply`, `config.patch`, `update.run`) hanno un rate limit di **3 richieste per 60 secondi** per `deviceId+clientIp`. Quando il limite viene raggiunto, la RPC restituisce `UNAVAILABLE` con `retryAfterMs`. +Le RPC di scrittura del control plane (`config.apply`, `config.patch`, `update.run`) sono soggette a rate limit di **3 richieste ogni 60 secondi** per `deviceId+clientIp`. Quando si raggiunge il limite, la RPC restituisce `UNAVAILABLE` con `retryAfterMs`. Flusso sicuro/predefinito: -- `config.schema.lookup`: ispeziona un sottoalbero di configurazione limitato a un percorso con un nodo di schema superficiale, metadati di suggerimento corrispondenti e riepiloghi dei figli immediati -- `config.get`: recupera l'istantanea corrente + hash +- `config.schema.lookup`: ispeziona un sottoalbero della configurazione limitato a un percorso con un nodo di schema superficiale, + metadati dei suggerimenti corrispondenti e riepiloghi immediati dei nodi figli +- `config.get`: recupera lo snapshot corrente + hash - `config.patch`: percorso preferito per aggiornamenti parziali -- `config.apply`: sostituzione completa della configurazione solo -- `update.run`: auto-aggiornamento esplicito + riavvio +- `config.apply`: solo sostituzione completa della configurazione +- `update.run`: autoaggiornamento esplicito + riavvio Quando non stai sostituendo l'intera configurazione, preferisci `config.schema.lookup` poi `config.patch`. - Valida + scrive l'intera configurazione e riavvia il Gateway in un unico passaggio. + Convalida + scrive l'intera configurazione e riavvia il Gateway in un solo passaggio. `config.apply` sostituisce l'**intera configurazione**. Usa `config.patch` per aggiornamenti parziali, oppure `openclaw config set` per singole chiavi. @@ -559,8 +565,8 @@ poi `config.patch`. Parametri: - `raw` (stringa) — payload JSON5 per l'intera configurazione - - `baseHash` (facoltativo) — hash di configurazione da `config.get` (obbligatorio quando la configurazione esiste) - - `sessionKey` (facoltativo) — chiave di sessione per il ping di wake-up post-riavvio + - `baseHash` (facoltativo) — hash della configurazione da `config.get` (richiesto quando la configurazione esiste) + - `sessionKey` (facoltativo) — chiave di sessione per il ping di riattivazione post-riavvio - `note` (facoltativo) — nota per il sentinel di riavvio - `restartDelayMs` (facoltativo) — ritardo prima del riavvio (predefinito 2000) @@ -578,16 +584,16 @@ poi `config.patch`. - Unisce un aggiornamento parziale alla configurazione esistente (semantica JSON merge patch): + Unisce un aggiornamento parziale nella configurazione esistente (semantica JSON merge patch): - Gli oggetti vengono uniti ricorsivamente - `null` elimina una chiave - - Gli array sostituiscono + - Gli array vengono sostituiti Parametri: - `raw` (stringa) — JSON5 con solo le chiavi da modificare - - `baseHash` (obbligatorio) — hash di configurazione da `config.get` + - `baseHash` (obbligatorio) — hash della configurazione da `config.get` - `sessionKey`, `note`, `restartDelayMs` — uguali a `config.apply` Il comportamento di riavvio corrisponde a `config.apply`: riavvii in attesa accorpati più un cooldown di 30 secondi tra i cicli di riavvio. @@ -621,7 +627,7 @@ Nessuno dei due file sovrascrive le variabili d'ambiente esistenti. Puoi anche i ``` - Se abilitato e le chiavi previste non sono impostate, OpenClaw esegue la shell di login e importa solo le chiavi mancanti: + Se abilitato e le chiavi previste non sono impostate, OpenClaw esegue la tua login shell e importa solo le chiavi mancanti: ```json5 { @@ -635,7 +641,7 @@ Equivalente come variabile d'ambiente: `OPENCLAW_LOAD_SHELL_ENV=1` - Fai riferimento alle variabili d'ambiente in qualsiasi valore stringa della configurazione con `${VAR_NAME}`: + Riferisci le variabili d'ambiente in qualsiasi valore stringa della configurazione con `${VAR_NAME}`: ```json5 { @@ -646,15 +652,15 @@ Equivalente come variabile d'ambiente: `OPENCLAW_LOAD_SHELL_ENV=1` Regole: -- Vengono riconosciuti solo nomi maiuscoli corrispondenti a: `[A-Z_][A-Z0-9_]*` -- Variabili mancanti/vuote generano un errore al caricamento -- Esegui l'escape con `$${VAR}` per output letterale -- Funziona nei file `$include` +- Vengono corrisposti solo nomi in maiuscolo: `[A-Z_][A-Z0-9_]*` +- Variabili mancanti/vuote generano un errore in fase di caricamento +- Usa l'escape `$${VAR}` per output letterale +- Funziona all'interno dei file `$include` - Sostituzione inline: `"${BASE}/v1"` → `"https://api.example.com/v1"` - + Per i campi che supportano oggetti SecretRef, puoi usare: ```json5 @@ -687,16 +693,16 @@ Regole: } ``` -I dettagli su SecretRef (inclusi `secrets.providers` per `env`/`file`/`exec`) sono in [Gestione dei secret](/gateway/secrets). -I percorsi credenziali supportati sono elencati in [Superficie credenziali SecretRef](/reference/secretref-credential-surface). +I dettagli di SecretRef (inclusi `secrets.providers` per `env`/`file`/`exec`) sono in [Gestione dei segreti](/it/gateway/secrets). +I percorsi delle credenziali supportati sono elencati in [Superficie delle credenziali SecretRef](/it/reference/secretref-credential-surface). -Consulta [Ambiente](/help/environment) per la precedenza completa e le sorgenti. +Consulta [Ambiente](/it/help/environment) per la precedenza completa e le origini. ## Riferimento completo -Per il riferimento completo campo per campo, consulta **[Riferimento configurazione](/gateway/configuration-reference)**. +Per il riferimento completo campo per campo, consulta **[Riferimento di configurazione](/it/gateway/configuration-reference)**. --- -_Correlati: [Esempi di configurazione](/gateway/configuration-examples) · [Riferimento configurazione](/gateway/configuration-reference) · [Doctor](/gateway/doctor)_ +_Correlati: [Esempi di configurazione](/it/gateway/configuration-examples) · [Riferimento di configurazione](/it/gateway/configuration-reference) · [Doctor](/it/gateway/doctor)_ diff --git a/docs/it/plugins/memory-wiki.md b/docs/it/plugins/memory-wiki.md new file mode 100644 index 000000000..f02b16bd1 --- /dev/null +++ b/docs/it/plugins/memory-wiki.md @@ -0,0 +1,370 @@ +--- +read_when: + - Vuoi una conoscenza persistente oltre alle semplici note MEMORY.md + - Stai configurando il plugin bundled memory-wiki + - Vuoi capire wiki_search, wiki_get o la modalità bridge +summary: 'memory-wiki: archivio di conoscenza compilato con provenienza, asserzioni, dashboard e modalità bridge' +title: Wiki della memoria +x-i18n: + generated_at: "2026-04-08T06:01:10Z" + model: gpt-5.4 + provider: openai + source_hash: b78dd6a4ef4451dae6b53197bf0c7c2a2ba846b08e4a3a93c1026366b1598d82 + source_path: plugins/memory-wiki.md + workflow: 15 +--- + +# Wiki della memoria + +`memory-wiki` è un plugin bundled che trasforma la memoria durevole in un +archivio di conoscenza compilato. + +**Non** sostituisce il plugin di memoria attivo. Il plugin di memoria attivo +continua a gestire richiamo, promozione, indicizzazione e dreaming. `memory-wiki` +si affianca ad esso e compila la conoscenza durevole in una wiki navigabile con +pagine deterministiche, asserzioni strutturate, provenienza, dashboard e digest +leggibili dalle macchine. + +Usalo quando vuoi che la memoria si comporti più come un livello di conoscenza +mantenuto e meno come un insieme di file Markdown. + +## Cosa aggiunge + +- Un archivio wiki dedicato con layout delle pagine deterministico +- Metadati strutturati per asserzioni ed evidenze, non solo prosa +- Provenienza a livello di pagina, confidenza, contraddizioni e domande aperte +- Digest compilati per i consumer agent/runtime +- Strumenti nativi della wiki per search/get/apply/lint +- Modalità bridge opzionale che importa artefatti pubblici dal plugin di memoria attivo +- Modalità di rendering opzionale compatibile con Obsidian e integrazione CLI + +## Come si integra con la memoria + +Considera la suddivisione in questo modo: + +| Livello | Gestisce | +| ------------------------------------------------------- | ------------------------------------------------------------------------------------------ | +| Plugin di memoria attivo (`memory-core`, QMD, Honcho, ecc.) | Richiamo, ricerca semantica, promozione, dreaming, runtime della memoria | +| `memory-wiki` | Pagine wiki compilate, sintesi ricche di provenienza, dashboard, search/get/apply specifici della wiki | + +Se il plugin di memoria attivo espone artefatti di richiamo condivisi, OpenClaw può cercare +in entrambi i livelli in un unico passaggio con `memory_search corpus=all`. + +Quando ti servono ranking specifico della wiki, provenienza o accesso diretto +alle pagine, usa invece gli strumenti nativi della wiki. + +## Modalità dell'archivio + +`memory-wiki` supporta tre modalità di archivio: + +### `isolated` + +Archivio proprio, sorgenti proprie, nessuna dipendenza da `memory-core`. + +Usa questa modalità quando vuoi che la wiki sia il proprio archivio di +conoscenza curato. + +### `bridge` + +Legge artefatti pubblici della memoria ed eventi di memoria dal plugin di memoria attivo +tramite punti di integrazione pubblici del plugin SDK. + +Usa questa modalità quando vuoi che la wiki compili e organizzi gli +artefatti esportati dal plugin di memoria senza accedere agli elementi interni +privati del plugin. + +La modalità bridge può indicizzare: + +- artefatti di memoria esportati +- report di dream +- note giornaliere +- file radice della memoria +- log degli eventi di memoria + +### `unsafe-local` + +Via di fuga esplicita sulla stessa macchina per percorsi privati locali. + +Questa modalità è intenzionalmente sperimentale e non portabile. Usala solo se +comprendi il confine di fiducia e hai bisogno in modo specifico di accesso al +filesystem locale che la modalità bridge non può fornire. + +## Layout dell'archivio + +Il plugin inizializza un archivio in questo modo: + +```text +/ + AGENTS.md + WIKI.md + index.md + inbox.md + entities/ + concepts/ + syntheses/ + sources/ + reports/ + _attachments/ + _views/ + .openclaw-wiki/ +``` + +Il contenuto gestito rimane all'interno di blocchi generati. I blocchi di note +umani vengono preservati. + +I gruppi principali di pagine sono: + +- `sources/` per materiale grezzo importato e pagine supportate dal bridge +- `entities/` per elementi durevoli, persone, sistemi, progetti e oggetti +- `concepts/` per idee, astrazioni, pattern e policy +- `syntheses/` per riepiloghi compilati e rollup mantenuti +- `reports/` per dashboard generate + +## Asserzioni ed evidenze strutturate + +Le pagine possono includere `claims` nel frontmatter strutturato, non solo testo libero. + +Ogni asserzione può includere: + +- `id` +- `text` +- `status` +- `confidence` +- `evidence[]` +- `updatedAt` + +Le voci di evidenza possono includere: + +- `sourceId` +- `path` +- `lines` +- `weight` +- `note` +- `updatedAt` + +È questo che fa sì che la wiki si comporti più come un livello di credenze che +come un archivio passivo di note. Le asserzioni possono essere tracciate, +valutate, contestate e ricondotte alle sorgenti. + +## Pipeline di compilazione + +Il passaggio di compilazione legge le pagine della wiki, normalizza i riepiloghi +ed emette artefatti stabili orientati alle macchine in: + +- `.openclaw-wiki/cache/agent-digest.json` +- `.openclaw-wiki/cache/claims.jsonl` + +Questi digest esistono affinché gli agent e il codice runtime non debbano fare scraping +delle pagine Markdown. + +L'output compilato alimenta anche: + +- indicizzazione iniziale della wiki per i flussi di search/get +- lookup degli id delle asserzioni per risalire alle pagine proprietarie +- supplementi compatti per i prompt +- generazione di report/dashboard + +## Dashboard e report di stato + +Quando `render.createDashboards` è abilitato, la compilazione mantiene le dashboard in `reports/`. + +I report integrati includono: + +- `reports/open-questions.md` +- `reports/contradictions.md` +- `reports/low-confidence.md` +- `reports/claim-health.md` +- `reports/stale-pages.md` + +Questi report tengono traccia di elementi come: + +- cluster di note di contraddizione +- cluster di asserzioni concorrenti +- asserzioni prive di evidenze strutturate +- pagine e asserzioni a bassa confidenza +- aggiornamento obsoleto o sconosciuto +- pagine con domande irrisolte + +## Ricerca e recupero + +`memory-wiki` supporta due backend di ricerca: + +- `shared`: usa il flusso di ricerca della memoria condivisa quando disponibile +- `local`: cerca nella wiki localmente + +Supporta anche tre corpora: + +- `wiki` +- `memory` +- `all` + +Comportamento importante: + +- `wiki_search` e `wiki_get` usano i digest compilati come primo passaggio quando possibile +- gli id delle asserzioni possono essere ricondotti alla pagina proprietaria +- asserzioni contestate/obsolete/aggiornate influenzano il ranking +- le etichette di provenienza possono essere mantenute nei risultati + +Regola pratica: + +- usa `memory_search corpus=all` per un singolo passaggio ampio di richiamo +- usa `wiki_search` + `wiki_get` quando ti interessano ranking specifico della wiki, + provenienza o struttura delle credenze a livello di pagina + +## Strumenti dell'agente + +Il plugin registra questi strumenti: + +- `wiki_status` +- `wiki_search` +- `wiki_get` +- `wiki_apply` +- `wiki_lint` + +Cosa fanno: + +- `wiki_status`: modalità dell'archivio corrente, stato, disponibilità della CLI di Obsidian +- `wiki_search`: cerca nelle pagine wiki e, quando configurato, nei corpora di memoria condivisa +- `wiki_get`: legge una pagina wiki per id/percorso o ripiega sul corpus di memoria condivisa +- `wiki_apply`: mutazioni ristrette di sintesi/metadati senza interventi liberi sulla pagina +- `wiki_lint`: controlli strutturali, lacune di provenienza, contraddizioni, domande aperte + +Il plugin registra anche un supplemento di corpus di memoria non esclusivo, così +`memory_search` e `memory_get` condivisi possono raggiungere la wiki quando il plugin di memoria +attivo supporta la selezione del corpus. + +## Comportamento di prompt e contesto + +Quando `context.includeCompiledDigestPrompt` è abilitato, le sezioni del prompt della memoria +aggiungono uno snapshot compilato compatto da `agent-digest.json`. + +Quello snapshot è intenzionalmente piccolo e ad alto segnale: + +- solo pagine principali +- solo asserzioni principali +- conteggio delle contraddizioni +- conteggio delle domande +- qualificatori di confidenza/aggiornamento + +Questa opzione è facoltativa perché modifica la forma del prompt ed è utile +soprattutto per i motori di contesto o per l'assemblaggio legacy dei prompt che +consumano esplicitamente supplementi di memoria. + +## Configurazione + +Inserisci la configurazione sotto `plugins.entries.memory-wiki.config`: + +```json5 +{ + plugins: { + entries: { + "memory-wiki": { + enabled: true, + config: { + vaultMode: "isolated", + vault: { + path: "~/.openclaw/wiki/main", + renderMode: "obsidian", + }, + obsidian: { + enabled: true, + useOfficialCli: true, + vaultName: "OpenClaw Wiki", + openAfterWrites: false, + }, + bridge: { + enabled: false, + readMemoryArtifacts: true, + indexDreamReports: true, + indexDailyNotes: true, + indexMemoryRoot: true, + followMemoryEvents: true, + }, + ingest: { + autoCompile: true, + maxConcurrentJobs: 1, + allowUrlIngest: true, + }, + search: { + backend: "shared", + corpus: "wiki", + }, + context: { + includeCompiledDigestPrompt: false, + }, + render: { + preserveHumanBlocks: true, + createBacklinks: true, + createDashboards: true, + }, + }, + }, + }, + }, +} +``` + +Interruttori principali: + +- `vaultMode`: `isolated`, `bridge`, `unsafe-local` +- `vault.renderMode`: `native` o `obsidian` +- `bridge.readMemoryArtifacts`: importa gli artefatti pubblici del plugin di memoria attivo +- `bridge.followMemoryEvents`: include i log degli eventi in modalità bridge +- `search.backend`: `shared` o `local` +- `search.corpus`: `wiki`, `memory` o `all` +- `context.includeCompiledDigestPrompt`: aggiunge uno snapshot compatto del digest alle sezioni del prompt della memoria +- `render.createBacklinks`: genera blocchi correlati deterministici +- `render.createDashboards`: genera pagine dashboard + +## CLI + +`memory-wiki` espone anche una superficie CLI di primo livello: + +```bash +openclaw wiki status +openclaw wiki doctor +openclaw wiki init +openclaw wiki ingest ./notes/alpha.md +openclaw wiki compile +openclaw wiki lint +openclaw wiki search "alpha" +openclaw wiki get entity.alpha +openclaw wiki apply synthesis "Alpha Summary" --body "..." --source-id source.alpha +openclaw wiki bridge import +openclaw wiki obsidian status +``` + +Vedi [CLI: wiki](/cli/wiki) per il riferimento completo dei comandi. + +## Supporto Obsidian + +Quando `vault.renderMode` è impostato su `obsidian`, il plugin scrive Markdown +compatibile con Obsidian e può facoltativamente usare la CLI ufficiale `obsidian`. + +I flussi di lavoro supportati includono: + +- verifica dello stato +- ricerca nell'archivio +- apertura di una pagina +- invocazione di un comando Obsidian +- salto alla nota giornaliera + +Questa opzione è facoltativa. La wiki continua a funzionare in modalità nativa +anche senza Obsidian. + +## Flusso di lavoro consigliato + +1. Mantieni il tuo plugin di memoria attivo per richiamo/promozione/dreaming. +2. Abilita `memory-wiki`. +3. Inizia con la modalità `isolated` a meno che tu non voglia esplicitamente la modalità bridge. +4. Usa `wiki_search` / `wiki_get` quando la provenienza è importante. +5. Usa `wiki_apply` per sintesi ristrette o aggiornamenti dei metadati. +6. Esegui `wiki_lint` dopo modifiche significative. +7. Attiva le dashboard se vuoi visibilità su contenuti obsoleti/contraddizioni. + +## Documentazione correlata + +- [Panoramica della memoria](/it/concepts/memory) +- [CLI: memory](/cli/memory) +- [CLI: wiki](/cli/wiki) +- [Panoramica del Plugin SDK](/it/plugins/sdk-overview) diff --git a/docs/it/providers/glm.md b/docs/it/providers/glm.md index b15d9e326..eae1df7ba 100644 --- a/docs/it/providers/glm.md +++ b/docs/it/providers/glm.md @@ -1,33 +1,33 @@ --- read_when: - - Vuoi i modelli GLM in OpenClaw - - Hai bisogno della convenzione di naming dei modelli e del setup + - Vuoi usare i modelli GLM in OpenClaw + - Hai bisogno della convenzione di denominazione dei modelli e della configurazione summary: Panoramica della famiglia di modelli GLM + come usarla in OpenClaw title: Modelli GLM x-i18n: - generated_at: "2026-04-05T14:01:19Z" + generated_at: "2026-04-08T06:00:53Z" model: gpt-5.4 provider: openai - source_hash: 59622edab5094d991987f9788fbf08b33325e737e7ff88632b0c3ac89412d4c7 + source_hash: 79a55acfa139847b4b85dbc09f1068cbd2febb1e49f984a23ea9e3b43bc910eb source_path: providers/glm.md workflow: 15 --- # Modelli GLM -GLM è una **famiglia di modelli** (non un'azienda) disponibile tramite la piattaforma Z.AI. In OpenClaw, i modelli -GLM sono accessibili tramite il provider `zai` e ID modello come `zai/glm-5`. +GLM è una **famiglia di modelli** (non un'azienda) disponibile tramite la piattaforma Z.AI. In OpenClaw, i modelli GLM +si usano tramite il provider `zai` e ID modello come `zai/glm-5`. -## Setup CLI +## Configurazione della CLI ```bash -# Setup generico con chiave API e rilevamento automatico dell'endpoint +# Configurazione generica della chiave API con rilevamento automatico dell'endpoint openclaw onboard --auth-choice zai-api-key -# Coding Plan Global, consigliato per gli utenti Coding Plan +# Piano Coding Global, consigliato per gli utenti di Coding Plan openclaw onboard --auth-choice zai-coding-global -# Coding Plan CN (regione Cina), consigliato per gli utenti Coding Plan +# Piano Coding CN (regione Cina), consigliato per gli utenti di Coding Plan openclaw onboard --auth-choice zai-coding-cn # API generale @@ -37,22 +37,22 @@ openclaw onboard --auth-choice zai-global openclaw onboard --auth-choice zai-cn ``` -## Snippet di configurazione +## Frammento di configurazione ```json5 { env: { ZAI_API_KEY: "sk-..." }, - agents: { defaults: { model: { primary: "zai/glm-5" } } }, + agents: { defaults: { model: { primary: "zai/glm-5.1" } } }, } ``` `zai-api-key` consente a OpenClaw di rilevare l'endpoint Z.AI corrispondente dalla chiave e -applicare automaticamente il base URL corretto. Usa le scelte regionali esplicite quando -vuoi forzare una specifica superficie Coding Plan o API generale. +applicare automaticamente l'URL di base corretto. Usa le scelte regionali esplicite quando +vuoi forzare una specifica superficie del Piano Coding o dell'API generale. ## Modelli GLM bundled attuali -OpenClaw attualmente inizializza il provider bundled `zai` con questi riferimenti GLM: +OpenClaw attualmente inizializza il provider `zai` bundled con questi riferimenti GLM: - `glm-5.1` - `glm-5` @@ -70,6 +70,6 @@ OpenClaw attualmente inizializza il provider bundled `zai` con questi riferiment ## Note -- Le versioni e la disponibilità di GLM possono cambiare; consulta la documentazione di Z.AI per le novità. -- Il riferimento di modello bundled predefinito è `zai/glm-5`. -- Per i dettagli del provider, vedi [/providers/zai](/providers/zai). +- Le versioni e la disponibilità di GLM possono cambiare; controlla la documentazione di Z.AI per le informazioni più aggiornate. +- Il riferimento al modello bundled predefinito è `zai/glm-5.1`. +- Per i dettagli sul provider, vedi [/providers/zai](/it/providers/zai). diff --git a/docs/it/providers/zai.md b/docs/it/providers/zai.md index ce28fccf3..701a2fff0 100644 --- a/docs/it/providers/zai.md +++ b/docs/it/providers/zai.md @@ -1,34 +1,34 @@ --- read_when: - - Vuoi usare modelli Z.AI / GLM in OpenClaw - - Hai bisogno di una semplice configurazione di `ZAI_API_KEY` + - Vuoi usare Z.AI / i modelli GLM in OpenClaw + - Hai bisogno di una semplice configurazione con ZAI_API_KEY summary: Usare Z.AI (modelli GLM) con OpenClaw title: Z.AI x-i18n: - generated_at: "2026-04-05T14:02:36Z" + generated_at: "2026-04-08T06:01:02Z" model: gpt-5.4 provider: openai - source_hash: 48006cdd580484f0c62e2877b27a6a68d7bc44795b3e97a28213d95182d9acf9 + source_hash: 66cbd9813ee28d202dcae34debab1b0cf9927793acb00743c1c62b48d9e381f9 source_path: providers/zai.md workflow: 15 --- # Z.AI -Z.AI è la piattaforma API per i modelli **GLM**. Fornisce API REST per GLM e usa API key -per l'autenticazione. Crea la tua API key nella console Z.AI. OpenClaw usa il provider `zai` -con una API key Z.AI. +Z.AI è la piattaforma API per i modelli **GLM**. Fornisce API REST per GLM e usa chiavi API +per l'autenticazione. Crea la tua chiave API nella console di Z.AI. OpenClaw usa il provider `zai` +con una chiave API di Z.AI. -## Configurazione CLI +## Configurazione della CLI ```bash -# Configurazione generica con API key e rilevamento automatico dell'endpoint +# Configurazione generica della chiave API con rilevamento automatico dell'endpoint openclaw onboard --auth-choice zai-api-key -# Coding Plan Global, consigliato per gli utenti Coding Plan +# Piano Coding Global, consigliato per gli utenti di Coding Plan openclaw onboard --auth-choice zai-coding-global -# Coding Plan CN (regione Cina), consigliato per gli utenti Coding Plan +# Piano Coding CN (regione Cina), consigliato per gli utenti di Coding Plan openclaw onboard --auth-choice zai-coding-cn # API generale @@ -38,22 +38,22 @@ openclaw onboard --auth-choice zai-global openclaw onboard --auth-choice zai-cn ``` -## Esempio di configurazione +## Frammento di configurazione ```json5 { env: { ZAI_API_KEY: "sk-..." }, - agents: { defaults: { model: { primary: "zai/glm-5" } } }, + agents: { defaults: { model: { primary: "zai/glm-5.1" } } }, } ``` -`zai-api-key` consente a OpenClaw di rilevare dall'API key l'endpoint Z.AI corrispondente -e applicare automaticamente il `baseUrl` corretto. Usa le scelte regionali esplicite quando -vuoi forzare una specifica superficie Coding Plan o API generale. +`zai-api-key` consente a OpenClaw di rilevare l'endpoint Z.AI corrispondente dalla chiave e +applicare automaticamente l'URL di base corretto. Usa le scelte regionali esplicite quando +vuoi forzare una specifica superficie del Piano Coding o dell'API generale. -## Catalogo GLM incluso +## Catalogo GLM bundled -Attualmente OpenClaw inizializza il provider `zai` incluso con: +OpenClaw attualmente inizializza il provider `zai` bundled con: - `glm-5.1` - `glm-5` @@ -72,11 +72,11 @@ Attualmente OpenClaw inizializza il provider `zai` incluso con: ## Note - I modelli GLM sono disponibili come `zai/` (esempio: `zai/glm-5`). -- Riferimento al modello incluso predefinito: `zai/glm-5` -- Gli id `glm-5*` sconosciuti vengono comunque risolti in inoltro sul percorso del provider incluso - sintetizzando metadati di proprietà del provider a partire dal template `glm-4.7` quando l'id - corrisponde all'attuale struttura della famiglia GLM-5. -- `tool_stream` è abilitato per impostazione predefinita per lo streaming delle tool call Z.AI. Imposta +- Riferimento al modello bundled predefinito: `zai/glm-5.1` +- Gli ID `glm-5*` sconosciuti continuano a essere risolti in inoltro sul percorso del provider bundled + sintetizzando metadati di proprietà del provider dal modello `glm-4.7` quando l'ID + corrisponde alla forma attuale della famiglia GLM-5. +- `tool_stream` è abilitato per impostazione predefinita per lo streaming delle chiamate agli strumenti di Z.AI. Imposta `agents.defaults.models["zai/"].params.tool_stream` su `false` per disabilitarlo. -- Vedi [/providers/glm](/providers/glm) per la panoramica della famiglia di modelli. -- Z.AI usa autenticazione Bearer con la tua API key. +- Vedi [/providers/glm](/it/providers/glm) per la panoramica della famiglia di modelli. +- Z.AI usa l'autenticazione Bearer con la tua chiave API. diff --git a/docs/it/refactor/qa.md b/docs/it/refactor/qa.md index d113c2dff..d1b3eb21d 100644 --- a/docs/it/refactor/qa.md +++ b/docs/it/refactor/qa.md @@ -1,91 +1,95 @@ --- x-i18n: - generated_at: "2026-04-08T02:18:14Z" + generated_at: "2026-04-08T06:01:40Z" model: gpt-5.4 provider: openai - source_hash: 0e156cc8e2fe946a0423862f937754a7caa1fe7e6863b50a80bff49a1c86e1e8 + source_hash: 4a9066b2a939c5a9ba69141d75405f0e8097997b523164340e2f0e9a0d5060dd source_path: refactor/qa.md workflow: 15 --- -# Refactor QA +# Refactor di QA Stato: migrazione fondamentale completata. ## Obiettivo -Spostare la QA di OpenClaw da un modello a definizione suddivisa a una singola fonte di verità: +Spostare il sistema QA di OpenClaw da un modello a definizione suddivisa a un'unica fonte di verità: -- metadati dello scenario +- metadati degli scenari - prompt inviati al modello - setup e teardown - logica dell'harness - asserzioni e criteri di successo -- artifact e suggerimenti per il report +- artifact e suggerimenti per i report -Lo stato finale desiderato è un harness QA generico che carica potenti file di definizione degli scenari invece di codificare rigidamente la maggior parte del comportamento in TypeScript. +Lo stato finale desiderato è un harness QA generico che carichi file di definizione degli scenari potenti invece di hardcodare la maggior parte del comportamento in TypeScript. ## Stato attuale -La fonte di verità primaria ora si trova in `qa/scenarios.md`. +La fonte primaria di verità ora si trova in `qa/scenarios/index.md` più un file per +ogni scenario in `qa/scenarios/*.md`. Implementato: -- `qa/scenarios.md` - - pack QA canonico +- `qa/scenarios/index.md` + - metadati canonici del pacchetto QA - identità dell'operatore - - missione di kickoff + - missione di avvio +- `qa/scenarios/*.md` + - un file markdown per scenario - metadati dello scenario - binding degli handler + - configurazione di esecuzione specifica dello scenario - `extensions/qa-lab/src/scenario-catalog.ts` - - parser del pack Markdown + validazione zod + - parser del pacchetto markdown + validazione zod - `extensions/qa-lab/src/qa-agent-bootstrap.ts` - - rendering del piano dal pack Markdown + - rendering del piano dal pacchetto markdown - `extensions/qa-lab/src/qa-agent-workspace.ts` - - inizializza file di compatibilità generati più `QA_SCENARIOS.md` + - genera file di compatibilità iniziali più `QA_SCENARIOS.md` - `extensions/qa-lab/src/suite.ts` - - seleziona scenari eseguibili tramite binding degli handler definiti nel Markdown -- Protocollo bus QA + UI + - seleziona gli scenari eseguibili tramite binding degli handler definiti nel markdown +- protocollo QA bus + UI - allegati inline generici per il rendering di immagini/video/audio/file Superfici ancora suddivise: - `extensions/qa-lab/src/suite.ts` - - gestisce ancora la maggior parte della logica eseguibile degli handler personalizzati + - possiede ancora la maggior parte della logica eseguibile degli handler personalizzati - `extensions/qa-lab/src/report.ts` - - deriva ancora la struttura del report dagli output di runtime + - ricava ancora la struttura del report dagli output di runtime -Quindi la divisione della fonte di verità è stata corretta, ma l'esecuzione è ancora per lo più supportata da handler anziché essere completamente dichiarativa. +Quindi la divisione della fonte di verità è stata risolta, ma l'esecuzione è ancora per lo più basata su handler invece di essere completamente dichiarativa. -## Che aspetto ha realmente la superficie degli scenari +## Come appare davvero la superficie degli scenari -Leggendo la suite attuale si vedono alcune classi distinte di scenari. +Leggere la suite attuale mostra alcune classi distinte di scenari. ### Interazione semplice - baseline del canale - baseline DM - follow-up in thread -- cambio modello +- cambio di modello - completamento dell'approvazione -- reaction/edit/delete +- reazione/modifica/eliminazione -### Mutazione di configurazione e runtime +### Configurazione e mutazione del runtime -- config patch skill disable -- config apply restart wake-up -- config restart capability flip -- controllo del drift dell'inventario runtime +- patch di config con disabilitazione delle Skills +- config apply con riavvio e wake-up +- inversione della capacità al riavvio della config +- controllo del drift dell'inventario di runtime ### Asserzioni su filesystem e repository -- report di individuazione source/docs -- build Lobster Invaders -- lookup di artifact immagine generata +- report di rilevamento source/docs +- build di Lobster Invaders +- ricerca di artifact di immagini generate ### Orchestrazione della memoria -- memory recall +- richiamo della memoria - strumenti di memoria nel contesto del canale - fallback in caso di errore della memoria - ranking della memoria di sessione @@ -96,56 +100,57 @@ Leggendo la suite attuale si vedono alcune classi distinte di scenari. - chiamata MCP plugin-tools - visibilità delle Skills -- installazione a caldo delle skill +- installazione a caldo delle Skills - generazione nativa di immagini - roundtrip delle immagini - comprensione di immagini da allegato -### Multi-turn e multi-attore +### Multi-turno e multi-attore -- handoff a subagent +- handoff del subagent - sintesi fanout del subagent -- flussi in stile recovery dopo riavvio +- flussi in stile recupero dopo riavvio Queste categorie sono importanti perché guidano i requisiti della DSL. Un elenco piatto di prompt + testo atteso non è sufficiente. ## Direzione -### Singola fonte di verità +### Unica fonte di verità -Usare `qa/scenarios.md` come fonte di verità creata manualmente. +Usare `qa/scenarios/index.md` più `qa/scenarios/*.md` come fonte di verità +scritta. -Il pack dovrebbe restare: +Il pacchetto deve rimanere: -- leggibile per gli umani in review -- interpretabile dalla macchina -- abbastanza ricco da guidare: +- leggibile dagli umani in review +- analizzabile dalle macchine +- sufficientemente ricco da guidare: - esecuzione della suite - - bootstrap del workspace QA - - metadati della UI di QA Lab - - prompt di docs/discovery - - generazione del report + - bootstrap dello spazio di lavoro QA + - metadati dell'interfaccia QA Lab + - prompt per documentazione/discovery + - generazione dei report ### Formato di authoring preferito -Usare Markdown come formato di primo livello, con YAML strutturato al suo interno. +Usare markdown come formato di livello superiore, con YAML strutturato al suo interno. Struttura consigliata: -- YAML frontmatter +- frontmatter YAML - id - title - surface - tags - - docs refs - - code refs + - riferimenti docs + - riferimenti codice - override di modello/provider - prerequisiti - sezioni in prosa - - objective - - notes - - debugging hints -- blocchi YAML delimitati + - obiettivo + - note + - suggerimenti per il debugging +- blocchi YAML fenced - setup - steps - assertions @@ -153,11 +158,11 @@ Struttura consigliata: Questo offre: -- migliore leggibilità nelle PR rispetto a grandi file JSON -- contesto più ricco rispetto al puro YAML +- migliore leggibilità nelle PR rispetto a enormi file JSON +- contesto più ricco rispetto al solo YAML - parsing rigoroso e validazione zod -Il JSON grezzo è accettabile solo come forma intermedia generata. +Il JSON grezzo è accettabile solo come formato intermedio generato. ## Forma proposta del file di scenario @@ -234,7 +239,7 @@ Verify generated media is reattached on the follow-up turn. ## Capacità del runner che la DSL deve coprire -In base alla suite attuale, il runner generico ha bisogno di più della sola esecuzione dei prompt. +In base alla suite attuale, il runner generico ha bisogno di più della semplice esecuzione dei prompt. ### Azioni di ambiente e setup @@ -309,127 +314,128 @@ Esempi dalla suite attuale: - creare un thread, poi riutilizzare `threadId` - creare una sessione, poi riutilizzare `sessionKey` - generare un'immagine, poi allegare il file al turno successivo -- generare una stringa wake marker, poi verificare che compaia più tardi +- generare una stringa marcatore di wake, poi verificare che compaia in seguito Capacità necessarie: - `saveAs` - `${vars.name}` - `${artifacts.name}` -- riferimenti tipizzati per percorsi, chiavi di sessione, id thread, marker, output dei tool +- riferimenti tipizzati per percorsi, chiavi di sessione, id dei thread, marcatori, output dei tool -Senza supporto per le variabili, l'harness continuerà a far trapelare la logica degli scenari in TypeScript. +Senza supporto per le variabili, l'harness continuerà a far rifluire la logica degli scenari in TypeScript. ## Cosa dovrebbe restare come via di fuga -Un runner completamente dichiarativo puro non è realistico nella fase 1. +Un runner completamente dichiarativo non è realistico nella fase 1. -Alcuni scenari sono intrinsecamente pesanti dal punto di vista dell'orchestrazione: +Alcuni scenari sono intrinsecamente pesanti sul piano dell'orchestrazione: - sweep di dreaming della memoria -- config apply restart wake-up -- config restart capability flip -- risoluzione dell'artifact immagine generata tramite timestamp/percorso +- config apply con riavvio e wake-up +- inversione della capacità al riavvio della config +- risoluzione dell'artifact di immagine generato per timestamp/percorso - valutazione del discovery-report -Per ora questi dovrebbero usare handler personalizzati espliciti. +Per ora, questi dovrebbero usare handler personalizzati espliciti. Regola consigliata: - 85-90% dichiarativo -- step `customHandler` espliciti per il resto più difficile -- solo custom handler con nome e documentati +- passaggi `customHandler` espliciti per la parte restante più difficile +- solo handler personalizzati nominati e documentati - nessun codice inline anonimo nel file di scenario -Questo mantiene pulito il motore generico pur consentendo di progredire. +Questo mantiene pulito il motore generico pur consentendo comunque progressi. -## Cambio architetturale +## Cambiamento architetturale ### Attuale -Il Markdown degli scenari è già la fonte di verità per: +Il markdown degli scenari è già la fonte di verità per: - esecuzione della suite -- file di bootstrap del workspace -- catalogo degli scenari della UI di QA Lab -- metadati del report +- file bootstrap dello spazio di lavoro +- catalogo degli scenari dell'interfaccia QA Lab +- metadati dei report - prompt di discovery Compatibilità generata: -- il workspace inizializzato include ancora `QA_KICKOFF_TASK.md` -- il workspace inizializzato include ancora `QA_SCENARIO_PLAN.md` -- il workspace inizializzato ora include anche `QA_SCENARIOS.md` +- lo spazio di lavoro inizializzato include ancora `QA_KICKOFF_TASK.md` +- lo spazio di lavoro inizializzato include ancora `QA_SCENARIO_PLAN.md` +- lo spazio di lavoro inizializzato ora include anche `QA_SCENARIOS.md` ## Piano di refactor ### Fase 1: loader e schema -Completata. +Fatto. -- aggiunto `qa/scenarios.md` -- aggiunto parser per contenuti pack YAML Markdown con nome +- aggiunto `qa/scenarios/index.md` +- suddivisi gli scenari in `qa/scenarios/*.md` +- aggiunto il parser per il contenuto YAML markdown nominato del pacchetto - validato con zod -- passati i consumer al pack parsato -- rimossi `qa/seed-scenarios.json` e `qa/QA_KICKOFF_TASK.md` a livello repository +- passati i consumer al pacchetto analizzato +- rimossi `qa/seed-scenarios.json` e `qa/QA_KICKOFF_TASK.md` a livello di repository ### Fase 2: motore generico -- dividere `extensions/qa-lab/src/suite.ts` in: +- suddividere `extensions/qa-lab/src/suite.ts` in: - loader - motore - - registro delle azioni - - registro delle asserzioni - - custom handler + - registry delle azioni + - registry delle asserzioni + - handler personalizzati - mantenere le funzioni helper esistenti come operazioni del motore Deliverable: - il motore esegue scenari dichiarativi semplici -Iniziare con scenari che sono per lo più prompt + attesa + asserzione: +Iniziare con scenari che sono soprattutto prompt + attesa + asserzione: - follow-up in thread - comprensione di immagini da allegato -- visibilità e invocazione delle skill +- visibilità e invocazione delle Skills - baseline del canale Deliverable: -- primi veri scenari definiti in Markdown distribuiti tramite il motore generico +- primi scenari reali definiti nel markdown distribuiti tramite il motore generico ### Fase 4: migrare scenari di media complessità -- roundtrip di generazione immagini +- roundtrip di generazione di immagini - strumenti di memoria nel contesto del canale - ranking della memoria di sessione -- handoff a subagent +- handoff del subagent - sintesi fanout del subagent Deliverable: -- variabili, artifact, asserzioni sui tool, asserzioni sui request log verificati nella pratica +- variabili, artifact, asserzioni sui tool e asserzioni sul request log verificati nella pratica -### Fase 5: mantenere gli scenari difficili su custom handler +### Fase 5: mantenere gli scenari difficili su handler personalizzati - sweep di dreaming della memoria -- config apply restart wake-up -- config restart capability flip -- runtime inventory drift +- config apply con riavvio e wake-up +- inversione della capacità al riavvio della config +- drift dell'inventario di runtime Deliverable: -- stesso formato di authoring, ma con blocchi di step personalizzati espliciti dove necessario +- stesso formato di authoring, ma con blocchi di passaggi personalizzati espliciti dove necessario ### Fase 6: eliminare la mappa degli scenari hardcoded -Quando la copertura del pack sarà abbastanza buona: +Quando la copertura del pacchetto sarà sufficientemente buona: -- rimuovere la maggior parte del branching TypeScript specifico per scenario da `extensions/qa-lab/src/suite.ts` +- rimuovere la maggior parte della logica TypeScript specifica per scenario da `extensions/qa-lab/src/suite.ts` ## Supporto Fake Slack / Rich Media -L'attuale bus QA è incentrato sul testo. +L'attuale QA bus è orientato principalmente al testo. File rilevanti: @@ -439,17 +445,17 @@ File rilevanti: - `extensions/qa-lab/src/bus-server.ts` - `extensions/qa-lab/web/src/ui-render.ts` -Oggi il bus QA supporta: +Oggi il QA bus supporta: - testo -- reaction +- reazioni - thread -Non modella ancora allegati media inline. +Non modella ancora gli allegati multimediali inline. -### Contratto di transport necessario +### Contratto di trasporto necessario -Aggiungere un modello generico di allegato per il bus QA: +Aggiungere un modello generico di allegato QA bus: ```ts type QaBusAttachment = { @@ -474,61 +480,61 @@ Poi aggiungere `attachments?: QaBusAttachment[]` a: - `QaBusInboundMessageInput` - `QaBusOutboundMessageInput` -### Perché prima un approccio generico +### Perché prima il generico Non costruire un modello media solo per Slack. Invece: -- un unico modello di transport QA generico -- più renderer sopra di esso - - l'attuale chat di QA Lab - - il futuro fake Slack web - - qualsiasi altra vista di fake transport +- un unico modello di trasporto QA generico +- più renderer costruiti sopra di esso + - chat attuale di QA Lab + - futuro fake Slack web + - qualsiasi altra vista di trasporto fittizio -Questo evita logica duplicata e consente agli scenari media di restare indipendenti dal transport. +Questo evita la logica duplicata e permette agli scenari multimediali di restare agnostici rispetto al trasporto. ### Lavoro UI necessario -Aggiornare la UI QA per renderizzare: +Aggiornare l'interfaccia QA per renderizzare: - anteprima immagine inline - player audio inline - player video inline -- chip allegato file +- chip per allegato file -L'attuale UI può già renderizzare thread e reaction, quindi il rendering degli allegati dovrebbe sovrapporsi allo stesso modello di card dei messaggi. +L'interfaccia attuale può già renderizzare thread e reazioni, quindi il rendering degli allegati dovrebbe stratificarsi sullo stesso modello di scheda messaggio. -### Lavoro sugli scenari abilitato dal transport media +### Lavoro sugli scenari abilitato dal trasporto media -Una volta che gli allegati passano attraverso il bus QA, possiamo aggiungere scenari fake-chat più ricchi: +Una volta che gli allegati fluiscono attraverso il QA bus, possiamo aggiungere scenari fake-chat più ricchi: -- reply con immagine inline in fake Slack +- risposta con immagine inline in fake Slack - comprensione di allegati audio - comprensione di allegati video - ordinamento misto degli allegati -- reply in thread con media mantenuti +- risposta in thread con media mantenuti ## Raccomandazione Il prossimo blocco di implementazione dovrebbe essere: -1. aggiungere loader di scenari Markdown + schema zod -2. generare il catalogo attuale dal Markdown +1. aggiungere loader degli scenari markdown + schema zod +2. generare il catalogo attuale dal markdown 3. migrare prima alcuni scenari semplici -4. aggiungere supporto generico agli allegati del bus QA -5. renderizzare immagini inline nella UI QA -6. poi espandere ad audio e video +4. aggiungere supporto generico agli allegati QA bus +5. renderizzare immagini inline nell'interfaccia QA +6. poi estendere ad audio e video Questo è il percorso più piccolo che dimostra entrambi gli obiettivi: -- QA generica definita in Markdown -- superfici di messaggistica simulata più ricche +- QA generico definito nel markdown +- superfici di messaggistica fittizia più ricche -## Domande aperte +## Questioni aperte -- se i file di scenario debbano consentire template di prompt Markdown incorporati con interpolazione di variabili +- se i file di scenario debbano consentire template di prompt markdown incorporati con interpolazione di variabili - se setup/cleanup debbano essere sezioni nominate o semplicemente elenchi ordinati di azioni - se i riferimenti agli artifact debbano essere fortemente tipizzati nello schema o basati su stringhe -- se i custom handler debbano vivere in un unico registro o in registri per superficie +- se gli handler personalizzati debbano risiedere in un unico registry o in registry per superficie - se il file di compatibilità JSON generato debba restare versionato durante la migrazione diff --git a/docs/it/tools/slash-commands.md b/docs/it/tools/slash-commands.md index 3b8190a14..a7b71bbd0 100644 --- a/docs/it/tools/slash-commands.md +++ b/docs/it/tools/slash-commands.md @@ -1,14 +1,14 @@ --- read_when: - - Uso o configurazione dei comandi chat - - Debug dell'instradamento dei comandi o dei permessi + - Usare o configurare i comandi di chat + - Eseguire il debug dell'instradamento dei comandi o delle autorizzazioni summary: 'Comandi slash: testo vs nativi, configurazione e comandi supportati' -title: Comandi slash +title: Comandi Slash x-i18n: - generated_at: "2026-04-06T03:13:56Z" + generated_at: "2026-04-08T06:01:59Z" model: gpt-5.4 provider: openai - source_hash: 417e35b9ddd87f25f6c019111b55b741046ea11039dde89210948185ced5696d + source_hash: 4a7ee7f1a8012058279b9e632889b291d4e659e4ec81209ca8978afbb9ad4b96 source_path: tools/slash-commands.md workflow: 15 --- @@ -16,17 +16,17 @@ x-i18n: # Comandi slash I comandi sono gestiti dal Gateway. La maggior parte dei comandi deve essere inviata come messaggio **autonomo** che inizia con `/`. -Il comando chat bash solo host usa `! ` (con `/bash ` come alias). +Il comando bash di chat solo host usa `! ` (con `/bash ` come alias). Esistono due sistemi correlati: -- **Comandi**: messaggi autonomi `/...`. +- **Comandi**: messaggi `/...` autonomi. - **Direttive**: `/think`, `/fast`, `/verbose`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`. - Le direttive vengono rimosse dal messaggio prima che il modello lo veda. - Nei normali messaggi di chat (non composti solo da direttive), vengono trattate come “suggerimenti inline” e **non** rendono persistenti le impostazioni della sessione. - - Nei messaggi composti solo da direttive (il messaggio contiene solo direttive), diventano persistenti per la sessione e rispondono con una conferma. - - Le direttive vengono applicate solo per i **mittenti autorizzati**. Se `commands.allowFrom` è impostato, è l'unica - allowlist usata; altrimenti l'autorizzazione deriva dalle allowlist/pairing del canale più `commands.useAccessGroups`. + - Nei messaggi composti solo da direttive (il messaggio contiene solo direttive), rendono persistenti le impostazioni nella sessione e rispondono con una conferma. + - Le direttive vengono applicate solo ai **mittenti autorizzati**. Se `commands.allowFrom` è impostato, è l'unica + allowlist usata; altrimenti l'autorizzazione deriva dalle allowlist del canale/dall'abbinamento più `commands.useAccessGroups`. I mittenti non autorizzati vedono le direttive trattate come testo normale. Esistono anche alcune **scorciatoie inline** (solo per mittenti in allowlist/autorizzati): `/help`, `/commands`, `/status`, `/whoami` (`/id`). @@ -46,7 +46,10 @@ Vengono eseguite immediatamente, vengono rimosse prima che il modello veda il me mcp: false, plugins: false, debug: false, - restart: false, + restart: true, + ownerAllowFrom: ["discord:123456789012345678"], + ownerDisplay: "raw", + ownerDisplaySecret: "${OWNER_ID_HASH_SECRET}", allowFrom: { "*": ["user1"], discord: ["user:123"], @@ -56,143 +59,179 @@ Vengono eseguite immediatamente, vengono rimosse prima che il modello veda il me } ``` -- `commands.text` (predefinito `true`) abilita il parsing di `/...` nei messaggi chat. - - Sulle superfici senza comandi nativi (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams), i comandi testuali continuano a funzionare anche se imposti questo valore su `false`. +- `commands.text` (predefinito `true`) abilita il parsing di `/...` nei messaggi di chat. + - Nelle superfici senza comandi nativi (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams), i comandi testuali continuano a funzionare anche se imposti questo valore su `false`. - `commands.native` (predefinito `"auto"`) registra i comandi nativi. - - Auto: attivo per Discord/Telegram; disattivo per Slack (finché non aggiungi slash command); ignorato per i provider senza supporto nativo. - - Imposta `channels.discord.commands.native`, `channels.telegram.commands.native` o `channels.slack.commands.native` per fare override per provider (bool o `"auto"`). - - `false` cancella i comandi registrati in precedenza su Discord/Telegram all'avvio. I comandi Slack sono gestiti nell'app Slack e non vengono rimossi automaticamente. -- `commands.nativeSkills` (predefinito `"auto"`) registra i comandi **Skill** in modo nativo quando supportato. - - Auto: attivo per Discord/Telegram; disattivo per Slack (Slack richiede la creazione di uno slash command per ogni Skill). - - Imposta `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` o `channels.slack.commands.nativeSkills` per fare override per provider (bool o `"auto"`). -- `commands.bash` (predefinito `false`) abilita `! ` per eseguire comandi shell host (`/bash ` è un alias; richiede allowlist `tools.elevated`). -- `commands.bashForegroundMs` (predefinito `2000`) controlla per quanto tempo bash attende prima di passare alla modalità background (`0` manda subito in background). + - Auto: attivo per Discord/Telegram; disattivo per Slack (finché non aggiungi i comandi slash); ignorato per i provider senza supporto nativo. + - Imposta `channels.discord.commands.native`, `channels.telegram.commands.native` o `channels.slack.commands.native` per eseguire un override per provider (bool o `"auto"`). + - `false` cancella all'avvio i comandi registrati in precedenza su Discord/Telegram. I comandi Slack sono gestiti nell'app Slack e non vengono rimossi automaticamente. +- `commands.nativeSkills` (predefinito `"auto"`) registra in modo nativo i comandi **Skill** quando supportati. + - Auto: attivo per Discord/Telegram; disattivo per Slack (Slack richiede la creazione di un comando slash per ogni skill). + - Imposta `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` o `channels.slack.commands.nativeSkills` per eseguire un override per provider (bool o `"auto"`). +- `commands.bash` (predefinito `false`) abilita `! ` per eseguire comandi shell sull'host (`/bash ` è un alias; richiede le allowlist di `tools.elevated`). +- `commands.bashForegroundMs` (predefinito `2000`) controlla per quanto tempo bash attende prima di passare alla modalità in background (`0` manda immediatamente in background). - `commands.config` (predefinito `false`) abilita `/config` (legge/scrive `openclaw.json`). - `commands.mcp` (predefinito `false`) abilita `/mcp` (legge/scrive la configurazione MCP gestita da OpenClaw sotto `mcp.servers`). -- `commands.plugins` (predefinito `false`) abilita `/plugins` (discovery/stato dei plugin più controlli di installazione + abilitazione/disabilitazione). +- `commands.plugins` (predefinito `false`) abilita `/plugins` (rilevamento/stato dei plugin più controlli di installazione + abilitazione/disabilitazione). - `commands.debug` (predefinito `false`) abilita `/debug` (override solo runtime). -- `commands.allowFrom` (opzionale) imposta una allowlist per provider per l'autorizzazione ai comandi. Quando è configurata, è l'unica origine di autorizzazione per comandi e direttive (le allowlist/pairing del canale e `commands.useAccessGroups` - vengono ignorati). Usa `"*"` come valore predefinito globale; le chiavi specifiche del provider lo sovrascrivono. -- `commands.useAccessGroups` (predefinito `true`) applica allowlist/policy per i comandi quando `commands.allowFrom` non è impostato. +- `commands.restart` (predefinito `true`) abilita `/restart` più le azioni degli strumenti di riavvio del gateway. +- `commands.ownerAllowFrom` (opzionale) imposta la allowlist esplicita del proprietario per le superfici di comandi/strumenti riservate al proprietario. È separata da `commands.allowFrom`. +- `commands.ownerDisplay` controlla come gli ID proprietario compaiono nel prompt di sistema: `raw` o `hash`. +- `commands.ownerDisplaySecret` imposta facoltativamente il segreto HMAC usato quando `commands.ownerDisplay="hash"`. +- `commands.allowFrom` (opzionale) imposta una allowlist per provider per l'autorizzazione dei comandi. Quando configurata, è l'unica + fonte di autorizzazione per comandi e direttive (le allowlist del canale/l'abbinamento e `commands.useAccessGroups` + vengono ignorati). Usa `"*"` per un valore predefinito globale; le chiavi specifiche del provider lo sovrascrivono. +- `commands.useAccessGroups` (predefinito `true`) applica allowlist/policy ai comandi quando `commands.allowFrom` non è impostato. ## Elenco dei comandi -Testo + nativi (quando abilitati): +Fonte di verità attuale: -- `/help` -- `/commands` -- `/tools [compact|verbose]` (mostra cosa l'agent corrente può usare in questo momento; `verbose` aggiunge descrizioni) -- `/skill [input]` (esegue una Skill per nome) -- `/status` (mostra lo stato corrente; include utilizzo/quota del provider per il provider del modello corrente quando disponibile) -- `/tasks` (elenca le attività in background per la sessione corrente; mostra dettagli delle attività attive e recenti con conteggi di fallback locali all'agent) -- `/allowlist` (elenca/aggiunge/rimuove voci di allowlist) -- `/approve ` (risolve i prompt di approvazione exec; usa il messaggio di approvazione in sospeso per le decisioni disponibili) -- `/context [list|detail|json]` (spiega il “contesto”; `detail` mostra dimensioni per file + per strumento + per Skill + prompt di sistema) -- `/btw ` (fa una domanda laterale effimera sulla sessione corrente senza modificare il contesto futuro della sessione; consulta [/tools/btw](/it/tools/btw)) -- `/export-session [path]` (alias: `/export`) (esporta la sessione corrente in HTML con il prompt di sistema completo) -- `/whoami` (mostra il tuo sender id; alias: `/id`) -- `/session idle ` (gestisce il disallineamento automatico per inattività per i binding dei thread focalizzati) -- `/session max-age ` (gestisce il disallineamento automatico hard max-age per i binding dei thread focalizzati) -- `/subagents list|kill|log|info|send|steer|spawn` (ispeziona, controlla o avvia esecuzioni di sub-agent per la sessione corrente) -- `/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions` (ispeziona e controlla le sessioni runtime ACP) -- `/agents` (elenca gli agent associati ai thread per questa sessione) -- `/focus ` (Discord: associa questo thread, o un nuovo thread, a una destinazione session/subagent) -- `/unfocus` (Discord: rimuove l'associazione corrente del thread) -- `/kill ` (interrompe immediatamente uno o tutti i sub-agent in esecuzione per questa sessione; nessun messaggio di conferma) -- `/steer ` (indirizza immediatamente un sub-agent in esecuzione: durante l'esecuzione quando possibile, altrimenti interrompe il lavoro corrente e riavvia sul messaggio di indirizzamento) -- `/tell ` (alias per `/steer`) -- `/config show|get|set|unset` (rende persistente la configurazione su disco, solo proprietario; richiede `commands.config: true`) -- `/mcp show|get|set|unset` (gestisce la configurazione del server MCP OpenClaw, solo proprietario; richiede `commands.mcp: true`) -- `/plugins list|show|get|install|enable|disable` (ispeziona i plugin rilevati, installa nuovi plugin e attiva/disattiva l'abilitazione; solo proprietario per le scritture; richiede `commands.plugins: true`) - - `/plugin` è un alias per `/plugins`. - - `/plugin install ` accetta le stesse specifiche di plugin di `openclaw plugins install`: percorso locale/archivio, pacchetto npm o `clawhub:`. - - Le scritture di abilitazione/disabilitazione rispondono comunque con un suggerimento di riavvio. Su un gateway foreground monitorato, OpenClaw può eseguire automaticamente quel riavvio subito dopo la scrittura. -- `/debug show|set|unset|reset` (override runtime, solo proprietario; richiede `commands.debug: true`) -- `/usage off|tokens|full|cost` (footer di utilizzo per risposta o riepilogo locale dei costi) -- `/tts off|always|inbound|tagged|status|provider|limit|summary|audio` (controlla TTS; consulta [/tts](/it/tools/tts)) - - Discord: il comando nativo è `/voice` (Discord riserva `/tts`); il testo `/tts` continua a funzionare. -- `/stop` -- `/restart` -- `/dock-telegram` (alias: `/dock_telegram`) (sposta le risposte su Telegram) -- `/dock-discord` (alias: `/dock_discord`) (sposta le risposte su Discord) -- `/dock-slack` (alias: `/dock_slack`) (sposta le risposte su Slack) -- `/activation mention|always` (solo gruppi) -- `/send on|off|inherit` (solo proprietario) -- `/reset` o `/new [model]` (suggerimento modello opzionale; il resto viene inoltrato) -- `/think ` (scelte dinamiche per modello/provider; alias: `/thinking`, `/t`) -- `/fast status|on|off` (omettere l'argomento mostra lo stato effettivo corrente della modalità fast) -- `/verbose on|full|off` (alias: `/v`) -- `/reasoning on|off|stream` (alias: `/reason`; quando è attivo, invia un messaggio separato prefissato `Reasoning:`; `stream` = solo bozza Telegram) -- `/elevated on|off|ask|full` (alias: `/elev`; `full` salta le approvazioni exec) -- `/exec host= security= ask= node=` (invia `/exec` per mostrare il valore corrente) -- `/model ` (alias: `/models`; oppure `/` da `agents.defaults.models.*.alias`) -- `/queue ` (più opzioni come `debounce:2s cap:25 drop:summarize`; invia `/queue` per vedere le impostazioni correnti) -- `/bash ` (solo host; alias per `! `; richiede `commands.bash: true` + allowlist `tools.elevated`) -- `/dreaming [on|off|status|help]` (attiva/disattiva dreaming globale o mostra lo stato; consulta [Dreaming](/concepts/dreaming)) +- i built-in core provengono da `src/auto-reply/commands-registry.shared.ts` +- i comandi dock generati provengono da `src/auto-reply/commands-registry.data.ts` +- i comandi dei plugin provengono dalle chiamate `registerCommand()` dei plugin +- la disponibilità effettiva sul tuo gateway dipende comunque dai flag di configurazione, dalla superficie del canale e dai plugin installati/abilitati -Solo testo: +### Comandi built-in core -- `/compact [instructions]` (consulta [/concepts/compaction](/it/concepts/compaction)) -- `! ` (solo host; uno alla volta; usa `!poll` + `!stop` per job di lunga durata) -- `!poll` (controlla output / stato; accetta `sessionId` opzionale; funziona anche `/bash poll`) -- `!stop` (interrompe il job bash in esecuzione; accetta `sessionId` opzionale; funziona anche `/bash stop`) +Comandi built-in disponibili oggi: + +- `/new [model]` avvia una nuova sessione; `/reset` è l'alias di reset. +- `/compact [instructions]` compatta il contesto della sessione. Vedi [/concepts/compaction](/it/concepts/compaction). +- `/stop` interrompe l'esecuzione corrente. +- `/session idle ` e `/session max-age ` gestiscono la scadenza del binding del thread. +- `/think ` imposta il livello di thinking. Alias: `/thinking`, `/t`. +- `/verbose on|off|full` attiva/disattiva l'output verboso. Alias: `/v`. +- `/fast [status|on|off]` mostra o imposta la modalità veloce. +- `/reasoning [on|off|stream]` attiva/disattiva la visibilità del reasoning. Alias: `/reason`. +- `/elevated [on|off|ask|full]` attiva/disattiva la modalità elevata. Alias: `/elev`. +- `/exec host= security= ask= node=` mostra o imposta i valori predefiniti di exec. +- `/model [name|#|status]` mostra o imposta il modello. +- `/models [provider] [page] [limit=|size=|all]` elenca i provider o i modelli di un provider. +- `/queue ` gestisce il comportamento della coda (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`) più opzioni come `debounce:2s cap:25 drop:summarize`. +- `/help` mostra il riepilogo breve della guida. +- `/commands` mostra il catalogo dei comandi generato. +- `/tools [compact|verbose]` mostra cosa può usare in questo momento l'agente corrente. +- `/status` mostra lo stato del runtime, incluso l'uso/quota del provider quando disponibile. +- `/tasks` elenca le attività in background attive/recenti per la sessione corrente. +- `/context [list|detail|json]` spiega come viene assemblato il contesto. +- `/export-session [path]` esporta la sessione corrente in HTML. Alias: `/export`. +- `/whoami` mostra il tuo ID mittente. Alias: `/id`. +- `/skill [input]` esegue una skill per nome. +- `/allowlist [list|add|remove] ...` gestisce le voci della allowlist. Solo testo. +- `/approve ` risolve le richieste di approvazione exec. +- `/btw ` pone una domanda laterale senza modificare il contesto futuro della sessione. Vedi [/tools/btw](/it/tools/btw). +- `/subagents list|kill|log|info|send|steer|spawn` gestisce le esecuzioni dei sub-agent per la sessione corrente. +- `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` gestisce le sessioni ACP e le opzioni del runtime. +- `/focus ` collega il thread Discord corrente o il topic/conversation Telegram a un target di sessione. +- `/unfocus` rimuove il binding corrente. +- `/agents` elenca gli agenti collegati al thread per la sessione corrente. +- `/kill ` interrompe uno o tutti i sub-agent in esecuzione. +- `/steer ` invia indicazioni a un sub-agent in esecuzione. Alias: `/tell`. +- `/config show|get|set|unset` legge o scrive `openclaw.json`. Solo proprietario. Richiede `commands.config: true`. +- `/mcp show|get|set|unset` legge o scrive la configurazione del server MCP gestita da OpenClaw sotto `mcp.servers`. Solo proprietario. Richiede `commands.mcp: true`. +- `/plugins list|inspect|show|get|install|enable|disable` ispeziona o modifica lo stato dei plugin. `/plugin` è un alias. Solo proprietario per le scritture. Richiede `commands.plugins: true`. +- `/debug show|set|unset|reset` gestisce gli override di configurazione solo runtime. Solo proprietario. Richiede `commands.debug: true`. +- `/usage off|tokens|full|cost` controlla il piè di pagina di utilizzo per risposta oppure stampa un riepilogo locale dei costi. +- `/tts on|off|status|provider|limit|summary|audio|help` controlla TTS. Vedi [/tools/tts](/it/tools/tts). +- `/restart` riavvia OpenClaw quando abilitato. Predefinito: abilitato; imposta `commands.restart: false` per disabilitarlo. +- `/activation mention|always` imposta la modalità di attivazione del gruppo. +- `/send on|off|inherit` imposta la policy di invio. Solo proprietario. +- `/bash ` esegue un comando shell sull'host. Solo testo. Alias: `! `. Richiede `commands.bash: true` più le allowlist di `tools.elevated`. +- `!poll [sessionId]` controlla un job bash in background. +- `!stop [sessionId]` arresta un job bash in background. + +### Comandi dock generati + +I comandi dock vengono generati dai plugin canale con supporto per i comandi nativi. Set bundled attuale: + +- `/dock-discord` (alias: `/dock_discord`) +- `/dock-mattermost` (alias: `/dock_mattermost`) +- `/dock-slack` (alias: `/dock_slack`) +- `/dock-telegram` (alias: `/dock_telegram`) + +### Comandi dei plugin bundled + +I plugin bundled possono aggiungere altri comandi slash. Comandi bundled attuali in questo repo: + +- `/dreaming [on|off|status|help]` attiva/disattiva il memory dreaming. Vedi [Dreaming](/it/concepts/dreaming). +- `/pair [qr|status|pending|approve|cleanup|notify]` gestisce il flusso di abbinamento/configurazione del dispositivo. Vedi [Pairing](/it/channels/pairing). +- `/phone status|arm [duration]|disarm` abilita temporaneamente i comandi del nodo telefono ad alto rischio. +- `/voice status|list [limit]|set ` gestisce la configurazione della voce Talk. Su Discord, il nome del comando nativo è `/talkvoice`. +- `/card ...` invia preset di rich card LINE. Vedi [LINE](/it/channels/line). +- Comandi solo QQBot: + - `/bot-ping` + - `/bot-version` + - `/bot-help` + - `/bot-upgrade` + - `/bot-logs` + +### Comandi skill dinamici + +Le skill invocabili dall'utente sono esposte anche come comandi slash: + +- `/skill [input]` funziona sempre come entrypoint generico. +- le skill possono anche comparire come comandi diretti come `/prose` quando la skill/il plugin li registra. +- la registrazione nativa dei comandi skill è controllata da `commands.nativeSkills` e `channels..commands.nativeSkills`. Note: -- I comandi accettano un `:` opzionale tra comando e argomenti (ad esempio `/think: high`, `/send: on`, `/help:`). -- `/new ` accetta un alias modello, `provider/model` o un nome provider (corrispondenza fuzzy); se non c'è corrispondenza, il testo viene trattato come corpo del messaggio. -- Per il dettaglio completo dell'utilizzo per provider, usa `openclaw status --usage`. +- I comandi accettano un `:` facoltativo tra il comando e gli argomenti (ad esempio `/think: high`, `/send: on`, `/help:`). +- `/new ` accetta un alias di modello, `provider/model` o un nome provider (corrispondenza fuzzy); se non c'è corrispondenza, il testo viene trattato come corpo del messaggio. +- Per il dettaglio completo dell'utilizzo del provider, usa `openclaw status --usage`. - `/allowlist add|remove` richiede `commands.config=true` e rispetta `configWrites` del canale. -- Nei canali multi-account, anche `/allowlist --account ` con target di configurazione e `/config set channels..accounts....` rispettano `configWrites` dell'account di destinazione. -- `/usage` controlla il footer di utilizzo per risposta; `/usage cost` stampa un riepilogo locale dei costi dai log di sessione OpenClaw. +- Nei canali multi-account, anche `/allowlist --account ` mirato alla configurazione e `/config set channels..accounts....` rispettano `configWrites` dell'account di destinazione. +- `/usage` controlla il piè di pagina di utilizzo per risposta; `/usage cost` stampa un riepilogo locale dei costi dai log di sessione OpenClaw. - `/restart` è abilitato per impostazione predefinita; imposta `commands.restart: false` per disabilitarlo. +- `/plugins install ` accetta le stesse specifiche di plugin di `openclaw plugins install`: percorso/archivio locale, pacchetto npm o `clawhub:`. +- `/plugins enable|disable` aggiorna la configurazione del plugin e può richiedere un riavvio. - Comando nativo solo Discord: `/vc join|leave|status` controlla i canali vocali (richiede `channels.discord.voice` e comandi nativi; non disponibile come testo). -- I comandi di binding dei thread Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) richiedono che i binding effettivi dei thread siano abilitati (`session.threadBindings.enabled` e/o `channels.discord.threadBindings.enabled`). -- Riferimento dei comandi ACP e comportamento runtime: [ACP Agents](/it/tools/acp-agents). -- `/verbose` è pensato per il debug e per una visibilità aggiuntiva; mantienilo **disattivato** nell'uso normale. -- `/fast on|off` rende persistente un override di sessione. Usa l'opzione `inherit` nell'interfaccia Sessions per cancellarlo e tornare ai valori predefiniti della configurazione. -- `/fast` è specifico del provider: OpenAI/OpenAI Codex lo mappano a `service_tier=priority` sugli endpoint nativi Responses, mentre le richieste Anthropic pubbliche dirette, incluso il traffico autenticato OAuth inviato a `api.anthropic.com`, lo mappano a `service_tier=auto` o `standard_only`. Consulta [OpenAI](/it/providers/openai) e [Anthropic](/it/providers/anthropic). -- I riepiloghi dei guasti degli strumenti vengono comunque mostrati quando rilevanti, ma il testo dettagliato del guasto viene incluso solo quando `/verbose` è `on` o `full`. +- I comandi di binding del thread Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) richiedono che i binding del thread effettivi siano abilitati (`session.threadBindings.enabled` e/o `channels.discord.threadBindings.enabled`). +- Riferimento dei comandi ACP e comportamento del runtime: [ACP Agents](/it/tools/acp-agents). +- `/verbose` è pensato per il debug e per una visibilità aggiuntiva; tienilo **off** nell'uso normale. +- `/fast on|off` rende persistente un override della sessione. Usa l'opzione `inherit` dell'interfaccia Sessions per cancellarlo e tornare ai valori predefiniti della configurazione. +- `/fast` è specifico del provider: OpenAI/OpenAI Codex lo mappano a `service_tier=priority` sugli endpoint nativi Responses, mentre le richieste Anthropic pubbliche dirette, incluso il traffico autenticato OAuth inviato a `api.anthropic.com`, lo mappano a `service_tier=auto` o `standard_only`. Vedi [OpenAI](/it/providers/openai) e [Anthropic](/it/providers/anthropic). +- I riepiloghi degli errori degli strumenti vengono comunque mostrati quando pertinenti, ma il testo dettagliato dell'errore viene incluso solo quando `/verbose` è `on` o `full`. - `/reasoning` (e `/verbose`) sono rischiosi in contesti di gruppo: possono rivelare reasoning interno o output degli strumenti che non intendevi esporre. È preferibile lasciarli disattivati, soprattutto nelle chat di gruppo. -- `/model` rende persistente immediatamente il nuovo modello di sessione. -- Se l'agent è inattivo, l'esecuzione successiva lo usa subito. -- Se è già attiva un'esecuzione, OpenClaw contrassegna un cambio live come in sospeso e riavvia nel nuovo modello solo in un punto di retry pulito. -- Se è già iniziata l'attività degli strumenti o l'output della risposta, il cambio in sospeso può restare in coda fino a una successiva opportunità di retry o al turno utente successivo. +- `/model` rende immediatamente persistente il nuovo modello di sessione. +- Se l'agente è inattivo, la prossima esecuzione lo usa subito. +- Se un'esecuzione è già attiva, OpenClaw contrassegna un cambio live come in sospeso e riavvia nel nuovo modello solo in un punto di retry pulito. +- Se l'attività degli strumenti o l'output della risposta sono già iniziati, il cambio in sospeso può restare in coda fino a una successiva opportunità di retry o al turno utente successivo. - **Percorso rapido:** i messaggi composti solo da comandi provenienti da mittenti in allowlist vengono gestiti immediatamente (saltano coda + modello). -- **Controllo delle menzioni nei gruppi:** i messaggi composti solo da comandi provenienti da mittenti in allowlist bypassano i requisiti di menzione. -- **Scorciatoie inline (solo mittenti in allowlist):** alcuni comandi funzionano anche quando sono incorporati in un normale messaggio e vengono rimossi prima che il modello veda il testo rimanente. +- **Blocco per menzione nei gruppi:** i messaggi composti solo da comandi provenienti da mittenti in allowlist saltano i requisiti di menzione. +- **Scorciatoie inline (solo mittenti in allowlist):** alcuni comandi funzionano anche quando incorporati in un messaggio normale e vengono rimossi prima che il modello veda il testo rimanente. - Esempio: `hey /status` attiva una risposta di stato e il testo rimanente continua nel flusso normale. - Attualmente: `/help`, `/commands`, `/status`, `/whoami` (`/id`). -- I messaggi composti solo da comandi non autorizzati vengono ignorati silenziosamente e i token inline `/...` vengono trattati come testo normale. -- **Comandi Skill:** le Skills `user-invocable` vengono esposte come slash command. I nomi vengono sanitizzati in `a-z0-9_` (massimo 32 caratteri); le collisioni ricevono suffissi numerici (ad esempio `_2`). - - `/skill [input]` esegue una Skill per nome (utile quando i limiti dei comandi nativi impediscono comandi per-Skill). - - Per impostazione predefinita, i comandi Skill vengono inoltrati al modello come richiesta normale. - - Le Skills possono facoltativamente dichiarare `command-dispatch: tool` per instradare il comando direttamente a uno strumento (deterministico, senza modello). - - Esempio: `/prose` (plugin OpenProse) — consulta [OpenProse](/it/prose). -- **Argomenti dei comandi nativi:** Discord usa autocomplete per le opzioni dinamiche (e menu a pulsanti quando ometti gli argomenti richiesti). Telegram e Slack mostrano un menu a pulsanti quando un comando supporta scelte e ometti l'argomento. +- I messaggi composti solo da comandi non autorizzati vengono ignorati silenziosamente, e i token inline `/...` vengono trattati come testo normale. +- **Comandi skill:** le skill `user-invocable` sono esposte come comandi slash. I nomi vengono sanitizzati in `a-z0-9_` (massimo 32 caratteri); i conflitti ricevono suffissi numerici (ad esempio `_2`). + - `/skill [input]` esegue una skill per nome (utile quando i limiti dei comandi nativi impediscono comandi per singola skill). + - Per impostazione predefinita, i comandi skill vengono inoltrati al modello come richiesta normale. + - Le skill possono facoltativamente dichiarare `command-dispatch: tool` per instradare il comando direttamente a uno strumento (deterministico, senza modello). + - Esempio: `/prose` (plugin OpenProse) — vedi [OpenProse](/it/prose). +- **Argomenti dei comandi nativi:** Discord usa l'autocomplete per le opzioni dinamiche (e menu a pulsanti quando ometti argomenti obbligatori). Telegram e Slack mostrano un menu a pulsanti quando un comando supporta scelte e ometti l'argomento. ## `/tools` -`/tools` risponde a una domanda runtime, non a una domanda di configurazione: **cosa può usare questo agent in questo momento in +`/tools` risponde a una domanda di runtime, non a una domanda di configurazione: **cosa questo agente può usare in questo momento in questa conversazione**. - Il valore predefinito di `/tools` è compatto e ottimizzato per una scansione rapida. - `/tools verbose` aggiunge brevi descrizioni. -- Le superfici di comando nativo che supportano argomenti espongono lo stesso selettore di modalità `compact|verbose`. -- I risultati hanno ambito di sessione, quindi cambiare agent, canale, thread, autorizzazione del mittente o modello può +- Le superfici dei comandi nativi che supportano argomenti espongono lo stesso cambio di modalità come `compact|verbose`. +- I risultati sono limitati alla sessione, quindi cambiare agente, canale, thread, autorizzazione del mittente o modello può cambiare l'output. -- `/tools` include gli strumenti realmente raggiungibili a runtime, inclusi strumenti core, strumenti - di plugin connessi e strumenti posseduti dal canale. +- `/tools` include gli strumenti effettivamente raggiungibili a runtime, inclusi strumenti core, strumenti dei + plugin connessi e strumenti posseduti dal canale. -Per modificare profili e override, usa il pannello Tools della Control UI o le superfici di configurazione/catalogo invece -di trattare `/tools` come un catalogo statico. +Per la modifica di profili e override, usa il pannello Tools della Control UI o le superfici config/catalogo +invece di trattare `/tools` come un catalogo statico. -## Superfici di utilizzo (cosa appare dove) +## Superfici di utilizzo (cosa compare dove) -- **Utilizzo/quota del provider** (esempio: “Claude 80% rimasto”) appare in `/status` per il provider del modello corrente quando il tracciamento dell'utilizzo è abilitato. OpenClaw normalizza le finestre dei provider in `% rimasto`; per MiniMax, i campi percentuali solo-rimanente vengono invertiti prima della visualizzazione, e le risposte `model_remains` privilegiano la voce del modello chat più un'etichetta del piano taggata sul modello. -- Le righe **token/cache** in `/status` possono fare fallback all'ultima voce di utilizzo nella trascrizione quando lo snapshot live della sessione è scarso. I valori live esistenti diversi da zero continuano comunque ad avere la precedenza e il fallback della trascrizione può anche recuperare l'etichetta del modello runtime attivo più un totale più grande orientato al prompt quando i totali archiviati mancano o sono inferiori. -- **Token/costo per risposta** è controllato da `/usage off|tokens|full` (aggiunto alle normali risposte). -- `/model status` riguarda **modelli/autenticazione/endpoint**, non l'utilizzo. +- **Uso/quota del provider** (esempio: “Claude 80% left”) compare in `/status` per il provider del modello corrente quando il tracciamento dell'utilizzo è abilitato. OpenClaw normalizza le finestre dei provider in `% left`; per MiniMax, i campi percentuali solo-rimanenti vengono invertiti prima della visualizzazione, e le risposte `model_remains` preferiscono la voce del modello di chat più un'etichetta del piano con tag del modello. +- **Righe token/cache** in `/status` possono ripiegare sull'ultima voce di utilizzo della trascrizione quando lo snapshot live della sessione è scarno. I valori live non zero esistenti continuano comunque a prevalere, e il fallback alla trascrizione può anche recuperare l'etichetta del modello runtime attivo più un totale più ampio orientato al prompt quando i totali memorizzati mancano o sono inferiori. +- **Token/costo per risposta** è controllato da `/usage off|tokens|full` (aggiunto alle risposte normali). +- `/model status` riguarda **modelli/auth/endpoint**, non l'utilizzo. ## Selezione del modello (`/model`) @@ -212,13 +251,13 @@ Esempi: Note: - `/model` e `/model list` mostrano un selettore compatto numerato (famiglia di modelli + provider disponibili). -- Su Discord, `/model` e `/models` aprono un selettore interattivo con menu a discesa di provider e modello più un passaggio Submit. -- `/model <#>` seleziona da quel selettore (e privilegia il provider corrente quando possibile). -- `/model status` mostra la vista dettagliata, inclusi endpoint provider configurato (`baseUrl`) e modalità API (`api`) quando disponibili. +- Su Discord, `/model` e `/models` aprono un selettore interattivo con menu a discesa per provider e modello più un passaggio Submit. +- `/model <#>` seleziona da quel selettore (e preferisce il provider corrente quando possibile). +- `/model status` mostra la vista dettagliata, incluso l'endpoint provider configurato (`baseUrl`) e la modalità API (`api`) quando disponibili. ## Override di debug -`/debug` consente di impostare override di configurazione **solo runtime** (in memoria, non su disco). Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.debug: true`. +`/debug` ti permette di impostare override di configurazione **solo runtime** (in memoria, non su disco). Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.debug: true`. Esempi: @@ -235,7 +274,7 @@ Note: - Gli override si applicano immediatamente alle nuove letture della configurazione, ma **non** scrivono in `openclaw.json`. - Usa `/debug reset` per cancellare tutti gli override e tornare alla configurazione su disco. -## Aggiornamenti di configurazione +## Aggiornamenti della configurazione `/config` scrive nella configurazione su disco (`openclaw.json`). Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.config: true`. @@ -251,12 +290,12 @@ Esempi: Note: -- La configurazione viene convalidata prima della scrittura; le modifiche non valide vengono rifiutate. -- Gli aggiornamenti `/config` persistono tra i riavvii. +- La configurazione viene validata prima della scrittura; le modifiche non valide vengono rifiutate. +- Gli aggiornamenti di `/config` persistono dopo i riavvii. ## Aggiornamenti MCP -`/mcp` scrive le definizioni dei server MCP gestite da OpenClaw sotto `mcp.servers`. Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.mcp: true`. +`/mcp` scrive le definizioni del server MCP gestite da OpenClaw sotto `mcp.servers`. Solo proprietario. Disabilitato per impostazione predefinita; abilitalo con `commands.mcp: true`. Esempi: @@ -269,12 +308,12 @@ Esempi: Note: -- `/mcp` archivia la configurazione nella configurazione OpenClaw, non nelle impostazioni di progetto possedute da Pi. -- Gli adapter runtime decidono quali trasporti sono effettivamente eseguibili. +- `/mcp` memorizza la configurazione nella configurazione OpenClaw, non nelle impostazioni di progetto possedute da Pi. +- Gli adapter di runtime decidono quali transport sono effettivamente eseguibili. ## Aggiornamenti dei plugin -`/plugins` consente agli operatori di ispezionare i plugin rilevati e di attivare/disattivare l'abilitazione nella configurazione. I flussi in sola lettura possono usare `/plugin` come alias. Disabilitato per impostazione predefinita; abilitalo con `commands.plugins: true`. +`/plugins` permette agli operatori di ispezionare i plugin rilevati e attivare/disattivare l'abilitazione nella configurazione. I flussi di sola lettura possono usare `/plugin` come alias. Disabilitato per impostazione predefinita; abilitalo con `commands.plugins: true`. Esempi: @@ -288,35 +327,35 @@ Esempi: Note: -- `/plugins list` e `/plugins show` usano la reale discovery dei plugin rispetto al workspace corrente più la configurazione su disco. +- `/plugins list` e `/plugins show` usano il rilevamento reale dei plugin rispetto al workspace corrente più la configurazione su disco. - `/plugins enable|disable` aggiorna solo la configurazione del plugin; non installa né disinstalla i plugin. - Dopo modifiche di abilitazione/disabilitazione, riavvia il gateway per applicarle. ## Note sulle superfici -- **Comandi testuali** vengono eseguiti nella normale sessione chat (i DM condividono `main`, i gruppi hanno la propria sessione). +- **Comandi testuali** vengono eseguiti nella normale sessione di chat (i DM condividono `main`, i gruppi hanno la propria sessione). - **Comandi nativi** usano sessioni isolate: - Discord: `agent::discord:slash:` - Slack: `agent::slack:slash:` (prefisso configurabile tramite `channels.slack.slashCommand.sessionPrefix`) - - Telegram: `telegram:slash:` (indirizza la sessione chat tramite `CommandTargetSessionKey`) -- **`/stop`** prende di mira la sessione chat attiva così può interrompere l'esecuzione corrente. -- **Slack:** `channels.slack.slashCommand` è ancora supportato per un singolo comando in stile `/openclaw`. Se abiliti `commands.native`, devi creare uno slash command Slack per ogni comando integrato (stessi nomi di `/help`). I menu degli argomenti dei comandi per Slack vengono forniti come pulsanti Block Kit effimeri. - - Eccezione nativa Slack: registra `/agentstatus` (non `/status`) perché Slack riserva `/status`. Il testo `/status` continua a funzionare nei messaggi Slack. + - Telegram: `telegram:slash:` (destina la sessione di chat tramite `CommandTargetSessionKey`) +- **`/stop`** punta alla sessione di chat attiva così da poter interrompere l'esecuzione corrente. +- **Slack:** `channels.slack.slashCommand` è ancora supportato per un singolo comando in stile `/openclaw`. Se abiliti `commands.native`, devi creare un comando slash Slack per ogni comando built-in (con gli stessi nomi di `/help`). I menu argomenti dei comandi per Slack vengono consegnati come pulsanti Block Kit effimeri. + - Eccezione nativa Slack: registra `/agentstatus` (non `/status`) perché Slack riserva `/status`. Il testo `/status` continua comunque a funzionare nei messaggi Slack. ## Domande laterali BTW `/btw` è una rapida **domanda laterale** sulla sessione corrente. -A differenza della normale chat: +A differenza della chat normale: - usa la sessione corrente come contesto di sfondo, -- viene eseguita come chiamata one-shot separata **senza strumenti**, +- viene eseguita come chiamata separata **senza strumenti** e one-shot, - non modifica il contesto futuro della sessione, - non viene scritta nella cronologia della trascrizione, - viene consegnata come risultato laterale live invece che come normale messaggio dell'assistente. -Questo rende `/btw` utile quando vuoi un chiarimento temporaneo mentre il task principale -continua. +Questo rende `/btw` utile quando vuoi un chiarimento temporaneo mentre +l'attività principale continua. Esempio: @@ -324,5 +363,5 @@ Esempio: /btw cosa stiamo facendo in questo momento? ``` -Consulta [BTW Side Questions](/it/tools/btw) per il comportamento completo e i +Vedi [BTW Side Questions](/it/tools/btw) per il comportamento completo e i dettagli UX del client. diff --git a/docs/it/tools/tts.md b/docs/it/tools/tts.md index 095479a7b..65fdb2c0a 100644 --- a/docs/it/tools/tts.md +++ b/docs/it/tools/tts.md @@ -1,15 +1,15 @@ --- read_when: - Abilitazione della sintesi vocale per le risposte - - Configurazione di provider o limiti TTS + - Configurazione dei provider TTS o dei limiti - Uso dei comandi /tts summary: Sintesi vocale (TTS) per le risposte in uscita title: Sintesi vocale x-i18n: - generated_at: "2026-04-05T14:08:22Z" + generated_at: "2026-04-08T06:01:52Z" model: gpt-5.4 provider: openai - source_hash: 8487c8acef7585bd4eb5e3b39e2a063ebc6b5f0103524abdcbadd3a7781ffc46 + source_hash: 6e0fbcaf61282733c134f682e05a71f94d2169c03a85131ce9ad233c71a1e533 source_path: tools/tts.md workflow: 15 --- @@ -28,14 +28,14 @@ Funziona ovunque OpenClaw possa inviare audio. ### Note sulla sintesi vocale Microsoft -Il provider di sintesi vocale Microsoft bundled attualmente usa il servizio TTS -neurale online di Microsoft Edge tramite la libreria `node-edge-tts`. È un servizio hosted (non +Il provider di sintesi vocale Microsoft bundled usa attualmente il servizio TTS neurale +online di Microsoft Edge tramite la libreria `node-edge-tts`. È un servizio ospitato (non locale), usa endpoint Microsoft e non richiede una chiave API. -`node-edge-tts` espone opzioni di configurazione della sintesi e formati di output, ma +`node-edge-tts` espone opzioni di configurazione della sintesi vocale e formati di output, ma non tutte le opzioni sono supportate dal servizio. La configurazione legacy e l'input direttiva -che usa `edge` continuano a funzionare e vengono normalizzati in `microsoft`. +che usa `edge` continuano a funzionare e vengono normalizzati a `microsoft`. -Poiché questo percorso è un servizio web pubblico senza SLA o quota pubblicati, +Poiché questo percorso è un servizio web pubblico senza uno SLA o una quota pubblicati, consideralo best-effort. Se hai bisogno di limiti garantiti e supporto, usa OpenAI o ElevenLabs. @@ -49,31 +49,31 @@ Se vuoi usare OpenAI, ElevenLabs o MiniMax: La sintesi vocale Microsoft **non** richiede una chiave API. -Se sono configurati più provider, viene usato prima il provider selezionato e gli altri diventano opzioni di fallback. +Se sono configurati più provider, il provider selezionato viene usato per primo e gli altri sono opzioni di fallback. Il riepilogo automatico usa il `summaryModel` configurato (o `agents.defaults.model.primary`), quindi anche quel provider deve essere autenticato se abiliti i riepiloghi. ## Link ai servizi - [Guida OpenAI Text-to-Speech](https://platform.openai.com/docs/guides/text-to-speech) -- [Riferimento API OpenAI Audio](https://platform.openai.com/docs/api-reference/audio) +- [Riferimento API Audio di OpenAI](https://platform.openai.com/docs/api-reference/audio) - [ElevenLabs Text to Speech](https://elevenlabs.io/docs/api-reference/text-to-speech) - [Autenticazione ElevenLabs](https://elevenlabs.io/docs/api-reference/authentication) - [API MiniMax T2A v2](https://platform.minimaxi.com/document/T2A%20V2) - [node-edge-tts](https://github.com/SchneeHertz/node-edge-tts) -- [Formati di output Microsoft Speech](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech#audio-outputs) +- [Formati di output di Microsoft Speech](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech#audio-outputs) ## È abilitato per impostazione predefinita? No. L'auto‑TTS è **disattivato** per impostazione predefinita. Abilitalo nella configurazione con -`messages.tts.auto` o per sessione con `/tts always` (alias: `/tts on`). +`messages.tts.auto` oppure localmente con `/tts on`. Quando `messages.tts.provider` non è impostato, OpenClaw sceglie il primo provider di sintesi vocale configurato nell'ordine di selezione automatica del registro. ## Configurazione -La configurazione TTS si trova sotto `messages.tts` in `openclaw.json`. +La configurazione TTS si trova in `messages.tts` in `openclaw.json`. Lo schema completo è in [Configurazione del Gateway](/it/gateway/configuration). ### Configurazione minima (abilitazione + provider) @@ -130,7 +130,7 @@ Lo schema completo è in [Configurazione del Gateway](/it/gateway/configuration) } ``` -### Microsoft primario (nessuna chiave API) +### Microsoft primario (senza chiave API) ```json5 { @@ -208,7 +208,7 @@ Lo schema completo è in [Configurazione del Gateway](/it/gateway/configuration) } ``` -### Rispondere con audio solo dopo un messaggio vocale in entrata +### Rispondi con audio solo dopo un messaggio vocale in ingresso ```json5 { @@ -220,7 +220,7 @@ Lo schema completo è in [Configurazione del Gateway](/it/gateway/configuration) } ``` -### Disabilitare il riepilogo automatico per risposte lunghe +### Disabilitare il riepilogo automatico per le risposte lunghe ```json5 { @@ -232,7 +232,7 @@ Lo schema completo è in [Configurazione del Gateway](/it/gateway/configuration) } ``` -Quindi esegui: +Poi esegui: ``` /tts summary off @@ -241,25 +241,25 @@ Quindi esegui: ### Note sui campi - `auto`: modalità auto‑TTS (`off`, `always`, `inbound`, `tagged`). - - `inbound` invia audio solo dopo un messaggio vocale in entrata. + - `inbound` invia audio solo dopo un messaggio vocale in ingresso. - `tagged` invia audio solo quando la risposta include tag `[[tts]]`. - `enabled`: interruttore legacy (doctor lo migra in `auto`). -- `mode`: `"final"` (predefinito) o `"all"` (include risposte di strumenti/blocchi). +- `mode`: `"final"` (predefinito) oppure `"all"` (include risposte di strumenti/blocchi). - `provider`: ID del provider di sintesi vocale come `"elevenlabs"`, `"microsoft"`, `"minimax"` o `"openai"` (il fallback è automatico). - Se `provider` **non è impostato**, OpenClaw usa il primo provider di sintesi vocale configurato nell'ordine di selezione automatica del registro. -- Il legacy `provider: "edge"` continua a funzionare e viene normalizzato in `microsoft`. -- `summaryModel`: modello economico facoltativo per il riepilogo automatico; il valore predefinito è `agents.defaults.model.primary`. +- Il valore legacy `provider: "edge"` continua a funzionare e viene normalizzato a `microsoft`. +- `summaryModel`: modello economico facoltativo per il riepilogo automatico; per impostazione predefinita usa `agents.defaults.model.primary`. - Accetta `provider/model` o un alias di modello configurato. - `modelOverrides`: consente al modello di emettere direttive TTS (attivo per impostazione predefinita). - - `allowProvider` è `false` per impostazione predefinita (il cambio provider è facoltativo). -- `providers.`: impostazioni gestite dal provider, con chiave sull'ID del provider di sintesi vocale. -- I blocchi provider legacy diretti (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) vengono migrati automaticamente in `messages.tts.providers.` al caricamento. -- `maxTextLength`: limite rigido per l'input TTS (caratteri). `/tts audio` fallisce se viene superato. + - `allowProvider` per impostazione predefinita è `false` (il cambio provider richiede opt-in). +- `providers.`: impostazioni di proprietà del provider indicizzate per ID provider di sintesi vocale. +- I blocchi provider legacy diretti (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) vengono migrati automaticamente a `messages.tts.providers.` al caricamento. +- `maxTextLength`: limite rigido per l'input TTS (caratteri). `/tts audio` non riesce se viene superato. - `timeoutMs`: timeout della richiesta (ms). -- `prefsPath`: sovrascrive il percorso JSON locale delle preferenze (provider/limite/riepilogo). +- `prefsPath`: sostituisce il percorso del file JSON delle preferenze locali (provider/limite/riepilogo). - I valori `apiKey` usano come fallback le variabili d'ambiente (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`). -- `providers.elevenlabs.baseUrl`: sovrascrive l'URL base dell'API ElevenLabs. -- `providers.openai.baseUrl`: sovrascrive l'endpoint OpenAI TTS. +- `providers.elevenlabs.baseUrl`: sostituisce l'URL di base dell'API ElevenLabs. +- `providers.openai.baseUrl`: sostituisce l'endpoint TTS OpenAI. - Ordine di risoluzione: `messages.tts.providers.openai.baseUrl` -> `OPENAI_TTS_BASE_URL` -> `https://api.openai.com/v1` - I valori non predefiniti vengono trattati come endpoint TTS compatibili con OpenAI, quindi sono accettati nomi personalizzati di modello e voce. - `providers.elevenlabs.voiceSettings`: @@ -269,21 +269,21 @@ Quindi esegui: - `providers.elevenlabs.applyTextNormalization`: `auto|on|off` - `providers.elevenlabs.languageCode`: ISO 639-1 a 2 lettere (per esempio `en`, `de`) - `providers.elevenlabs.seed`: intero `0..4294967295` (determinismo best-effort) -- `providers.minimax.baseUrl`: sovrascrive l'URL base dell'API MiniMax (predefinito `https://api.minimax.io`, env: `MINIMAX_API_HOST`). +- `providers.minimax.baseUrl`: sostituisce l'URL di base dell'API MiniMax (predefinito `https://api.minimax.io`, env: `MINIMAX_API_HOST`). - `providers.minimax.model`: modello TTS (predefinito `speech-2.8-hd`, env: `MINIMAX_TTS_MODEL`). -- `providers.minimax.voiceId`: identificatore voce (predefinito `English_expressive_narrator`, env: `MINIMAX_TTS_VOICE_ID`). -- `providers.minimax.speed`: velocità di riproduzione `0.5..2.0` (predefinito 1.0). +- `providers.minimax.voiceId`: identificatore della voce (predefinito `English_expressive_narrator`, env: `MINIMAX_TTS_VOICE_ID`). +- `providers.minimax.speed`: velocità di riproduzione `0.5..2.0` (predefinita 1.0). - `providers.minimax.vol`: volume `(0, 10]` (predefinito 1.0; deve essere maggiore di 0). -- `providers.minimax.pitch`: variazione di tono `-12..12` (predefinito 0). +- `providers.minimax.pitch`: variazione di tono `-12..12` (predefinita 0). - `providers.microsoft.enabled`: consente l'uso della sintesi vocale Microsoft (predefinito `true`; nessuna chiave API). - `providers.microsoft.voice`: nome della voce neurale Microsoft (per esempio `en-US-MichelleNeural`). - `providers.microsoft.lang`: codice lingua (per esempio `en-US`). - `providers.microsoft.outputFormat`: formato di output Microsoft (per esempio `audio-24khz-48kbitrate-mono-mp3`). - - Vedi i formati di output Microsoft Speech per i valori validi; non tutti i formati sono supportati dal trasporto bundled basato su Edge. + - Vedi i formati di output di Microsoft Speech per i valori validi; non tutti i formati sono supportati dal trasporto bundled basato su Edge. - `providers.microsoft.rate` / `providers.microsoft.pitch` / `providers.microsoft.volume`: stringhe percentuali (per esempio `+10%`, `-5%`). - `providers.microsoft.saveSubtitles`: scrive sottotitoli JSON accanto al file audio. -- `providers.microsoft.proxy`: URL proxy per le richieste di sintesi vocale Microsoft. -- `providers.microsoft.timeoutMs`: override del timeout richiesta (ms). +- `providers.microsoft.proxy`: URL del proxy per le richieste di sintesi vocale Microsoft. +- `providers.microsoft.timeoutMs`: override del timeout della richiesta (ms). - `edge.*`: alias legacy per le stesse impostazioni Microsoft. ## Override guidati dal modello (attivi per impostazione predefinita) @@ -291,14 +291,14 @@ Quindi esegui: Per impostazione predefinita, il modello **può** emettere direttive TTS per una singola risposta. Quando `messages.tts.auto` è `tagged`, queste direttive sono necessarie per attivare l'audio. -Quando è abilitato, il modello può emettere direttive `[[tts:...]]` per sovrascrivere la voce +Quando è abilitato, il modello può emettere direttive `[[tts:...]]` per sostituire la voce per una singola risposta, più un blocco facoltativo `[[tts:text]]...[[/tts:text]]` per fornire tag espressivi (risate, indicazioni di canto, ecc.) che devono comparire solo nell'audio. Le direttive `provider=...` vengono ignorate a meno che `modelOverrides.allowProvider: true`. -Payload di risposta di esempio: +Esempio di payload di risposta: ``` Here you go. @@ -307,11 +307,11 @@ Here you go. [[tts:text]](laughs) Read the song once more.[[/tts:text]] ``` -Chiavi di direttiva disponibili (quando abilitate): +Chiavi direttiva disponibili (quando abilitate): - `provider` (ID provider di sintesi vocale registrato, per esempio `openai`, `elevenlabs`, `minimax` o `microsoft`; richiede `allowProvider: true`) -- `voice` (voce OpenAI) o `voiceId` (ElevenLabs / MiniMax) -- `model` (modello OpenAI TTS, ID modello ElevenLabs o modello MiniMax) +- `voice` (voce OpenAI) oppure `voiceId` (ElevenLabs / MiniMax) +- `model` (modello TTS OpenAI, model id ElevenLabs o modello MiniMax) - `stability`, `similarityBoost`, `style`, `speed`, `useSpeakerBoost` - `vol` / `volume` (volume MiniMax, 0-10) - `pitch` (tono MiniMax, da -12 a 12) @@ -333,7 +333,7 @@ Disabilita tutti gli override del modello: } ``` -Allowlist facoltativa (abilita il cambio provider mantenendo configurabili gli altri controlli): +Allowlist facoltativa (abilita il cambio provider mantenendo configurabili gli altri parametri): ```json5 { @@ -351,76 +351,74 @@ Allowlist facoltativa (abilita il cambio provider mantenendo configurabili gli a ## Preferenze per utente -I comandi slash scrivono override locali in `prefsPath` (predefinito: -`~/.openclaw/settings/tts.json`, sovrascrivibile con `OPENCLAW_TTS_PREFS` o +I comandi slash scrivono gli override locali in `prefsPath` (predefinito: +`~/.openclaw/settings/tts.json`, sostituibile con `OPENCLAW_TTS_PREFS` o `messages.tts.prefsPath`). Campi memorizzati: - `enabled` - `provider` -- `maxLength` (soglia di riepilogo; predefinito 1500 caratteri) +- `maxLength` (soglia del riepilogo; predefinita 1500 caratteri) - `summarize` (predefinito `true`) -Questi campi sovrascrivono `messages.tts.*` per quell'host. +Questi sostituiscono `messages.tts.*` per quell'host. ## Formati di output (fissi) - **Feishu / Matrix / Telegram / WhatsApp**: messaggio vocale Opus (`opus_48000_64` da ElevenLabs, `opus` da OpenAI). - 48kHz / 64kbps è un buon compromesso per i messaggi vocali. - **Altri canali**: MP3 (`mp3_44100_128` da ElevenLabs, `mp3` da OpenAI). - - 44.1kHz / 128kbps è il bilanciamento predefinito per la chiarezza del parlato. -- **MiniMax**: MP3 (`speech-2.8-hd`, frequenza di campionamento 32kHz). Il formato nota vocale non è supportato nativamente; usa OpenAI o ElevenLabs per messaggi vocali Opus garantiti. + - 44,1kHz / 128kbps è il bilanciamento predefinito per la chiarezza del parlato. +- **MiniMax**: MP3 (modello `speech-2.8-hd`, frequenza di campionamento 32kHz). Il formato per note vocali non è supportato in modo nativo; usa OpenAI o ElevenLabs per messaggi vocali Opus garantiti. - **Microsoft**: usa `microsoft.outputFormat` (predefinito `audio-24khz-48kbitrate-mono-mp3`). - Il trasporto bundled accetta un `outputFormat`, ma non tutti i formati sono disponibili dal servizio. - - I valori del formato di output seguono i formati di output Microsoft Speech (inclusi Ogg/WebM Opus). + - I valori del formato di output seguono i formati di output di Microsoft Speech (inclusi Ogg/WebM Opus). - Telegram `sendVoice` accetta OGG/MP3/M4A; usa OpenAI/ElevenLabs se hai bisogno di messaggi vocali Opus garantiti. - Se il formato di output Microsoft configurato fallisce, OpenClaw riprova con MP3. I formati di output OpenAI/ElevenLabs sono fissi per canale (vedi sopra). -## Comportamento auto-TTS +## Comportamento dell'auto-TTS Quando è abilitato, OpenClaw: -- salta il TTS se la risposta contiene già media o una direttiva `MEDIA:`. +- salta il TTS se la risposta contiene già contenuti multimediali o una direttiva `MEDIA:`. - salta le risposte molto brevi (< 10 caratteri). -- riassume le risposte lunghe quando abilitato usando `agents.defaults.model.primary` (o `summaryModel`). +- riepiloga le risposte lunghe quando abilitato usando `agents.defaults.model.primary` (o `summaryModel`). - allega l'audio generato alla risposta. -Se la risposta supera `maxLength` e il riepilogo è disattivato (o manca una chiave API per il +Se la risposta supera `maxLength` e il riepilogo è disattivato (o non c'è una chiave API per il modello di riepilogo), l'audio viene saltato e viene inviata la normale risposta testuale. -## Diagramma di flusso +## Diagramma del flusso ``` Reply -> TTS enabled? - no -> invia testo - yes -> ha media / MEDIA: / è breve? - yes -> invia testo - no -> lunghezza > limite? - no -> TTS -> allega audio - yes -> riepilogo abilitato? - no -> invia testo - yes -> riepiloga (summaryModel o agents.defaults.model.primary) - -> TTS -> allega audio + no -> send text + yes -> has media / MEDIA: / short? + yes -> send text + no -> length > limit? + no -> TTS -> attach audio + yes -> summary enabled? + no -> send text + yes -> summarize (summaryModel or agents.defaults.model.primary) + -> TTS -> attach audio ``` ## Uso dei comandi slash Esiste un solo comando: `/tts`. -Vedi [Comandi slash](/tools/slash-commands) per i dettagli di abilitazione. +Vedi [Comandi slash](/it/tools/slash-commands) per i dettagli sull'abilitazione. -Nota Discord: `/tts` è un comando Discord integrato, quindi OpenClaw registra +Nota su Discord: `/tts` è un comando integrato di Discord, quindi OpenClaw registra `/voice` come comando nativo lì. Il testo `/tts ...` continua a funzionare. ``` /tts off -/tts always -/tts inbound -/tts tagged +/tts on /tts status /tts provider openai /tts limit 2000 @@ -430,24 +428,26 @@ Nota Discord: `/tts` è un comando Discord integrato, quindi OpenClaw registra Note: -- I comandi richiedono un mittente autorizzato (continuano ad applicarsi le regole allowlist/proprietario). -- `commands.text` o la registrazione del comando nativo devono essere abilitati. -- `off|always|inbound|tagged` sono interruttori per sessione (`/tts on` è un alias di `/tts always`). +- I comandi richiedono un mittente autorizzato (si applicano comunque le regole di allowlist/proprietario). +- `commands.text` o la registrazione dei comandi nativi devono essere abilitati. +- La configurazione `messages.tts.auto` accetta `off|always|inbound|tagged`. +- `/tts on` scrive la preferenza TTS locale su `always`; `/tts off` la scrive su `off`. +- Usa la configurazione quando vuoi i valori predefiniti `inbound` o `tagged`. - `limit` e `summary` vengono memorizzati nelle preferenze locali, non nella configurazione principale. -- `/tts audio` genera una risposta audio una tantum (non abilita/disabilita il TTS). +- `/tts audio` genera una risposta audio una tantum (non attiva il TTS). - `/tts status` include la visibilità del fallback per l'ultimo tentativo: - fallback riuscito: `Fallback: -> ` più `Attempts: ...` - errore: `Error: ...` più `Attempts: ...` - diagnostica dettagliata: `Attempt details: provider:outcome(reasonCode) latency` -- Gli errori API OpenAI ed ElevenLabs ora includono dettagli dell'errore provider analizzati e request id (quando restituito dal provider), che vengono mostrati negli errori/log TTS. +- I fallimenti API di OpenAI ed ElevenLabs ora includono il dettaglio di errore del provider analizzato e l'ID richiesta (quando restituito dal provider), che viene mostrato negli errori/log TTS. ## Strumento agente -Lo strumento `tts` converte il testo in sintesi vocale e restituisce un allegato audio per +Lo strumento `tts` converte il testo in parlato e restituisce un allegato audio per la consegna della risposta. Quando il canale è Feishu, Matrix, Telegram o WhatsApp, -l'audio viene recapitato come messaggio vocale invece che come allegato file. +l'audio viene consegnato come messaggio vocale anziché come allegato file. -## RPC del Gateway +## Gateway RPC Metodi Gateway: