@ nei gruppi sono i principali tipi di chat, con contenuti
multimediali avanzati (immagini, voce, video, file). I messaggi nei canali delle gilde sono supportati solo per
testo e immagini da URL remoti; voce, video, caricamenti di file e immagini
locali/Base64 non sono disponibili nei canali delle gilde. Reazioni e thread non sono
supportati in alcun contesto.
Stato: plugin ufficiale scaricabile.
Installazione
Configurazione iniziale
- Accedere alla Piattaforma aperta QQ e scansionare il codice QR con QQ sul telefono per registrarsi o accedere.
- Fare clic su Create Bot per creare un nuovo bot QQ.
- Individuare AppID e AppSecret nella pagina delle impostazioni del bot e copiarli.
AppSecret non viene archiviato in testo non crittografato. Se si lascia la pagina senza salvarlo, sarà necessario generarne uno nuovo.
- Aggiungere il canale:
- Riavviare il Gateway.
Configurazione
Configurazione minima:QQBOT_APP_IDQQBOT_CLIENT_SECRET
openclaw channels add --channel qqbot --token-file ...imposta solo AppSecret;appIddeve essere già impostato nella configurazione o inQQBOT_APP_ID.clientSecretaccetta una stringa di testo non crittografato, un percorso di file (clientSecretFile) o un oggetto SecretRef strutturato.- Le stringhe marcatore legacy
secretref:.../secretref-env:...vengono rifiutate perclientSecret; utilizzare invece un oggetto SecretRef strutturato.
Streaming
streaming.mode: "off"disabilita lo streaming a blocchi per l’account.streaming.nativeTransport: truetrasmette in streaming le risposte C2C (messaggi diretti) tramite l’API ufficialestream_messagesdi QQ; le destinazioni di gruppo/canale non sono interessate.- I valori scalari legacy
streaming: true|falsee la chiavestreaming.c2cStreamApivengono migrati a questa struttura tramiteopenclaw doctor --fix. /bot-streaming on|offattiva o disattiva la stessa configurazione da un messaggio diretto.
Criteri di accesso
allowFrom/groupAllowFromdeterminano chi può comunicare con il bot nei contesti C2C / di gruppo.dmPolicy/groupPolicy(open|allowlist|disabled) controllano la modalità di applicazione.dmPolicyassume come valore predefinitoallowlistquandoallowFromcontiene una voce concreta (non jolly), altrimentiopen.groupPolicyassume come valore predefinitoallowlistquandogroupAllowFromoallowFromcontiene una voce concreta, altrimentiopen.- I comandi slash “Auth: allowlist” richiedono una voce esplicita non jolly in
allowFrom(o ingroupAllowFromper le invocazioni di gruppo), indipendentemente dadmPolicy/groupPolicy; vedere Comandi slash.
Configurazione con più account
Eseguire più bot QQ in un’unica istanza OpenClaw:appId. Le righe di log sono contrassegnate con l’ID dell’account proprietario, affinché
la diagnostica resti separabile quando si eseguono più bot in un solo Gateway.
Aggiungere un secondo bot tramite CLI:
Chat di gruppo
Il supporto dei gruppi utilizza gli OpenID dei gruppi QQ, non i nomi visualizzati. Aggiungere il bot a un gruppo, quindi menzionarlo oppure configurare il gruppo affinché funzioni senza menzione.groups["*"] imposta i valori predefiniti per ogni gruppo; una voce groups.GROUP_OPENID
concreta sostituisce tali valori predefiniti per un gruppo. Impostazioni dei gruppi:
commandLevel accetta:
Le vecchie voci QQBot
toolPolicy sono state ritirate. Eseguire openclaw doctor --fix per migrarle a tools.
Le modalità di attivazione sono mention e always. requireMention: true corrisponde a
mention; requireMention: false corrisponde a always. Un’eventuale sostituzione dell’attivazione
a livello di sessione prevale sulla configurazione.
La coda in ingresso è specifica per ciascun interlocutore. Gli interlocutori di gruppo dispongono di un limite di coda maggiore (50 rispetto a 20
per gli interlocutori diretti); quando la coda è piena, i messaggi creati dal bot vengono rimossi prima di quelli degli utenti
e le sequenze di normali messaggi di gruppo vengono unite in un unico turno con attribuzione. I comandi
slash vengono eseguiti uno alla volta, indipendentemente da qualsiasi batch unito.
Voce (STT / TTS)
STT e TTS supportano una configurazione a due livelli con fallback prioritario:enabled: false su uno dei due per disabilitarlo. Le sostituzioni TTS a livello di account utilizzano la
stessa struttura di messages.tts e vengono unite in profondità alla configurazione TTS del canale/globale.
Per impostazione predefinita, le richieste STT scadono dopo 60 secondi. Lo STT specifico del plugin utilizza la
sostituzione models.providers.<id>.timeoutSeconds selezionata. Lo STT audio del framework
utilizza tools.media.audio.models[0].timeoutSeconds, quindi
tools.media.audio.timeoutSeconds, quindi la sostituzione del provider selezionato.
Gli allegati vocali QQ in ingresso vengono esposti agli agenti come metadati di contenuti audio,
mantenendo al contempo i file vocali grezzi fuori da MediaPaths generico. [[audio_as_voice]]
in una risposta di testo semplice sintetizza il TTS e invia un messaggio vocale QQ nativo quando
il TTS è configurato.
Il comportamento di caricamento/transcodifica dell’audio in uscita può essere regolato anche con
channels.qqbot.audioFormatPolicy:
sttDirectFormatsuploadDirectFormatstranscodeEnabled
Formati di destinazione
Ogni bot dispone del proprio insieme di OpenID utente. Un OpenID ricevuto dal Bot A non può essere utilizzato per inviare messaggi tramite il Bot B.
Comandi slash
Comandi integrati intercettati prima della coda dell’IA:
Aggiungere
? a qualsiasi comando per visualizzare la guida all’uso (ad esempio /bot-upgrade ?).
I comandi con “Autorizzazione: elenco consentiti” richiedono inoltre che l’openid del mittente sia incluso in un
elenco allowFrom esplicito senza caratteri jolly (groupAllowFrom ha la precedenza per i
comandi inviati dai gruppi, con ripiego su allowFrom). Il carattere jolly
allowFrom: ["*"] consente la chat, ma non questi comandi. Se uno di essi viene eseguito
al di fuori di una chat privata o senza autorizzazione, viene restituito un suggerimento anziché
ignorare silenziosamente il messaggio.
/bot-me, /bot-version e /bot-upgrade sono disponibili solo nelle chat private, ma non
richiedono l’elenco consentiti: possono essere eseguiti da qualsiasi mittente C2C.
Quando le approvazioni per l’esecuzione di QQ Bot utilizzano il ripiego predefinito sulla stessa chat, i clic sui pulsanti
di approvazione nativi seguono lo stesso elenco esplicito di comandi consentiti senza caratteri jolly. Per
concedere l’accesso alle sole approvazioni senza un accesso più ampio ai comandi, configurare
channels.qqbot.execApprovals.approvers. Le approvazioni native per l’esecuzione sono abilitate per
impostazione predefinita.
Contenuti multimediali e archiviazione
- I contenuti multimediali in entrata, in uscita e del bridge del Gateway condividono un’unica radice dei payload in
~/.openclaw/media/qqbot(rispettandoOPENCLAW_HOMEquando impostato), in modo che caricamenti, download e cache di transcodifica rimangano in un’unica directory protetta. - La distribuzione di contenuti multimediali avanzati alle destinazioni C2C e di gruppo avviene tramite un unico percorso
sendMedia. I file locali e i buffer in memoria di almeno 5 MiB utilizzano gli endpoint di caricamento a blocchi di QQ; i payload più piccoli e le sorgenti URL remote/Base64 utilizzano l’API di caricamento in un’unica operazione. - Se un aggiornamento a caldo interrompe il Gateway prima che termini la scrittura di
openclaw.json, al successivo avvio il plugin ripristina l’ultimoappId/clientSecretnoto per quell’account da uno snapshot interno (senza mai sovrascrivere una modifica intenzionale della configurazione), pertanto non è necessario scansionare nuovamente il codice QR.
Risoluzione dei problemi
- Il Gateway non si avvia / nessun messaggio in entrata: verificare che
appIdeclientSecretsiano corretti e che il bot sia abilitato sulla QQ Open Platform. Se manca una credenziale, viene visualizzato “QQBot non configurato (appId o clientSecret mancante)”. - La configurazione con
--token-filerisulta ancora non completata:--token-fileimposta solo l’AppSecret.appIddeve comunque essere impostato nella configurazione o inQQBOT_APP_ID. - Le risposte di gruppo a raffica entrano in conflitto: quando la coda di un peer si riempie, la coda in entrata rimuove i messaggi generati dai bot prima di quelli umani e unisce le raffiche di normali messaggi di gruppo (non comandi) in un unico turno attribuito, pertanto un flusso intenso di messaggi dei bot non dovrebbe impedire l’elaborazione dei messaggi umani.
- I messaggi proattivi non arrivano: QQ potrebbe bloccare i messaggi avviati dal bot se l’utente non ha interagito di recente.
- La voce non viene trascritta: assicurarsi che l’STT sia configurato e che il provider sia raggiungibile.