Vai al contenuto principale

Migrazione del Plugin SDK

OpenClaw è passato da un ampio layer di retrocompatibilità a una moderna architettura dei plugin con import mirati e documentati. Se il tuo plugin è stato creato prima della nuova architettura, questa guida ti aiuta a migrare.

Cosa sta cambiando

Il vecchio sistema dei plugin forniva due superfici molto aperte che permettevano ai plugin di importare qualsiasi cosa servisse da un singolo punto di ingresso:
  • openclaw/plugin-sdk/compat — un singolo import che riesportava decine di helper. È stato introdotto per mantenere funzionanti i plugin hook-based più vecchi mentre la nuova architettura dei plugin veniva costruita.
  • openclaw/extension-api — un bridge che dava ai plugin accesso diretto a helper lato host come l’embedded agent runner.
Entrambe le superfici sono ora deprecate. Continuano a funzionare a runtime, ma i nuovi plugin non devono usarle e quelli esistenti dovrebbero migrare prima che la prossima major release le rimuova.
Il layer di retrocompatibilità verrà rimosso in una futura major release. I plugin che importano ancora da queste superfici si romperanno quando ciò accadrà.

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 import
  • Superficie API poco chiara — nessun modo per distinguere quali export fossero stabili rispetto a quelli interni
Il moderno Plugin SDK risolve questo problema: ogni percorso di import (openclaw/plugin-sdk/\<subpath\>) è un modulo piccolo e autosufficiente con uno scopo chiaro e un contratto documentato. Anche le seam legacy di comodo per i provider dei canali inclusi non esistono più. Import come openclaw/plugin-sdk/slack, openclaw/plugin-sdk/discord, openclaw/plugin-sdk/signal, openclaw/plugin-sdk/whatsapp, seam helper con marchio del canale e openclaw/plugin-sdk/telegram-core erano scorciatoie private del mono-repo, non contratti stabili per i plugin. Usa invece subpath generici e ristretti del SDK. All’interno del workspace dei plugin inclusi, mantieni gli helper di proprietà del provider in api.ts o runtime-api.ts del plugin stesso. Esempi attuali di provider inclusi:
  • Anthropic mantiene helper di stream specifici per Claude nelle proprie seam api.ts / contract-api.ts
  • OpenAI mantiene builder di provider, helper per i modelli predefiniti e builder di provider realtime nel proprio api.ts
  • OpenRouter mantiene il builder del provider e gli helper di onboarding/configurazione nel proprio api.ts

Come migrare

1

Controlla 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 modo chiuso a meno che tu non passi esplicitamente allowShellFallback: true.
// Prima
const program = applyWindowsSpawnProgramPolicy({ candidate });

// Dopo
const program = applyWindowsSpawnProgramPolicy({
  candidate,
  // Impostalo solo per chiamanti di compatibilità fidati che
  // accettano intenzionalmente il fallback mediato dalla shell.
  allowShellFallback: true,
});
Se il tuo chiamante non si basa intenzionalmente sul fallback della shell, non impostare allowShellFallback e gestisci invece l’errore generato.
2

Trova gli import deprecati

Cerca nel tuo plugin gli import da una delle due superfici deprecate:
grep -r "plugin-sdk/compat" my-plugin/
grep -r "openclaw/extension-api" my-plugin/
3

Sostituiscili con import mirati

Ogni export della vecchia superficie corrisponde a uno specifico percorso di import moderno:
// Prima (layer di retrocompatibilità deprecato)
import {
  createChannelReplyPipeline,
  createPluginRuntimeStore,
  resolveControlCommandGate,
} from "openclaw/plugin-sdk/compat";

// Dopo (import moderni e mirati)
import { createChannelReplyPipeline } from "openclaw/plugin-sdk/channel-reply-pipeline";
import { createPluginRuntimeStore } from "openclaw/plugin-sdk/runtime-store";
import { resolveControlCommandGate } from "openclaw/plugin-sdk/command-auth";
Per gli helper lato host, usa il runtime del plugin iniettato invece di importare direttamente:
// Prima (bridge extension-api deprecato)
import { runEmbeddedPiAgent } from "openclaw/extension-api";
const result = await runEmbeddedPiAgent({ sessionId, prompt });

