chore(i18n): refresh it translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-06 08:21:32 +00:00
parent 4655c84490
commit cc2fdc1d5e
8 changed files with 1657 additions and 1511 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,30 +1,30 @@
---
read_when:
- Configurazione di Slack o debug della modalità socket/HTTP di Slack
summary: Configurazione di Slack e comportamento di runtime (Socket Mode + HTTP Events API)
summary: Configurazione di Slack e comportamento di runtime (Socket Mode + URL di richiesta HTTP)
title: Slack
x-i18n:
generated_at: "2026-04-06T03:07:03Z"
generated_at: "2026-04-06T08:16:06Z"
model: gpt-5.4
provider: openai
source_hash: 7e4ff2ce7d92276d62f4f3d3693ddb56ca163d5fdc2f1082ff7ba3421fada69c
source_hash: 897001c13d400cc8387a27000b82dd4c0512b2b88e2fe47785634aed8b7ab7af
source_path: channels/slack.md
workflow: 15
---
# Slack
Stato: pronto per la produzione per DM + canali tramite integrazioni dell'app Slack. La modalità predefinita è Socket Mode; è supportata anche la modalità HTTP Events API.
Stato: pronto per la produzione per DM + canali tramite integrazioni dell'app Slack. La modalità predefinita è Socket Mode; sono supportati anche gli URL di richiesta HTTP.
<CardGroup cols={3}>
<Card title="Abbinamento" icon="link" href="/it/channels/pairing">
I DM di Slack usano per impostazione predefinita la modalità di abbinamento.
</Card>
<Card title="Comandi slash" icon="terminal" href="/it/tools/slash-commands">
Comportamento dei comandi nativo e catalogo dei comandi.
Comportamento nativo dei comandi e catalogo dei comandi.
</Card>
<Card title="Risoluzione dei problemi del canale" icon="wrench" href="/it/channels/troubleshooting">
Diagnostica cross-channel e playbook di ripristino.
Diagnostica tra canali e procedure di riparazione.
</Card>
</CardGroup>
@ -33,7 +33,7 @@ Stato: pronto per la produzione per DM + canali tramite integrazioni dell'app Sl
<Tabs>
<Tab title="Socket Mode (predefinita)">
<Steps>
<Step title="Crea l'app Slack e i token">
<Step title="Crea app Slack e token">
Nelle impostazioni dell'app Slack:
- abilita **Socket Mode**
@ -75,7 +75,7 @@ SLACK_BOT_TOKEN=xoxb-...
- `channel_rename`
- `pin_added`, `pin_removed`
Abilita anche App Home **Messages Tab** per i DM.
Abilita anche la **Messages Tab** di App Home per i DM.
</Step>
<Step title="Avvia il gateway">
@ -89,13 +89,13 @@ openclaw gateway
</Tab>
<Tab title="Modalità HTTP Events API">
<Tab title="URL di richiesta HTTP">
<Steps>
<Step title="Configura l'app Slack per HTTP">
- imposta la modalità su HTTP (`channels.slack.mode="http"`)
- copia il **Signing Secret** di Slack
- imposta Event Subscriptions + Interactivity + l'URL di richiesta del comando Slash sullo stesso percorso webhook (predefinito `/slack/events`)
- imposta l'URL di richiesta di Event Subscriptions + Interactivity + Slash command sullo stesso percorso webhook (predefinito `/slack/events`)
</Step>
@ -120,7 +120,7 @@ openclaw gateway
<Step title="Usa percorsi webhook univoci per HTTP multi-account">
La modalità HTTP per account è supportata.
Assegna a ogni account un `webhookPath` distinto in modo che le registrazioni non vadano in conflitto.
Assegna a ogni account un `webhookPath` distinto in modo che le registrazioni non entrino in conflitto.
</Step>
</Steps>
@ -129,8 +129,8 @@ openclaw gateway
## Checklist di manifest e scope
<AccordionGroup>
<Accordion title="Esempio di manifest dell'app Slack" defaultOpen>
<Tabs>
<Tab title="Socket Mode (predefinita)">
```json
{
@ -205,8 +205,98 @@ openclaw gateway
}
```
</Accordion>
</Tab>
<Tab title="URL di richiesta HTTP">
```json
{
"display_information": {
"name": "OpenClaw",
"description": "Slack connector for OpenClaw"
},
"features": {
"bot_user": {
"display_name": "OpenClaw",
"always_online": true
},
"app_home": {
"messages_tab_enabled": true,
"messages_tab_read_only_enabled": false
},
"slash_commands": [
{
"command": "/openclaw",
"description": "Send a message to OpenClaw",
"should_escape": false,
"url": "https://gateway-host.example.com/slack/events"
}
]
},
"oauth_config": {
"scopes": {
"bot": [
"app_mentions:read",
"assistant:write",
"channels:history",
"channels:read",
"chat:write",
"commands",
"emoji:read",
"files:read",
"files:write",
"groups:history",
"groups:read",
"im:history",
"im:read",
"im:write",
"mpim:history",
"mpim:read",
"mpim:write",
"pins:read",
"pins:write",
"reactions:read",
"reactions:write",
"users:read"
]
}
},
"settings": {
"event_subscriptions": {
"request_url": "https://gateway-host.example.com/slack/events",
"bot_events": [
"app_mention",
"channel_rename",
"member_joined_channel",
"member_left_channel",
"message.channels",
"message.groups",
"message.im",
"message.mpim",
"pin_added",
"pin_removed",
"reaction_added",
"reaction_removed"
]
},
"interactivity": {
"is_enabled": true,
"request_url": "https://gateway-host.example.com/slack/events",
"message_menu_options_url": "https://gateway-host.example.com/slack/events"
}
}
}
```
</Tab>
</Tabs>
<AccordionGroup>
<Accordion title="Scope di paternità opzionali (operazioni di scrittura)">
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:`.
</Accordion>
<Accordion title="Scope opzionali del token utente (operazioni di lettura)">
Se configuri `channels.slack.userToken`, gli scope di lettura tipici sono:
@ -216,7 +306,7 @@ openclaw gateway
- `reactions:read`
- `pins:read`
- `emoji:read`
- `search:read` (se dipendi dalle letture della ricerca di Slack)
- `search:read` (se dipendi dalle letture di ricerca di Slack)
</Accordion>
</AccordionGroup>
@ -227,27 +317,26 @@ openclaw gateway
- La modalità HTTP richiede `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` e `userToken` accettano stringhe in chiaro
o oggetti SecretRef.
- I token nella configurazione sovrascrivono il fallback env.
- I token di 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 un comportamento di sola lettura (`userTokenReadOnly: true`).
- Facoltativo: aggiungi `chat:write.customize` se vuoi che i messaggi in uscita usino l'identità dell'agente attivo (con `username` e icona personalizzati). `icon_emoji` usa la sintassi `:emoji_name:`.
- `userToken` (`xoxp-...`) è solo di configurazione (nessun fallback env) e per impostazione predefinita usa un comportamento di sola lettura (`userTokenReadOnly: true`).
Comportamento della panoramica di stato:
Comportamento dell'istantanea di stato:
- L'ispezione dell'account Slack traccia i campi `*Source` e `*Status`
per credenziale (`botToken`, `appToken`, `signingSecret`, `userToken`).
- L'ispezione dell'account Slack tiene traccia dei campi `*Source` e `*Status`
per ogni credenziale (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Lo stato è `available`, `configured_unavailable` o `missing`.
- `configured_unavailable` significa che l'account è configurato tramite SecretRef
o un'altra sorgente di segreti non inline, ma il percorso comando/runtime
corrente non è riuscito a risolvere il valore effettivo.
o un'altra sorgente segreta non inline, ma il percorso comando/runtime corrente
non è riuscito a risolvere il valore effettivo.
- In modalità HTTP, è incluso `signingSecretStatus`; in Socket Mode, la
coppia richiesta è `botTokenStatus` + `appTokenStatus`.
<Tip>
Per le azioni/letture della directory, quando configurato può essere preferito il token utente. 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 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.
</Tip>
## Azioni e gate
## Azioni e controlli
Le azioni Slack sono controllate da `channels.slack.actions.*`.
@ -255,18 +344,18 @@ Gruppi di azioni disponibili negli strumenti Slack attuali:
| Gruppo | Predefinito |
| ---------- | ----------- |
| messages | abilitato |
| reactions | abilitato |
| pins | abilitato |
| memberInfo | abilitato |
| emojiList | abilitato |
| messages | enabled |
| reactions | enabled |
| pins | enabled |
| memberInfo | enabled |
| emojiList | enabled |
Le azioni correnti dei messaggi Slack includono `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` ed `emoji-list`.
Le azioni correnti per i 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
## Controllo accessi e instradamento
<Tabs>
<Tab title="Criteri DM">
<Tab title="Criterio DM">
`channels.slack.dmPolicy` controlla l'accesso ai DM (legacy: `channels.slack.dm.policy`):
- `pairing` (predefinito)
@ -279,21 +368,21 @@ Le azioni correnti dei messaggi Slack includono `send`, `upload-file`, `download
- `dm.enabled` (predefinito true)
- `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 nominati ereditano `channels.slack.allowFrom` quando il loro `allowFrom` non è impostato.
- Gli account nominati non ereditano `channels.slack.accounts.default.allowFrom`.
- Gli account con nome ereditano `channels.slack.allowFrom` quando il proprio `allowFrom` non è impostato.
- Gli account con nome non ereditano `channels.slack.accounts.default.allowFrom`.
L'abbinamento nei DM usa `openclaw pairing approve slack <code>`.
</Tab>
<Tab title="Criteri canale">
`channels.slack.groupPolicy` controlla la gestione dei canali:
<Tab title="Criterio del canale">
`channels.slack.groupPolicy` controlla la gestione del canale:
- `open`
- `allowlist`
@ -306,21 +395,21 @@ Le azioni correnti dei messaggi Slack includono `send`, `upload-file`, `download
Risoluzione nome/ID:
- le voci dell'allowlist dei canali e dell'allowlist DM vengono risolte all'avvio quando l'accesso del token lo consente
- le voci irrisolte con nome canale vengono mantenute come configurate ma ignorate per l'instradamento per impostazione predefinita
- l'autorizzazione in ingresso e l'instradamento del canale usano per impostazione predefinita prima l'ID; la corrispondenza diretta di username/slug richiede `channels.slack.dangerouslyAllowNameMatching: true`
- le voci irrisolte del nome canale vengono mantenute come configurate ma ignorate per impostazione predefinita dall'instradamento
- l'autorizzazione in ingresso e l'instradamento dei canali sono incentrati sugli ID per impostazione predefinita; la corrispondenza diretta di username/slug richiede `channels.slack.dangerouslyAllowNameMatching: true`
</Tab>
<Tab title="Menzioni e utenti del canale">
I messaggi del canale sono soggetti a gate per menzione per impostazione predefinita.
I messaggi del canale sono vincolati alle menzioni per impostazione predefinita.
Sorgenti di menzione:
Fonti di menzione:
- menzione esplicita dell'app (`<@botId>`)
- pattern regex di menzione (`agents.list[].groupChat.mentionPatterns`, fallback `messages.groupChat.mentionPatterns`)
- comportamento implicito del thread di risposta al bot
- comportamento implicito di risposta nel thread al bot
Controlli per canale (`channels.slack.channels.<id>`; i nomi solo tramite risoluzione all'avvio o `dangerouslyAllowNameMatching`):
Controlli per canale (`channels.slack.channels.<id>`; nomi solo tramite risoluzione all'avvio o `dangerouslyAllowNameMatching`):
- `requireMention`
- `users` (allowlist)
@ -328,26 +417,26 @@ Le azioni correnti dei messaggi Slack includono `send`, `upload-file`, `download
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- formato della chiave `toolsBySender`: `id:`, `e164:`, `username:`, `name:` o wildcard `"*"`
- formato della chiave `toolsBySender`: `id:`, `e164:`, `username:`, `name:` oppure wildcard `"*"`
(le chiavi legacy senza prefisso continuano a essere mappate solo a `id:`)
</Tab>
</Tabs>
## Thread, sessioni e tag di risposta
## Threading, sessioni e tag di risposta
- I DM vengono 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 dei canali: `agent:<agentId>:slack:channel:<channelId>`.
- Le risposte nei thread possono creare suffissi di sessione thread (`:thread:<threadTs>`) quando applicabile.
- `channels.slack.thread.historyScope` è `thread` per impostazione predefinita; `thread.inheritParent` è `false` per impostazione predefinita.
- `channels.slack.thread.initialHistoryLimit` controlla quanti messaggi esistenti del thread vengono recuperati all'avvio di una nuova sessione thread (predefinito `20`; imposta `0` per disabilitare).
- I DM sono instradati come `direct`; i canali come `channel`; gli MPIM come `group`.
- Con `session.dmScope=main` predefinito, i DM di Slack confluiscono nella sessione principale dell'agente.
- Sessioni canale: `agent:<agentId>:slack:channel:<channelId>`.
- Le risposte nei thread possono creare suffissi di sessione del thread (`:thread:<threadTs>`) 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 thread (predefinito `20`; imposta `0` per disabilitare).
Controlli del threading delle risposte:
Controlli di threading delle risposte:
- `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:
@ -356,9 +445,9 @@ Sono supportati tag di risposta manuali:
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 ack
## Reazioni di conferma
`ackReaction` invia un'emoji di conferma mentre OpenClaw elabora un messaggio in ingresso.
`ackReaction` invia un'emoji di conferma mentre OpenClaw sta elaborando un messaggio in ingresso.
Ordine di risoluzione:
@ -374,20 +463,20 @@ Note:
## Streaming del testo
`channels.slack.streaming` controlla il comportamento dell'anteprima live:
`channels.slack.streaming` controlla il comportamento di anteprima in tempo reale:
- `off`: disabilita lo streaming dell'anteprima live.
- `off`: disabilita lo streaming di anteprima in tempo reale.
- `partial` (predefinito): sostituisce il testo di anteprima con l'ultimo output parziale.
- `block`: aggiunge aggiornamenti di anteprima in blocchi.
- `progress`: mostra il testo di stato dell'avanzamento durante la generazione, quindi invia il testo finale.
- `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 di testo nativo di Slack quando `streaming` è `partial` (predefinito: `true`).
`channels.slack.nativeStreaming` controlla lo streaming nativo del testo Slack quando `streaming` è `partial` (predefinito: `true`).
- Per visualizzare lo streaming di testo nativo deve essere disponibile un thread di risposta. La selezione del thread continua comunque a seguire `replyToMode`. Senza di esso, viene usata la normale anteprima bozza.
- I contenuti multimediali e i payload non testuali usano come fallback la consegna normale.
- Se lo streaming fallisce a metà risposta, OpenClaw usa come fallback la consegna normale per i payload rimanenti.
- Deve essere disponibile un thread di risposta perché lo streaming nativo del testo venga visualizzato. La selezione del thread continua comunque a seguire `replyToMode`. Senza thread, viene usata la normale anteprima bozza.
- I contenuti multimediali e i payload non testuali tornano alla consegna normale.
- Se lo streaming fallisce a metà risposta, OpenClaw torna alla consegna normale per i payload rimanenti.
Usa l'anteprima bozza invece dello streaming di testo nativo di Slack:
Usa l'anteprima bozza invece dello streaming nativo del testo Slack:
```json5
{
@ -402,12 +491,12 @@ Usa l'anteprima bozza invece dello streaming di testo nativo di Slack:
Chiavi legacy:
- `channels.slack.streamMode` (`replace | status_final | append`) viene migrato automaticamente a `channels.slack.streaming`.
- il booleano `channels.slack.streaming` viene migrato automaticamente a `channels.slack.nativeStreaming`.
- `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`.
## Fallback della reazione di digitazione
`typingReaction` aggiunge una reazione temporanea al messaggio Slack in ingresso mentre OpenClaw elabora una risposta, quindi la rimuove quando l'esecuzione termina. Questo è particolarmente utile al di fuori delle risposte nei thread, che usano un indicatore di stato predefinito "is typing...".
`typingReaction` aggiunge una reazione temporanea al messaggio Slack in ingresso mentre OpenClaw elabora una risposta, poi la rimuove al termine dell'esecuzione. È particolarmente utile al di fuori delle risposte nei thread, che usano un indicatore di stato predefinito "sta scrivendo...".
Ordine di risoluzione:
@ -419,20 +508,19 @@ Note:
- Slack si aspetta shortcode (ad esempio `"hourglass_flowing_sand"`).
- La reazione è best-effort e la pulizia viene tentata automaticamente dopo il completamento della risposta o del percorso di errore.
## Media, suddivisione e consegna
## Media, suddivisione in blocchi e consegna
<AccordionGroup>
<Accordion title="Allegati in ingresso">
Gli allegati di file Slack vengono scaricati da URL private ospitate da Slack (flusso di richiesta autenticato tramite token) e scritti nello store multimediale quando il recupero riesce e i limiti di dimensione lo consentono.
Il limite dimensionale di runtime per l'ingresso è per impostazione predefinita `20MB`, salvo override con `channels.slack.mediaMaxMb`.
Gli allegati file di Slack vengono scaricati da URL privati ospitati da Slack (flusso di richiesta autenticato tramite token) e scritti nel media store quando il recupero riesce e i limiti di dimensione lo consentono.
Il limite dimensionale di runtime in ingresso è predefinito su `20MB`, salvo override tramite `channels.slack.mediaMaxMb`.
</Accordion>
<Accordion title="Testo e file in uscita">
- i blocchi di testo usano `channels.slack.textChunkLimit` (predefinito 4000)
- `channels.slack.chunkMode="newline"` abilita la suddivisione con priorità ai paragrafi
- gli invii di file usano le API di upload di Slack e possono includere risposte nei thread (`thread_ts`)
- `channels.slack.chunkMode="newline"` abilita la suddivisione prima per paragrafo
- gli invii di file usano le API di caricamento 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 media
</Accordion>
@ -442,24 +530,23 @@ Note:
- `user:<id>` per i DM
- `channel:<id>` per i canali
I DM di Slack vengono aperti tramite le API di conversazione di Slack quando si invia a target utente.
I DM di Slack vengono aperti tramite le API di conversazione di Slack quando si invia verso target utente.
</Accordion>
</AccordionGroup>
## Comandi e comportamento slash
- La modalità automatica dei comandi nativi è **off** 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`).
- Quando i comandi nativi sono abilitati, registra in Slack i comandi slash corrispondenti (nomi `/<command>`), con un'eccezione:
- La modalità automatica dei comandi nativi è **disattivata** per Slack (`commands.native: "auto"` non abilita i comandi nativi di Slack).
- Abilita i gestori dei comandi nativi di Slack con `channels.slack.commands.native: true` (o con `commands.native: true` globale).
- Quando i comandi nativi sono abilitati, registra in Slack i corrispondenti slash command (nomi `/<command>`), con un'eccezione:
- registra `/agentstatus` per il comando status (Slack riserva `/status`)
- Se i comandi nativi non sono abilitati, puoi eseguire un singolo comando slash configurato tramite `channels.slack.slashCommand`.
- I menu nativi degli argomenti ora adattano la loro strategia di rendering:
- fino a 5 opzioni: blocchi pulsante
- Se i comandi nativi non sono abilitati, puoi eseguire un singolo slash command configurato tramite `channels.slack.slashCommand`.
- I menu argomenti nativi ora adattano la loro strategia di rendering:
- fino a 5 opzioni: blocchi con pulsanti
- 6-100 opzioni: menu di selezione statico
- più di 100 opzioni: selezione esterna con filtraggio 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 come fallback i pulsanti
- Per payload di opzioni lunghi, i menu degli argomenti dei comandi slash usano una finestra di conferma prima di inviare un valore selezionato.
- più di 100 opzioni: selezione esterna con filtro asincrono delle opzioni quando sono disponibili i gestori delle opzioni di interattività
- se i valori delle opzioni codificati superano i limiti di Slack, il flusso torna ai pulsanti
- Per payload di opzioni lunghi, i menu degli argomenti dei comandi slash usano una finestra di conferma prima di inviare il valore selezionato.
Impostazioni predefinite del comando slash:
@ -472,11 +559,11 @@ Le sessioni slash usano chiavi isolate:
- `agent:<agentId>:slack:slash:<userId>`
e continuano comunque a instradare l'esecuzione del comando rispetto alla sessione della conversazione di destinazione (`CommandTargetSessionKey`).
e continuano comunque a instradare l'esecuzione del comando verso la sessione della conversazione di destinazione (`CommandTargetSessionKey`).
## Risposte interattive
Slack può renderizzare controlli di risposta interattivi creati dall'agente, ma questa funzionalità è disabilitata per impostazione predefinita.
Slack può visualizzare controlli di risposta interattivi creati dall'agente, ma questa funzionalità è disabilitata per impostazione predefinita.
Abilitala globalmente:
@ -519,27 +606,27 @@ Queste direttive vengono compilate in Slack Block Kit e instradano clic o selezi
Note:
- Si tratta di UI specifica di 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 come fallback la risposta di testo originale invece di inviare un payload blocks non valido.
- Questa è un'interfaccia specifica di Slack. Gli altri canali non traducono le direttive Slack Block Kit nei propri sistemi di pulsanti.
- I valori di 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 torna alla risposta testuale originale invece di inviare un payload blocks non valido.
## Approvazioni exec in Slack
Slack può fungere da client di approvazione nativo con pulsanti interattivi e interazioni, invece di usare come fallback la Web UI o il terminale.
Slack può agire come client di approvazione nativo con pulsanti e interazioni interattive, invece di usare come fallback la Web UI o il terminale.
- Le approvazioni exec usano `channels.slack.execApprovals.*` per l'instradamento nativo di DM/canale.
- Le approvazioni dei plugin possono comunque risolversi attraverso la stessa superficie nativa di pulsanti Slack quando la richiesta arriva già in Slack e il tipo di id approvazione è `plugin:`.
- L'autorizzazione dell'approvatore continua a essere applicata: solo gli utenti identificati come approvatori possono approvare o negare richieste tramite Slack.
- Le approvazioni exec usano `channels.slack.execApprovals.*` per l'instradamento nativo di DM/canali.
- Le approvazioni dei plugin possono comunque risolversi attraverso la stessa interfaccia nativa a pulsanti di 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 dei pulsanti di approvazione degli altri canali. Quando `interactivity` è abilitato nelle impostazioni della tua app Slack, i prompt di approvazione vengono renderizzati come pulsanti Block Kit direttamente nella conversazione.
Quando questi pulsanti sono presenti, rappresentano l'UX di approvazione primaria; OpenClaw
Questo usa la stessa interfaccia condivisa a 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, rappresentano l'esperienza utente primaria per l'approvazione; 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.
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 come fallback `commands.ownerAllowFrom` quando possibile)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, predefinito: `dm`)
- `agentFilter`, `sessionFilter`
@ -547,7 +634,7 @@ Slack abilita automaticamente le approvazioni exec native quando `enabled` non
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.
Comportamento predefinito senza una configurazione esplicita delle approvazioni exec Slack:
Comportamento predefinito senza configurazione esplicita delle approvazioni exec Slack:
```json5
{
@ -557,8 +644,8 @@ Comportamento predefinito senza una configurazione esplicita delle approvazioni
}
```
La configurazione nativa esplicita di Slack è necessaria solo quando vuoi sovrascrivere gli approvatori, aggiungere filtri o
attivare la consegna nella chat di origine:
La configurazione esplicita nativa Slack è necessaria solo quando vuoi sovrascrivere gli approvatori, aggiungere filtri o
scegliere la consegna nella chat di origine:
```json5
{
@ -574,36 +661,36 @@ attivare la consegna nella chat di origine:
}
```
L'inoltro condiviso `approvals.exec` è separato. Usalo solo quando i prompt di approvazione exec devono anche
essere instradati verso altre chat o target espliciti fuori banda. Anche l'inoltro condiviso `approvals.plugin` è
L'inoltro condiviso `approvals.exec` è separato. Usalo solo quando i prompt di approvazione exec devono essere instradati anche
ad altre chat o a target espliciti fuori banda. Anche l'inoltro condiviso `approvals.plugin` è
separato; i pulsanti nativi di Slack possono comunque risolvere le approvazioni dei plugin quando tali richieste arrivano già
in Slack.
Anche `/approve` nella stessa chat funziona nei canali e DM Slack che già supportano i comandi. Vedi [Approvazioni exec](/it/tools/exec-approvals) per il modello completo di inoltro delle approvazioni.
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.
## Eventi e comportamento operativo
- Le modifiche/eliminazioni dei messaggi e le trasmissioni del thread vengono mappate in eventi di sistema.
- Gli eventi di aggiunta/rimozione di reazioni vengono mappati in eventi di sistema.
- Gli eventi di ingresso/uscita membro, canale creato/rinominato e aggiunta/rimozione pin vengono mappati in eventi di sistema.
- Le modifiche/eliminazioni dei messaggi e le trasmissioni dei thread vengono mappate in eventi di sistema.
- Gli eventi di aggiunta/rimozione di reazione vengono mappati in eventi di sistema.
- Gli eventi di ingresso/uscita dei membri, creazione/rinomina del canale 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 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 dalle allowlist mittente configurate quando applicabile.
- Le azioni block e le interazioni modal emettono eventi di sistema strutturati `Slack interaction: ...` con campi payload dettagliati:
- azioni block: valori selezionati, etichette, valori picker e metadati `workflow_*`
- eventi modal `view_submission` e `view_closed` con metadati del canale instradato e input del modulo
- I metadati di topic/purpose del canale sono trattati come contesto non attendibile e possono essere inseriti nel contesto di instradamento.
- Il messaggio iniziale del thread e il seeding iniziale del contesto della cronologia del thread vengono filtrati dalle allowlist configurate dei mittenti quando applicabile.
- Le azioni sui blocchi e le interazioni modali emettono eventi di sistema strutturati `Slack interaction: ...` con campi payload completi:
- azioni sui blocchi: 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
## Riferimenti alla configurazione
Riferimento principale:
- [Riferimento di configurazione - Slack](/it/gateway/configuration-reference#slack)
Campi Slack ad alto segnale:
Campi Slack ad alto valore informativo:
- modalità/autenticazione: `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 canale: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- interruttore di compatibilità: `dangerouslyAllowNameMatching` (di emergenza; lascialo disattivato salvo necessità)
- accesso ai canali: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- threading/cronologia: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- consegna: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `nativeStreaming`
- operazioni/funzionalità: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
@ -615,7 +702,7 @@ Riferimento principale:
Controlla, in ordine:
- `groupPolicy`
- allowlist canali (`channels.slack.channels`)
- allowlist dei canali (`channels.slack.channels`)
- `requireMention`
- allowlist `users` per canale
@ -642,8 +729,8 @@ openclaw pairing list slack
</Accordion>
<Accordion title="La modalità socket non si connette">
Convalida bot + app token e l'abilitazione di Socket Mode nelle impostazioni dell'app Slack.
<Accordion title="La modalità Socket non si connette">
Convalida i token bot + app e l'abilitazione di Socket Mode nelle impostazioni dell'app Slack.
Se `openclaw channels status --probe --json` mostra `botTokenStatus` o
`appTokenStatus: "configured_unavailable"`, l'account Slack è
@ -657,22 +744,22 @@ openclaw pairing list slack
- signing secret
- percorso webhook
- URL di richiesta Slack (Events + Interactivity + Slash Commands)
- URL di richiesta Slack (Eventi + Interattività + Slash Commands)
- `webhookPath` univoco per account HTTP
Se `signingSecretStatus: "configured_unavailable"` appare nelle
panoramiche dell'account, l'account HTTP è configurato ma il runtime corrente non è riuscito
a risolvere il signing secret supportato da SecretRef.
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.
</Accordion>
<Accordion title="I comandi nativi/slash non si attivano">
Verifica se intendevi usare:
Verifica se intendevi:
- modalità comandi nativi (`channels.slack.commands.native: true`) con comandi slash corrispondenti registrati in Slack
- oppure modalità comando slash singolo (`channels.slack.slashCommand.enabled: true`)
- modalità comando nativa (`channels.slack.commands.native: true`) con i corrispondenti slash command registrati in Slack
- oppure modalità singolo slash command (`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.
</Accordion>
</AccordionGroup>
@ -682,7 +769,7 @@ openclaw pairing list slack
- [Abbinamento](/it/channels/pairing)
- [Gruppi](/it/channels/groups)
- [Sicurezza](/it/gateway/security)
- [Instradamento del canale](/it/channels/channel-routing)
- [Instradamento dei canali](/it/channels/channel-routing)
- [Risoluzione dei problemi](/it/channels/troubleshooting)
- [Configurazione](/it/gateway/configuration)
- [Comandi slash](/it/tools/slash-commands)

View File

@ -1,116 +1,116 @@
---
read_when:
- Vuoi che la promozione della memoria venga eseguita automaticamente
- Vuoi capire cosa fa ogni fase del dreaming
- Vuoi ottimizzare il consolidamento senza inquinare `MEMORY.md`
summary: Consolidamento della memoria in background con fasi light, deep e REM più un Dream Diary
title: Dreaming (sperimentale)
- Vuoi capire cosa fa ogni fase del sogno
- Vuoi regolare il consolidamento senza inquinare `MEMORY.md`
summary: Consolidamento della memoria in background con fasi leggere, profonde e REM, più un Diario dei sogni
title: Sognare (sperimentale)
x-i18n:
generated_at: "2026-04-06T03:06:15Z"
generated_at: "2026-04-06T08:15:04Z"
model: gpt-5.4
provider: openai
source_hash: f27da718176bebf59fe8a80fddd4fb5b6d814ac5647f6c1e8344bcfb328db9de
source_hash: 36c4b1e70801d662090dc8ce20608c2f141c23cd7ce53c54e3dcf332c801fd4e
source_path: concepts/dreaming.md
workflow: 15
---
# Dreaming (sperimentale)
# Sognare (sperimentale)
Dreaming è il sistema di consolidamento della memoria in background in `memory-core`.
Aiuta OpenClaw a spostare segnali forti a breve termine nella memoria durevole, mantenendo
Il sogno è il sistema di consolidamento della memoria in background in `memory-core`.
Aiuta OpenClaw a spostare segnali forti a breve termine nella memoria duratura, mantenendo
il processo spiegabile e verificabile.
Dreaming è **opt-in** ed è disabilitato per impostazione predefinita.
Il sogno è **facoltativo** ed è disabilitato per impostazione predefinita.
## Cosa scrive dreaming
## Cosa scrive il sogno
Dreaming mantiene due tipi di output:
Il sogno mantiene due tipi di output:
- **Stato macchina** in `memory/.dreams/` (recall store, segnali di fase, checkpoint di ingestione, lock).
- **Output leggibile dall'uomo** in `DREAMS.md` (o nell'esistente `dreams.md`) e file di report di fase facoltativi in `memory/dreaming/<phase>/YYYY-MM-DD.md`.
- **Stato macchina** in `memory/.dreams/` (archivio di richiamo, segnali di fase, checkpoint di ingestione, lock).
- **Output leggibile dagli esseri umani** in `DREAMS.md` (o `dreams.md` esistente) e file di report di fase facoltativi in `memory/dreaming/<phase>/YYYY-MM-DD.md`.
La promozione a lungo termine continua a scrivere solo in `MEMORY.md`.
## Modello a fasi
## Modello di fase
Dreaming usa tre fasi cooperative:
Il sogno usa tre fasi cooperative:
| Fase | Scopo | Scrittura persistente |
| ----- | ----------------------------------------- | --------------------- |
| Light | Ordina e prepara il materiale recente a breve termine | No |
| Deep | Valuta e promuove i candidati durevoli | Sì (`MEMORY.md`) |
| REM | Riflette su temi e idee ricorrenti | No |
| Fase | Scopo | Scrittura duratura |
| ----- | ----------------------------------------- | ------------------ |
| Leggera | Ordinare e preparare il materiale recente a breve termine | No |
| Profonda | Valutare e promuovere i candidati duraturi | Sì (`MEMORY.md`) |
| REM | Riflettere su temi e idee ricorrenti | No |
Queste fasi sono dettagli interni di implementazione, non "modalità"
separate configurate dall'utente.
separate configurabili dall'utente.
### Fase light
### Fase leggera
La fase light acquisisce segnali recenti di memoria giornaliera e tracce di recall, li deduplica
e prepara le righe candidate.
La fase leggera acquisisce segnali recenti della memoria giornaliera e tracce di richiamo, li deduplica
e prepara righe candidate.
- Legge dallo stato di recall a breve termine e dai file recenti della memoria giornaliera.
- Scrive un blocco gestito `## Light Sleep` quando l'archiviazione include output inline.
- Registra segnali di rinforzo per il successivo ranking deep.
- Legge dallo stato di richiamo a breve termine e dai file recenti della memoria giornaliera.
- Scrive un blocco gestito `## Sonno leggero` quando l'archiviazione include output inline.
- Registra segnali di rinforzo per la successiva classificazione profonda.
- Non scrive mai in `MEMORY.md`.
### Fase deep
### Fase profonda
La fase deep decide cosa diventa memoria a lungo termine.
La fase profonda decide cosa diventa memoria a lungo termine.
- Classifica i candidati usando punteggio ponderato e soglie di accesso.
- Classifica i candidati usando punteggi ponderati e soglie di filtro.
- Richiede il superamento di `minScore`, `minRecallCount` e `minUniqueQueries`.
- Reidrata gli snippet dai file giornalieri live prima della scrittura, quindi gli snippet obsoleti/eliminati vengono saltati.
- Reidrata gli snippet dai file giornalieri attivi prima di scrivere, quindi gli snippet obsoleti o eliminati vengono saltati.
- Aggiunge le voci promosse a `MEMORY.md`.
- Scrive un riepilogo `## Deep Sleep` in `DREAMS.md` e facoltativamente scrive `memory/dreaming/deep/YYYY-MM-DD.md`.
- Scrive un riepilogo `## Sonno profondo` in `DREAMS.md` e facoltativamente scrive `memory/dreaming/deep/YYYY-MM-DD.md`.
### Fase REM
La fase REM estrae pattern e segnali riflessivi.
La fase REM estrae schemi e segnali riflessivi.
- Costruisce riepiloghi di temi e riflessioni a partire da tracce recenti a breve termine.
- Scrive un blocco gestito `## REM Sleep` quando l'archiviazione include output inline.
- Registra segnali di rinforzo REM usati dal ranking deep.
- Costruisce riepiloghi di temi e riflessioni dalle recenti tracce a breve termine.
- Scrive un blocco gestito `## Sonno REM` quando l'archiviazione include output inline.
- Registra segnali di rinforzo REM usati dalla classificazione profonda.
- Non scrive mai in `MEMORY.md`.
## Dream Diary
## Diario dei sogni
Dreaming mantiene anche un **Dream Diary** narrativo in `DREAMS.md`.
Il sogno mantiene anche un **Diario dei sogni** narrativo in `DREAMS.md`.
Dopo che ogni fase ha accumulato materiale sufficiente, `memory-core` esegue un turno
di subagent in background best-effort (usando il modello runtime predefinito) e aggiunge una breve voce del diario.
in background best-effort del sottoagente (usando il modello runtime predefinito) e aggiunge una breve voce di diario.
Questo diario è destinato alla lettura umana nell'interfaccia Dreams, non è una fonte di promozione.
Questo diario è pensato per la lettura umana nell'interfaccia Dreams, non è una fonte di promozione.
## Segnali di ranking deep
## Segnali di classificazione profonda
Il ranking deep usa sei segnali base ponderati più il rinforzo di fase:
La classificazione profonda usa sei segnali di base ponderati più il rinforzo di fase:
| Segnale | Peso | Descrizione |
| ------------------- | ---- | ------------------------------------------------- |
| Frequenza | 0.24 | Quanti segnali a breve termine ha accumulato la voce |
| Rilevanza | 0.30 | Qualità media di recupero per la voce |
| Diversità delle query | 0.15 | Contesti distinti query/giorno che l'hanno fatta emergere |
| Recenza | 0.15 | Punteggio di freschezza con decadimento temporale |
| Consolidamento | 0.10 | Forza di ricorrenza su più giorni |
| Ricchezza concettuale | 0.06 | Densità di tag concettuali da snippet/percorso |
| Segnale | Peso | Descrizione |
| ------------------- | ------ | ------------------------------------------------- |
| Frequenza | 0.24 | Quanti segnali a breve termine ha accumulato la voce |
| Rilevanza | 0.30 | Qualità media di recupero per la voce |
| Diversità delle query | 0.15 | Contesti distinti di query/giorno in cui è emersa |
| Recenza | 0.15 | Punteggio di freschezza con decadimento temporale |
| Consolidamento | 0.10 | Forza di ricorrenza su più giorni |
| Ricchezza concettuale | 0.06 | Densità dei tag concettuali da snippet/percorso |
I riscontri delle fasi light e REM aggiungono un piccolo incremento con decadimento della recenza da
I riscontri delle fasi leggera e REM aggiungono un piccolo incremento con decadimento di recenza da
`memory/.dreams/phase-signals.json`.
## Pianificazione
Quando è abilitato, `memory-core` gestisce automaticamente un job cron per una
scansione completa del dreaming. Ogni scansione esegue le fasi in ordine: light -> REM -> deep.
Quando è abilitato, `memory-core` gestisce automaticamente un job cron per un ciclo
completo di sogno. Ogni ciclo esegue le fasi in ordine: leggera -> REM -> profonda.
Comportamento predefinito della cadenza:
Comportamento predefinito della frequenza:
| Impostazione | Predefinito |
| Impostazione | Predefinito |
| -------------------- | ----------- |
| `dreaming.frequency` | `0 3 * * *` |
## Avvio rapido
Abilitare dreaming:
Abilita il sogno:
```json
{
@ -128,7 +128,7 @@ Abilitare dreaming:
}
```
Abilitare dreaming con una cadenza di scansione personalizzata:
Abilita il sogno con una frequenza di ciclo personalizzata:
```json
{
@ -157,7 +157,7 @@ Abilitare dreaming con una cadenza di scansione personalizzata:
/dreaming help
```
## Workflow CLI
## Flusso di lavoro CLI
Usa la promozione CLI per l'anteprima o l'applicazione manuale:
@ -168,20 +168,35 @@ openclaw memory promote --limit 5
openclaw memory status --deep
```
`memory promote` manuale usa per impostazione predefinita le soglie della fase deep, salvo override
tramite flag CLI.
Il comando manuale `memory promote` usa per impostazione predefinita le soglie della fase profonda, salvo override
tramite flag della CLI.
Spiega perché un candidato specifico verrebbe o non verrebbe promosso:
```bash
openclaw memory promote-explain "router vlan"
openclaw memory promote-explain "router vlan" --json
```
Visualizza in anteprima riflessioni REM, verità candidate e output della promozione profonda senza
scrivere nulla:
```bash
openclaw memory rem-harness
openclaw memory rem-harness --json
```
## Valori predefiniti principali
Tutte le impostazioni si trovano in `plugins.entries.memory-core.config.dreaming`.
| Chiave | Predefinito |
| Chiave | Predefinito |
| ----------- | ----------- |
| `enabled` | `false` |
| `frequency` | `0 3 * * *` |
La policy delle fasi, le soglie e il comportamento di archiviazione sono dettagli interni di implementazione
(non configurazione esposta all'utente).
La policy di fase, le soglie e il comportamento di archiviazione sono dettagli interni di implementazione
(non configurazione visibile all'utente).
Vedi [Riferimento della configurazione della memoria](/it/reference/memory-config#dreaming-experimental)
per l'elenco completo delle chiavi.
@ -190,15 +205,15 @@ per l'elenco completo delle chiavi.
Quando è abilitata, la scheda **Dreams** del Gateway mostra:
- stato corrente di abilitazione di dreaming
- stato a livello di fase e presenza della scansione gestita
- stato attuale di abilitazione del sogno
- stato a livello di fase e presenza del ciclo gestito
- conteggi di breve termine, lungo termine e promossi oggi
- orario della prossima esecuzione pianificata
- un lettore Dream Diary espandibile basato su `doctor.memory.dreamDiary`
- un lettore espandibile del Diario dei sogni basato su `doctor.memory.dreamDiary`
## Correlati
- [Memory](/it/concepts/memory)
- [Memory Search](/it/concepts/memory-search)
- [memory CLI](/cli/memory)
- [Memoria](/it/concepts/memory)
- [Ricerca nella memoria](/it/concepts/memory-search)
- [CLI memory](/cli/memory)
- [Riferimento della configurazione della memoria](/it/reference/memory-config)

File diff suppressed because it is too large Load Diff

View File

@ -3,79 +3,81 @@ read_when:
- Vedi l'avviso OPENCLAW_PLUGIN_SDK_COMPAT_DEPRECATED
- Vedi l'avviso OPENCLAW_EXTENSION_API_DEPRECATED
- Stai aggiornando un plugin alla moderna architettura dei plugin
- Mantieni un plugin OpenClaw esterno
- Mantieni un plugin esterno di OpenClaw
sidebarTitle: Migrate to SDK
summary: Migra dal layer legacy di retrocompatibilità al moderno Plugin SDK
summary: Migra dal livello legacy di retrocompatibilità al moderno Plugin SDK
title: Migrazione del Plugin SDK
x-i18n:
generated_at: "2026-04-06T03:10:03Z"
generated_at: "2026-04-06T08:16:01Z"
model: gpt-5.4
provider: openai
source_hash: b71ce69b30c3bb02da1b263b1d11dc3214deae5f6fc708515e23b5a1c7bb7c8f
source_hash: 94f12d1376edd8184714cc4dbea4a88fa8ed652f65e9365ede6176f3bf441b33
source_path: plugins/sdk-migration.md
workflow: 15
---
# Migrazione del Plugin SDK
OpenClaw è passato da un ampio layer di retrocompatibilità a una moderna
architettura dei plugin con importazioni mirate e documentate. Se il tuo plugin è stato creato prima
della nuova architettura, questa guida ti aiuta a migrare.
OpenClaw è passato da un ampio livello di retrocompatibilità a una moderna
architettura dei plugin con importazioni mirate e documentate. Se il tuo plugin
è stato creato prima della nuova architettura, questa guida ti aiuterà nella
migrazione.
## Cosa sta cambiando
Il vecchio sistema di plugin forniva due superfici molto ampie che permettevano ai plugin di importare
qualsiasi cosa servisse da un unico punto di ingresso:
Il vecchio sistema dei plugin forniva due superfici molto ampie che permettevano
ai plugin di importare tutto ciò di cui avevano bisogno da un unico punto di accesso:
- **`openclaw/plugin-sdk/compat`** — una singola importazione che riesportava decine di
helper. È stata introdotta per mantenere funzionanti i vecchi plugin basati su hook mentre la
nuova architettura dei plugin veniva costruita.
- **`openclaw/extension-api`** — un bridge che dava ai plugin accesso diretto agli
helper lato host come l'embedded agent runner.
- **`openclaw/plugin-sdk/compat`** — una singola importazione che riesportava
decine di helper. È stata introdotta per mantenere funzionanti i vecchi
plugin basati su hook mentre veniva sviluppata la nuova architettura dei plugin.
- **`openclaw/extension-api`** — un bridge che forniva ai plugin accesso diretto
agli helper lato host, come l'embedded agent runner.
Entrambe le superfici sono ora **deprecate**. Funzionano ancora a runtime, ma i nuovi
plugin non devono usarle e i plugin esistenti dovrebbero migrare prima che la prossima
major release le rimuova.
Entrambe le superfici sono ora **deprecate**. Continuano a funzionare a runtime,
ma i nuovi plugin non devono usarle e i plugin esistenti dovrebbero migrare prima
che la prossima major release le rimuova.
<Warning>
Il layer di retrocompatibilità verrà rimosso in una futura major release.
I plugin che continuano a importare da queste superfici smetteranno di funzionare quando ciò accadrà.
Il livello di retrocompatibilità verrà rimosso in una futura major release.
I plugin che importano ancora da queste superfici smetteranno di funzionare quando ciò accadrà.
</Warning>
## Perché questo è cambiato
## Perché è cambiato
Il vecchio approccio causava problemi:
- **Avvio lento** — importare un helper caricava decine di moduli non correlati
- **Dipendenze circolari** — le riesportazioni ampie rendevano facile creare cicli di importazione
- **Superficie API poco chiara** — non c'era modo di capire quali esportazioni fossero stabili rispetto a quelle interne
- **Superficie API poco chiara** — non c'era modo di capire quali export fossero stabili e quali interni
Il moderno Plugin SDK risolve questo problema: ogni percorso di importazione (`openclaw/plugin-sdk/\<subpath\>`)
è un modulo piccolo e autosufficiente con uno scopo chiaro e un contratto documentato.
Sono state rimosse anche le vecchie superfici di comodo dei provider per i canali bundled. Le importazioni
Anche le vecchie convenience seam dei provider per i canali bundled non esistono più. Importazioni
come `openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp`,
superfici helper con marchio del canale e
le helper seam con branding del canale e
`openclaw/plugin-sdk/telegram-core` erano scorciatoie private del mono-repo, non
contratti plugin stabili. Usa invece sottopercorsi SDK generici e stretti. All'interno del
workspace dei plugin bundled, mantieni gli helper di proprietà del provider nel proprio
`api.ts` o `runtime-api.ts` di quel plugin.
contratti stabili per i plugin. Usa invece i sotto-percorsi SDK generici e mirati. All'interno del
workspace dei plugin bundled, mantieni gli helper di proprietà del provider nel file
`api.ts` o `runtime-api.ts` del plugin stesso.
Esempi attuali di provider bundled:
- Anthropic mantiene gli helper di stream specifici di Claude nella propria superficie `api.ts` /
- Anthropic mantiene gli helper di stream specifici per Claude nel proprio `api.ts` /
`contract-api.ts`
- OpenAI mantiene builder provider, helper per i modelli predefiniti e builder di provider
realtime nel proprio `api.ts`
- OpenRouter mantiene nel proprio `api.ts` il builder del provider e gli helper di onboarding/configurazione
- OpenAI mantiene builder dei provider, helper per i modelli predefiniti e builder del provider realtime
nel proprio `api.ts`
- OpenRouter mantiene il builder del provider e gli helper di onboarding/config nel proprio
`api.ts`
## Come migrare
<Steps>
<Step title="Verifica il comportamento di fallback del wrapper Windows">
Se il tuo plugin usa `openclaw/plugin-sdk/windows-spawn`, i wrapper Windows
`.cmd`/`.bat` non risolti ora falliscono in modalità fail-closed a meno che tu non passi esplicitamente
`.cmd`/`.bat` non risolti ora falliscono in modo chiuso, a meno che tu non passi esplicitamente
`allowShellFallback: true`.
```typescript
@ -92,7 +94,7 @@ Esempi attuali di provider bundled:
```
Se il tuo chiamante non dipende intenzionalmente dal fallback della shell, non impostare
`allowShellFallback` e gestisci invece l'errore lanciato.
`allowShellFallback` e gestisci invece l'errore sollevato.
</Step>
@ -107,7 +109,7 @@ Esempi attuali di provider bundled:
</Step>
<Step title="Sostituisci con importazioni mirate">
Ogni esportazione della vecchia superficie corrisponde a uno specifico percorso di importazione moderno:
Ogni export dalla vecchia superficie corrisponde a uno specifico percorso di importazione moderno:
```typescript
// Before (deprecated backwards-compatibility layer)
@ -145,11 +147,11 @@ Esempi attuali di provider bundled:
| `resolveThinkingDefault` | `api.runtime.agent.resolveThinkingDefault` |
| `resolveAgentTimeoutMs` | `api.runtime.agent.resolveAgentTimeoutMs` |
| `ensureAgentWorkspace` | `api.runtime.agent.ensureAgentWorkspace` |
| helper dell'archivio sessioni | `api.runtime.agent.session.*` |
| helper del session store | `api.runtime.agent.session.*` |
</Step>
<Step title="Compila e testa">
<Step title="Compila ed esegui i test">
```bash
pnpm build
pnpm test -- my-plugin/
@ -160,158 +162,166 @@ Esempi attuali di provider bundled:
## Riferimento dei percorsi di importazione
<Accordion title="Tabella dei percorsi di importazione comuni">
| Percorso di importazione | Scopo | Esportazioni principali |
| Percorso di importazione | Scopo | Export chiave |
| --- | --- | --- |
| `plugin-sdk/plugin-entry` | Helper canonico del punto di ingresso plugin | `definePluginEntry` |
| `plugin-sdk/core` | Riesportazione legacy ombrello per definizioni/builder di entry dei canali | `defineChannelPluginEntry`, `createChatChannelPlugin` |
| `plugin-sdk/config-schema` | Esportazione dello schema di configurazione root | `OpenClawSchema` |
| `plugin-sdk/provider-entry` | Helper di entry per singolo provider | `defineSingleProviderPluginEntry` |
| `plugin-sdk/channel-core` | Definizioni e builder focalizzati per le entry dei canali | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/setup` | Helper condivisi del wizard di setup | Prompt di allowlist, builder dello stato di setup |
| `plugin-sdk/setup-runtime` | Helper runtime per il setup | Adattatori di patch setup import-safe, helper per note di lookup, `promptResolvedAllowFrom`, `splitSetupEntries`, proxy di setup delegati |
| `plugin-sdk/setup-adapter-runtime` | Helper per l'adattatore di setup | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | Helper degli strumenti di setup | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Helper multi-account | Helper per elenco account/config/action-gate |
| `plugin-sdk/account-id` | Helper per l'ID account | `DEFAULT_ACCOUNT_ID`, normalizzazione dell'ID account |
| `plugin-sdk/account-resolution` | Helper per la lookup degli account | Helper di lookup account + fallback predefinito |
| `plugin-sdk/account-helpers` | Helper ristretti per gli account | Helper per elenco account/azioni account |
| `plugin-sdk/channel-setup` | Adattatori del wizard di setup | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, più `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/channel-pairing` | Primitive di pairing DM | `createChannelPairingController` |
| `plugin-sdk/plugin-entry` | Helper canonico per l'entry del plugin | `definePluginEntry` |
| `plugin-sdk/core` | Riesportazione legacy ombrello per definizioni/builder dell'entry del canale | `defineChannelPluginEntry`, `createChatChannelPlugin` |
| `plugin-sdk/config-schema` | Export dello schema di configurazione root | `OpenClawSchema` |
| `plugin-sdk/provider-entry` | Helper di entry per provider singolo | `defineSingleProviderPluginEntry` |
| `plugin-sdk/channel-core` | Definizioni e builder mirati per l'entry del canale | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/setup` | Helper condivisi della procedura guidata di setup | Prompt allowlist, builder dello stato di setup |
| `plugin-sdk/setup-runtime` | Helper runtime per il setup | Adattatori patch di setup sicuri per l'importazione, helper per note di lookup, `promptResolvedAllowFrom`, `splitSetupEntries`, proxy di setup delegati |
| `plugin-sdk/setup-adapter-runtime` | Helper per gli adattatori di setup | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | Helper di tooling per il setup | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Helper multi-account | Helper per elenco/configurazione/azione-gate degli account |
| `plugin-sdk/account-id` | Helper per account-id | `DEFAULT_ACCOUNT_ID`, normalizzazione di account-id |
| `plugin-sdk/account-resolution` | Helper per la ricerca degli account | Helper per ricerca account + fallback predefinito |
| `plugin-sdk/account-helpers` | Helper mirati per gli account | Helper per elenco account/azioni account |
| `plugin-sdk/channel-setup` | Adattatori della procedura guidata di setup | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, più `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/channel-pairing` | Primitive di abbinamento DM | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | Wiring di prefisso risposta + digitazione | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | Factory di adattatori config | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Builder di schema config | Tipi di schema della configurazione del canale |
| `plugin-sdk/telegram-command-config` | Helper della configurazione dei comandi Telegram | Normalizzazione del nome del comando, trim della descrizione, validazione di duplicati/conflitti |
| `plugin-sdk/channel-config-helpers` | Factory degli adattatori di configurazione | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Builder dello schema di configurazione | Tipi di schema di configurazione del canale |
| `plugin-sdk/telegram-command-config` | Helper di configurazione dei comandi Telegram | Normalizzazione dei nomi dei comandi, trimming delle descrizioni, validazione di duplicati/conflitti |
| `plugin-sdk/channel-policy` | Risoluzione delle policy gruppo/DM | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | Tracciamento dello stato dell'account | `createAccountStatusSink` |
| `plugin-sdk/inbound-envelope` | Helper per l'envelope inbound | Helper condivisi per route + builder dell'envelope |
| `plugin-sdk/inbound-reply-dispatch` | Helper per le risposte inbound | Helper condivisi per record-and-dispatch |
| `plugin-sdk/messaging-targets` | Parsing dei target di messaggistica | Helper per parsing/matching dei target |
| `plugin-sdk/outbound-media` | Helper per i media outbound | Caricamento condiviso dei media outbound |
| `plugin-sdk/outbound-runtime` | Helper runtime outbound | Helper delegati per identità/send outbound |
| `plugin-sdk/thread-bindings-runtime` | Helper per i thread binding | Lifecycle dei thread binding e helper degli adattatori |
| `plugin-sdk/agent-media-payload` | Helper legacy per il payload media | Builder del payload media agente per layout di campi legacy |
| `plugin-sdk/channel-runtime` | Shim di compatibilità deprecato | Solo utility runtime legacy del canale |
| `plugin-sdk/channel-send-result` | Tipi del risultato di invio | Tipi del risultato della risposta |
| `plugin-sdk/channel-lifecycle` | Tracciamento dello stato degli account | `createAccountStatusSink` |
| `plugin-sdk/inbound-envelope` | Helper per inbound envelope | Helper condivisi di route + builder di envelope |
| `plugin-sdk/inbound-reply-dispatch` | Helper per le risposte in ingresso | Helper condivisi di registrazione e dispatch |
| `plugin-sdk/messaging-targets` | Parsing dei target di messaggistica | Helper per parsing/corrispondenza dei target |
| `plugin-sdk/outbound-media` | Helper per media in uscita | Caricamento condiviso dei media in uscita |
| `plugin-sdk/outbound-runtime` | Helper runtime in uscita | Helper per identità in uscita/delegati di invio |
| `plugin-sdk/thread-bindings-runtime` | Helper per thread-binding | Ciclo di vita dei thread-binding e helper degli adattatori |
| `plugin-sdk/agent-media-payload` | Helper legacy per media payload | Builder del media payload dell'agente per layout legacy dei campi |
| `plugin-sdk/channel-runtime` | Shim di compatibilità deprecato | Solo utility legacy del runtime del canale |
| `plugin-sdk/channel-send-result` | Tipi di risultato dell'invio | Tipi di risultato della risposta |
| `plugin-sdk/runtime-store` | Storage persistente del plugin | `createPluginRuntimeStore` |
| `plugin-sdk/runtime` | Helper runtime ampi | Helper per runtime/logging/backup/installazione plugin |
| `plugin-sdk/runtime-env` | Helper ristretti dell'ambiente runtime | Logger/runtime env, helper per timeout, retry e backoff |
| `plugin-sdk/plugin-runtime` | Helper runtime condivisi del plugin | Helper per comandi/hook/http/interattivi del plugin |
| `plugin-sdk/hook-runtime` | Helper della pipeline hook | Helper condivisi per pipeline di webhook/hook interni |
| `plugin-sdk/runtime-env` | Helper mirati per runtime env | Helper per logger/runtime env, timeout, retry e backoff |
| `plugin-sdk/plugin-runtime` | Helper runtime condivisi del plugin | Helper per comandi/hook/http/interattivi del plugin |
| `plugin-sdk/hook-runtime` | Helper della pipeline di hook | Helper condivisi della pipeline di webhook/internal hook |
| `plugin-sdk/lazy-runtime` | Helper runtime lazy | `createLazyRuntimeModule`, `createLazyRuntimeMethod`, `createLazyRuntimeMethodBinder`, `createLazyRuntimeNamedExport`, `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Helper di processo | Helper exec condivisi |
| `plugin-sdk/cli-runtime` | Helper runtime CLI | Formattazione dei comandi, attese, helper di versione |
| `plugin-sdk/gateway-runtime` | Helper del gateway | Client gateway e helper di patch dello stato dei canali |
| `plugin-sdk/process-runtime` | Helper di processo | Helper condivisi di exec |
| `plugin-sdk/cli-runtime` | Helper runtime della CLI | Formattazione dei comandi, attese, helper per la versione |
| `plugin-sdk/gateway-runtime` | Helper del gateway | Client del gateway e helper patch dello stato dei canali |
| `plugin-sdk/config-runtime` | Helper di configurazione | Helper di caricamento/scrittura della configurazione |
| `plugin-sdk/telegram-command-config` | Helper dei comandi Telegram | Helper di validazione dei comandi Telegram con fallback stabile quando la superficie contrattuale Telegram bundled non è disponibile |
| `plugin-sdk/approval-runtime` | Helper per i prompt di approvazione | Payload di approvazione exec/plugin, helper di capability/profilo di approvazione, helper runtime/instradamento di approvazione nativa |
| `plugin-sdk/approval-auth-runtime` | Helper auth delle approvazioni | Risoluzione dell'approvatore, auth per azione nella stessa chat |
| `plugin-sdk/approval-client-runtime` | Helper client delle approvazioni | Helper nativi di profilo/filtro per approvazione exec |
| `plugin-sdk/approval-delivery-runtime` | Helper delivery delle approvazioni | Adattatori di capability/delivery per approvazione nativa |
| `plugin-sdk/approval-native-runtime` | Helper per il target di approvazione | Helper di binding target/account per approvazione nativa |
| `plugin-sdk/approval-reply-runtime` | Helper per le risposte di approvazione | Helper di payload di risposta per approvazione exec/plugin |
| `plugin-sdk/security-runtime` | Helper di sicurezza | Helper condivisi per trust, controllo DM, contenuti esterni e raccolta dei segreti |
| `plugin-sdk/ssrf-policy` | Helper della policy SSRF | Helper di allowlist host e policy di rete privata |
| `plugin-sdk/ssrf-runtime` | Helper runtime SSRF | Pinned-dispatcher, fetch protetto, helper di policy SSRF |
| `plugin-sdk/collection-runtime` | Helper di cache limitata | `pruneMapToMaxSize` |
| `plugin-sdk/diagnostic-runtime` | Helper di gating diagnostico | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` |
| `plugin-sdk/error-runtime` | Helper di formattazione degli errori | `formatUncaughtError`, `isApprovalNotFoundError`, helper del grafo degli errori |
| `plugin-sdk/fetch-runtime` | Helper di fetch/proxy incapsulati | `resolveFetch`, helper proxy |
| `plugin-sdk/telegram-command-config` | Helper per comandi Telegram | Helper di validazione dei comandi Telegram con fallback stabile quando la superficie contrattuale del Telegram bundled non è disponibile |
| `plugin-sdk/approval-runtime` | Helper per prompt di approvazione | Payload di approvazione exec/plugin, helper per capability/profilo di approvazione, helper nativi di routing/runtime dell'approvazione |
| `plugin-sdk/approval-auth-runtime` | Helper auth per approvazione | Risoluzione degli approvatori, auth di azione nella stessa chat |
| `plugin-sdk/approval-client-runtime` | Helper client per approvazione | Helper per profilo/filtro di approvazione nativa di exec |
| `plugin-sdk/approval-delivery-runtime` | Helper di delivery per approvazione | Adattatori nativi di capability/delivery dell'approvazione |
| `plugin-sdk/approval-native-runtime` | Helper target per approvazione | Helper nativi per target/account binding dell'approvazione |
| `plugin-sdk/approval-reply-runtime` | Helper per risposte di approvazione | Helper per payload di risposta di approvazione exec/plugin |
| `plugin-sdk/security-runtime` | Helper di sicurezza | Helper condivisi per trust, gating DM, contenuti esterni e raccolta dei segreti |
| `plugin-sdk/ssrf-policy` | Helper per policy SSRF | Helper per allowlist host e policy di rete privata |
| `plugin-sdk/ssrf-runtime` | Helper runtime SSRF | Pinned-dispatcher, fetch protetto, helper per policy SSRF |
| `plugin-sdk/collection-runtime` | Helper per cache bounded | `pruneMapToMaxSize` |
| `plugin-sdk/diagnostic-runtime` | Helper per gating diagnostico | `isDiagnosticFlagEnabled`, `isDiagnosticsEnabled` |
| `plugin-sdk/error-runtime` | Helper di formattazione degli errori | `formatUncaughtError`, `isApprovalNotFoundError`, helper per grafi di errore |
| `plugin-sdk/fetch-runtime` | Helper per fetch/proxy wrapped | `resolveFetch`, helper proxy |
| `plugin-sdk/host-runtime` | Helper di normalizzazione host | `normalizeHostname`, `normalizeScpRemoteHost` |
| `plugin-sdk/retry-runtime` | Helper di retry | `RetryConfig`, `retryAsync`, esecutori di policy |
| `plugin-sdk/allow-from` | Formattazione della allowlist | `formatAllowFromLowercase` |
| `plugin-sdk/allowlist-resolution` | Mappatura dell'input della allowlist | `mapAllowlistResolutionInputs` |
| `plugin-sdk/command-auth` | Gating dei comandi e helper della superficie dei comandi | `resolveControlCommandGate`, helper di autorizzazione del mittente, helper del registro comandi |
| `plugin-sdk/secret-input` | Parsing dell'input dei segreti | Helper per l'input dei segreti |
| `plugin-sdk/webhook-ingress` | Helper per richieste webhook | Utility per i target webhook |
| `plugin-sdk/webhook-request-guards` | Helper delle guardie per il body del webhook | Helper per lettura/limite del body della richiesta |
| `plugin-sdk/reply-runtime` | Runtime condiviso della risposta | Dispatch inbound, heartbeat, pianificatore di risposte, chunking |
| `plugin-sdk/reply-dispatch-runtime` | Helper ristretti per il dispatch delle risposte | Helper di finalize + provider dispatch |
| `plugin-sdk/reply-history` | Helper della cronologia delle risposte | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | Pianificazione del riferimento della risposta | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Helper dei chunk di risposta | Helper di chunking del testo/markdown |
| `plugin-sdk/session-store-runtime` | Helper dell'archivio sessioni | Helper per percorso dell'archivio + updated-at |
| `plugin-sdk/state-paths` | Helper dei percorsi di stato | Helper per directory di stato e OAuth |
| `plugin-sdk/routing` | Helper di routing/chiave di sessione | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, helper di normalizzazione della chiave di sessione |
| `plugin-sdk/status-helpers` | Helper dello stato del canale | Builder del riepilogo di stato canale/account, valori predefiniti dello stato runtime, helper per i metadati dei problemi |
| `plugin-sdk/target-resolver-runtime` | Helper del risolutore del target | Helper condivisi del risolutore del target |
| `plugin-sdk/string-normalization-runtime` | Helper di normalizzazione delle stringhe | Helper per normalizzazione di slug/stringhe |
| `plugin-sdk/request-url` | Helper per URL della richiesta | Estrai URL stringa da input simili a request |
| `plugin-sdk/allow-from` | Formattazione allowlist | `formatAllowFromLowercase` |
| `plugin-sdk/allowlist-resolution` | Mappatura input dell'allowlist | `mapAllowlistResolutionInputs` |
| `plugin-sdk/command-auth` | Gating dei comandi e helper per la superficie dei comandi | `resolveControlCommandGate`, helper di autorizzazione del mittente, helper del registro comandi |
| `plugin-sdk/secret-input` | Parsing dell'input segreto | Helper per input segreti |
| `plugin-sdk/webhook-ingress` | Helper per richieste webhook | Utility per target webhook |
| `plugin-sdk/webhook-request-guards` | Helper guard per il body dei webhook | Helper per lettura/limite del body della richiesta |
| `plugin-sdk/reply-runtime` | Runtime condiviso delle risposte | Dispatch in ingresso, heartbeat, pianificatore delle risposte, chunking |
| `plugin-sdk/reply-dispatch-runtime` | Helper mirati per dispatch delle risposte | Helper per finalize + dispatch del provider |
| `plugin-sdk/reply-history` | Helper per reply-history | `buildHistoryContext`, `buildPendingHistoryContextFromMap`, `recordPendingHistoryEntry`, `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | Pianificazione dei riferimenti di risposta | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Helper per chunk delle risposte | Helper per chunking di testo/markdown |
| `plugin-sdk/session-store-runtime` | Helper per session store | Helper per percorso dello store + updated-at |
| `plugin-sdk/state-paths` | Helper per i percorsi di stato | Helper per directory di stato e OAuth |
| `plugin-sdk/routing` | Helper per routing/session-key | `resolveAgentRoute`, `buildAgentSessionKey`, `resolveDefaultAgentBoundAccountId`, helper di normalizzazione session-key |
| `plugin-sdk/status-helpers` | Helper per stato del canale | Builder di riepilogo dello stato canale/account, valori predefiniti dello stato runtime, helper per metadati dei problemi |
| `plugin-sdk/target-resolver-runtime` | Helper per target resolver | Helper condivisi per target resolver |
| `plugin-sdk/string-normalization-runtime` | Helper per normalizzazione delle stringhe | Helper per normalizzazione di slug/stringhe |
| `plugin-sdk/request-url` | Helper per URL della richiesta | Estrae URL stringa da input simili a richieste |
| `plugin-sdk/run-command` | Helper per comandi temporizzati | Runner di comandi temporizzati con stdout/stderr normalizzati |
| `plugin-sdk/param-readers` | Lettori di parametri | Lettori comuni di parametri tool/CLI |
| `plugin-sdk/tool-send` | Estrazione del send del tool | Estrai campi target di invio canonici dagli argomenti del tool |
| `plugin-sdk/temp-path` | Helper per i percorsi temporanei | Helper condivisi per i percorsi di download temporaneo |
| `plugin-sdk/logging-core` | Helper di logging | Logger del sottosistema e helper di redazione |
| `plugin-sdk/markdown-table-runtime` | Helper per tabelle Markdown | Helper per la modalità tabelle Markdown |
| `plugin-sdk/reply-payload` | Tipi della risposta del messaggio | Tipi del payload della risposta |
| `plugin-sdk/provider-setup` | Helper curati di setup del provider locale/self-hosted | Helper di discovery/configurazione del provider self-hosted |
| `plugin-sdk/self-hosted-provider-setup` | Helper focalizzati di setup del provider self-hosted compatibile con OpenAI | Gli stessi helper di discovery/configurazione del provider self-hosted |
| `plugin-sdk/provider-auth-runtime` | Helper runtime auth del provider | Helper runtime per la risoluzione della chiave API |
| `plugin-sdk/provider-auth-api-key` | Helper di setup della chiave API del provider | Helper di onboarding/scrittura profilo per chiave API |
| `plugin-sdk/provider-auth-result` | Helper del risultato auth del provider | Builder standard del risultato auth OAuth |
| `plugin-sdk/provider-auth-login` | Helper di login interattivo del provider | Helper condivisi di login interattivo |
| `plugin-sdk/provider-env-vars` | Helper per env var del provider | Helper di lookup delle env var auth del provider |
| `plugin-sdk/provider-model-shared` | Helper condivisi per modello/replay del provider | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, builder condivisi della policy di replay, helper degli endpoint del provider e helper di normalizzazione dell'ID del modello |
| `plugin-sdk/provider-catalog-shared` | Helper condivisi per il catalogo del provider | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/param-readers` | Lettori di parametri | Lettori comuni di parametri di tool/CLI |
| `plugin-sdk/tool-send` | Estrazione dell'invio del tool | Estrae i campi target di invio canonici dagli argomenti del tool |
| `plugin-sdk/temp-path` | Helper per percorsi temporanei | Helper condivisi per percorsi temporanei di download |
| `plugin-sdk/logging-core` | Helper di logging | Logger di sottosistema e helper di redazione |
| `plugin-sdk/markdown-table-runtime` | Helper per markdown table | Helper per modalità markdown table |
| `plugin-sdk/reply-payload` | Tipi di risposta del messaggio | Tipi di payload della risposta |
| `plugin-sdk/provider-setup` | Helper curati per setup di provider locali/self-hosted | Helper per scoperta/configurazione di provider self-hosted |
| `plugin-sdk/self-hosted-provider-setup` | Helper mirati per setup di provider self-hosted compatibili con OpenAI | Gli stessi helper per scoperta/configurazione di provider self-hosted |
| `plugin-sdk/provider-auth-runtime` | Helper auth runtime del provider | Helper runtime per risoluzione delle API key |
| `plugin-sdk/provider-auth-api-key` | Helper per setup delle API key del provider | Helper per onboarding/scrittura del profilo delle API key |
| `plugin-sdk/provider-auth-result` | Helper per auth-result del provider | Builder standard di auth-result OAuth |
| `plugin-sdk/provider-auth-login` | Helper per login interattivo del provider | Helper condivisi per login interattivo |
| `plugin-sdk/provider-env-vars` | Helper per env var del provider | Helper per lookup delle env var auth del provider |
| `plugin-sdk/provider-model-shared` | Helper condivisi per modelli/replay del provider | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, builder condivisi per replay-policy, helper per endpoint del provider e normalizzazione degli id modello |
| `plugin-sdk/provider-catalog-shared` | Helper condivisi per cataloghi provider | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-onboard` | Patch di onboarding del provider | Helper di configurazione dell'onboarding |
| `plugin-sdk/provider-http` | Helper HTTP del provider | Helper generici per capability HTTP/endpoint del provider |
| `plugin-sdk/provider-web-fetch` | Helper web-fetch del provider | Helper di registrazione/cache del provider web-fetch |
| `plugin-sdk/provider-web-search` | Helper web-search del provider | Helper di registrazione/cache/configurazione del provider web-search |
| `plugin-sdk/provider-tools` | Helper di compatibilità tool/schema del provider | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, pulizia dello schema Gemini + diagnostica, e helper di compatibilità xAI come `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-http` | Helper HTTP del provider | Helper generici per HTTP/capability degli endpoint del provider |
| `plugin-sdk/provider-web-fetch` | Helper per web-fetch del provider | Helper per registrazione/cache del provider web-fetch |
| `plugin-sdk/provider-web-search` | Helper per web-search del provider | Helper per registrazione/cache/configurazione del provider web-search |
| `plugin-sdk/provider-tools` | Helper di compatibilità tool/schema del provider | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, pulizia dello schema Gemini + diagnostica e helper di compatibilità xAI come `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | Helper di utilizzo del provider | `fetchClaudeUsage`, `fetchGeminiUsage`, `fetchGithubCopilotUsage` e altri helper di utilizzo del provider |
| `plugin-sdk/provider-stream` | Helper wrapper degli stream del provider | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, tipi di wrapper degli stream, e helper wrapper condivisi per Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/keyed-async-queue` | Coda asincrona ordinata | `KeyedAsyncQueue` |
| `plugin-sdk/media-runtime` | Helper media condivisi | Helper di fetch/transform/store dei media più builder del payload media |
| `plugin-sdk/media-understanding` | Helper di media-understanding | Tipi del provider di media understanding più esportazioni helper lato provider per immagini/audio |
| `plugin-sdk/text-runtime` | Helper testuali condivisi | Rimozione del testo visibile all'assistant, helper di render/chunking/tabella markdown, helper di redazione, helper di directive-tag, utility di testo sicuro e helper correlati di testo/logging |
| `plugin-sdk/text-chunking` | Helper di chunking del testo | Helper di chunking del testo outbound |
| `plugin-sdk/speech` | Helper speech | Tipi del provider speech più helper lato provider per direttive, registro e validazione |
| `plugin-sdk/speech-core` | Core speech condiviso | Tipi del provider speech, registro, direttive, normalizzazione |
| `plugin-sdk/realtime-transcription` | Helper per trascrizione realtime | Tipi del provider e helper del registro |
| `plugin-sdk/realtime-voice` | Helper per voce realtime | Tipi del provider e helper del registro |
| `plugin-sdk/image-generation-core` | Core condiviso per generazione immagini | Tipi per generazione immagini, failover, auth e helper del registro |
| `plugin-sdk/music-generation` | Helper per generazione musicale | Tipi provider/richiesta/risultato per generazione musicale |
| `plugin-sdk/music-generation-core` | Core condiviso per generazione musicale | Tipi per generazione musicale, helper di failover, lookup provider e parsing dei riferimenti modello |
| `plugin-sdk/video-generation` | Helper per generazione video | Tipi provider/richiesta/risultato per generazione video |
| `plugin-sdk/video-generation-core` | Core condiviso per generazione video | Tipi per generazione video, helper di failover, lookup provider e parsing dei riferimenti modello |
| `plugin-sdk/interactive-runtime` | Helper di risposta interattiva | Normalizzazione/riduzione del payload di risposta interattiva |
| `plugin-sdk/channel-config-primitives` | Primitive della configurazione del canale | Primitive ristrette dello schema config del canale |
| `plugin-sdk/provider-stream` | Helper wrapper degli stream del provider | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, tipi di stream wrapper e helper wrapper condivisi per Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/keyed-async-queue` | Coda async ordinata | `KeyedAsyncQueue` |
| `plugin-sdk/media-runtime` | Helper media condivisi | Helper per fetch/trasformazione/storage dei media più builder di media payload |
| `plugin-sdk/media-generation-runtime` | Helper condivisi per media-generation | Helper condivisi per failover, selezione dei candidati e messaggi di modello mancante per generazione di immagini/video/musica |
| `plugin-sdk/media-understanding` | Helper per media-understanding | Tipi di provider media-understanding più export di helper immagine/audio lato provider |
| `plugin-sdk/text-runtime` | Helper di testo condivisi | Rimozione del testo visibile all'assistente, helper di rendering/chunking/tabelle markdown, helper di redazione, helper directive-tag, utility di testo sicuro e relativi helper di testo/logging |
| `plugin-sdk/text-chunking` | Helper per chunking del testo | Helper per chunking del testo in uscita |
| `plugin-sdk/speech` | Helper speech | Tipi di provider speech più export di helper lato provider per direttive, registry e validazione |
| `plugin-sdk/speech-core` | Core speech condiviso | Tipi di provider speech, registry, direttive, normalizzazione |
| `plugin-sdk/realtime-transcription` | Helper per trascrizione realtime | Tipi di provider e helper del registry |
| `plugin-sdk/realtime-voice` | Helper per voce realtime | Tipi di provider e helper del registry |
| `plugin-sdk/image-generation-core` | Core condiviso per image-generation | Tipi, failover, auth e helper del registry per image-generation |
| `plugin-sdk/music-generation` | Helper per music-generation | Tipi di provider/richiesta/risultato per music-generation |
| `plugin-sdk/music-generation-core` | Core condiviso per music-generation | Tipi di music-generation, helper di failover, lookup dei provider e parsing di model-ref |
| `plugin-sdk/video-generation` | Helper per video-generation | Tipi di provider/richiesta/risultato per video-generation |
| `plugin-sdk/video-generation-core` | Core condiviso per video-generation | Tipi di video-generation, helper di failover, lookup dei provider e parsing di model-ref |
| `plugin-sdk/interactive-runtime` | Helper per risposte interattive | Normalizzazione/riduzione del payload delle risposte interattive |
| `plugin-sdk/channel-config-primitives` | Primitive di configurazione del canale | Primitive mirate dello schema di configurazione del canale |
| `plugin-sdk/channel-config-writes` | Helper di scrittura della configurazione del canale | Helper di autorizzazione per la scrittura della configurazione del canale |
| `plugin-sdk/channel-plugin-common` | Prelude condivisa del canale | Esportazioni della prelude condivisa del plugin canale |
| `plugin-sdk/channel-status` | Helper dello stato del canale | Helper condivisi per snapshot/riepilogo dello stato del canale |
| `plugin-sdk/allowlist-config-edit` | Helper della configurazione allowlist | Helper per modifica/lettura della configurazione allowlist |
| `plugin-sdk/group-access` | Helper di accesso al gruppo | Helper condivisi per le decisioni di accesso al gruppo |
| `plugin-sdk/direct-dm` | Helper direct-DM | Helper condivisi per auth/guard dei direct-DM |
| `plugin-sdk/channel-plugin-common` | Prelude condiviso del canale | Export condivisi del preludio del plugin del canale |
| `plugin-sdk/channel-status` | Helper per stato del canale | Helper condivisi per snapshot/riepilogo dello stato del canale |
| `plugin-sdk/allowlist-config-edit` | Helper di configurazione dell'allowlist | Helper per modifica/lettura della configurazione dell'allowlist |
| `plugin-sdk/group-access` | Helper per accesso ai gruppi | Helper condivisi per decisioni di accesso ai gruppi |
| `plugin-sdk/direct-dm` | Helper per direct-DM | Helper condivisi per auth/guard di direct-DM |
| `plugin-sdk/extension-shared` | Helper condivisi delle estensioni | Primitive helper per canali passivi/stato |
| `plugin-sdk/webhook-targets` | Helper per i target webhook | Registro dei target webhook e helper di installazione delle route |
| `plugin-sdk/webhook-path` | Helper del percorso webhook | Helper di normalizzazione del percorso webhook |
| `plugin-sdk/web-media` | Helper condivisi per i media web | Helper di caricamento dei media remoti/locali |
| `plugin-sdk/zod` | Riesportazione Zod | Riesportazione di `zod` per i consumatori del Plugin SDK |
| `plugin-sdk/memory-core` | Helper bundled memory-core | Superficie helper di memory manager/config/file/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Facade runtime del motore memory | Facade runtime di indicizzazione/ricerca memory |
| `plugin-sdk/memory-core-host-engine-foundation` | Motore foundation host memory | Esportazioni del motore foundation host memory |
| `plugin-sdk/memory-core-host-engine-embeddings` | Motore embeddings host memory | Esportazioni del motore embeddings host memory |
| `plugin-sdk/memory-core-host-engine-qmd` | Motore QMD host memory | Esportazioni del motore QMD host memory |
| `plugin-sdk/memory-core-host-engine-storage` | Motore storage host memory | Esportazioni del motore storage host memory |
| `plugin-sdk/memory-core-host-multimodal` | Helper multimodali host memory | Helper multimodali host memory |
| `plugin-sdk/memory-core-host-query` | Helper query host memory | Helper query host memory |
| `plugin-sdk/memory-core-host-secret` | Helper secret host memory | Helper secret host memory |
| `plugin-sdk/memory-core-host-status` | Helper stato host memory | Helper stato host memory |
| `plugin-sdk/memory-core-host-runtime-cli` | Runtime CLI host memory | Helper runtime CLI host memory |
| `plugin-sdk/memory-core-host-runtime-core` | Runtime core host memory | Helper runtime core host memory |
| `plugin-sdk/memory-core-host-runtime-files` | Helper file/runtime host memory | Helper file/runtime host memory |
| `plugin-sdk/webhook-targets` | Helper per target webhook | Registry dei target webhook e helper per installazione delle route |
| `plugin-sdk/webhook-path` | Helper per percorsi webhook | Helper di normalizzazione dei percorsi webhook |
| `plugin-sdk/web-media` | Helper web media condivisi | Helper per caricamento di media remoti/locali |
| `plugin-sdk/zod` | Riesportazione di zod | Riesporta `zod` per i consumer del Plugin SDK |
| `plugin-sdk/memory-core` | Helper bundled memory-core | Superficie helper per gestore memoria/configurazione/file/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Facade runtime del motore di memoria | Facade runtime per indice/ricerca della memoria |
| `plugin-sdk/memory-core-host-engine-foundation` | Motore foundation host di memoria | Export del motore foundation host di memoria |
| `plugin-sdk/memory-core-host-engine-embeddings` | Motore embedding host di memoria | Export del motore embedding host di memoria |
| `plugin-sdk/memory-core-host-engine-qmd` | Motore QMD host di memoria | Export del motore QMD host di memoria |
| `plugin-sdk/memory-core-host-engine-storage` | Motore storage host di memoria | Export del motore storage host di memoria |
| `plugin-sdk/memory-core-host-multimodal` | Helper multimodali host di memoria | Helper multimodali host di memoria |
| `plugin-sdk/memory-core-host-query` | Helper query host di memoria | Helper query host di memoria |
| `plugin-sdk/memory-core-host-secret` | Helper secret host di memoria | Helper secret host di memoria |
| `plugin-sdk/memory-core-host-events` | Helper per journal degli eventi host di memoria | Helper per journal degli eventi host di memoria |
| `plugin-sdk/memory-core-host-status` | Helper stato host di memoria | Helper stato host di memoria |
| `plugin-sdk/memory-core-host-runtime-cli` | Runtime CLI host di memoria | Helper runtime CLI host di memoria |
| `plugin-sdk/memory-core-host-runtime-core` | Runtime core host di memoria | Helper runtime core host di memoria |
| `plugin-sdk/memory-core-host-runtime-files` | Helper file/runtime host di memoria | Helper file/runtime host di memoria |
| `plugin-sdk/memory-host-core` | Alias runtime core host di memoria | Alias vendor-neutral per helper runtime core host di memoria |
| `plugin-sdk/memory-host-events` | Alias journal eventi host di memoria | Alias vendor-neutral per helper journal eventi host di memoria |
| `plugin-sdk/memory-host-files` | Alias file/runtime host di memoria | Alias vendor-neutral per helper file/runtime host di memoria |
| `plugin-sdk/memory-host-markdown` | Helper managed markdown | Helper condivisi managed-markdown per plugin adiacenti alla memoria |
| `plugin-sdk/memory-host-search` | Facade di ricerca della memoria attiva | Facade runtime lazy del gestore di ricerca della memoria attiva |
| `plugin-sdk/memory-host-status` | Alias stato host di memoria | Alias vendor-neutral per helper stato host di memoria |
| `plugin-sdk/memory-lancedb` | Helper bundled memory-lancedb | Superficie helper memory-lancedb |
| `plugin-sdk/testing` | Utility di test | Helper e mock di test |
</Accordion>
Questa tabella è intenzionalmente il sottoinsieme comune per la migrazione, non l'intera
superficie dell'SDK. L'elenco completo degli oltre 200 entrypoint si trova in
superficie dell'SDK. L'elenco completo di oltre 200 entrypoint si trova in
`scripts/lib/plugin-sdk-entrypoints.json`.
Questo elenco include ancora alcune superfici helper dei plugin bundled come
Questo elenco include ancora alcune helper seam dei plugin bundled, come
`plugin-sdk/feishu`, `plugin-sdk/feishu-setup`, `plugin-sdk/zalo`,
`plugin-sdk/zalo-setup` e `plugin-sdk/matrix*`. Restano esportate per
manutenzione e compatibilità dei plugin bundled, ma sono intenzionalmente
omesse dalla tabella comune di migrazione e non sono la destinazione consigliata per
`plugin-sdk/zalo-setup` e `plugin-sdk/matrix*`. Rimangono esportate per
la manutenzione e la compatibilità dei plugin bundled, ma sono intenzionalmente
omesse dalla tabella di migrazione comune e non sono il target consigliato per
nuovo codice plugin.
La stessa regola si applica ad altre famiglie di helper bundled come:
@ -320,7 +330,7 @@ La stessa regola si applica ad altre famiglie di helper bundled come:
- Matrix: `plugin-sdk/matrix*`
- LINE: `plugin-sdk/line*`
- IRC: `plugin-sdk/irc*`
- superfici helper/plugin bundled come `plugin-sdk/googlechat`,
- superfici bundled helper/plugin come `plugin-sdk/googlechat`,
`plugin-sdk/zalouser`, `plugin-sdk/bluebubbles*`,
`plugin-sdk/mattermost*`, `plugin-sdk/msteams`,
`plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`,
@ -329,18 +339,18 @@ La stessa regola si applica ad altre famiglie di helper bundled come:
`plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`,
`plugin-sdk/thread-ownership` e `plugin-sdk/voice-call`
`plugin-sdk/github-copilot-token` espone attualmente la ristretta
superficie helper dei token `DEFAULT_COPILOT_API_BASE_URL`,
`plugin-sdk/github-copilot-token` espone attualmente la superficie mirata degli helper token
`DEFAULT_COPILOT_API_BASE_URL`,
`deriveCopilotApiBaseUrlFromToken` e `resolveCopilotApiToken`.
Usa l'importazione più stretta che corrisponde al lavoro da svolgere. Se non riesci a trovare un'esportazione,
controlla il sorgente in `src/plugin-sdk/` o chiedi su Discord.
Usa l'importazione più mirata che corrisponde al compito. Se non riesci a trovare un export,
controlla il codice sorgente in `src/plugin-sdk/` o chiedi su Discord.
## Timeline di rimozione
## Tempistiche di rimozione
| Quando | Cosa succede |
| ---------------------- | ---------------------------------------------------------------------- |
| **Adesso** | Le superfici deprecate emettono avvisi a runtime |
| Quando | Cosa succede |
| ---------------------- | ----------------------------------------------------------------------- |
| **Ora** | Le superfici deprecate emettono avvisi a runtime |
| **Prossima major release** | Le superfici deprecate verranno rimosse; i plugin che le usano ancora smetteranno di funzionare |
Tutti i plugin core sono già stati migrati. I plugin esterni dovrebbero migrare
@ -348,7 +358,7 @@ prima della prossima major release.
## Sopprimere temporaneamente gli avvisi
Imposta queste variabili d'ambiente mentre lavori alla migrazione:
Imposta queste variabili di ambiente mentre lavori alla migrazione:
```bash
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
@ -360,8 +370,8 @@ Questa è una via di fuga temporanea, non una soluzione permanente.
## Correlati
- [Per iniziare](/it/plugins/building-plugins) — crea il tuo primo plugin
- [Panoramica SDK](/it/plugins/sdk-overview) — riferimento completo delle importazioni per sottopercorso
- [Plugin canale](/it/plugins/sdk-channel-plugins) — creazione di plugin canale
- [Plugin provider](/it/plugins/sdk-provider-plugins) — creazione di plugin provider
- [Interni dei plugin](/it/plugins/architecture) — approfondimento sull'architettura
- [Manifesto plugin](/it/plugins/manifest) — riferimento dello schema del manifesto
- [Panoramica dell'SDK](/it/plugins/sdk-overview) — riferimento completo delle importazioni per sottopercorso
- [Plugin di canale](/it/plugins/sdk-channel-plugins) — creare plugin di canale
- [Plugin provider](/it/plugins/sdk-provider-plugins) — creare plugin provider
- [Elementi interni dei plugin](/it/plugins/architecture) — approfondimento sull'architettura
- [Manifest del plugin](/it/plugins/manifest) — riferimento dello schema del manifest

View File

@ -1,30 +1,30 @@
---
read_when:
- Devi sapere da quale sottopercorso SDK importare
- Devi sapere da quale sottopercorso dell'SDK importare
- Vuoi un riferimento per tutti i metodi di registrazione su OpenClawPluginApi
- Stai cercando una specifica esportazione dell'SDK
sidebarTitle: SDK Overview
summary: Riferimento della mappa di importazione, dell'API di registrazione e dell'architettura SDK
title: Panoramica del Plugin SDK
summary: Mappa di importazione, riferimento dell'API di registrazione e architettura dell'SDK
title: Panoramica dell'SDK plugin
x-i18n:
generated_at: "2026-04-06T03:10:57Z"
generated_at: "2026-04-06T08:16:19Z"
model: gpt-5.4
provider: openai
source_hash: d801641f26f39dc21490d2a69a337ff1affb147141360916b8b58a267e9f822a
source_hash: acd2887ef52c66b2f234858d812bb04197ecd0bfb3e4f7bf3622f8fdc765acad
source_path: plugins/sdk-overview.md
workflow: 15
---
# Panoramica del Plugin SDK
# Panoramica dell'SDK plugin
Il plugin SDK è il contratto tipizzato tra plugin e core. Questa pagina è il
riferimento per **cosa importare** e **cosa puoi registrare**.
L'SDK plugin è il contratto tipizzato tra i plugin e il core. Questa pagina è il
riferimento per **cosa importare** e **cosa è possibile registrare**.
<Tip>
**Cerchi una guida pratica?**
- Primo plugin? Inizia con [Getting Started](/it/plugins/building-plugins)
- Plugin canale? Vedi [Channel Plugins](/it/plugins/sdk-channel-plugins)
- Plugin provider? Vedi [Provider Plugins](/it/plugins/sdk-provider-plugins)
- Primo plugin? Inizia con [Introduzione](/it/plugins/building-plugins)
- Plugin di canale? Vedi [Plugin di canale](/it/plugins/sdk-channel-plugins)
- Plugin provider? Vedi [Plugin provider](/it/plugins/sdk-provider-plugins)
</Tip>
## Convenzione di importazione
@ -37,7 +37,7 @@ import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
```
Ogni sottopercorso è un modulo piccolo e autosufficiente. Questo mantiene
l'avvio rapido e previene problemi di dipendenze circolari. Per gli helper di
l'avvio rapido e previene i problemi di dipendenze circolari. Per gli helper di
entry/build specifici del canale, preferisci `openclaw/plugin-sdk/channel-core`;
mantieni `openclaw/plugin-sdk/core` per la superficie ombrello più ampia e per
gli helper condivisi come `buildChannelConfigSchema`.
@ -45,26 +45,26 @@ gli helper condivisi come `buildChannelConfigSchema`.
Non aggiungere né dipendere da seam di convenienza con nome del provider come
`openclaw/plugin-sdk/slack`, `openclaw/plugin-sdk/discord`,
`openclaw/plugin-sdk/signal`, `openclaw/plugin-sdk/whatsapp` o
seam helper con branding del canale. I plugin bundled dovrebbero comporre
seam di helper a marchio di canale. I plugin inclusi dovrebbero comporre
sottopercorsi SDK generici all'interno dei propri barrel `api.ts` o `runtime-api.ts`, e il core
dovrebbe usare quei barrel locali al plugin oppure aggiungere un contratto SDK
generico e ristretto quando l'esigenza è davvero cross-channel.
generico e ristretto quando l'esigenza è davvero trasversale ai canali.
La mappa di export generata contiene ancora un piccolo insieme di seam helper di plugin bundled
come `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
La mappa di esportazione generata contiene ancora un piccolo insieme di
seam helper per plugin inclusi come `plugin-sdk/feishu`, `plugin-sdk/feishu-setup`,
`plugin-sdk/zalo`, `plugin-sdk/zalo-setup` e `plugin-sdk/matrix*`. Questi
sottopercorsi esistono solo per manutenzione e compatibilità dei plugin bundled;
sono volutamente omessi dalla tabella comune qui sotto e non sono il percorso di
importazione consigliato per nuovi plugin di terze parti.
sottopercorsi esistono solo per la manutenzione e la compatibilità dei plugin inclusi;
sono intenzionalmente omessi dalla tabella comune qui sotto e non sono il
percorso di importazione consigliato per nuovi plugin di terze parti.
## Riferimento dei sottopercorsi
I sottopercorsi usati più comunemente, raggruppati per scopo. L'elenco completo generato di
oltre 200 sottopercorsi si trova in `scripts/lib/plugin-sdk-entrypoints.json`.
I sottopercorsi più comunemente usati, raggruppati per scopo. L'elenco completo
generato di oltre 200 sottopercorsi si trova in `scripts/lib/plugin-sdk-entrypoints.json`.
I sottopercorsi helper riservati ai plugin bundled compaiono ancora in questo elenco generato.
Trattali come superfici di dettaglio implementativo/compatibilità a meno che una pagina della documentazione
non ne promuova esplicitamente una come pubblica.
I sottopercorsi helper riservati per plugin inclusi compaiono ancora in
quell'elenco generato. Trattali come superfici di dettaglio implementativo/compatibilità
a meno che una pagina della documentazione non ne promuova esplicitamente uno come pubblico.
### Entry del plugin
@ -76,208 +76,216 @@ non ne promuova esplicitamente una come pubblica.
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
<AccordionGroup>
<Accordion title="Sottopercorsi dei canali">
<Accordion title="Sottopercorsi del canale">
| Sottopercorso | Esportazioni chiave |
| --- | --- |
| `plugin-sdk/channel-core` | `defineChannelPluginEntry`, `defineSetupPluginEntry`, `createChatChannelPlugin`, `createChannelPluginBase` |
| `plugin-sdk/config-schema` | Export dello schema Zod radice di `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, più `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/setup` | Helper condivisi per setup wizard, prompt allowlist, builder dello stato di setup |
| `plugin-sdk/config-schema` | Esportazione dello schema Zod radice `openclaw.json` (`OpenClawSchema`) |
| `plugin-sdk/channel-setup` | `createOptionalChannelSetupSurface`, `createOptionalChannelSetupAdapter`, `createOptionalChannelSetupWizard`, oltre a `DEFAULT_ACCOUNT_ID`, `createTopLevelChannelDmPolicy`, `setSetupChannelEnabled`, `splitSetupEntries` |
| `plugin-sdk/setup` | Helper condivisi per il wizard di configurazione, prompt per allowlist, builder dello stato della configurazione |
| `plugin-sdk/setup-runtime` | `createPatchedAccountSetupAdapter`, `createEnvPatchedAccountSetupAdapter`, `createSetupInputPresenceValidator`, `noteChannelLookupFailure`, `noteChannelLookupSummary`, `promptResolvedAllowFrom`, `splitSetupEntries`, `createAllowlistSetupWizardProxy`, `createDelegatedSetupWizardProxy` |
| `plugin-sdk/setup-adapter-runtime` | `createEnvPatchedAccountSetupAdapter` |
| `plugin-sdk/setup-tools` | `formatCliCommand`, `detectBinary`, `extractArchive`, `resolveBrewExecutable`, `formatDocsLink`, `CONFIG_DIR` |
| `plugin-sdk/account-core` | Helper per config/action-gate multi-account, helper di fallback per account predefinito |
| `plugin-sdk/account-core` | Helper di config/action-gate multi-account e helper di fallback per account predefinito |
| `plugin-sdk/account-id` | `DEFAULT_ACCOUNT_ID`, helper di normalizzazione dell'ID account |
| `plugin-sdk/account-resolution` | Ricerca account + helper di fallback al predefinito |
| `plugin-sdk/account-resolution` | Helper di ricerca account + fallback predefinito |
| `plugin-sdk/account-helpers` | Helper ristretti per elenco account/azioni account |
| `plugin-sdk/channel-pairing` | `createChannelPairingController` |
| `plugin-sdk/channel-reply-pipeline` | `createChannelReplyPipeline` |
| `plugin-sdk/channel-config-helpers` | `createHybridChannelConfigAdapter` |
| `plugin-sdk/channel-config-schema` | Tipi di schema config del canale |
| `plugin-sdk/telegram-command-config` | Helper di normalizzazione/validazione dei comandi personalizzati Telegram con fallback al contratto bundled |
| `plugin-sdk/channel-config-schema` | Tipi di schema della configurazione del canale |
| `plugin-sdk/telegram-command-config` | Helper di normalizzazione/validazione dei comandi personalizzati di Telegram con fallback al contratto incluso |
| `plugin-sdk/channel-policy` | `resolveChannelGroupRequireMention` |
| `plugin-sdk/channel-lifecycle` | `createAccountStatusSink` |
| `plugin-sdk/inbound-envelope` | Helper condivisi per route inbound + builder dell'envelope |
| `plugin-sdk/inbound-reply-dispatch` | Helper condivisi per registrazione e dispatch inbound |
| `plugin-sdk/messaging-targets` | Helper per parsing/corrispondenza dei target |
| `plugin-sdk/outbound-media` | Helper condivisi per il caricamento dei media in uscita |
| `plugin-sdk/outbound-runtime` | Helper per identità/delegati di invio in uscita |
| `plugin-sdk/thread-bindings-runtime` | Helper per ciclo di vita e adapter dei thread binding |
| `plugin-sdk/inbound-envelope` | Helper condivisi di instradamento in ingresso + builder di envelope |
| `plugin-sdk/inbound-reply-dispatch` | Helper condivisi di registrazione e dispatch in ingresso |
| `plugin-sdk/messaging-targets` | Helper di parsing/corrispondenza dei target |
| `plugin-sdk/outbound-media` | Helper condivisi di caricamento dei media in uscita |
| `plugin-sdk/outbound-runtime` | Helper di delega per identità/invio in uscita |
| `plugin-sdk/thread-bindings-runtime` | Helper di lifecycle e adapter per thread-binding |
| `plugin-sdk/agent-media-payload` | Builder legacy del payload media dell'agente |
| `plugin-sdk/conversation-runtime` | Helper per binding di conversazione/thread, pairing e binding configurati |
| `plugin-sdk/runtime-config-snapshot` | Helper per snapshot di config runtime |
| `plugin-sdk/runtime-group-policy` | Helper per la risoluzione della group policy runtime |
| `plugin-sdk/conversation-runtime` | Helper per binding conversazione/thread, pairing e binding configurato |
| `plugin-sdk/runtime-config-snapshot` | Helper per snapshot della config runtime |
| `plugin-sdk/runtime-group-policy` | Helper runtime per la risoluzione delle policy di gruppo |
| `plugin-sdk/channel-status` | Helper condivisi per snapshot/riepilogo dello stato del canale |
| `plugin-sdk/channel-config-primitives` | Primitive ristrette di schema config del canale |
| `plugin-sdk/channel-config-writes` | Helper di autorizzazione alle scritture config del canale |
| `plugin-sdk/channel-plugin-common` | Export di preambolo condivisi per i plugin canale |
| `plugin-sdk/allowlist-config-edit` | Helper di lettura/modifica config allowlist |
| `plugin-sdk/channel-config-primitives` | Primitive ristrette per lo schema di configurazione del canale |
| `plugin-sdk/channel-config-writes` | Helper di autorizzazione per la scrittura della configurazione del canale |
| `plugin-sdk/channel-plugin-common` | Esportazioni prelude condivise del plugin di canale |
| `plugin-sdk/allowlist-config-edit` | Helper di modifica/lettura della configurazione dell'allowlist |
| `plugin-sdk/group-access` | Helper condivisi per le decisioni di accesso ai gruppi |
| `plugin-sdk/direct-dm` | Helper condivisi di auth/guard per DM diretti |
| `plugin-sdk/interactive-runtime` | Helper di normalizzazione/riduzione del payload delle risposte interattive |
| `plugin-sdk/channel-inbound` | Helper per debounce, corrispondenza menzioni, envelope |
| `plugin-sdk/direct-dm` | Helper condivisi di autenticazione/protezione direct-DM |
| `plugin-sdk/interactive-runtime` | Helper di normalizzazione/riduzione del payload di risposta interattiva |
| `plugin-sdk/channel-inbound` | Debounce, corrispondenza delle menzioni, helper di envelope |
| `plugin-sdk/channel-send-result` | Tipi del risultato di risposta |
| `plugin-sdk/channel-actions` | `createMessageToolButtonsSchema`, `createMessageToolCardSchema` |
| `plugin-sdk/channel-targets` | Helper per parsing/corrispondenza dei target |
| `plugin-sdk/channel-targets` | Helper di parsing/corrispondenza dei target |
| `plugin-sdk/channel-contract` | Tipi del contratto del canale |
| `plugin-sdk/channel-feedback` | Wiring di feedback/reazioni |
</Accordion>
<Accordion title="Sottopercorsi dei provider">
<Accordion title="Sottopercorsi provider">
| Sottopercorso | Esportazioni chiave |
| --- | --- |
| `plugin-sdk/provider-entry` | `defineSingleProviderPluginEntry` |
| `plugin-sdk/provider-setup` | Helper di setup curati per provider locali/self-hosted |
| `plugin-sdk/self-hosted-provider-setup` | Helper di setup focalizzati per provider self-hosted compatibili OpenAI |
| `plugin-sdk/provider-auth-runtime` | Helper di risoluzione runtime della chiave API per i plugin provider |
| `plugin-sdk/provider-setup` | Helper selezionati di configurazione del provider locale/self-hosted |
| `plugin-sdk/self-hosted-provider-setup` | Helper focalizzati di configurazione del provider self-hosted compatibile con OpenAI |
| `plugin-sdk/provider-auth-runtime` | Helper runtime di risoluzione della chiave API per plugin provider |
| `plugin-sdk/provider-auth-api-key` | Helper di onboarding/scrittura profilo per chiavi API |
| `plugin-sdk/provider-auth-result` | Builder standard del risultato auth OAuth |
| `plugin-sdk/provider-auth-login` | Helper condivisi di login interattivo per i plugin provider |
| `plugin-sdk/provider-env-vars` | Helper di lookup delle variabili env auth dei provider |
| `plugin-sdk/provider-auth-result` | Builder standard del risultato di autenticazione OAuth |
| `plugin-sdk/provider-auth-login` | Helper condivisi di login interattivo per plugin provider |
| `plugin-sdk/provider-env-vars` | Helper di ricerca delle variabili d'ambiente di autenticazione del provider |
| `plugin-sdk/provider-auth` | `createProviderApiKeyAuthMethod`, `ensureApiKeyFromOptionEnvOrPrompt`, `upsertAuthProfile` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, builder condivisi di replay-policy, helper per endpoint provider e helper di normalizzazione model-id come `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-model-shared` | `ProviderReplayFamily`, `buildProviderReplayFamilyHooks`, `normalizeModelCompat`, builder condivisi di replay-policy, helper per endpoint provider e helper di normalizzazione dell'ID modello come `normalizeNativeXaiModelId` |
| `plugin-sdk/provider-catalog-shared` | `findCatalogTemplate`, `buildSingleProviderApiKeyCatalog`, `supportsNativeStreamingUsageCompat`, `applyProviderNativeStreamingUsageCompat` |
| `plugin-sdk/provider-http` | Helper generici di capacità HTTP/endpoint provider |
| `plugin-sdk/provider-web-fetch` | Helper di registrazione/cache per provider web-fetch |
| `plugin-sdk/provider-web-search` | Helper di registrazione/cache/config per provider web-search |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, pulizia schema Gemini + diagnostica e helper di compatibilità xAI come `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-http` | Helper generici di capacità HTTP/endpoint del provider |
| `plugin-sdk/provider-web-fetch` | Helper di registrazione/cache del provider web-fetch |
| `plugin-sdk/provider-web-search` | Helper di registrazione/cache/config del provider web-search |
| `plugin-sdk/provider-tools` | `ProviderToolCompatFamily`, `buildProviderToolCompatFamilyHooks`, cleanup + diagnostica dello schema Gemini e helper di compatibilità xAI come `resolveXaiModelCompatPatch` / `applyXaiModelCompat` |
| `plugin-sdk/provider-usage` | `fetchClaudeUsage` e simili |
| `plugin-sdk/provider-stream` | `ProviderStreamFamily`, `buildProviderStreamFamilyHooks`, `composeProviderStreamWrappers`, tipi di stream wrapper e helper wrapper condivisi per Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot |
| `plugin-sdk/provider-onboard` | Helper di patch config per onboarding |
| `plugin-sdk/global-singleton` | Helper per singleton/mappe/cache locali al processo |
| `plugin-sdk/provider-onboard` | Helper di patch della configurazione di onboarding |
| `plugin-sdk/global-singleton` | Helper di singleton/map/cache locali al processo |
</Accordion>
<Accordion title="Sottopercorsi auth e sicurezza">
<Accordion title="Sottopercorsi di autenticazione e sicurezza">
| Sottopercorso | Esportazioni chiave |
| --- | --- |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, helper per registro comandi, helper di autorizzazione del mittente |
| `plugin-sdk/approval-auth-runtime` | Helper per risoluzione degli approvatori e auth delle azioni nella stessa chat |
| `plugin-sdk/approval-client-runtime` | Helper per profili/filtri di approvazione exec nativi |
| `plugin-sdk/approval-delivery-runtime` | Adapter per capacità/consegna delle approvazioni native |
| `plugin-sdk/approval-native-runtime` | Helper per target di approvazione nativa + binding account |
| `plugin-sdk/approval-reply-runtime` | Helper per payload di risposta di approvazione exec/plugin |
| `plugin-sdk/command-auth-native` | Auth dei comandi nativi + helper per target sessione nativa |
| `plugin-sdk/command-detection` | Helper condivisi di rilevamento dei comandi |
| `plugin-sdk/command-surface` | Helper per normalizzazione del corpo del comando e command-surface |
| `plugin-sdk/command-auth` | `resolveControlCommandGate`, helper del registro comandi, helper di autorizzazione del mittente |
| `plugin-sdk/approval-auth-runtime` | Risoluzione dell'approvatore e helper di action-auth nella stessa chat |
| `plugin-sdk/approval-client-runtime` | Helper nativi per profilo/filtro di approvazione exec |
| `plugin-sdk/approval-delivery-runtime` | Adapter nativi per capacità/consegna dell'approvazione |
| `plugin-sdk/approval-native-runtime` | Helper nativi per target di approvazione + binding account |
| `plugin-sdk/approval-reply-runtime` | Helper per il payload di risposta di approvazione exec/plugin |
| `plugin-sdk/command-auth-native` | Autenticazione nativa dei comandi + helper nativi per target di sessione |
| `plugin-sdk/command-detection` | Helper condivisi per il rilevamento dei comandi |
| `plugin-sdk/command-surface` | Normalizzazione del corpo del comando e helper della superficie dei comandi |
| `plugin-sdk/allow-from` | `formatAllowFromLowercase` |
| `plugin-sdk/security-runtime` | Helper condivisi per trust, gating DM, contenuti esterni e raccolta segreti |
| `plugin-sdk/ssrf-policy` | Helper per policy SSRF con allowlist host e rete privata |
| `plugin-sdk/security-runtime` | Helper condivisi per trust, gating DM, contenuto esterno e raccolta di secret |
| `plugin-sdk/ssrf-policy` | Helper di policy SSRF per allowlist host e reti private |
| `plugin-sdk/ssrf-runtime` | Helper per pinned-dispatcher, fetch protetto da SSRF e policy SSRF |
| `plugin-sdk/secret-input` | Helper per parsing dell'input segreto |
| `plugin-sdk/webhook-ingress` | Helper per richiesta/target webhook |
| `plugin-sdk/webhook-request-guards` | Helper per dimensione body richiesta/timeout |
| `plugin-sdk/secret-input` | Helper di parsing degli input secret |
| `plugin-sdk/webhook-ingress` | Helper per richieste/target webhook |
| `plugin-sdk/webhook-request-guards` | Helper per dimensione body/timeout della richiesta |
</Accordion>
<Accordion title="Sottopercorsi runtime e storage">
| Sottopercorso | Esportazioni chiave |
| --- | --- |
| `plugin-sdk/runtime` | Helper ampi per runtime/logging/backup/installazione plugin |
| `plugin-sdk/runtime` | Ampi helper di runtime/logging/backup/installazione plugin |
| `plugin-sdk/runtime-env` | Helper ristretti per env runtime, logger, timeout, retry e backoff |
| `plugin-sdk/runtime-store` | `createPluginRuntimeStore` |
| `plugin-sdk/plugin-runtime` | Helper condivisi per comando/hook/http/interattivi dei plugin |
| `plugin-sdk/hook-runtime` | Helper condivisi per la pipeline di hook webhook/interni |
| `plugin-sdk/plugin-runtime` | Helper condivisi per comandi/hook/http/interattività del plugin |
| `plugin-sdk/hook-runtime` | Helper condivisi per la pipeline di webhook/hook interni |
| `plugin-sdk/lazy-runtime` | Helper di importazione/binding runtime lazy come `createLazyRuntimeModule`, `createLazyRuntimeMethod` e `createLazyRuntimeSurface` |
| `plugin-sdk/process-runtime` | Helper di esecuzione processi |
| `plugin-sdk/cli-runtime` | Helper per formattazione CLI, attesa e versione |
| `plugin-sdk/gateway-runtime` | Helper per client gateway e patch dello stato del canale |
| `plugin-sdk/config-runtime` | Helper per caricamento/scrittura della config |
| `plugin-sdk/telegram-command-config` | Normalizzazione di nome/descrizione dei comandi Telegram e controlli di duplicati/conflitti, anche quando la superficie di contratto Telegram bundled non è disponibile |
| `plugin-sdk/approval-runtime` | Helper per approvazione exec/plugin, builder di approval-capability, helper auth/profilo, helper di routing/runtime nativi |
| `plugin-sdk/reply-runtime` | Helper condivisi per runtime inbound/risposta, chunking, dispatch, heartbeat, pianificatore delle risposte |
| `plugin-sdk/process-runtime` | Helper di esecuzione dei processi |
| `plugin-sdk/cli-runtime` | Helper CLI di formattazione, attesa e versione |
| `plugin-sdk/gateway-runtime` | Helper del client gateway e di patch dello stato del canale |
| `plugin-sdk/config-runtime` | Helper di caricamento/scrittura della configurazione |
| `plugin-sdk/telegram-command-config` | Normalizzazione di nome/descrizione del comando Telegram e controlli di duplicati/conflitti, anche quando la superficie contrattuale Telegram inclusa non è disponibile |
| `plugin-sdk/approval-runtime` | Helper di approvazione exec/plugin, builder di capacità di approvazione, helper di autenticazione/profilo, helper nativi di instradamento/runtime |
| `plugin-sdk/reply-runtime` | Helper condivisi di runtime inbound/reply, chunking, dispatch, heartbeat, pianificatore di risposte |
| `plugin-sdk/reply-dispatch-runtime` | Helper ristretti per dispatch/finalizzazione della risposta |
| `plugin-sdk/reply-history` | Helper condivisi per la cronologia delle risposte a breve finestra come `buildHistoryContext`, `recordPendingHistoryEntry` e `clearHistoryEntriesIfEnabled` |
| `plugin-sdk/reply-reference` | `createReplyReferencePlanner` |
| `plugin-sdk/reply-chunking` | Helper ristretti per chunking di testo/markdown |
| `plugin-sdk/session-store-runtime` | Helper per percorso store sessione + updated-at |
| `plugin-sdk/state-paths` | Helper per percorsi state/OAuth dir |
| `plugin-sdk/routing` | Helper per route/session-key/account binding come `resolveAgentRoute`, `buildAgentSessionKey` e `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Helper condivisi per riepilogo stato canale/account, valori predefiniti dello stato runtime e metadati dei problemi |
| `plugin-sdk/target-resolver-runtime` | Helper condivisi per resolver dei target |
| `plugin-sdk/session-store-runtime` | Helper per percorso dello store di sessione + updated-at |
| `plugin-sdk/state-paths` | Helper di percorso per directory di stato/OAuth |
| `plugin-sdk/routing` | Helper per route/session-key/binding account come `resolveAgentRoute`, `buildAgentSessionKey` e `resolveDefaultAgentBoundAccountId` |
| `plugin-sdk/status-helpers` | Helper condivisi per il riepilogo dello stato di canale/account, valori predefiniti dello stato runtime e helper dei metadati dei problemi |
| `plugin-sdk/target-resolver-runtime` | Helper condivisi per la risoluzione dei target |
| `plugin-sdk/string-normalization-runtime` | Helper di normalizzazione slug/stringhe |
| `plugin-sdk/request-url` | Estrae URL stringa da input simili a fetch/request |
| `plugin-sdk/run-command` | Runner di comandi temporizzato con risultati stdout/stderr normalizzati |
| `plugin-sdk/param-readers` | Reader comuni dei parametri tool/CLI |
| `plugin-sdk/tool-send` | Estrae campi canonicali del target di invio dagli argomenti dello strumento |
| `plugin-sdk/request-url` | Estrae URL stringa da input simili a fetch/richiesta |
| `plugin-sdk/run-command` | Runner di comandi con timing e risultati stdout/stderr normalizzati |
| `plugin-sdk/param-readers` | Lettori comuni di parametri per tool/CLI |
| `plugin-sdk/tool-send` | Estrae i campi del target di invio canonico dagli argomenti del tool |
| `plugin-sdk/temp-path` | Helper condivisi per percorsi temporanei di download |
| `plugin-sdk/logging-core` | Helper per logger del sottosistema e redazione |
| `plugin-sdk/logging-core` | Helper di logger del sottosistema e redazione |
| `plugin-sdk/markdown-table-runtime` | Helper per la modalità tabella Markdown |
| `plugin-sdk/json-store` | Piccoli helper di lettura/scrittura stato JSON |
| `plugin-sdk/json-store` | Piccoli helper di lettura/scrittura dello stato JSON |
| `plugin-sdk/file-lock` | Helper di file-lock rientrante |
| `plugin-sdk/persistent-dedupe` | Helper per cache dedupe persistente su disco |
| `plugin-sdk/acp-runtime` | Helper per runtime/sessione ACP e reply-dispatch |
| `plugin-sdk/agent-config-primitives` | Primitive ristrette di schema config runtime dell'agente |
| `plugin-sdk/boolean-param` | Reader flessibile di parametri booleani |
| `plugin-sdk/dangerous-name-runtime` | Helper di risoluzione per matching di nomi pericolosi |
| `plugin-sdk/persistent-dedupe` | Helper di cache dedupe persistente su disco |
| `plugin-sdk/acp-runtime` | Helper di runtime/sessione ACP e reply-dispatch |
| `plugin-sdk/agent-config-primitives` | Primitive ristrette per lo schema di configurazione runtime dell'agente |
| `plugin-sdk/boolean-param` | Lettore permissivo di parametri booleani |
| `plugin-sdk/dangerous-name-runtime` | Helper di risoluzione per la corrispondenza di nomi pericolosi |
| `plugin-sdk/device-bootstrap` | Helper per bootstrap del dispositivo e token di pairing |
| `plugin-sdk/extension-shared` | Primitive condivise per canali passivi e helper di stato |
| `plugin-sdk/models-provider-runtime` | Helper di risposta del comando `/models`/provider |
| `plugin-sdk/skill-commands-runtime` | Helper di elenco dei comandi Skills |
| `plugin-sdk/native-command-registry` | Helper per registro/build/serializzazione dei comandi nativi |
| `plugin-sdk/models-provider-runtime` | Helper di risposta per comando `/models`/provider |
| `plugin-sdk/skill-commands-runtime` | Helper per l'elenco dei comandi di Skills |
| `plugin-sdk/native-command-registry` | Helper nativi di registro/build/serializzazione dei comandi |
| `plugin-sdk/provider-zai-endpoint` | Helper di rilevamento endpoint Z.AI |
| `plugin-sdk/infra-runtime` | Helper per eventi di sistema/heartbeat |
| `plugin-sdk/collection-runtime` | Piccoli helper per cache limitate |
| `plugin-sdk/diagnostic-runtime` | Helper per flag ed eventi diagnostici |
| `plugin-sdk/error-runtime` | Grafo degli errori, formattazione, helper condivisi di classificazione errori, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Helper per fetch incapsulato, proxy e lookup fissati |
| `plugin-sdk/host-runtime` | Helper di normalizzazione per hostname e host SCP |
| `plugin-sdk/retry-runtime` | Helper per config retry e runner retry |
| `plugin-sdk/agent-runtime` | Helper per agent dir/identity/workspace |
| `plugin-sdk/directory-runtime` | Query/dedup delle directory supportata dalla config |
| `plugin-sdk/infra-runtime` | Helper di eventi di sistema/heartbeat |
| `plugin-sdk/collection-runtime` | Piccoli helper di cache limitata |
| `plugin-sdk/diagnostic-runtime` | Helper di flag ed eventi diagnostici |
| `plugin-sdk/error-runtime` | Grafo degli errori, formattazione, helper condivisi di classificazione degli errori, `isApprovalNotFoundError` |
| `plugin-sdk/fetch-runtime` | Helper per fetch incapsulato, proxy e ricerca pinned |
| `plugin-sdk/host-runtime` | Helper di normalizzazione hostname e host SCP |
| `plugin-sdk/retry-runtime` | Helper di configurazione retry ed esecuzione retry |
| `plugin-sdk/agent-runtime` | Helper per directory/identità/workspace dell'agente |
| `plugin-sdk/directory-runtime` | Query/dedup di directory basata su config |
| `plugin-sdk/keyed-async-queue` | `KeyedAsyncQueue` |
</Accordion>
<Accordion title="Sottopercorsi di capacità e test">
| Sottopercorso | Esportazioni chiave |
| --- | --- |
| `plugin-sdk/media-runtime` | Helper condivisi per fetch/transform/store dei media più builder del payload media |
| `plugin-sdk/media-understanding` | Tipi del provider media understanding più export helper lato provider per immagini/audio |
| `plugin-sdk/text-runtime` | Helper condivisi per testo/markdown/logging come stripping del testo visibile all'assistente, helper di rendering/chunking/tabella markdown, helper di redazione, helper per tag direttiva e utility di testo sicuro |
| `plugin-sdk/media-runtime` | Helper condivisi per fetch/transform/store dei media più builder di payload media |
| `plugin-sdk/media-generation-runtime` | Helper condivisi per failover della generazione media, selezione candidati e messaggistica per modelli mancanti |
| `plugin-sdk/media-understanding` | Tipi provider per media understanding più esportazioni helper orientate al provider per immagini/audio |
| `plugin-sdk/text-runtime` | Helper condivisi per testo/markdown/logging come rimozione del testo visibile all'assistente, helper di render/chunking/tabella Markdown, helper di redazione, helper di directive-tag e utility di testo sicuro |
| `plugin-sdk/text-chunking` | Helper per chunking del testo in uscita |
| `plugin-sdk/speech` | Tipi del provider speech più export helper lato provider per directive, registro e validazione |
| `plugin-sdk/speech-core` | Tipi condivisi del provider speech, helper per registro, directive e normalizzazione |
| `plugin-sdk/realtime-transcription` | Tipi del provider di trascrizione realtime e helper del registro |
| `plugin-sdk/realtime-voice` | Tipi del provider voce realtime e helper del registro |
| `plugin-sdk/image-generation` | Tipi del provider per generazione immagini |
| `plugin-sdk/image-generation-core` | Tipi condivisi di generazione immagini, helper per failover, auth e registro |
| `plugin-sdk/music-generation` | Tipi di provider/richiesta/risultato per generazione musicale |
| `plugin-sdk/music-generation-core` | Tipi condivisi di generazione musicale, helper per failover, ricerca provider e parsing model-ref |
| `plugin-sdk/video-generation` | Tipi di provider/richiesta/risultato per generazione video |
| `plugin-sdk/video-generation-core` | Tipi condivisi di generazione video, helper per failover, ricerca provider e parsing model-ref |
| `plugin-sdk/webhook-targets` | Registro dei target webhook e helper per installazione delle route |
| `plugin-sdk/speech` | Tipi provider speech più helper orientati al provider per directive, registro e validazione |
| `plugin-sdk/speech-core` | Tipi provider speech condivisi, helper di registro, directive e normalizzazione |
| `plugin-sdk/realtime-transcription` | Tipi provider di trascrizione realtime e helper di registro |
| `plugin-sdk/realtime-voice` | Tipi provider di voce realtime e helper di registro |
| `plugin-sdk/image-generation` | Tipi provider di generazione immagini |
| `plugin-sdk/image-generation-core` | Tipi condivisi di generazione immagini, helper di failover, autenticazione e registro |
| `plugin-sdk/music-generation` | Tipi provider/richiesta/risultato per generazione musicale |
| `plugin-sdk/music-generation-core` | Tipi condivisi di generazione musicale, helper di failover, ricerca provider e parsing model-ref |
| `plugin-sdk/video-generation` | Tipi provider/richiesta/risultato per generazione video |
| `plugin-sdk/video-generation-core` | Tipi condivisi di generazione video, helper di failover, ricerca provider e parsing model-ref |
| `plugin-sdk/webhook-targets` | Registro dei target webhook e helper di installazione route |
| `plugin-sdk/webhook-path` | Helper di normalizzazione del percorso webhook |
| `plugin-sdk/web-media` | Helper condivisi per il caricamento di media remoti/locali |
| `plugin-sdk/zod` | `zod` riesportato per i consumer del plugin SDK |
| `plugin-sdk/web-media` | Helper condivisi di caricamento media remoti/locali |
| `plugin-sdk/zod` | `zod` riesportato per i consumatori dell'SDK plugin |
| `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` |
</Accordion>
<Accordion title="Sottopercorsi memory">
| Sottopercorso | Esportazioni chiave |
| --- | --- |
| `plugin-sdk/memory-core` | Superficie helper bundled memory-core per helper di manager/config/file/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Facciata runtime per indice/ricerca memory |
| `plugin-sdk/memory-core-host-engine-foundation` | Export del motore foundation dell'host memory |
| `plugin-sdk/memory-core-host-engine-embeddings` | Export del motore embeddings dell'host memory |
| `plugin-sdk/memory-core-host-engine-qmd` | Export del motore QMD dell'host memory |
| `plugin-sdk/memory-core-host-engine-storage` | Export del motore storage dell'host memory |
| `plugin-sdk/memory-core-host-multimodal` | Helper multimodali dell'host memory |
| `plugin-sdk/memory-core-host-query` | Helper di query dell'host memory |
| `plugin-sdk/memory-core-host-secret` | Helper dei segreti dell'host memory |
| `plugin-sdk/memory-core-host-status` | Helper di stato dell'host memory |
| `plugin-sdk/memory-core-host-runtime-cli` | Helper runtime CLI dell'host memory |
| `plugin-sdk/memory-core-host-runtime-core` | Helper runtime core dell'host memory |
| `plugin-sdk/memory-core-host-runtime-files` | Helper file/runtime dell'host memory |
| `plugin-sdk/memory-lancedb` | Superficie helper bundled memory-lancedb |
| `plugin-sdk/memory-core` | Superficie helper `memory-core` inclusa per helper di manager/config/file/CLI |
| `plugin-sdk/memory-core-engine-runtime` | Facade runtime di indice/ricerca memory |
| `plugin-sdk/memory-core-host-engine-foundation` | Esportazioni del motore foundation host memory |
| `plugin-sdk/memory-core-host-engine-embeddings` | Esportazioni del motore embedding host memory |
| `plugin-sdk/memory-core-host-engine-qmd` | Esportazioni del motore QMD host memory |
| `plugin-sdk/memory-core-host-engine-storage` | Esportazioni del motore storage host memory |
| `plugin-sdk/memory-core-host-multimodal` | Helper multimodali host memory |
| `plugin-sdk/memory-core-host-query` | Helper query host memory |
| `plugin-sdk/memory-core-host-secret` | Helper secret host memory |
| `plugin-sdk/memory-core-host-events` | Helper journal degli eventi host memory |
| `plugin-sdk/memory-core-host-status` | Helper di stato host memory |
| `plugin-sdk/memory-core-host-runtime-cli` | Helper runtime CLI host memory |
| `plugin-sdk/memory-core-host-runtime-core` | Helper runtime core host memory |
| `plugin-sdk/memory-core-host-runtime-files` | Helper file/runtime host memory |
| `plugin-sdk/memory-host-core` | Alias neutrale rispetto al vendor per helper runtime core host memory |
| `plugin-sdk/memory-host-events` | Alias neutrale rispetto al vendor per helper journal degli eventi host memory |
| `plugin-sdk/memory-host-files` | Alias neutrale rispetto al vendor per helper file/runtime host memory |
| `plugin-sdk/memory-host-markdown` | Helper condivisi di markdown gestito per plugin adiacenti a memory |
| `plugin-sdk/memory-host-search` | Facade runtime della memory attiva per l'accesso al search-manager |
| `plugin-sdk/memory-host-status` | Alias neutrale rispetto al vendor per helper di stato host memory |
| `plugin-sdk/memory-lancedb` | Superficie helper `memory-lancedb` inclusa |
</Accordion>
<Accordion title="Sottopercorsi helper bundled riservati">
| Famiglia | Sottopercorsi correnti | Utilizzo previsto |
<Accordion title="Sottopercorsi helper inclusi riservati">
| Famiglia | Sottopercorsi attuali | Uso previsto |
| --- | --- | --- |
| Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Helper di supporto del plugin browser bundled (`browser-support` resta il barrel di compatibilità) |
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Superficie helper/runtime Matrix bundled |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Superficie helper/runtime LINE bundled |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Superficie helper IRC bundled |
| Helper specifici del canale | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Seam helper/compatibilità dei canali bundled |
| Helper auth/plugin-specifici | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Seam helper per funzionalità/plugin bundled; `plugin-sdk/github-copilot-token` attualmente esporta `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` e `resolveCopilotApiToken` |
| Browser | `plugin-sdk/browser-cdp`, `plugin-sdk/browser-config-runtime`, `plugin-sdk/browser-config-support`, `plugin-sdk/browser-control-auth`, `plugin-sdk/browser-node-runtime`, `plugin-sdk/browser-profiles`, `plugin-sdk/browser-security-runtime`, `plugin-sdk/browser-setup-tools`, `plugin-sdk/browser-support` | Helper di supporto per il plugin browser incluso (`browser-support` rimane il barrel di compatibilità) |
| Matrix | `plugin-sdk/matrix`, `plugin-sdk/matrix-helper`, `plugin-sdk/matrix-runtime-heavy`, `plugin-sdk/matrix-runtime-shared`, `plugin-sdk/matrix-runtime-surface`, `plugin-sdk/matrix-surface`, `plugin-sdk/matrix-thread-bindings` | Superficie helper/runtime Matrix inclusa |
| Line | `plugin-sdk/line`, `plugin-sdk/line-core`, `plugin-sdk/line-runtime`, `plugin-sdk/line-surface` | Superficie helper/runtime LINE inclusa |
| IRC | `plugin-sdk/irc`, `plugin-sdk/irc-surface` | Superficie helper IRC inclusa |
| Helper specifici del canale | `plugin-sdk/googlechat`, `plugin-sdk/zalouser`, `plugin-sdk/bluebubbles`, `plugin-sdk/bluebubbles-policy`, `plugin-sdk/mattermost`, `plugin-sdk/mattermost-policy`, `plugin-sdk/feishu-conversation`, `plugin-sdk/msteams`, `plugin-sdk/nextcloud-talk`, `plugin-sdk/nostr`, `plugin-sdk/tlon`, `plugin-sdk/twitch` | Seam di compatibilità/helper per canali inclusi |
| Helper specifici di auth/plugin | `plugin-sdk/github-copilot-login`, `plugin-sdk/github-copilot-token`, `plugin-sdk/diagnostics-otel`, `plugin-sdk/diffs`, `plugin-sdk/llm-task`, `plugin-sdk/thread-ownership`, `plugin-sdk/voice-call` | Seam helper per funzionalità/plugin inclusi; `plugin-sdk/github-copilot-token` esporta attualmente `DEFAULT_COPILOT_API_BASE_URL`, `deriveCopilotApiBaseUrlFromToken` e `resolveCopilotApiToken` |
</Accordion>
</AccordionGroup>
@ -290,7 +298,7 @@ metodi:
| Metodo | Cosa registra |
| ------------------------------------------------ | -------------------------------- |
| `api.registerProvider(...)` | Inferenza testuale (LLM) |
| `api.registerProvider(...)` | Inferenza del testo (LLM) |
| `api.registerChannel(...)` | Canale di messaggistica |
| `api.registerSpeechProvider(...)` | Sintesi text-to-speech / STT |
| `api.registerRealtimeTranscriptionProvider(...)` | Trascrizione realtime in streaming |
@ -299,42 +307,44 @@ metodi:
| `api.registerImageGenerationProvider(...)` | Generazione di immagini |
| `api.registerMusicGenerationProvider(...)` | Generazione musicale |
| `api.registerVideoGenerationProvider(...)` | Generazione video |
| `api.registerWebFetchProvider(...)` | Provider di web fetch / scraping |
| `api.registerWebFetchProvider(...)` | Provider di web fetch / scrape |
| `api.registerWebSearchProvider(...)` | Ricerca web |
### Strumenti e comandi
### Tool e comandi
| Metodo | Cosa registra |
| ------------------------------- | --------------------------------------------- |
| `api.registerTool(tool, opts?)` | Strumento dell'agente (obbligatorio o `{ optional: true }`) |
| `api.registerCommand(def)` | Comando personalizzato (bypassa l'LLM) |
| Metodo | Cosa registra |
| ------------------------------- | -------------------------------------------- |
| `api.registerTool(tool, opts?)` | Tool dell'agente (obbligatorio o `{ optional: true }`) |
| `api.registerCommand(def)` | Comando personalizzato (bypassa l'LLM) |
### Infrastruttura
| Metodo | Cosa registra |
| ---------------------------------------------- | --------------------- |
| `api.registerHook(events, handler, opts?)` | Hook evento |
| `api.registerHttpRoute(params)` | Endpoint HTTP gateway |
| `api.registerGatewayMethod(name, handler)` | Metodo RPC gateway |
| `api.registerCli(registrar, opts?)` | Sottocomando CLI |
| `api.registerService(service)` | Servizio in background |
| `api.registerInteractiveHandler(registration)` | Gestore interattivo |
| Metodo | Cosa registra |
| ---------------------------------------------- | -------------------------------------- |
| `api.registerHook(events, handler, opts?)` | Hook di evento |
| `api.registerHttpRoute(params)` | Endpoint HTTP del gateway |
| `api.registerGatewayMethod(name, handler)` | Metodo RPC del gateway |
| `api.registerCli(registrar, opts?)` | Sottocomando CLI |
| `api.registerService(service)` | Servizio in background |
| `api.registerInteractiveHandler(registration)` | Handler interattivo |
| `api.registerMemoryPromptSupplement(builder)` | Sezione di prompt additiva adiacente a memory |
| `api.registerMemoryCorpusSupplement(adapter)` | Corpus additivo di ricerca/lettura memory |
I namespace amministrativi core riservati (`config.*`, `exec.approvals.*`, `wizard.*`,
`update.*`) rimangono sempre `operator.admin`, anche se un plugin prova ad assegnare
uno scope del metodo gateway più ristretto. Preferisci prefissi specifici del plugin per
i metodi posseduti dal plugin.
I namespace amministrativi del core riservati (`config.*`, `exec.approvals.*`, `wizard.*`,
`update.*`) restano sempre `operator.admin`, anche se un plugin prova ad assegnare
uno scope più ristretto a un metodo gateway. Preferisci prefissi specifici del plugin per
i metodi di proprietà del plugin.
### Metadati di registrazione CLI
### Metadati di registrazione della CLI
`api.registerCli(registrar, opts?)` accetta due tipi di metadati di primo livello:
- `commands`: root di comando esplicite possedute dal registrar
- `descriptors`: descrittori di comando in fase di parsing usati per help della CLI root,
routing e registrazione CLI lazy del plugin
- `commands`: radici di comando esplicite possedute dal registrar
- `descriptors`: descrittori di comando in fase di parsing usati per l'help della CLI radice,
l'instradamento e la registrazione lazy della CLI del plugin
Se vuoi che un comando del plugin resti caricato lazy nel normale percorso della CLI root,
fornisci `descriptors` che coprano ogni root di comando di primo livello esposta da quel
Se vuoi che un comando del plugin resti caricato lazy nel normale percorso della CLI radice,
fornisci `descriptors` che coprano ogni radice di comando di primo livello esposta da quel
registrar.
```typescript
@ -347,7 +357,7 @@ api.registerCli(
descriptors: [
{
name: "matrix",
description: "Manage Matrix accounts, verification, devices, and profile state",
description: "Gestisci account Matrix, verifica, dispositivi e stato del profilo",
hasSubcommands: true,
},
],
@ -355,66 +365,67 @@ api.registerCli(
);
```
Usa `commands` da solo solo quando non hai bisogno della registrazione lazy della CLI root.
Quel percorso di compatibilità eager resta supportato, ma non installa
placeholder supportati da descriptor per il caricamento lazy in fase di parsing.
Usa `commands` da solo solo quando non hai bisogno della registrazione lazy della CLI radice.
Questo percorso di compatibilità eager rimane supportato, ma non installa
placeholder basati su descriptor per il caricamento lazy in fase di parsing.
### Slot esclusivi
| Metodo | Cosa registra |
| ------------------------------------------ | -------------------------------------- |
| Metodo | Cosa registra |
| ------------------------------------------ | ------------------------------------ |
| `api.registerContextEngine(id, factory)` | Motore di contesto (uno attivo alla volta) |
| `api.registerMemoryPromptSection(builder)` | Builder di sezione del prompt memory |
| `api.registerMemoryFlushPlan(resolver)` | Resolver del piano di flush memory |
| `api.registerMemoryRuntime(runtime)` | Adapter runtime memory |
| `api.registerMemoryPromptSection(builder)` | Builder della sezione del prompt memory |
| `api.registerMemoryFlushPlan(resolver)` | Resolver del piano di flush memory |
| `api.registerMemoryRuntime(runtime)` | Adapter runtime memory |
### Adapter di embedding memory
| Metodo | Cosa registra |
| ---------------------------------------------- | -------------------------------------------------- |
| `api.registerMemoryEmbeddingProvider(adapter)` | Adapter di embedding memory per il plugin attivo |
| Metodo | Cosa registra |
| ---------------------------------------------- | --------------------------------------------- |
| `api.registerMemoryEmbeddingProvider(adapter)` | Adapter di embedding memory per il plugin attivo |
- `registerMemoryPromptSection`, `registerMemoryFlushPlan` e
`registerMemoryRuntime` sono esclusivi dei plugin memory.
- `registerMemoryEmbeddingProvider` consente al plugin memory attivo di registrare uno
o più ID di adapter embedding (per esempio `openai`, `gemini` o un ID personalizzato definito dal plugin).
- La config utente come `agents.defaults.memorySearch.provider` e
`agents.defaults.memorySearch.fallback` viene risolta rispetto a quegli ID di adapter
registrati.
- `registerMemoryEmbeddingProvider` consente al plugin memory attivo di registrare
uno o più ID di adapter di embedding (per esempio `openai`, `gemini` o un ID
personalizzato definito dal plugin).
- La configurazione utente come `agents.defaults.memorySearch.provider` e
`agents.defaults.memorySearch.fallback` viene risolta rispetto a quegli ID
di adapter registrati.
### Eventi e ciclo di vita
### Eventi e lifecycle
| Metodo | Cosa fa |
| -------------------------------------------- | --------------------------- |
| `api.on(hookName, handler, opts?)` | Hook del ciclo di vita tipizzato |
| Metodo | Cosa fa |
| -------------------------------------------- | -------------------------- |
| `api.on(hookName, handler, opts?)` | Hook lifecycle tipizzato |
| `api.onConversationBindingResolved(handler)` | Callback di binding della conversazione |
### Semantica delle decisioni degli hook
- `before_tool_call`: restituire `{ block: true }` è terminale. Una volta che un gestore lo imposta, i gestori a priorità più bassa vengono saltati.
- `before_tool_call`: restituire `{ block: false }` è trattato come nessuna decisione (uguale a omettere `block`), non come override.
- `before_install`: restituire `{ block: true }` è terminale. Una volta che un gestore lo imposta, i gestori a priorità più bassa vengono saltati.
- `before_install`: restituire `{ block: false }` è trattato come nessuna decisione (uguale a omettere `block`), non come override.
- `reply_dispatch`: restituire `{ handled: true, ... }` è terminale. Una volta che un gestore rivendica il dispatch, i gestori a priorità più bassa e il percorso predefinito di dispatch del modello vengono saltati.
- `message_sending`: restituire `{ cancel: true }` è terminale. Una volta che un gestore lo imposta, i gestori a priorità più bassa vengono saltati.
- `message_sending`: restituire `{ cancel: false }` è trattato come nessuna decisione (uguale a omettere `cancel`), non come override.
- `before_tool_call`: restituire `{ block: true }` è terminale. Una volta che un handler lo imposta, gli handler a priorità inferiore vengono saltati.
- `before_tool_call`: restituire `{ block: false }` viene trattato come nessuna decisione (come omettere `block`), non come override.
- `before_install`: restituire `{ block: true }` è terminale. Una volta che un handler lo imposta, gli handler a priorità inferiore vengono saltati.
- `before_install`: restituire `{ block: false }` viene trattato come nessuna decisione (come omettere `block`), non come override.
- `reply_dispatch`: restituire `{ handled: true, ... }` è terminale. Una volta che un handler rivendica il dispatch, gli handler a priorità inferiore e il percorso predefinito di dispatch del modello vengono saltati.
- `message_sending`: restituire `{ cancel: true }` è terminale. Una volta che un handler lo imposta, gli handler a priorità inferiore vengono saltati.
- `message_sending`: restituire `{ cancel: false }` viene trattato come nessuna decisione (come omettere `cancel`), non come override.
### Campi dell'oggetto API
| Campo | Tipo | Descrizione |
| ------------------------ | ------------------------- | -------------------------------------------------------------------------------------------- |
| `api.id` | `string` | ID del plugin |
| `api.name` | `string` | Nome visualizzato |
| `api.version` | `string?` | Versione del plugin (facoltativa) |
| `api.description` | `string?` | Descrizione del plugin (facoltativa) |
| `api.source` | `string` | Percorso sorgente del plugin |
| `api.rootDir` | `string?` | Directory root del plugin (facoltativa) |
| `api.config` | `OpenClawConfig` | Snapshot della config corrente (snapshot runtime in-memory attivo quando disponibile) |
| `api.pluginConfig` | `Record<string, unknown>` | Config specifica del plugin da `plugins.entries.<id>.config` |
| `api.runtime` | `PluginRuntime` | [Helper runtime](/it/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Logger con scope (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Modalità di caricamento corrente; `"setup-runtime"` è la finestra leggera di avvio/setup pre-full-entry |
| `api.resolvePath(input)` | `(string) => string` | Risolve il percorso relativo alla root del plugin |
| Campo | Tipo | Descrizione |
| ------------------------ | ------------------------- | ------------------------------------------------------------------------------------------- |
| `api.id` | `string` | ID del plugin |
| `api.name` | `string` | Nome visualizzato |
| `api.version` | `string?` | Versione del plugin (facoltativa) |
| `api.description` | `string?` | Descrizione del plugin (facoltativa) |
| `api.source` | `string` | Percorso sorgente del plugin |
| `api.rootDir` | `string?` | Directory radice del plugin (facoltativa) |
| `api.config` | `OpenClawConfig` | Snapshot della configurazione corrente (snapshot runtime in memoria attivo quando disponibile) |
| `api.pluginConfig` | `Record<string, unknown>` | Configurazione specifica del plugin da `plugins.entries.<id>.config` |
| `api.runtime` | `PluginRuntime` | [Helper runtime](/it/plugins/sdk-runtime) |
| `api.logger` | `PluginLogger` | Logger con scope (`debug`, `info`, `warn`, `error`) |
| `api.registrationMode` | `PluginRegistrationMode` | Modalità di caricamento corrente; `"setup-runtime"` è la finestra leggera di avvio/configurazione prima della full-entry |
| `api.resolvePath(input)` | `(string) => string` | Risolve un percorso relativo alla radice del plugin |
## Convenzione dei moduli interni
@ -422,49 +433,49 @@ All'interno del tuo plugin, usa file barrel locali per le importazioni interne:
```
my-plugin/
api.ts # Export pubblici per consumer esterni
runtime-api.ts # Export runtime solo interni
api.ts # Esportazioni pubbliche per i consumatori esterni
runtime-api.ts # Esportazioni runtime solo interne
index.ts # Punto di ingresso del plugin
setup-entry.ts # Entry leggera solo setup (facoltativa)
setup-entry.ts # Entry leggera solo per la configurazione (facoltativa)
```
<Warning>
Non importare mai il tuo stesso plugin tramite `openclaw/plugin-sdk/<your-plugin>`
dal codice di produzione. Instrada le importazioni interne tramite `./api.ts` o
dal codice di produzione. Instrada le importazioni interne attraverso `./api.ts` o
`./runtime-api.ts`. Il percorso SDK è solo il contratto esterno.
</Warning>
Le superfici pubbliche dei plugin bundled caricate tramite facade (`api.ts`, `runtime-api.ts`,
Le superfici pubbliche dei plugin inclusi caricate tramite facade (`api.ts`, `runtime-api.ts`,
`index.ts`, `setup-entry.ts` e file di entry pubblici simili) ora preferiscono lo
snapshot attivo della config runtime quando OpenClaw è già in esecuzione. Se non esiste ancora
uno snapshot runtime, usano come fallback il file di config risolto su disco.
snapshot della configurazione runtime attivo quando OpenClaw è già in esecuzione. Se non esiste ancora
uno snapshot runtime, fanno fallback al file di configurazione risolto su disco.
I plugin provider possono anche esporre un barrel di contratto locale al plugin quando un
helper è intenzionalmente specifico del provider e non appartiene ancora a un sottopercorso SDK
generico. Esempio bundled attuale: il provider Anthropic mantiene i propri helper
stream Claude nel proprio seam pubblico `api.ts` / `contract-api.ts` invece di
promuovere la logica degli header beta Anthropic e `service_tier` in un contratto
Anche i plugin provider possono esporre un barrel contrattuale locale al plugin e ristretto quando un
helper è intenzionalmente specifico del provider e non appartiene ancora a un
sottopercorso SDK generico. Esempio incluso attuale: il provider Anthropic mantiene i suoi helper
di stream Claude nel proprio seam pubblico `api.ts` / `contract-api.ts` invece di
promuovere la logica dell'header beta Anthropic e `service_tier` in un contratto
generico `plugin-sdk/*`.
Altri esempi bundled attuali:
Altri esempi inclusi attuali:
- `@openclaw/openai-provider`: `api.ts` esporta builder dei provider,
helper dei modelli predefiniti e builder dei provider realtime
- `@openclaw/openai-provider`: `api.ts` esporta builder di provider,
helper di modelli predefiniti e builder di provider realtime
- `@openclaw/openrouter-provider`: `api.ts` esporta il builder del provider più
helper di onboarding/config
helper di onboarding/configurazione
<Warning>
Anche il codice di produzione delle estensioni dovrebbe evitare importazioni
Anche il codice di produzione delle estensioni dovrebbe evitare le importazioni
`openclaw/plugin-sdk/<other-plugin>`. Se un helper è davvero condiviso, promuovilo a un sottopercorso SDK neutrale
come `openclaw/plugin-sdk/speech`, `.../provider-model-shared` o un'altra
superficie orientata alla capacità invece di accoppiare due plugin tra loro.
superficie orientata alle capacità invece di accoppiare due plugin tra loro.
</Warning>
## Correlati
- [Entry Points](/it/plugins/sdk-entrypoints) — opzioni di `definePluginEntry` e `defineChannelPluginEntry`
- [Runtime Helpers](/it/plugins/sdk-runtime) — riferimento completo del namespace `api.runtime`
- [Setup and Config](/it/plugins/sdk-setup) — packaging, manifest, schemi di config
- [Testing](/it/plugins/sdk-testing) — utility di test e regole lint
- [SDK Migration](/it/plugins/sdk-migration) — migrazione dalle superfici deprecate
- [Plugin Internals](/it/plugins/architecture) — architettura approfondita e modello delle capacità
- [Punti di ingresso](/it/plugins/sdk-entrypoints) — opzioni di `definePluginEntry` e `defineChannelPluginEntry`
- [Helper runtime](/it/plugins/sdk-runtime) — riferimento completo dello spazio dei nomi `api.runtime`
- [Configurazione e config](/it/plugins/sdk-setup) — packaging, manifest, schemi di configurazione
- [Test](/it/plugins/sdk-testing) — utility di test e regole lint
- [Migrazione dell'SDK](/it/plugins/sdk-migration) — migrazione dalle superfici deprecate
- [Interni dei plugin](/it/plugins/architecture) — architettura approfondita e modello di capacità

View File

@ -2,30 +2,30 @@
read_when:
- Generazione di immagini tramite l'agente
- Configurazione dei provider e dei modelli per la generazione di immagini
- Comprensione dei parametri dello strumento `image_generate`
summary: Genera e modifica immagini usando i provider configurati (OpenAI, Google Gemini, fal, MiniMax, ComfyUI, Vydra)
- Comprensione dei parametri dello strumento image_generate
summary: Genera e modifica immagini utilizzando i provider configurati (OpenAI, Google Gemini, fal, MiniMax, ComfyUI, Vydra)
title: Generazione di immagini
x-i18n:
generated_at: "2026-04-06T03:12:38Z"
generated_at: "2026-04-06T08:15:08Z"
model: gpt-5.4
provider: openai
source_hash: dde416dd1441a06605db85b5813cf61ccfc525813d6db430b7b7dfa53d6a3134
source_hash: 903cc522c283a8da2cbd449ae3e25f349a74d00ecfdaf0f323fd8aa3f2107aea
source_path: tools/image-generation.md
workflow: 15
---
# Generazione di immagini
Lo strumento `image_generate` consente all'agente di creare e modificare immagini usando i provider configurati. Le immagini generate vengono recapitate automaticamente come allegati multimediali nella risposta dell'agente.
Lo strumento `image_generate` consente all'agente di creare e modificare immagini utilizzando i provider configurati. Le immagini generate vengono recapitate automaticamente come allegati multimediali nella risposta dell'agente.
<Note>
Lo strumento appare solo quando è disponibile almeno un provider di generazione di immagini. Se non vedi `image_generate` tra gli strumenti del tuo agente, configura `agents.defaults.imageGenerationModel` o imposta una chiave API del provider.
Lo strumento appare solo quando è disponibile almeno un provider per la generazione di immagini. Se non vedi `image_generate` tra gli strumenti del tuo agente, configura `agents.defaults.imageGenerationModel` oppure imposta una chiave API di un provider.
</Note>
## Avvio rapido
1. Imposta una chiave API per almeno un provider (ad esempio `OPENAI_API_KEY` o `GEMINI_API_KEY`).
2. Facoltativamente imposta il tuo modello preferito:
1. Imposta una chiave API per almeno un provider, ad esempio `OPENAI_API_KEY` o `GEMINI_API_KEY`.
2. Facoltativamente, imposta il modello preferito:
```json5
{
@ -41,20 +41,20 @@ Lo strumento appare solo quando è disponibile almeno un provider di generazione
3. Chiedi all'agente: _"Genera un'immagine di una simpatica mascotte aragosta."_
L'agente chiama automaticamente `image_generate`. Non serve alcuna allowlist degli strumenti — è abilitato per impostazione predefinita quando un provider è disponibile.
L'agente chiama automaticamente `image_generate`. Non è necessario alcun allowlist degli strumenti: è abilitato per impostazione predefinita quando è disponibile un provider.
## Provider supportati
| Provider | Modello predefinito | Supporto modifica | Chiave API |
| -------- | ------------------------------- | ---------------------------------- | ------------------------------------------------------ |
| OpenAI | `gpt-image-1` | Sì (fino a 5 immagini) | `OPENAI_API_KEY` |
| Google | `gemini-3.1-flash-image-preview` | Sì | `GEMINI_API_KEY` o `GOOGLE_API_KEY` |
| fal | `fal-ai/flux/dev` | Sì | `FAL_KEY` |
| MiniMax | `image-01` | Sì (riferimento del soggetto) | `MINIMAX_API_KEY` o OAuth MiniMax (`minimax-portal`) |
| ComfyUI | `workflow` | Sì (1 immagine, configurata dal workflow) | `COMFY_API_KEY` o `COMFY_CLOUD_API_KEY` per il cloud |
| Vydra | `grok-imagine` | No | `VYDRA_API_KEY` |
| Provider | Modello predefinito | Supporto per la modifica | Chiave API |
| -------- | -------------------------------- | ----------------------------------- | ----------------------------------------------------- |
| OpenAI | `gpt-image-1` | Sì (fino a 5 immagini) | `OPENAI_API_KEY` |
| Google | `gemini-3.1-flash-image-preview` | Sì | `GEMINI_API_KEY` o `GOOGLE_API_KEY` |
| fal | `fal-ai/flux/dev` | Sì | `FAL_KEY` |
| MiniMax | `image-01` | Sì (riferimento al soggetto) | `MINIMAX_API_KEY` o OAuth MiniMax (`minimax-portal`) |
| ComfyUI | `workflow` | Sì (1 immagine, configurata tramite workflow) | `COMFY_API_KEY` o `COMFY_CLOUD_API_KEY` per il cloud |
| Vydra | `grok-imagine` | No | `VYDRA_API_KEY` |
Usa `action: "list"` per ispezionare provider e modelli disponibili a runtime:
Usa `action: "list"` per esaminare i provider e i modelli disponibili in fase di esecuzione:
```
/tool image_generate action=list
@ -62,20 +62,20 @@ Usa `action: "list"` per ispezionare provider e modelli disponibili a runtime:
## Parametri dello strumento
| Parametro | Tipo | Descrizione |
| ------------- | -------- | ---------------------------------------------------------------------------------- |
| `prompt` | string | Prompt di generazione dell'immagine (obbligatorio per `action: "generate"`) |
| `action` | string | `"generate"` (predefinito) o `"list"` per ispezionare i provider |
| `model` | string | Override provider/modello, ad esempio `openai/gpt-image-1` |
| `image` | string | Singolo percorso immagine di riferimento o URL per la modalità modifica |
| `images` | string[] | Più immagini di riferimento per la modalità modifica (fino a 5) |
| `size` | string | Suggerimento di dimensione: `1024x1024`, `1536x1024`, `1024x1536`, `1024x1792`, `1792x1024` |
| `aspectRatio` | string | Rapporto di aspetto: `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` |
| `resolution` | string | Suggerimento di risoluzione: `1K`, `2K` o `4K` |
| `count` | number | Numero di immagini da generare (14) |
| `filename` | string | Suggerimento per il nome del file di output |
| Parametro | Tipo | Descrizione |
| ------------- | -------- | ------------------------------------------------------------------------------------ |
| `prompt` | string | Prompt per la generazione di immagini (obbligatorio per `action: "generate"`) |
| `action` | string | `"generate"` (predefinito) oppure `"list"` per esaminare i provider |
| `model` | string | Override di provider/modello, ad esempio `openai/gpt-image-1` |
| `image` | string | Percorso o URL di una singola immagine di riferimento per la modalità modifica |
| `images` | string[] | Più immagini di riferimento per la modalità modifica (fino a 5) |
| `size` | string | Indicazione della dimensione: `1024x1024`, `1536x1024`, `1024x1536`, `1024x1792`, `1792x1024` |
| `aspectRatio` | string | Rapporto d'aspetto: `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` |
| `resolution` | string | Indicazione della risoluzione: `1K`, `2K` o `4K` |
| `count` | number | Numero di immagini da generare (14) |
| `filename` | string | Indicazione del nome file di output |
Non tutti i provider supportano tutti i parametri. Lo strumento passa ciò che ciascun provider supporta, ignora il resto e segnala gli override scartati nel risultato dello strumento.
Non tutti i provider supportano tutti i parametri. Lo strumento passa ciò che ogni provider supporta, ignora il resto e segnala gli override scartati nel risultato dello strumento.
## Configurazione
@ -94,58 +94,57 @@ Non tutti i provider supportano tutti i parametri. Lo strumento passa ciò che c
}
```
### Ordine di selezione del provider
### Ordine di selezione dei provider
Quando genera un'immagine, OpenClaw prova i provider in questo ordine:
1. Il parametro **`model`** della chiamata allo strumento (se l'agente ne specifica uno)
1. **Parametro `model`** della chiamata allo strumento (se l'agente ne specifica uno)
2. **`imageGenerationModel.primary`** dalla configurazione
3. **`imageGenerationModel.fallbacks`** nell'ordine indicato
4. **Rilevamento automatico** — usa solo i valori predefiniti dei provider supportati dall'autenticazione:
4. **Rilevamento automatico** — usa solo i provider predefiniti supportati dall'autenticazione:
- prima il provider predefinito corrente
- poi i restanti provider di generazione di immagini registrati in ordine di ID provider
- poi i restanti provider di generazione di immagini registrati, in ordine di provider id
Se un provider fallisce (errore di autenticazione, rate limit, ecc.), il candidato successivo viene provato automaticamente. Se falliscono tutti, l'errore include i dettagli di ogni tentativo.
Se un provider non riesce (errore di autenticazione, limite di velocità, ecc.), viene provato automaticamente il candidato successivo. Se falliscono tutti, l'errore include i dettagli di ogni tentativo.
Note:
- Il rilevamento automatico è consapevole dell'autenticazione. Un provider predefinito entra nell'elenco dei candidati solo quando OpenClaw può effettivamente autenticare quel provider.
- Usa `action: "list"` per ispezionare i provider attualmente registrati, i loro
modelli predefiniti e i suggerimenti sulle env var di autenticazione.
- Usa `action: "list"` per esaminare i provider attualmente registrati, i loro modelli predefiniti e i suggerimenti sulle variabili d'ambiente per l'autenticazione.
### Modifica delle immagini
OpenAI, Google, fal, MiniMax e ComfyUI supportano la modifica di immagini di riferimento. Passa un percorso immagine di riferimento o un URL:
OpenAI, Google, fal, MiniMax e ComfyUI supportano la modifica di immagini di riferimento. Passa un percorso o un URL di un'immagine di riferimento:
```
"Genera una versione acquerello di questa foto" + image: "/path/to/photo.jpg"
"Genera una versione ad acquerello di questa foto" + image: "/path/to/photo.jpg"
```
OpenAI e Google supportano fino a 5 immagini di riferimento tramite il parametro `images`. fal, MiniMax e ComfyUI ne supportano 1.
La generazione di immagini MiniMax è disponibile tramite entrambi i percorsi auth MiniMax bundled:
La generazione di immagini MiniMax è disponibile tramite entrambi i percorsi di autenticazione MiniMax inclusi:
- `minimax/image-01` per configurazioni con chiave API
- `minimax-portal/image-01` per configurazioni OAuth
- `minimax/image-01` per le configurazioni con chiave API
- `minimax-portal/image-01` per le configurazioni con OAuth
## Capability dei provider
## Capacità dei provider
| Capability | OpenAI | Google | fal | MiniMax | ComfyUI | Vydra |
| --------------------- | -------------------- | -------------------- | ------------------- | -------------------------- | ---------------------------------- | ----- |
| Generazione | Sì (fino a 4) | Sì (fino a 4) | Sì (fino a 4) | Sì (fino a 9) | Sì (output definiti dal workflow) | Sì (1) |
| Modifica/riferimento | Sì (fino a 5 immagini) | Sì (fino a 5 immagini) | Sì (1 immagine) | Sì (1 immagine, riferimento soggetto) | Sì (1 immagine, configurata dal workflow) | No |
| Controllo dimensione | Sì | Sì | Sì | No | No | No |
| Rapporto di aspetto | No | Sì | Sì (solo generazione) | Sì | No | No |
| Risoluzione (1K/2K/4K) | No | Sì | Sì | No | No | No |
| Capacità | OpenAI | Google | fal | MiniMax | ComfyUI | Vydra |
| --------------------- | -------------------- | -------------------- | ------------------- | -------------------------- | ---------------------------------- | ------- |
| Generazione | Sì (fino a 4) | Sì (fino a 4) | Sì (fino a 4) | Sì (fino a 9) | Sì (output definiti dal workflow) | Sì (1) |
| Modifica/riferimento | Sì (fino a 5 immagini) | Sì (fino a 5 immagini) | Sì (1 immagine) | Sì (1 immagine, rif. soggetto) | Sì (1 immagine, configurata tramite workflow) | No |
| Controllo dimensione | Sì | Sì | Sì | No | No | No |
| Rapporto d'aspetto | No | Sì | Sì (solo generazione) | Sì | No | No |
| Risoluzione (1K/2K/4K) | No | Sì | Sì | No | No | No |
## Correlati
- [Panoramica degli strumenti](/it/tools) — tutti gli strumenti agente disponibili
- [fal](/providers/fal) — configurazione del provider immagini e video fal
- [ComfyUI](/providers/comfy) — configurazione del workflow locale ComfyUI e Comfy Cloud
- [Google (Gemini)](/it/providers/google) — configurazione del provider immagini Gemini
- [MiniMax](/it/providers/minimax) — configurazione del provider immagini MiniMax
- [Panoramica degli strumenti](/it/tools) — tutti gli strumenti dell'agente disponibili
- [fal](/it/providers/fal) — configurazione del provider di immagini e video fal
- [ComfyUI](/it/providers/comfy) — configurazione locale di ComfyUI e dei workflow Comfy Cloud
- [Google (Gemini)](/it/providers/google) — configurazione del provider di immagini Gemini
- [MiniMax](/it/providers/minimax) — configurazione del provider di immagini MiniMax
- [OpenAI](/it/providers/openai) — configurazione del provider OpenAI Images
- [Vydra](/providers/vydra) — configurazione di immagini, video e speech Vydra
- [Riferimento di configurazione](/it/gateway/configuration-reference#agent-defaults) — configurazione `imageGenerationModel`
- [Vydra](/it/providers/vydra) — configurazione di immagini, video e voce per Vydra
- [Riferimento della configurazione](/it/gateway/configuration-reference#agent-defaults) — configurazione `imageGenerationModel`
- [Modelli](/it/concepts/models) — configurazione dei modelli e failover

View File

@ -1,30 +1,30 @@
---
read_when:
- Generazione di video tramite l'agent
- Configurazione dei provider e dei modelli di generazione video
- Generazione di video tramite l'agente
- Configurazione dei provider e dei modelli per la generazione video
- Comprensione dei parametri dello strumento video_generate
summary: Genera video da testo, immagini o video esistenti usando 12 backend provider
title: Generazione di video
summary: Genera video da testo, immagini o video esistenti utilizzando 12 backend provider
title: Generazione video
x-i18n:
generated_at: "2026-04-06T03:13:31Z"
generated_at: "2026-04-06T08:15:18Z"
model: gpt-5.4
provider: openai
source_hash: 4afec87368232221db1aa5a3980254093d6a961b17271b2dcbf724e6bd455b16
source_hash: 90d8a392b35adbd899232b02c55c10895b9d7ffc9858d6ca448f2e4e4a57f12f
source_path: tools/video-generation.md
workflow: 15
---
# Generazione di video
# Generazione video
Gli agent OpenClaw possono generare video da prompt di testo, immagini di riferimento o video esistenti. Sono supportati dodici backend provider, ciascuno con opzioni di modello, modalità di input e set di funzionalità differenti. L'agent sceglie automaticamente il provider corretto in base alla tua configurazione e alle API key disponibili.
Gli agenti OpenClaw possono generare video da prompt di testo, immagini di riferimento o video esistenti. Sono supportati dodici backend provider, ciascuno con diverse opzioni di modello, modalità di input e set di funzionalità. L'agente sceglie automaticamente il provider corretto in base alla tua configurazione e alle chiavi API disponibili.
<Note>
Lo strumento `video_generate` compare solo quando è disponibile almeno un provider di generazione video. Se non lo vedi tra gli strumenti del tuo agent, imposta una API key del provider o configura `agents.defaults.videoGenerationModel`.
Lo strumento `video_generate` appare solo quando è disponibile almeno un provider per la generazione video. Se non lo vedi tra gli strumenti del tuo agente, imposta una chiave API del provider o configura `agents.defaults.videoGenerationModel`.
</Note>
## Guida rapida
## Avvio rapido
1. Imposta una API key per un provider supportato:
1. Imposta una chiave API per qualsiasi provider supportato:
```bash
export GEMINI_API_KEY="your-key"
@ -36,58 +36,58 @@ export GEMINI_API_KEY="your-key"
openclaw config set agents.defaults.videoGenerationModel.primary "google/veo-3.1-fast-generate-preview"
```
3. Chiedi all'agent:
3. Chiedi all'agente:
> Genera un video cinematografico di 5 secondi di un'aragosta amichevole che fa surf al tramonto.
L'agent chiama automaticamente `video_generate`. Non è necessaria alcuna allowlist degli strumenti.
L'agente chiama automaticamente `video_generate`. Non è necessaria alcuna allowlist degli strumenti.
## Cosa succede quando generi un video
La generazione video è asincrona. Quando l'agent chiama `video_generate` in una sessione:
La generazione video è asincrona. Quando l'agente chiama `video_generate` in una sessione:
1. OpenClaw invia la richiesta al provider e restituisce immediatamente un ID attività.
2. Il provider elabora il job in background (tipicamente da 30 secondi a 5 minuti a seconda del provider e della risoluzione).
2. Il provider elabora il lavoro in background (in genere da 30 secondi a 5 minuti a seconda del provider e della risoluzione).
3. Quando il video è pronto, OpenClaw riattiva la stessa sessione con un evento interno di completamento.
4. L'agent pubblica il video completato nella conversazione originale.
4. L'agente pubblica il video completato nella conversazione originale.
Mentre un job è in corso, chiamate duplicate a `video_generate` nella stessa sessione restituiscono lo stato corrente dell'attività invece di avviare un'altra generazione. Usa `openclaw tasks list` o `openclaw tasks show <taskId>` per controllare l'avanzamento dalla CLI.
Mentre un'attività è in corso, le chiamate duplicate a `video_generate` nella stessa sessione restituiscono lo stato corrente dell'attività invece di avviare un'altra generazione. Usa `openclaw tasks list` o `openclaw tasks show <taskId>` per controllare l'avanzamento dalla CLI.
Al di fuori delle esecuzioni dell'agent supportate da sessione (ad esempio invocazioni dirette dello strumento), lo strumento usa come fallback la generazione inline e restituisce il percorso finale del media nello stesso turno.
Al di fuori delle esecuzioni dell'agente supportate da sessione (ad esempio, invocazioni dirette degli strumenti), lo strumento torna alla generazione inline e restituisce il percorso finale del file multimediale nello stesso turno.
## Provider supportati
| Provider | Modello predefinito | Testo | Riferimento immagine | Riferimento video | API key |
| -------- | ------------------------------- | ----- | -------------------- | ----------------- | ---------------------------------------- |
| Alibaba | `wan2.6-t2v` | Sì | Sì (URL remoto) | Sì (URL remoto) | `MODELSTUDIO_API_KEY` |
| BytePlus | `seedance-1-0-lite-t2v-250428` | Sì | 1 immagine | No | `BYTEPLUS_API_KEY` |
| ComfyUI | `workflow` | Sì | 1 immagine | No | `COMFY_API_KEY` o `COMFY_CLOUD_API_KEY` |
| fal | `fal-ai/minimax/video-01-live` | Sì | 1 immagine | No | `FAL_KEY` |
| Google | `veo-3.1-fast-generate-preview` | Sì | 1 immagine | 1 video | `GEMINI_API_KEY` |
| MiniMax | `MiniMax-Hailuo-2.3` | Sì | 1 immagine | No | `MINIMAX_API_KEY` |
| OpenAI | `sora-2` | Sì | 1 immagine | 1 video | `OPENAI_API_KEY` |
| Qwen | `wan2.6-t2v` | Sì | Sì (URL remoto) | Sì (URL remoto) | `QWEN_API_KEY` |
| Runway | `gen4.5` | Sì | 1 immagine | 1 video | `RUNWAYML_API_SECRET` |
| Together | `Wan-AI/Wan2.2-T2V-A14B` | Sì | 1 immagine | No | `TOGETHER_API_KEY` |
| Vydra | `veo3` | Sì | 1 immagine (`kling`) | No | `VYDRA_API_KEY` |
| xAI | `grok-imagine-video` | Sì | 1 immagine | 1 video | `XAI_API_KEY` |
| Provider | Modello predefinito | Testo | Immagine rif. | Video rif. | Chiave API |
| -------- | ------------------------------- | ----- | ----------------- | ---------------- | ----------------------------------------- |
| Alibaba | `wan2.6-t2v` | Sì | Sì (URL remoto) | Sì (URL remoto) | `MODELSTUDIO_API_KEY` |
| BytePlus | `seedance-1-0-lite-t2v-250428` | Sì | 1 immagine | No | `BYTEPLUS_API_KEY` |
| ComfyUI | `workflow` | Sì | 1 immagine | No | `COMFY_API_KEY` o `COMFY_CLOUD_API_KEY` |
| fal | `fal-ai/minimax/video-01-live` | Sì | 1 immagine | No | `FAL_KEY` |
| Google | `veo-3.1-fast-generate-preview` | Sì | 1 immagine | 1 video | `GEMINI_API_KEY` |
| MiniMax | `MiniMax-Hailuo-2.3` | Sì | 1 immagine | No | `MINIMAX_API_KEY` |
| OpenAI | `sora-2` | Sì | 1 immagine | 1 video | `OPENAI_API_KEY` |
| Qwen | `wan2.6-t2v` | Sì | Sì (URL remoto) | Sì (URL remoto) | `QWEN_API_KEY` |
| Runway | `gen4.5` | Sì | 1 immagine | 1 video | `RUNWAYML_API_SECRET` |
| Together | `Wan-AI/Wan2.2-T2V-A14B` | Sì | 1 immagine | No | `TOGETHER_API_KEY` |
| Vydra | `veo3` | Sì | 1 immagine (`kling`) | No | `VYDRA_API_KEY` |
| xAI | `grok-imagine-video` | Sì | 1 immagine | 1 video | `XAI_API_KEY` |
Alcuni provider accettano variabili env API key aggiuntive o alternative. Vedi le singole [pagine provider](#related) per i dettagli.
Alcuni provider accettano variabili d'ambiente aggiuntive o alternative per la chiave API. Consulta le singole [pagine dei provider](#related) per i dettagli.
Esegui `video_generate action=list` per ispezionare i provider e i modelli disponibili a runtime.
Esegui `video_generate action=list` per esaminare i provider e i modelli disponibili in fase di esecuzione.
## Parametri dello strumento
### Obbligatori
| Parametro | Tipo | Descrizione |
| --------- | ------ | ------------------------------------------------------------------------------ |
| Parametro | Tipo | Descrizione |
| --------- | ------ | --------------------------------------------------------------------------- |
| `prompt` | string | Descrizione testuale del video da generare (obbligatoria per `action: "generate"`) |
### Input di contenuto
| Parametro | Tipo | Descrizione |
| --------- | -------- | ---------------------------------------- |
| Parametro | Tipo | Descrizione |
| --------- | -------- | --------------------------------------- |
| `image` | string | Singola immagine di riferimento (percorso o URL) |
| `images` | string[] | Immagini di riferimento multiple (fino a 5) |
| `video` | string | Singolo video di riferimento (percorso o URL) |
@ -95,41 +95,41 @@ Esegui `video_generate action=list` per ispezionare i provider e i modelli dispo
### Controlli di stile
| Parametro | Tipo | Descrizione |
| ----------------- | ------- | ------------------------------------------------------------------------ |
| `aspectRatio` | string | `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` |
| `resolution` | string | `480P`, `720P` o `1080P` |
| `durationSeconds` | number | Durata target in secondi (arrotondata al valore supportato più vicino dal provider) |
| `size` | string | Suggerimento di dimensione quando il provider lo supporta |
| `audio` | boolean | Abilita l'audio generato quando supportato |
| `watermark` | boolean | Attiva/disattiva la filigrana del provider quando supportata |
| Parametro | Tipo | Descrizione |
| ---------------- | ------- | ---------------------------------------------------------------------- |
| `aspectRatio` | string | `1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` |
| `resolution` | string | `480P`, `720P` o `1080P` |
| `durationSeconds`| number | Durata target in secondi (arrotondata al valore supportato dal provider più vicino) |
| `size` | string | Indicazione di dimensione quando il provider la supporta |
| `audio` | boolean | Abilita l'audio generato quando supportato |
| `watermark` | boolean | Attiva o disattiva il watermark del provider quando supportato |
### Avanzati
| Parametro | Tipo | Descrizione |
| ---------- | ------ | ------------------------------------------------ |
| `action` | string | `"generate"` (predefinito), `"status"` o `"list"` |
| `model` | string | Override provider/model (ad esempio `runway/gen4.5`) |
| `model` | string | Override di provider/modello (ad es. `runway/gen4.5`) |
| `filename` | string | Suggerimento per il nome del file di output |
Non tutti i provider supportano tutti i parametri. Gli override non supportati vengono ignorati su base best-effort e segnalati come avvisi nel risultato dello strumento. I limiti rigidi delle capability (come troppi input di riferimento) falliscono prima dell'invio.
Non tutti i provider supportano tutti i parametri. Gli override non supportati vengono ignorati in base al miglior sforzo e segnalati come avvisi nel risultato dello strumento. I limiti rigidi di capacità (come un numero eccessivo di input di riferimento) falliscono prima dell'invio.
## Azioni
- **generate** (predefinita) -- crea un video dal prompt fornito e dagli eventuali input di riferimento.
- **generate** (predefinita) -- crea un video a partire dal prompt fornito e dagli input di riferimento facoltativi.
- **status** -- controlla lo stato dell'attività video in corso per la sessione corrente senza avviare un'altra generazione.
- **list** -- mostra provider, modelli disponibili e relative capability.
- **list** -- mostra i provider, i modelli e le relative capacità disponibili.
## Selezione del modello
Quando genera un video, OpenClaw risolve il modello in questo ordine:
1. **Parametro dello strumento `model`** -- se l'agent ne specifica uno nella chiamata.
1. **Parametro dello strumento `model`** -- se l'agente ne specifica uno nella chiamata.
2. **`videoGenerationModel.primary`** -- dalla configurazione.
3. **`videoGenerationModel.fallbacks`** -- provati in ordine.
4. **Rilevamento automatico** -- usa i provider che hanno auth valida, iniziando dal provider predefinito corrente, poi i provider rimanenti in ordine alfabetico.
4. **Rilevamento automatico** -- usa i provider con autenticazione valida, iniziando dal provider predefinito corrente, poi i provider rimanenti in ordine alfabetico.
Se un provider fallisce, viene provato automaticamente il candidato successivo. Se tutti i candidati falliscono, l'errore include i dettagli di ogni tentativo.
Se un provider fallisce, il candidato successivo viene provato automaticamente. Se tutti i candidati falliscono, l'errore include i dettagli di ogni tentativo.
```json5
{
@ -146,24 +146,24 @@ Se un provider fallisce, viene provato automaticamente il candidato successivo.
## Note sui provider
| Provider | Note |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| Alibaba | Usa l'endpoint asincrono DashScope/Model Studio. Le immagini e i video di riferimento devono essere URL remoti `http(s)`. |
| BytePlus | Solo un'immagine di riferimento. |
| ComfyUI | Esecuzione locale o cloud guidata da workflow. Supporta text-to-video e image-to-video tramite il grafo configurato. |
| fal | Usa un flusso supportato da coda per job di lunga durata. Solo un'immagine di riferimento. |
| Google | Usa Gemini/Veo. Supporta un'immagine o un video di riferimento. |
| MiniMax | Solo un'immagine di riferimento. |
| OpenAI | Viene inoltrato solo l'override `size`. Gli altri override di stile (`aspectRatio`, `resolution`, `audio`, `watermark`) vengono ignorati con un avviso. |
| Qwen | Stesso backend DashScope di Alibaba. Gli input di riferimento devono essere URL remoti `http(s)`; i file locali vengono rifiutati in anticipo. |
| Runway | Supporta file locali tramite data URI. Video-to-video richiede `runway/gen4_aleph`. Le esecuzioni solo testo espongono rapporti d'aspetto `16:9` e `9:16`. |
| Together | Solo un'immagine di riferimento. |
| Vydra | Usa direttamente `https://www.vydra.ai/api/v1` per evitare redirect che perdono auth. `veo3` è integrato solo come text-to-video; `kling` richiede un URL immagine remoto. |
| xAI | Supporta flussi text-to-video, image-to-video e modifica/estensione di video remoti. |
| Provider | Note |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Alibaba | Usa l'endpoint asincrono DashScope/Model Studio. Le immagini e i video di riferimento devono essere URL `http(s)` remoti. |
| BytePlus | Solo un'immagine di riferimento. |
| ComfyUI | Esecuzione locale o cloud basata su workflow. Supporta text-to-video e image-to-video tramite il grafo configurato. |
| fal | Usa un flusso supportato da coda per lavori di lunga durata. Solo un'immagine di riferimento. |
| Google | Usa Gemini/Veo. Supporta un'immagine o un video di riferimento. |
| MiniMax | Solo un'immagine di riferimento. |
| OpenAI | Viene inoltrato solo l'override `size`. Gli altri override di stile (`aspectRatio`, `resolution`, `audio`, `watermark`) vengono ignorati con un avviso. |
| Qwen | Stesso backend DashScope di Alibaba. Gli input di riferimento devono essere URL `http(s)` remoti; i file locali vengono rifiutati in anticipo. |
| Runway | Supporta file locali tramite URI di dati. Video-to-video richiede `runway/gen4_aleph`. Le esecuzioni solo testo espongono i rapporti d'aspetto `16:9` e `9:16`. |
| Together | Solo un'immagine di riferimento. |
| Vydra | Usa direttamente `https://www.vydra.ai/api/v1` per evitare reindirizzamenti che eliminano l'autenticazione. `veo3` è incluso solo come text-to-video; `kling` richiede un URL immagine remoto. |
| xAI | Supporta flussi text-to-video, image-to-video e di modifica/estensione video remota. |
## Configurazione
Imposta il modello di generazione video predefinito nella configurazione OpenClaw:
Imposta il modello predefinito per la generazione video nella configurazione di OpenClaw:
```json5
{
@ -187,18 +187,18 @@ openclaw config set agents.defaults.videoGenerationModel.primary "qwen/wan2.6-t2
## Correlati
- [Panoramica degli strumenti](/it/tools)
- [Attività in background](/it/automation/tasks) -- tracciamento delle attività per la generazione video asincrona
- [Alibaba Model Studio](/providers/alibaba)
- [BytePlus](/providers/byteplus)
- [ComfyUI](/providers/comfy)
- [fal](/providers/fal)
- [Attività in background](/it/automation/tasks) -- monitoraggio delle attività per la generazione video asincrona
- [Alibaba Model Studio](/it/providers/alibaba)
- [BytePlus](/it/concepts/model-providers#byteplus-international)
- [ComfyUI](/it/providers/comfy)
- [fal](/it/providers/fal)
- [Google (Gemini)](/it/providers/google)
- [MiniMax](/it/providers/minimax)
- [OpenAI](/it/providers/openai)
- [Qwen](/it/providers/qwen)
- [Runway](/providers/runway)
- [Runway](/it/providers/runway)
- [Together AI](/it/providers/together)
- [Vydra](/providers/vydra)
- [Vydra](/it/providers/vydra)
- [xAI](/it/providers/xai)
- [Riferimento configurazione](/it/gateway/configuration-reference#agent-defaults)
- [Riferimento della configurazione](/it/gateway/configuration-reference#agent-defaults)
- [Modelli](/it/concepts/models)