// Dopo (runtime iniettato)
const result = await api.runtime.agent.runEmbeddedPiAgent({ sessionId, prompt });
Lo stesso schema si applica ad altri helper legacy del bridge:
Vecchio importEquivalente moderno
resolveAgentDirapi.runtime.agent.resolveAgentDir
resolveAgentWorkspaceDirapi.runtime.agent.resolveAgentWorkspaceDir
resolveAgentIdentityapi.runtime.agent.resolveAgentIdentity
resolveThinkingDefaultapi.runtime.agent.resolveThinkingDefault
resolveAgentTimeoutMsapi.runtime.agent.resolveAgentTimeoutMs
ensureAgentWorkspaceapi.runtime.agent.ensureAgentWorkspace
helper del session storeapi.runtime.agent.session.*
4

Compila e testa

pnpm build
pnpm test -- my-plugin/

Riferimento dei percorsi di import

Percorso di importScopoExport chiave
plugin-sdk/plugin-entryHelper canonico di entry del plugindefinePluginEntry
plugin-sdk/coreRiesportazione legacy ombrello per definizioni/builder di entry di canaledefineChannelPluginEntry, createChatChannelPlugin
plugin-sdk/config-schemaExport dello schema di configurazione rootOpenClawSchema
plugin-sdk/provider-entryHelper di entry per provider singolodefineSingleProviderPluginEntry
plugin-sdk/channel-coreDefinizioni e builder mirati per le entry di canaledefineChannelPluginEntry, defineSetupPluginEntry, createChatChannelPlugin, createChannelPluginBase
plugin-sdk/setupHelper condivisi per la procedura guidata di setupPrompt allowlist, builder dello stato di setup
plugin-sdk/setup-runtimeHelper runtime per il setupAdapter di patch setup import-safe, helper per note di lookup, promptResolvedAllowFrom, splitSetupEntries, proxy di setup delegati
plugin-sdk/setup-adapter-runtimeHelper per adapter di setupcreateEnvPatchedAccountSetupAdapter
plugin-sdk/setup-toolsHelper di tooling per il setupformatCliCommand, detectBinary, extractArchive, resolveBrewExecutable, formatDocsLink, CONFIG_DIR
plugin-sdk/account-coreHelper per account multipliHelper per elenco/configurazione/account-action-gate
plugin-sdk/account-idHelper per ID accountDEFAULT_ACCOUNT_ID, normalizzazione dell’ID account
plugin-sdk/account-resolutionHelper di lookup accountHelper per lookup account + fallback al predefinito
plugin-sdk/account-helpersHelper account ristrettiHelper per elenco account/account-action
plugin-sdk/channel-setupAdapter per la procedura guidata di setupcreateOptionalChannelSetupSurface, createOptionalChannelSetupAdapter, createOptionalChannelSetupWizard, più DEFAULT_ACCOUNT_ID, createTopLevelChannelDmPolicy, setSetupChannelEnabled, splitSetupEntries
plugin-sdk/channel-pairingPrimitive di pairing DMcreateChannelPairingController
plugin-sdk/channel-reply-pipelineWiring di prefisso risposta + typingcreateChannelReplyPipeline
plugin-sdk/channel-config-helpersFactory per adapter di configurazionecreateHybridChannelConfigAdapter
plugin-sdk/channel-config-schemaBuilder dello schema di configurazioneTipi di schema di configurazione del canale
plugin-sdk/telegram-command-configHelper di configurazione dei comandi TelegramNormalizzazione del nome comando, trim della descrizione, validazione di duplicati/conflitti
plugin-sdk/channel-policyRisoluzione delle policy gruppo/DMresolveChannelGroupRequireMention
plugin-sdk/channel-lifecycleTracciamento dello stato dell’accountcreateAccountStatusSink
plugin-sdk/inbound-envelopeHelper per inbound envelopeHelper condivisi per route + envelope builder
plugin-sdk/inbound-reply-dispatchHelper per le risposte in ingressoHelper condivisi per record-and-dispatch
plugin-sdk/messaging-targetsParsing dei target di messaggisticaHelper per parsing/matching dei target
plugin-sdk/outbound-mediaHelper per media in uscitaCaricamento condiviso dei media in uscita
plugin-sdk/outbound-runtimeHelper runtime per l’uscitaHelper per identità/delegati di invio in uscita
plugin-sdk/thread-bindings-runtimeHelper per thread-bindingLifecycle dei thread-binding e helper per adapter
plugin-sdk/agent-media-payloadHelper legacy per media payloadBuilder del media payload dell’agente per layout legacy dei campi
plugin-sdk/channel-runtimeShim di compatibilità deprecatoSolo utility runtime legacy del canale
plugin-sdk/channel-send-resultTipi del risultato di invioTipi del risultato della risposta
plugin-sdk/runtime-storeStorage persistente del plugincreatePluginRuntimeStore
plugin-sdk/runtimeHelper runtime ampiHelper runtime/logging/backup/installazione plugin
plugin-sdk/runtime-envHelper mirati per l’ambiente runtimeLogger/runtime env, timeout, retry e helper di backoff
plugin-sdk/plugin-runtimeHelper runtime condivisi del pluginHelper per comandi/hook/http/interattivi del plugin
plugin-sdk/hook-runtimeHelper per la pipeline degli hookHelper condivisi per la pipeline di webhook/hook interni
plugin-sdk/lazy-runtimeHelper lazy runtimecreateLazyRuntimeModule, createLazyRuntimeMethod, createLazyRuntimeMethodBinder, createLazyRuntimeNamedExport, createLazyRuntimeSurface
plugin-sdk/process-runtimeHelper per i processiHelper condivisi per exec
plugin-sdk/cli-runtimeHelper runtime della CLIFormattazione dei comandi, attese, helper di versione
plugin-sdk/gateway-runtimeHelper per il GatewayClient Gateway e helper di patch per channel-status
plugin-sdk/config-runtimeHelper di configurazioneHelper per caricamento/scrittura della configurazione
plugin-sdk/telegram-command-configHelper per i comandi TelegramHelper di validazione dei comandi Telegram stabili in fallback quando la superficie del contratto Telegram incluso non è disponibile
plugin-sdk/approval-runtimeHelper per i prompt di approvazionePayload di approvazione exec/plugin, helper per capability/profile di approvazione, helper runtime/routing per approvazioni native
plugin-sdk/approval-auth-runtimeHelper auth per le approvazioniRisoluzione dell’approvatore, auth per azioni nella stessa chat
plugin-sdk/approval-client-runtimeHelper client per le approvazioniHelper di profilo/filtro per approvazione exec nativa
plugin-sdk/approval-delivery-runtimeHelper di delivery per le approvazioniAdapter di capability/delivery per approvazioni native
plugin-sdk/approval-native-runtimeHelper per i target di approvazioneHelper per binding target/account delle approvazioni native
plugin-sdk/approval-reply-runtimeHelper per le risposte di approvazioneHelper per payload di risposta di approvazione exec/plugin
plugin-sdk/security-runtimeHelper di sicurezzaHelper condivisi per trust, gating DM, contenuti esterni e raccolta di segreti
plugin-sdk/ssrf-policyHelper per la policy SSRFHelper per allowlist host e policy di rete privata
plugin-sdk/ssrf-runtimeHelper runtime SSRFDispatcher pinned, fetch protetto, helper di policy SSRF
plugin-sdk/collection-runtimeHelper per cache limitatapruneMapToMaxSize
plugin-sdk/diagnostic-runtimeHelper per gating diagnosticoisDiagnosticFlagEnabled, isDiagnosticsEnabled
plugin-sdk/error-runtimeHelper di formattazione degli erroriformatUncaughtError, isApprovalNotFoundError, helper per grafi di errore
plugin-sdk/fetch-runtimeHelper per fetch/proxy wrappedresolveFetch, helper proxy
plugin-sdk/host-runtimeHelper di normalizzazione hostnormalizeHostname, normalizeScpRemoteHost
plugin-sdk/retry-runtimeHelper di retryRetryConfig, retryAsync, runner di policy
plugin-sdk/allow-fromFormattazione dell’allowlistformatAllowFromLowercase
plugin-sdk/allowlist-resolutionMapping dell’input allowlistmapAllowlistResolutionInputs
plugin-sdk/command-authGating dei comandi e helper per la superficie dei comandiresolveControlCommandGate, helper di autorizzazione del mittente, helper del registro comandi
plugin-sdk/secret-inputParsing dell’input segretoHelper per input segreti
plugin-sdk/webhook-ingressHelper per richieste webhookUtility per i target webhook
plugin-sdk/webhook-request-guardsHelper guard per il body dei webhookHelper per lettura/limite del body della richiesta
plugin-sdk/reply-runtimeRuntime condiviso della rispostaDispatch in ingresso, heartbeat, reply planner, chunking
plugin-sdk/reply-dispatch-runtimeHelper mirati per il dispatch della rispostaHelper per finalize + provider dispatch
plugin-sdk/reply-historyHelper per la cronologia delle rispostebuildHistoryContext, buildPendingHistoryContextFromMap, recordPendingHistoryEntry, clearHistoryEntriesIfEnabled
plugin-sdk/reply-referencePianificazione dei riferimenti di rispostacreateReplyReferencePlanner
plugin-sdk/reply-chunkingHelper per chunk delle risposteHelper per chunking di testo/markdown
plugin-sdk/session-store-runtimeHelper per il session storeHelper per percorso store + updated-at
plugin-sdk/state-pathsHelper per i percorsi di statoHelper per directory di stato e OAuth
plugin-sdk/routingHelper per routing/session-keyresolveAgentRoute, buildAgentSessionKey, resolveDefaultAgentBoundAccountId, helper di normalizzazione della session-key
plugin-sdk/status-helpersHelper per lo stato del canaleBuilder di riepilogo stato canale/account, valori predefiniti dello stato runtime, helper di metadati dei problemi
plugin-sdk/target-resolver-runtimeHelper per il target resolverHelper condivisi per target resolver
plugin-sdk/string-normalization-runtimeHelper per la normalizzazione delle stringheHelper per normalizzazione slug/stringhe
plugin-sdk/request-urlHelper per gli URL di richiestaEstrai URL stringa da input simili a richieste
plugin-sdk/run-commandHelper per comandi temporizzatiRunner di comandi temporizzati con stdout/stderr normalizzati
plugin-sdk/param-readersReader di parametriReader comuni di parametri tool/CLI
plugin-sdk/tool-sendEstrazione dell’invio del toolEstrai campi canonici del target di invio dagli argomenti del tool
plugin-sdk/temp-pathHelper per percorsi temporaneiHelper condivisi per il percorso temporaneo di download
plugin-sdk/logging-coreHelper di loggingLogger del sottosistema e helper di redaction
plugin-sdk/markdown-table-runtimeHelper per tabelle MarkdownHelper per la modalità delle tabelle Markdown
plugin-sdk/reply-payloadTipi per risposta ai messaggiTipi di payload della risposta
plugin-sdk/provider-setupHelper curati per setup di provider locali/self-hostedHelper per discovery/configurazione di provider self-hosted
plugin-sdk/self-hosted-provider-setupHelper mirati per setup di provider self-hosted compatibili OpenAIGli stessi helper per discovery/configurazione di provider self-hosted
plugin-sdk/provider-auth-runtimeHelper runtime di autenticazione providerHelper runtime per la risoluzione della chiave API
plugin-sdk/provider-auth-api-keyHelper di setup per chiavi API del providerHelper per onboarding/scrittura del profilo della chiave API
plugin-sdk/provider-auth-resultHelper per auth-result del providerBuilder standard del risultato di autenticazione OAuth
plugin-sdk/provider-auth-loginHelper per login interattivo del providerHelper condivisi per il login interattivo
plugin-sdk/provider-env-varsHelper per env var del providerHelper per il lookup delle env var di autenticazione del provider
plugin-sdk/provider-model-sharedHelper condivisi per modello/replay del providerProviderReplayFamily, buildProviderReplayFamilyHooks, normalizeModelCompat, builder condivisi di replay-policy, helper per endpoint del provider e helper di normalizzazione dell’ID modello
plugin-sdk/provider-catalog-sharedHelper condivisi per il catalogo dei providerfindCatalogTemplate, buildSingleProviderApiKeyCatalog, supportsNativeStreamingUsageCompat, applyProviderNativeStreamingUsageCompat
plugin-sdk/provider-onboardPatch di onboarding del providerHelper per la configurazione dell’onboarding
plugin-sdk/provider-httpHelper HTTP del providerHelper generici per HTTP/capability dell’endpoint del provider
plugin-sdk/provider-web-fetchHelper web-fetch del providerHelper per registrazione/cache del provider web-fetch
plugin-sdk/provider-web-searchHelper web-search del providerHelper per registrazione/cache/configurazione del provider web-search
plugin-sdk/provider-toolsHelper di compatibilità tool/schema del providerProviderToolCompatFamily, buildProviderToolCompatFamilyHooks, pulizia dello schema Gemini + diagnostica e helper di compatibilità xAI come resolveXaiModelCompatPatch / applyXaiModelCompat
plugin-sdk/provider-usageHelper per usage del providerfetchClaudeUsage, fetchGeminiUsage, fetchGithubCopilotUsage e altri helper per usage del provider
plugin-sdk/provider-streamHelper wrapper per stream del providerProviderStreamFamily, buildProviderStreamFamilyHooks, composeProviderStreamWrappers, tipi wrapper degli stream e helper wrapper condivisi per Anthropic/Bedrock/Google/Kilocode/Moonshot/OpenAI/OpenRouter/Z.A.I/MiniMax/Copilot
plugin-sdk/keyed-async-queueCoda async ordinataKeyedAsyncQueue
plugin-sdk/media-runtimeHelper condivisi per mediaHelper per fetch/transform/store dei media più builder dei media payload
plugin-sdk/media-understandingHelper per la comprensione dei mediaTipi di provider per comprensione dei media più export di helper lato provider per immagini/audio
plugin-sdk/text-runtimeHelper condivisi per testoRimozione di testo visibile all’assistente, helper per render/chunking/tabella Markdown, helper di redaction, helper per directive-tag, utility per testo sicuro e helper correlati per testo/logging
plugin-sdk/text-chunkingHelper per chunking del testoHelper per il chunking del testo in uscita
plugin-sdk/speechHelper per speechTipi di provider speech più helper lato provider per directive, registry e validazione
plugin-sdk/speech-coreCore speech condivisoTipi di provider speech, registry, directive, normalizzazione
plugin-sdk/realtime-transcriptionHelper per trascrizione realtimeTipi di provider e helper del registry
plugin-sdk/realtime-voiceHelper per la voce realtimeTipi di provider e helper del registry
plugin-sdk/image-generation-coreCore condiviso per generazione immaginiTipi per generazione immagini, failover, autenticazione e helper del registry
plugin-sdk/video-generationHelper per la generazione videoTipi provider/richiesta/risultato per generazione video
plugin-sdk/video-generation-coreCore condiviso per generazione videoTipi per generazione video, helper di failover, lookup del provider e parsing di model-ref
plugin-sdk/interactive-runtimeHelper per risposte interattiveNormalizzazione/riduzione del payload delle risposte interattive
plugin-sdk/channel-config-primitivesPrimitive di configurazione del canalePrimitive ristrette per lo schema di configurazione del canale
plugin-sdk/channel-config-writesHelper per la scrittura della configurazione del canaleHelper di autorizzazione per la scrittura della configurazione del canale
plugin-sdk/channel-plugin-commonPreludio condiviso del canaleExport condivisi del preludio del plugin di canale
plugin-sdk/channel-statusHelper per lo stato del canaleHelper condivisi per snapshot/riepilogo dello stato del canale
plugin-sdk/allowlist-config-editHelper di configurazione allowlistHelper per leggere/modificare la configurazione dell’allowlist
plugin-sdk/group-accessHelper per l’accesso di gruppoHelper condivisi per le decisioni di accesso di gruppo
plugin-sdk/direct-dmHelper per direct-DMHelper condivisi per auth/guard dei direct-DM
plugin-sdk/extension-sharedHelper condivisi delle estensioniPrimitive helper per canale/status passivi
plugin-sdk/webhook-targetsHelper per i target webhookRegistry dei target webhook e helper per installazione delle route
plugin-sdk/webhook-pathHelper per il percorso webhookHelper per la normalizzazione del percorso webhook
plugin-sdk/web-mediaHelper condivisi per web mediaHelper per caricamento di media remoti/locali
plugin-sdk/zodRiesportazione di ZodRiesportazione di zod per i consumatori del Plugin SDK
plugin-sdk/memory-coreHelper inclusi di memory-coreSuperficie helper per manager/configurazione/file/CLI della memoria
plugin-sdk/memory-core-engine-runtimeFacade runtime del motore di memoriaFacade runtime di index/search della memoria
plugin-sdk/memory-core-host-engine-foundationMotore foundation host della memoriaExport del motore foundation host della memoria
plugin-sdk/memory-core-host-engine-embeddingsMotore embeddings host della memoriaExport del motore embeddings host della memoria
plugin-sdk/memory-core-host-engine-qmdMotore QMD host della memoriaExport del motore QMD host della memoria
plugin-sdk/memory-core-host-engine-storageMotore storage host della memoriaExport del motore storage host della memoria
plugin-sdk/memory-core-host-multimodalHelper multimodali host della memoriaHelper multimodali host della memoria
plugin-sdk/memory-core-host-queryHelper query host della memoriaHelper query host della memoria
plugin-sdk/memory-core-host-secretHelper segreti host della memoriaHelper segreti host della memoria
plugin-sdk/memory-core-host-statusHelper stato host della memoriaHelper stato host della memoria
plugin-sdk/memory-core-host-runtime-cliRuntime CLI host della memoriaHelper runtime CLI host della memoria
plugin-sdk/memory-core-host-runtime-coreRuntime core host della memoriaHelper runtime core host della memoria
plugin-sdk/memory-core-host-runtime-filesHelper file/runtime host della memoriaHelper file/runtime host della memoria
plugin-sdk/memory-lancedbHelper inclusi di memory-lancedbSuperficie helper di memory-lancedb
plugin-sdk/testingUtility di testHelper e mock di test
Questa tabella è intenzionalmente il sottoinsieme comune per la migrazione, non l’intera superficie del SDK. L’elenco completo di oltre 200 entrypoint si trova in scripts/lib/plugin-sdk-entrypoints.json. Quell’elenco include ancora alcune seam helper dei plugin inclusi come plugin-sdk/feishu, plugin-sdk/feishu-setup, plugin-sdk/zalo, plugin-sdk/zalo-setup e plugin-sdk/matrix*. Queste restano esportate per la manutenzione e la compatibilità dei plugin inclusi, ma sono intenzionalmente omesse dalla tabella comune di migrazione e non sono la destinazione consigliata per nuovo codice plugin. La stessa regola si applica ad altre famiglie di helper inclusi come:
  • helper di supporto browser: plugin-sdk/browser-config-support, plugin-sdk/browser-support
  • Matrix: plugin-sdk/matrix*
  • LINE: plugin-sdk/line*
  • IRC: plugin-sdk/irc*
  • superfici helper/plugin incluse 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, plugin-sdk/twitch, 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 e plugin-sdk/voice-call
plugin-sdk/github-copilot-token espone attualmente la superficie ristretta di helper per token DEFAULT_COPILOT_API_BASE_URL, deriveCopilotApiBaseUrlFromToken e resolveCopilotApiToken. Usa l’import più ristretto che corrisponde al lavoro da fare. Se non riesci a trovare un export, controlla il sorgente in src/plugin-sdk/ oppure chiedi su Discord.

Timeline di rimozione

QuandoCosa succede
OraLe superfici deprecate emettono avvisi a runtime
Prossima major releaseLe superfici deprecate verranno rimosse; i plugin che le usano ancora falliranno
Tutti i plugin core sono già stati migrati. I plugin esterni dovrebbero migrare prima della prossima major release.

Sopprimere temporaneamente gli avvisi

Imposta queste variabili d’ambiente mentre lavori alla migrazione:
OPENCLAW_SUPPRESS_PLUGIN_SDK_COMPAT_WARNING=1 openclaw gateway run
OPENCLAW_SUPPRESS_EXTENSION_API_WARNING=1 openclaw gateway run
Questa è una via di fuga temporanea, non una soluzione permanente.

Correlati