chore(i18n): refresh nl translations
This commit is contained in:
parent
9a7d8fb34d
commit
6b0ad6af1e
@ -1,24 +1,24 @@
|
||||
---
|
||||
read_when:
|
||||
- DM-toegangscontrole instellen
|
||||
- Toegangscontrole voor privéberichten instellen
|
||||
- Een nieuwe iOS/Android-Node koppelen
|
||||
- De beveiligingshouding van OpenClaw beoordelen
|
||||
summary: 'Koppelingsoverzicht: keur goed wie je een DM mag sturen + welke nodes kunnen deelnemen'
|
||||
summary: 'Koppelingsoverzicht: keur goed wie je een DM mag sturen + welke Nodes mogen deelnemen'
|
||||
title: Koppelen
|
||||
x-i18n:
|
||||
generated_at: "2026-05-04T02:21:40Z"
|
||||
generated_at: "2026-05-04T09:37:04Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 4fb27840f7c9ef55e7270cc29f813e6db90b240aa2180f30952eb9485f0f8874
|
||||
source_hash: f2bce4cfba7708b0003f2ffeacada8bc1849cc301f28178b499a9a67bddcf36d
|
||||
source_path: channels/pairing.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
“Pairing” is de expliciete stap van OpenClaw voor toegangstoestemming.
|
||||
“Koppeling” is de expliciete stap voor toegangsgoedkeuring van OpenClaw.
|
||||
Deze wordt op twee plaatsen gebruikt:
|
||||
|
||||
1. **DM-koppeling** (wie met de bot mag praten)
|
||||
2. **Node-koppeling** (welke apparaten/nodes mogen deelnemen aan het Gateway-netwerk)
|
||||
2. **Node-koppeling** (welke apparaten/nodes mogen deelnemen aan het gateway-netwerk)
|
||||
|
||||
Beveiligingscontext: [Beveiliging](/nl/gateway/security)
|
||||
|
||||
@ -26,18 +26,18 @@ Beveiligingscontext: [Beveiliging](/nl/gateway/security)
|
||||
|
||||
Wanneer een kanaal is geconfigureerd met DM-beleid `pairing`, krijgen onbekende afzenders een korte code en wordt hun bericht **niet verwerkt** totdat je goedkeuring geeft.
|
||||
|
||||
Standaard DM-beleid is gedocumenteerd in: [Beveiliging](/nl/gateway/security)
|
||||
Standaard DM-beleidsregels zijn gedocumenteerd in: [Beveiliging](/nl/gateway/security)
|
||||
|
||||
`dmPolicy: "open"` is alleen openbaar wanneer de effectieve DM-toelatingslijst `"*"` bevat.
|
||||
Voor installatie en validatie is die wildcard vereist voor openbaar-open configuraties. Als bestaande
|
||||
status `open` bevat met concrete `allowFrom`-vermeldingen, laat de runtime nog steeds
|
||||
alleen die afzenders toe, en goedkeuringen uit de pairing-store verbreden `open`-toegang niet.
|
||||
`dmPolicy: "open"` is alleen openbaar wanneer de effectieve DM-toestaanlijst `"*"` bevat.
|
||||
Voor installatie en validatie is die jokertekenwaarde vereist voor publiek-open configuraties. Als bestaande
|
||||
status `open` met concrete `allowFrom`-vermeldingen bevat, laat runtime nog steeds
|
||||
alleen die afzenders toe, en goedkeuringen in de pairing-store verbreden `open`-toegang niet.
|
||||
|
||||
Koppelingscodes:
|
||||
|
||||
- 8 tekens, hoofdletters, geen dubbelzinnige tekens (`0O1I`).
|
||||
- **Verlopen na 1 uur**. De bot stuurt het koppelingsbericht alleen wanneer een nieuw verzoek wordt aangemaakt (ongeveer één keer per uur per afzender).
|
||||
- Openstaande DM-koppelingsverzoeken zijn standaard beperkt tot **3 per kanaal**; aanvullende verzoeken worden genegeerd totdat er één verloopt of wordt goedgekeurd.
|
||||
- **Verlopen na 1 uur**. De bot verstuurt het koppelingsbericht alleen wanneer een nieuw verzoek wordt aangemaakt (ongeveer eenmaal per uur per afzender).
|
||||
- Openstaande DM-koppelingsverzoeken zijn standaard beperkt tot **3 per kanaal**; aanvullende verzoeken worden genegeerd totdat er een verloopt of wordt goedgekeurd.
|
||||
|
||||
### Een afzender goedkeuren
|
||||
|
||||
@ -46,20 +46,20 @@ openclaw pairing list telegram
|
||||
openclaw pairing approve telegram <CODE>
|
||||
```
|
||||
|
||||
Als er nog geen opdracht-eigenaar is geconfigureerd, bootstrappt het goedkeuren van een DM-koppelingscode ook
|
||||
Als er nog geen opdracht-eigenaar is geconfigureerd, initialiseert het goedkeuren van een DM-koppelingscode ook
|
||||
`commands.ownerAllowFrom` naar de goedgekeurde afzender, zoals `telegram:123456789`.
|
||||
Dat geeft eerste installaties een expliciete eigenaar voor bevoorrechte opdrachten en exec-
|
||||
goedkeuringsprompts. Nadat er een eigenaar bestaat, geven latere koppelingsgoedkeuringen alleen DM-
|
||||
toegang; ze voegen geen extra eigenaars toe.
|
||||
Dat geeft eerste installaties een expliciete eigenaar voor bevoorrechte opdrachten en prompts voor exec-goedkeuring.
|
||||
Nadat er een eigenaar bestaat, verlenen latere koppelingsgoedkeuringen alleen DM-toegang;
|
||||
ze voegen geen extra eigenaren toe.
|
||||
|
||||
Ondersteunde kanalen: `bluebubbles`, `discord`, `feishu`, `googlechat`, `imessage`, `irc`, `line`, `matrix`, `mattermost`, `msteams`, `nextcloud-talk`, `nostr`, `openclaw-weixin`, `signal`, `slack`, `synology-chat`, `telegram`, `twitch`, `whatsapp`, `zalo`, `zalouser`.
|
||||
|
||||
### Herbruikbare afzendergroepen
|
||||
|
||||
Gebruik `accessGroups` op topniveau wanneer dezelfde vertrouwde set afzenders moet gelden voor
|
||||
meerdere berichtkanalen of voor zowel DM- als groepstoelatingslijsten.
|
||||
Gebruik `accessGroups` op topniveau wanneer dezelfde set vertrouwde afzenders moet gelden voor
|
||||
meerdere berichtkanalen of voor zowel DM- als groepstoestaanlijsten.
|
||||
|
||||
Statische groepen gebruiken `type: "message.senders"` en worden vanuit kanaaltoelatingslijsten verwezen met
|
||||
Statische groepen gebruiken `type: "message.senders"` en worden vanuit kanaaltoestaanlijsten verwezen met
|
||||
`accessGroup:<name>`:
|
||||
|
||||
```json5
|
||||
@ -88,24 +88,24 @@ Toegangsgroepen worden hier in detail gedocumenteerd: [Toegangsgroepen](/nl/chan
|
||||
Opgeslagen onder `~/.openclaw/credentials/`:
|
||||
|
||||
- Openstaande verzoeken: `<channel>-pairing.json`
|
||||
- Goedgekeurde toelatingslijst-store:
|
||||
- Goedgekeurde toestaanlijst-store:
|
||||
- Standaardaccount: `<channel>-allowFrom.json`
|
||||
- Niet-standaardaccount: `<channel>-<accountId>-allowFrom.json`
|
||||
|
||||
Gedrag voor account-scoping:
|
||||
Gedrag voor accountscoping:
|
||||
|
||||
- Niet-standaardaccounts lezen/schrijven alleen hun gescopete toelatingslijstbestand.
|
||||
- Standaardaccount gebruikt het ongescopete toelatingslijstbestand op kanaalniveau.
|
||||
- Niet-standaardaccounts lezen/schrijven alleen hun gescopete toestaanlijstbestand.
|
||||
- Het standaardaccount gebruikt het ongescopete toestaanlijstbestand op kanaalniveau.
|
||||
|
||||
Behandel deze als gevoelig (ze bewaken de toegang tot je assistent).
|
||||
Behandel deze als gevoelig (ze beheren toegang tot je assistent).
|
||||
|
||||
<Note>
|
||||
De pairing-toelatingslijst-store is voor DM-toegang. Groepsautorisatie staat los daarvan.
|
||||
Het goedkeuren van een DM-koppelingscode staat die afzender niet automatisch toe om groeps-
|
||||
opdrachten uit te voeren of de bot in groepen te besturen. Bootstrap van de eerste eigenaar is afzonderlijke configuratie-
|
||||
status in `commands.ownerAllowFrom`, en aflevering in groepschats volgt nog steeds de
|
||||
groepstoelatingslijsten van het kanaal (bijvoorbeeld `groupAllowFrom`, `groups`, of per-groep-
|
||||
of per-topic overrides, afhankelijk van het kanaal).
|
||||
De pairing-toestaanlijst-store is voor DM-toegang. Groepsautorisatie staat daar los van.
|
||||
Het goedkeuren van een DM-koppelingscode staat die afzender niet automatisch toe om groepsopdrachten
|
||||
uit te voeren of de bot in groepen te beheren. Initialisatie van de eerste eigenaar is afzonderlijke configuratiestatus
|
||||
in `commands.ownerAllowFrom`, en groepschatbezorging volgt nog steeds de
|
||||
groepstoestaanlijsten van het kanaal (bijvoorbeeld `groupAllowFrom`, `groups`, of per-groep-
|
||||
of per-topic-overschrijvingen, afhankelijk van het kanaal).
|
||||
</Note>
|
||||
|
||||
## 2) Node-apparaatkoppeling (iOS/Android/macOS/headless nodes)
|
||||
@ -117,30 +117,37 @@ maakt een apparaatkoppelingsverzoek aan dat moet worden goedgekeurd.
|
||||
|
||||
Als je de `device-pair`-Plugin gebruikt, kun je eerste apparaatkoppeling volledig vanuit Telegram doen:
|
||||
|
||||
1. Stuur in Telegram je bot een bericht: `/pair`
|
||||
2. De bot antwoordt met twee berichten: een instructiebericht en een apart **installatiecode**-bericht (eenvoudig te kopiëren/plakken in Telegram).
|
||||
1. Stuur in Telegram een bericht naar je bot: `/pair`
|
||||
2. De bot antwoordt met twee berichten: een instructiebericht en een afzonderlijk bericht met **installatiecode** (makkelijk te kopiëren/plakken in Telegram).
|
||||
3. Open op je telefoon de OpenClaw iOS-app → Instellingen → Gateway.
|
||||
4. Plak de installatiecode en maak verbinding.
|
||||
5. Terug in Telegram: `/pair pending` (bekijk verzoek-ID's, rol en scopes), en keur daarna goed.
|
||||
4. Scan de QR-code of plak de installatiecode en maak verbinding.
|
||||
5. Terug in Telegram: `/pair pending` (controleer verzoek-ID's, rol en scopes), en keur daarna goed.
|
||||
|
||||
De installatiecode is een base64-gecodeerde JSON-payload die bevat:
|
||||
|
||||
- `url`: de WebSocket-URL van de Gateway (`ws://...` of `wss://...`)
|
||||
- `bootstrapToken`: een kortlevend bootstrap-token voor één apparaat, gebruikt voor de initiële koppelingshandshake
|
||||
- `url`: de Gateway WebSocket-URL (`ws://...` of `wss://...`)
|
||||
- `bootstrapToken`: een kortlevend bootstrap-token voor één apparaat dat wordt gebruikt voor de initiële koppelingshandshake
|
||||
|
||||
Dat bootstrap-token draagt het ingebouwde bootstrap-profiel voor koppeling:
|
||||
Dat bootstrap-token draagt het ingebouwde pairing-bootstrapprofiel:
|
||||
|
||||
- primair overgedragen `node`-token blijft `scopes: []`
|
||||
- elk overgedragen `operator`-token blijft begrensd tot de bootstrap-toelatingslijst:
|
||||
- elk overgedragen `operator`-token blijft begrensd tot de bootstrap-toestaanlijst:
|
||||
`operator.approvals`, `operator.read`, `operator.talk.secrets`, `operator.write`
|
||||
- bootstrap-scopecontroles zijn rolgeprefixt, niet één platte scope-pool:
|
||||
- bootstrap-scopecontroles zijn rolgeprefixt, geen enkele platte scopepool:
|
||||
operator-scopevermeldingen voldoen alleen aan operator-verzoeken, en niet-operatorrollen
|
||||
moeten nog steeds scopes aanvragen onder hun eigen rolprefix
|
||||
- latere tokenrotatie/-intrekking blijft begrensd door zowel het goedgekeurde
|
||||
rolcontract van het apparaat als de operator-scopes van de aanroepersessie
|
||||
rolcontract van het apparaat als de operator-scopes van de aanroepende sessie
|
||||
|
||||
Behandel de installatiecode als een wachtwoord zolang deze geldig is.
|
||||
|
||||
Gebruik voor Tailscale, publieke of andere niet-loopback mobiele koppeling Tailscale
|
||||
Serve/Funnel of een andere `wss://` Gateway-URL. Directe niet-loopback `ws://`-installatie-
|
||||
URL's worden afgewezen voordat QR-/installatiecode-uitgifte plaatsvindt. Platte-tekst `ws://`-installatiecodes
|
||||
zijn beperkt tot loopback-URL's; private-network `ws://`-clients vereisen nog steeds de expliciete
|
||||
`OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1` break-glass die wordt beschreven in de externe
|
||||
Gateway-gids.
|
||||
|
||||
### Een Node-apparaat goedkeuren
|
||||
|
||||
```bash
|
||||
@ -150,24 +157,24 @@ openclaw devices reject <requestId>
|
||||
```
|
||||
|
||||
Wanneer een expliciete goedkeuring wordt geweigerd omdat de goedkeurende gekoppelde-apparaatsessie
|
||||
is geopend met alleen koppelingsscope, probeert de CLI hetzelfde verzoek opnieuw met
|
||||
`operator.admin`. Hierdoor kan een bestaand, admin-geschikt gekoppeld apparaat een nieuwe
|
||||
is geopend met alleen-koppeling-scope, probeert de CLI hetzelfde verzoek opnieuw met
|
||||
`operator.admin`. Daardoor kan een bestaand gekoppeld apparaat met adminmogelijkheden een nieuwe
|
||||
Control UI-/browserkoppeling herstellen zonder `devices/paired.json` handmatig te bewerken. De
|
||||
Gateway valideert de opnieuw geprobeerde verbinding nog steeds; tokens die niet kunnen authenticeren
|
||||
met `operator.admin` blijven geblokkeerd.
|
||||
|
||||
Als hetzelfde apparaat opnieuw probeert met andere auth-gegevens (bijvoorbeeld een andere
|
||||
Als hetzelfde apparaat opnieuw probeert met andere auth-details (bijvoorbeeld andere
|
||||
rol/scopes/publieke sleutel), wordt het vorige openstaande verzoek vervangen en wordt een nieuwe
|
||||
`requestId` aangemaakt.
|
||||
|
||||
<Note>
|
||||
Een al gekoppeld apparaat krijgt niet stilzwijgend bredere toegang. Als het opnieuw verbinding maakt en om meer scopes of een bredere rol vraagt, houdt OpenClaw de bestaande goedkeuring zoals die is en maakt het een nieuw openstaand upgradeverzoek aan. Gebruik `openclaw devices list` om de momenteel goedgekeurde toegang te vergelijken met de nieuw aangevraagde toegang voordat je goedkeurt.
|
||||
Een al gekoppeld apparaat krijgt niet stilzwijgend bredere toegang. Als het opnieuw verbinding maakt en om meer scopes of een bredere rol vraagt, behoudt OpenClaw de bestaande goedkeuring zoals die is en maakt het een nieuw openstaand upgradeverzoek aan. Gebruik `openclaw devices list` om de momenteel goedgekeurde toegang te vergelijken met de nieuw aangevraagde toegang voordat je goedkeurt.
|
||||
</Note>
|
||||
|
||||
### Optionele automatische goedkeuring van Node via vertrouwde CIDR
|
||||
### Optionele automatische goedkeuring van vertrouwde-CIDR-Nodes
|
||||
|
||||
Apparaatkoppeling blijft standaard handmatig. Voor strak beheerde Node-netwerken
|
||||
kun je je aanmelden voor automatische eerste goedkeuring van Node met expliciete CIDR's of exacte IP's:
|
||||
Apparaatkoppeling blijft standaard handmatig. Voor strikt beheerde Node-netwerken
|
||||
kun je je aanmelden voor automatische goedkeuring van eerste Node-koppeling met expliciete CIDR's of exacte IP's:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -196,15 +203,15 @@ Opgeslagen onder `~/.openclaw/devices/`:
|
||||
### Opmerkingen
|
||||
|
||||
- De legacy `node.pair.*`-API (CLI: `openclaw nodes pending|approve|reject|remove|rename`) is een
|
||||
aparte pairing-store die eigendom is van de Gateway. WS-nodes vereisen nog steeds apparaatkoppeling.
|
||||
- Het koppelingsrecord is de duurzame bron van waarheid voor goedgekeurde rollen. Actieve
|
||||
apparaattokens blijven begrensd tot die goedgekeurde rollenset; een los tokenitem
|
||||
buiten de goedgekeurde rollen creëert geen nieuwe toegang.
|
||||
afzonderlijke pairing-store die eigendom is van de gateway. WS-Nodes vereisen nog steeds apparaatkoppeling.
|
||||
- Het pairing-record is de duurzame bron van waarheid voor goedgekeurde rollen. Actieve
|
||||
apparaattokens blijven begrensd tot die goedgekeurde rollenset; een losse tokenvermelding
|
||||
buiten de goedgekeurde rollen maakt geen nieuwe toegang aan.
|
||||
|
||||
## Gerelateerde docs
|
||||
|
||||
- Beveiligingsmodel + promptinjectie: [Beveiliging](/nl/gateway/security)
|
||||
- Veilig bijwerken (voer doctor uit): [Bijwerken](/nl/install/updating)
|
||||
- Veilig bijwerken (doctor uitvoeren): [Bijwerken](/nl/install/updating)
|
||||
- Kanaalconfiguraties:
|
||||
- Telegram: [Telegram](/nl/channels/telegram)
|
||||
- WhatsApp: [WhatsApp](/nl/channels/whatsapp)
|
||||
|
||||
@ -1,25 +1,25 @@
|
||||
---
|
||||
read_when:
|
||||
- Werken aan Telegram-functies of Webhooks
|
||||
summary: Ondersteuningsstatus, mogelijkheden en configuratie van de Telegram-bot
|
||||
- Werken aan Telegram-functies of webhooks
|
||||
summary: Ondersteuningsstatus, mogelijkheden en configuratie voor Telegram-bots
|
||||
title: Telegram
|
||||
x-i18n:
|
||||
generated_at: "2026-05-04T07:02:42Z"
|
||||
generated_at: "2026-05-04T09:36:43Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 6ef1b019a6a0e261b33972b5edffaedd29310b1333d112bade2e79e9d56887c6
|
||||
source_hash: 5711d53cf908a14024bc5a94f7d590bb4bcb6963a1d78049d7782871f4eae932
|
||||
source_path: channels/telegram.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Productieklaar voor bot-DM's en groepen via grammY. Long polling is de standaardmodus; webhookmodus is optioneel.
|
||||
Klaar voor productie voor bot-DM's en groepen via grammY. Lange polling is de standaardmodus; Webhook-modus is optioneel.
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="Koppelen" icon="link" href="/nl/channels/pairing">
|
||||
Het standaard-DM-beleid voor Telegram is koppelen.
|
||||
<Card title="Koppeling" icon="link" href="/nl/channels/pairing">
|
||||
Het standaard DM-beleid voor Telegram is koppeling.
|
||||
</Card>
|
||||
<Card title="Kanaalprobleemoplossing" icon="wrench" href="/nl/channels/troubleshooting">
|
||||
Kanaaloverstijgende diagnostiek en herstelplaybooks.
|
||||
Kanaaloverstijgende diagnostiek en herstel-playbooks.
|
||||
</Card>
|
||||
<Card title="Gateway-configuratie" icon="settings" href="/nl/gateway/configuration">
|
||||
Volledige kanaalconfiguratiepatronen en voorbeelden.
|
||||
@ -29,10 +29,10 @@ Productieklaar voor bot-DM's en groepen via grammY. Long polling is de standaard
|
||||
## Snelle installatie
|
||||
|
||||
<Steps>
|
||||
<Step title="Maak de bottoken aan in BotFather">
|
||||
Open Telegram en chat met **@BotFather** (controleer of de handle precies `@BotFather` is).
|
||||
<Step title="Maak het bottoken aan in BotFather">
|
||||
Open Telegram en chat met **@BotFather** (controleer of de handle exact `@BotFather` is).
|
||||
|
||||
Voer `/newbot` uit, volg de aanwijzingen en bewaar de token.
|
||||
Voer `/newbot` uit, volg de prompts en bewaar het token.
|
||||
|
||||
</Step>
|
||||
|
||||
@ -51,12 +51,12 @@ Productieklaar voor bot-DM's en groepen via grammY. Long polling is de standaard
|
||||
}
|
||||
```
|
||||
|
||||
Env-fallback: `TELEGRAM_BOT_TOKEN=...` (alleen standaardaccount).
|
||||
Telegram gebruikt **niet** `openclaw channels login telegram`; configureer de token in config/env en start daarna de gateway.
|
||||
Env-terugval: `TELEGRAM_BOT_TOKEN=...` (alleen standaardaccount).
|
||||
Telegram gebruikt **niet** `openclaw channels login telegram`; configureer het token in config/env en start daarna de Gateway.
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Start gateway en keur de eerste DM goed">
|
||||
<Step title="Start de Gateway en keur de eerste DM goed">
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
@ -64,79 +64,79 @@ openclaw pairing list telegram
|
||||
openclaw pairing approve telegram <CODE>
|
||||
```
|
||||
|
||||
Koppelcodes verlopen na 1 uur.
|
||||
Koppelingscodes verlopen na 1 uur.
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Voeg de bot toe aan een groep">
|
||||
Voeg de bot toe aan je groep en stel daarna `channels.telegram.groups` en `groupPolicy` in zodat ze passen bij je toegangsmodel.
|
||||
Voeg de bot toe aan je groep en stel daarna `channels.telegram.groups` en `groupPolicy` in volgens je toegangsmodel.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
<Note>
|
||||
De volgorde voor tokenresolutie is accountbewust. In de praktijk hebben configuratiewaarden voorrang op env-fallback, en `TELEGRAM_BOT_TOKEN` geldt alleen voor het standaardaccount.
|
||||
De volgorde voor tokenresolutie is accountbewust. In de praktijk hebben configwaarden voorrang op env-terugval, en `TELEGRAM_BOT_TOKEN` geldt alleen voor het standaardaccount.
|
||||
</Note>
|
||||
|
||||
## Telegram-instellingen
|
||||
## Instellingen aan Telegram-zijde
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Privacymodus en groepszichtbaarheid">
|
||||
Telegram-bots gebruiken standaard **Privacymodus**, wat beperkt welke groepsberichten ze ontvangen.
|
||||
Telegram-bots gebruiken standaard **Privacy Mode**, wat beperkt welke groepsberichten ze ontvangen.
|
||||
|
||||
Als de bot alle groepsberichten moet zien, doe dan een van beide:
|
||||
|
||||
- schakel de privacymodus uit via `/setprivacy`, of
|
||||
- schakel privacymodus uit via `/setprivacy`, of
|
||||
- maak de bot groepsbeheerder.
|
||||
|
||||
Verwijder de bot en voeg hem opnieuw toe in elke groep wanneer je de privacymodus wijzigt, zodat Telegram de wijziging toepast.
|
||||
Verwijder de bot bij het omschakelen van privacymodus uit elke groep en voeg hem opnieuw toe, zodat Telegram de wijziging toepast.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Groepsmachtigingen">
|
||||
Beheerdersstatus wordt beheerd in de groepsinstellingen van Telegram.
|
||||
Beheerdersstatus wordt beheerd in de Telegram-groepsinstellingen.
|
||||
|
||||
Beheerder-bots ontvangen alle groepsberichten, wat nuttig is voor altijd-actief groepsgedrag.
|
||||
Beheerdersbots ontvangen alle groepsberichten, wat nuttig is voor altijd-actief groepsgedrag.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Handige BotFather-schakelaars">
|
||||
|
||||
- `/setjoingroups` om groepstoevoegingen toe te staan of te weigeren
|
||||
- `/setjoingroups` om toevoegen aan groepen toe te staan of te weigeren
|
||||
- `/setprivacy` voor gedrag rond groepszichtbaarheid
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Toegangsbeheer en activering
|
||||
## Toegangscontrole en activering
|
||||
|
||||
<Tabs>
|
||||
<Tab title="DM-beleid">
|
||||
`channels.telegram.dmPolicy` beheert toegang via directe berichten:
|
||||
|
||||
- `pairing` (standaard)
|
||||
- `allowlist` (vereist minstens één afzender-ID in `allowFrom`)
|
||||
- `allowlist` (vereist ten minste één afzender-ID in `allowFrom`)
|
||||
- `open` (vereist dat `allowFrom` `"*"` bevat)
|
||||
- `disabled`
|
||||
|
||||
`dmPolicy: "open"` met `allowFrom: ["*"]` laat elk Telegram-account dat de botgebruikersnaam vindt of raadt de bot opdrachten geven. Gebruik dit alleen voor bewust openbare bots met strikt beperkte tools; bots met één eigenaar moeten `allowlist` gebruiken met numerieke gebruikers-ID's.
|
||||
`dmPolicy: "open"` met `allowFrom: ["*"]` laat elk Telegram-account dat de botgebruikersnaam vindt of raadt opdrachten aan de bot geven. Gebruik dit alleen voor bewust openbare bots met strikt beperkte tools; bots met één eigenaar moeten `allowlist` gebruiken met numerieke gebruikers-ID's.
|
||||
|
||||
`channels.telegram.allowFrom` accepteert numerieke Telegram-gebruikers-ID's. Prefixen `telegram:` / `tg:` worden geaccepteerd en genormaliseerd.
|
||||
In configuraties met meerdere accounts wordt een beperkende `channels.telegram.allowFrom` op topniveau behandeld als veiligheidsgrens: accountniveauvermeldingen `allowFrom: ["*"]` maken dat account niet openbaar tenzij de effectieve account-allowlist na samenvoeging nog steeds een expliciete wildcard bevat.
|
||||
`dmPolicy: "allowlist"` met lege `allowFrom` blokkeert alle DM's en wordt geweigerd door configuratievalidatie.
|
||||
`channels.telegram.allowFrom` accepteert numerieke Telegram-gebruikers-ID's. Voorvoegsels `telegram:` / `tg:` worden geaccepteerd en genormaliseerd.
|
||||
In configuraties met meerdere accounts wordt een beperkende `channels.telegram.allowFrom` op topniveau behandeld als een veiligheidsgrens: accountniveau-items `allowFrom: ["*"]` maken dat account niet openbaar, tenzij de effectieve account-toelatingslijst na samenvoegen nog steeds een expliciete wildcard bevat.
|
||||
`dmPolicy: "allowlist"` met lege `allowFrom` blokkeert alle DM's en wordt afgewezen door configuratievalidatie.
|
||||
De installatie vraagt alleen om numerieke gebruikers-ID's.
|
||||
Als je hebt geüpgraded en je configuratie `@username`-allowlistvermeldingen bevat, voer dan `openclaw doctor --fix` uit om ze op te lossen (best effort; vereist een Telegram-bottoken).
|
||||
Als je eerder vertrouwde op allowlistbestanden uit de koppelopslag, kan `openclaw doctor --fix` vermeldingen herstellen naar `channels.telegram.allowFrom` in allowlistflows (bijvoorbeeld wanneer `dmPolicy: "allowlist"` nog geen expliciete ID's heeft).
|
||||
Als je hebt geüpgraded en je configuratie `@username`-items in de toelatingslijst bevat, voer dan `openclaw doctor --fix` uit om ze op te lossen (beste poging; vereist een Telegram-bottoken).
|
||||
Als je eerder vertrouwde op pairing-store-toelatingslijstbestanden, kan `openclaw doctor --fix` items herstellen naar `channels.telegram.allowFrom` in toelatingslijststromen (bijvoorbeeld wanneer `dmPolicy: "allowlist"` nog geen expliciete ID's heeft).
|
||||
|
||||
Voor bots met één eigenaar geef je de voorkeur aan `dmPolicy: "allowlist"` met expliciete numerieke `allowFrom`-ID's om het toegangsbeleid duurzaam in de configuratie vast te leggen (in plaats van afhankelijk te zijn van eerdere koppelgoedkeuringen).
|
||||
Voor bots met één eigenaar gebruik je bij voorkeur `dmPolicy: "allowlist"` met expliciete numerieke `allowFrom`-ID's, zodat het toegangsbeleid duurzaam in de configuratie staat (in plaats van afhankelijk te zijn van eerdere koppelingsgoedkeuringen).
|
||||
|
||||
Veelvoorkomende verwarring: DM-koppelgoedkeuring betekent niet "deze afzender is overal geautoriseerd".
|
||||
Koppelen verleent DM-toegang. Als er nog geen opdrachteigenaar bestaat, stelt de eerste goedgekeurde koppeling ook `commands.ownerAllowFrom` in zodat alleen-eigenaar-opdrachten en exec-goedkeuringen een expliciet operatoraccount hebben.
|
||||
Autorisatie van groepsafzenders komt nog steeds uit expliciete configuratie-allowlists.
|
||||
Als je wilt "ik ben één keer geautoriseerd en zowel DM's als groepsopdrachten werken", zet dan je numerieke Telegram-gebruikers-ID in `channels.telegram.allowFrom`; zorg er voor alleen-eigenaar-opdrachten voor dat `commands.ownerAllowFrom` `telegram:<your user id>` bevat.
|
||||
Veelvoorkomende verwarring: DM-koppelingsgoedkeuring betekent niet "deze afzender is overal geautoriseerd".
|
||||
Koppeling verleent DM-toegang. Als er nog geen opdrachteigenaar bestaat, stelt de eerste goedgekeurde koppeling ook `commands.ownerAllowFrom` in, zodat eigenaargebonden opdrachten en exec-goedkeuringen een expliciet operatoraccount hebben.
|
||||
Autorisatie van groepsafzenders komt nog steeds uit expliciete configuratie-toelatingslijsten.
|
||||
Als je wilt "ik ben één keer geautoriseerd en zowel DM's als groepsopdrachten werken", zet dan je numerieke Telegram-gebruikers-ID in `channels.telegram.allowFrom`; zorg er voor eigenaargebonden opdrachten voor dat `commands.ownerAllowFrom` `telegram:<your user id>` bevat.
|
||||
|
||||
### Je Telegram-gebruikers-ID vinden
|
||||
|
||||
Veiliger (geen externe bot):
|
||||
Veiliger (geen bot van derden):
|
||||
|
||||
1. Stuur je bot een DM.
|
||||
2. Voer `openclaw logs --follow` uit.
|
||||
@ -148,18 +148,18 @@ De volgorde voor tokenresolutie is accountbewust. In de praktijk hebben configur
|
||||
curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
```
|
||||
|
||||
Externe methode (minder privé): `@userinfobot` of `@getidsbot`.
|
||||
Methode van derden (minder privé): `@userinfobot` of `@getidsbot`.
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Groepsbeleid en allowlists">
|
||||
Twee instellingen gelden samen:
|
||||
<Tab title="Groepsbeleid en toelatingslijsten">
|
||||
Twee controles gelden samen:
|
||||
|
||||
1. **Welke groepen zijn toegestaan** (`channels.telegram.groups`)
|
||||
- geen `groups`-configuratie:
|
||||
- met `groupPolicy: "open"`: elke groep kan groeps-ID-controles passeren
|
||||
- met `groupPolicy: "allowlist"` (standaard): groepen worden geblokkeerd totdat je `groups`-vermeldingen toevoegt (of `"*"`)
|
||||
- `groups` geconfigureerd: werkt als allowlist (expliciete ID's of `"*"`)
|
||||
- met `groupPolicy: "open"`: elke groep kan groeps-ID-controles doorstaan
|
||||
- met `groupPolicy: "allowlist"` (standaard): groepen worden geblokkeerd totdat je `groups`-items toevoegt (of `"*"`)
|
||||
- `groups` geconfigureerd: werkt als toelatingslijst (expliciete ID's of `"*"`)
|
||||
|
||||
2. **Welke afzenders zijn toegestaan in groepen** (`channels.telegram.groupPolicy`)
|
||||
- `open`
|
||||
@ -167,16 +167,16 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
- `disabled`
|
||||
|
||||
`groupAllowFrom` wordt gebruikt voor filtering van groepsafzenders. Als dit niet is ingesteld, valt Telegram terug op `allowFrom`.
|
||||
`groupAllowFrom`-vermeldingen moeten numerieke Telegram-gebruikers-ID's zijn (prefixen `telegram:` / `tg:` worden genormaliseerd).
|
||||
Plaats geen Telegram-groeps- of supergroepchat-ID's in `groupAllowFrom`. Negatieve chat-ID's horen onder `channels.telegram.groups`.
|
||||
Niet-numerieke vermeldingen worden genegeerd voor afzenderautorisatie.
|
||||
Veiligheidsgrens (`2026.2.25+`): auth voor groepsafzenders erft **geen** DM-goedkeuringen uit de koppelopslag.
|
||||
Koppelen blijft alleen voor DM's. Stel voor groepen `groupAllowFrom` of per-groep/per-onderwerp `allowFrom` in.
|
||||
Als `groupAllowFrom` niet is ingesteld, valt Telegram terug op configuratie-`allowFrom`, niet op de koppelopslag.
|
||||
Praktisch patroon voor bots met één eigenaar: stel je gebruikers-ID in bij `channels.telegram.allowFrom`, laat `groupAllowFrom` leeg en sta de doelgroepen toe onder `channels.telegram.groups`.
|
||||
Runtime-opmerking: als `channels.telegram` volledig ontbreekt, gebruikt de runtime standaard fail-closed `groupPolicy="allowlist"` tenzij `channels.defaults.groupPolicy` expliciet is ingesteld.
|
||||
`groupAllowFrom`-items moeten numerieke Telegram-gebruikers-ID's zijn (`telegram:` / `tg:`-voorvoegsels worden genormaliseerd).
|
||||
Zet geen Telegram-groeps- of supergroepchat-ID's in `groupAllowFrom`. Negatieve chat-ID's horen onder `channels.telegram.groups`.
|
||||
Niet-numerieke items worden genegeerd voor afzenderautorisatie.
|
||||
Veiligheidsgrens (`2026.2.25+`): groepsafzenderauthenticatie erft **geen** DM-pairing-store-goedkeuringen.
|
||||
Koppeling blijft alleen voor DM. Stel voor groepen `groupAllowFrom` of `allowFrom` per groep/per onderwerp in.
|
||||
Als `groupAllowFrom` niet is ingesteld, valt Telegram terug op config `allowFrom`, niet op de pairing store.
|
||||
Praktisch patroon voor bots met één eigenaar: stel je gebruikers-ID in `channels.telegram.allowFrom` in, laat `groupAllowFrom` leeg en sta de doelgroepen toe onder `channels.telegram.groups`.
|
||||
Runtime-opmerking: als `channels.telegram` volledig ontbreekt, gebruikt de runtime standaard fail-closed `groupPolicy="allowlist"`, tenzij `channels.defaults.groupPolicy` expliciet is ingesteld.
|
||||
|
||||
Voorbeeld: sta elk lid toe in één specifieke groep:
|
||||
Voorbeeld: elk lid in één specifieke groep toestaan:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -193,7 +193,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Voorbeeld: sta alleen specifieke gebruikers toe binnen één specifieke groep:
|
||||
Voorbeeld: alleen specifieke gebruikers binnen één specifieke groep toestaan:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -211,10 +211,10 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
```
|
||||
|
||||
<Warning>
|
||||
Veelgemaakte fout: `groupAllowFrom` is geen Telegram-groeps-allowlist.
|
||||
Veelvoorkomende fout: `groupAllowFrom` is geen Telegram-groepstoelatingslijst.
|
||||
|
||||
- Plaats negatieve Telegram-groeps- of supergroepchat-ID's zoals `-1001234567890` onder `channels.telegram.groups`.
|
||||
- Plaats Telegram-gebruikers-ID's zoals `8734062810` onder `groupAllowFrom` wanneer je wilt beperken welke mensen binnen een toegestane groep de bot kunnen activeren.
|
||||
- Zet negatieve Telegram-groeps- of supergroepchat-ID's zoals `-1001234567890` onder `channels.telegram.groups`.
|
||||
- Zet Telegram-gebruikers-ID's zoals `8734062810` onder `groupAllowFrom` wanneer je wilt beperken welke mensen binnen een toegestane groep de bot kunnen activeren.
|
||||
- Gebruik `groupAllowFrom: ["*"]` alleen wanneer je wilt dat elk lid van een toegestane groep met de bot kan praten.
|
||||
|
||||
</Warning>
|
||||
@ -224,14 +224,14 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
<Tab title="Vermeldingsgedrag">
|
||||
Groepsantwoorden vereisen standaard een vermelding.
|
||||
|
||||
Een vermelding kan komen van:
|
||||
Vermelding kan komen van:
|
||||
|
||||
- native `@botusername`-vermelding, of
|
||||
- vermeldingspatronen in:
|
||||
- `agents.list[].groupChat.mentionPatterns`
|
||||
- `messages.groupChat.mentionPatterns`
|
||||
|
||||
Opdrachten voor sessieniveau-schakelaars:
|
||||
Opdrachtschakelaars op sessieniveau:
|
||||
|
||||
- `/activation always`
|
||||
- `/activation mention`
|
||||
@ -252,7 +252,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
De groepschat-ID verkrijgen:
|
||||
De groepschat-ID ophalen:
|
||||
|
||||
- stuur een groepsbericht door naar `@userinfobot` / `@getidsbot`
|
||||
- of lees `chat.id` uit `openclaw logs --follow`
|
||||
@ -263,34 +263,34 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
|
||||
## Runtimegedrag
|
||||
|
||||
- Telegram is eigendom van het gatewayproces.
|
||||
- Routering is deterministisch: Telegram-inbound antwoordt terug naar Telegram (het model kiest geen kanalen).
|
||||
- Inboundberichten worden genormaliseerd naar de gedeelde kanaalenvelop met antwoordmetadata en mediaplaceholders.
|
||||
- Telegram is eigendom van het Gateway-proces.
|
||||
- Routering is deterministisch: inkomende Telegram-berichten beantwoorden terug naar Telegram (het model kiest geen kanalen).
|
||||
- Inkomende berichten worden genormaliseerd naar de gedeelde kanaalenvelop met antwoordmetadata en mediaplaceholders.
|
||||
- Groepssessies worden geïsoleerd op groeps-ID. Forumonderwerpen voegen `:topic:<threadId>` toe om onderwerpen geïsoleerd te houden.
|
||||
- DM-berichten kunnen `message_thread_id` bevatten; OpenClaw behoudt de thread-ID voor antwoorden maar houdt DM's standaard op de platte sessie. Configureer `channels.telegram.dm.threadReplies: "inbound"`, `channels.telegram.direct.<chatId>.threadReplies: "inbound"`, `requireTopic: true`, of een overeenkomende onderwerpconfiguratie wanneer je bewust DM-onderwerpsessie-isolatie wilt.
|
||||
- Long polling gebruikt grammY runner met volgordebepaling per chat/per thread. Algemene runner-sinkconcurrency gebruikt `agents.defaults.maxConcurrent`.
|
||||
- Long polling wordt binnen elk gatewayproces bewaakt zodat slechts één actieve poller tegelijk een bottoken kan gebruiken. Als je nog steeds `getUpdates` 409-conflicten ziet, gebruikt waarschijnlijk een andere OpenClaw-gateway, script of externe poller dezelfde token.
|
||||
- Long-pollingwatchdog-herstarts worden standaard geactiveerd na 120 seconden zonder voltooide `getUpdates`-liveness. Verhoog `channels.telegram.pollingStallThresholdMs` alleen als je deployment nog steeds foutieve polling-stall-herstarts ziet tijdens langlopende werkzaamheden. De waarde is in milliseconden en is toegestaan van `30000` tot `600000`; overrides per account worden ondersteund.
|
||||
- Telegram Bot API ondersteunt geen leesbevestigingen (`sendReadReceipts` is niet van toepassing).
|
||||
- DM-berichten kunnen `message_thread_id` bevatten; OpenClaw behoudt de thread-ID voor antwoorden maar houdt DM's standaard op de platte sessie. Configureer `channels.telegram.dm.threadReplies: "inbound"`, `channels.telegram.direct.<chatId>.threadReplies: "inbound"`, `requireTopic: true` of een overeenkomende onderwerpconfiguratie wanneer je bewust DM-onderwerpsessie-isolatie wilt.
|
||||
- Lange polling gebruikt grammY runner met volgordebepaling per chat/per thread. De algemene runner-sink-concurrency gebruikt `agents.defaults.maxConcurrent`.
|
||||
- Lange polling wordt binnen elk Gateway-proces beschermd, zodat slechts één actieve poller tegelijk een bottoken kan gebruiken. Als je nog steeds `getUpdates` 409-conflicten ziet, gebruikt waarschijnlijk een andere OpenClaw Gateway, een script of een externe poller hetzelfde token.
|
||||
- Watchdog-herstarts voor lange polling worden standaard geactiveerd na 120 seconden zonder voltooide `getUpdates`-liveness. Verhoog `channels.telegram.pollingStallThresholdMs` alleen als je deployment nog steeds onterechte polling-stall-herstarts ziet tijdens langlopende werkzaamheden. De waarde is in milliseconden en is toegestaan van `30000` tot `600000`; overrides per account worden ondersteund.
|
||||
- Telegram Bot API heeft geen ondersteuning voor leesbevestigingen (`sendReadReceipts` is niet van toepassing).
|
||||
|
||||
## Functiereferentie
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Live stream-preview (berichtbewerkingen)">
|
||||
<Accordion title="Livestreamvoorbeeld (berichtbewerkingen)">
|
||||
OpenClaw kan gedeeltelijke antwoorden in realtime streamen:
|
||||
|
||||
- directe chats: previewbericht + `editMessageText`
|
||||
- groepen/onderwerpen: previewbericht + `editMessageText`
|
||||
- directe chats: voorbeeldbericht + `editMessageText`
|
||||
- groepen/onderwerpen: voorbeeldbericht + `editMessageText`
|
||||
|
||||
Vereiste:
|
||||
|
||||
- `channels.telegram.streaming` is `off | partial | block | progress` (standaard: `partial`)
|
||||
- `progress` behoudt één bewerkbaar statusconcept en werkt dit bij met toolvoortgang tot de definitieve aflevering
|
||||
- `streaming.preview.toolProgress` bepaalt of tool-/voortgangsupdates hetzelfde bewerkte previewbericht hergebruiken (standaard: `true` wanneer previewstreaming actief is)
|
||||
- `streaming.preview.commandText` bepaalt opdracht-/exec-detail binnen die toolvoortgangsregels: `raw` (standaard, behoudt uitgebracht gedrag) of `status` (alleen toollabel)
|
||||
- legacy `channels.telegram.streamMode` en booleaanse `streaming`-waarden worden gedetecteerd; voer `openclaw doctor --fix` uit om ze te migreren naar `channels.telegram.streaming.mode`
|
||||
- `progress` houdt één bewerkbare statusconceptversie bij en werkt die bij met toolvoortgang tot de uiteindelijke aflevering
|
||||
- `streaming.preview.toolProgress` bepaalt of tool-/voortgangsupdates hetzelfde bewerkte voorbeeldbericht hergebruiken (standaard: `true` wanneer voorbeeldstreaming actief is)
|
||||
- `streaming.preview.commandText` bepaalt opdracht-/exec-details binnen die toolvoortgangsregels: `raw` (standaard, behoudt uitgebracht gedrag) of `status` (alleen toollabel)
|
||||
- verouderde `channels.telegram.streamMode`- en booleaanse `streaming`-waarden worden gedetecteerd; voer `openclaw doctor --fix` uit om ze te migreren naar `channels.telegram.streaming.mode`
|
||||
|
||||
Previewupdates voor toolvoortgang zijn de korte statusregels die worden getoond terwijl tools draaien, bijvoorbeeld opdrachtuitvoering, bestanden lezen, planningsupdates of patchsamenvattingen. Telegram houdt deze standaard ingeschakeld om overeen te komen met uitgebracht OpenClaw-gedrag vanaf `v2026.4.22` en later. Om de bewerkte preview voor antwoordtekst te behouden maar toolvoortgangsregels te verbergen, stel je in:
|
||||
Voorbeeldupdates voor toolvoortgang zijn de korte statusregels die worden getoond terwijl tools draaien, bijvoorbeeld opdrachtuitvoering, bestandslezingen, planningsupdates of patchsamenvattingen. Telegram houdt deze standaard ingeschakeld om overeen te komen met uitgebracht OpenClaw-gedrag vanaf `v2026.4.22` en later. Stel het volgende in om het bewerkte voorbeeld voor antwoordtekst te behouden maar toolvoortgangsregels te verbergen:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -307,7 +307,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Om toolvoortgang zichtbaar te houden maar opdracht-/exec-tekst te verbergen, stel je in:
|
||||
Stel het volgende in om toolvoortgang zichtbaar te houden maar opdracht-/exec-tekst te verbergen:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -324,7 +324,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Voor de voortgang-conceptmodus zet je hetzelfde commandotekstbeleid onder `streaming.progress`:
|
||||
Plaats voor de voortgangsconceptmodus hetzelfde beleid voor opdrachttekst onder `streaming.progress`:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -342,27 +342,27 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Gebruik `streaming.mode: "off"` alleen wanneer je uitsluitend finale aflevering wilt: Telegram-voorbeeldbewerkingen zijn uitgeschakeld en generieke tool-/voortgangspraat wordt onderdrukt in plaats van als zelfstandige statusberichten te worden verzonden. Goedkeuringsprompts, media-payloads en fouten lopen nog steeds via normale finale aflevering. Gebruik `streaming.preview.toolProgress: false` wanneer je alleen antwoordvoorbeeldbewerkingen wilt behouden terwijl je de statusregels voor toolvoortgang verbergt.
|
||||
Gebruik `streaming.mode: "off"` alleen wanneer je uitsluitend eindbezorging wilt: Telegram-previewbewerkingen zijn uitgeschakeld en generieke tool-/voortgangsberichten worden onderdrukt in plaats van als zelfstandige statusberichten te worden verzonden. Goedkeuringsprompts, mediapayloads en fouten blijven via de normale eindbezorging lopen. Gebruik `streaming.preview.toolProgress: false` wanneer je alleen antwoordpreviewbewerkingen wilt behouden terwijl je de statusregels voor toolvoortgang verbergt.
|
||||
|
||||
<Note>
|
||||
Telegram-antwoorden op geselecteerde citaten vormen de uitzondering. Wanneer `replyToMode` `"first"`, `"all"` of `"batched"` is en het inkomende bericht geselecteerde citaattekst bevat, stuurt OpenClaw het finale antwoord via Telegrams native citaatantwoordpad in plaats van het antwoordvoorbeeld te bewerken, waardoor `streaming.preview.toolProgress` de korte statusregels voor die beurt niet kan tonen. Antwoorden op het huidige bericht zonder geselecteerde citaattekst behouden nog steeds voorbeeldstreaming. Stel `replyToMode: "off"` in wanneer zichtbaarheid van toolvoortgang belangrijker is dan native citaatantwoorden, of stel `streaming.preview.toolProgress: false` in om de afweging te erkennen.
|
||||
Geselecteerde citaatantwoorden in Telegram vormen de uitzondering. Wanneer `replyToMode` `"first"`, `"all"` of `"batched"` is en het inkomende bericht geselecteerde citaattekst bevat, verzendt OpenClaw het definitieve antwoord via Telegram's native citaatantwoordpad in plaats van de antwoordpreview te bewerken, waardoor `streaming.preview.toolProgress` de korte statusregels voor die beurt niet kan tonen. Antwoorden op het huidige bericht zonder geselecteerde citaattekst behouden nog steeds previewstreaming. Stel `replyToMode: "off"` in wanneer zichtbaarheid van toolvoortgang belangrijker is dan native citaatantwoorden, of stel `streaming.preview.toolProgress: false` in om de afweging te accepteren.
|
||||
</Note>
|
||||
|
||||
Voor antwoorden met alleen tekst:
|
||||
|
||||
- korte DM-/groep-/topicvoorbeelden: OpenClaw behoudt hetzelfde voorbeeldbericht en voert een finale bewerking op zijn plaats uit, tenzij er een zichtbaar niet-voorbeeldbericht is verzonden nadat het voorbeeld verscheen
|
||||
- voorbeelden gevolgd door zichtbare niet-voorbeelduitvoer: OpenClaw stuurt het voltooide antwoord als een nieuw finaal bericht en ruimt het oudere voorbeeld op, zodat het finale antwoord na de tussentijdse uitvoer verschijnt
|
||||
- voorbeelden ouder dan ongeveer een minuut: OpenClaw stuurt het voltooide antwoord als een nieuw finaal bericht en ruimt daarna het voorbeeld op, zodat Telegrams zichtbare tijdstempel de voltooiingstijd weergeeft in plaats van de aanmaaktijd van het voorbeeld
|
||||
- korte DM-/groep-/topicpreviews: OpenClaw behoudt hetzelfde previewbericht en voert een definitieve bewerking ter plaatse uit, tenzij er een zichtbaar niet-previewbericht is verzonden nadat de preview verscheen
|
||||
- previews gevolgd door zichtbare niet-previewuitvoer: OpenClaw verzendt het voltooide antwoord als een nieuw definitief bericht en ruimt de oudere preview op, zodat het definitieve antwoord na de tussenuitvoer verschijnt
|
||||
- previews ouder dan ongeveer een minuut: OpenClaw verzendt het voltooide antwoord als een nieuw definitief bericht en ruimt daarna de preview op, zodat de zichtbare tijdstempel van Telegram de voltooiingstijd weerspiegelt in plaats van de aanmaaktijd van de preview
|
||||
|
||||
Voor complexe antwoorden (bijvoorbeeld media-payloads) valt OpenClaw terug op normale finale aflevering en ruimt daarna het voorbeeldbericht op.
|
||||
Voor complexe antwoorden (bijvoorbeeld mediapayloads) valt OpenClaw terug op normale eindbezorging en ruimt daarna het previewbericht op.
|
||||
|
||||
Voorbeeldstreaming staat los van blokstreaming. Wanneer blokstreaming expliciet is ingeschakeld voor Telegram, slaat OpenClaw de voorbeeldstream over om dubbel streamen te voorkomen.
|
||||
Previewstreaming staat los van blokstreaming. Wanneer blokstreaming expliciet is ingeschakeld voor Telegram, slaat OpenClaw de previewstream over om dubbel streamen te voorkomen.
|
||||
|
||||
Telegram-only redeneerstroom:
|
||||
Redeneerstream alleen voor Telegram:
|
||||
|
||||
- `/reasoning stream` stuurt redenering naar het live voorbeeld tijdens het genereren
|
||||
- het redeneervoorbeeld wordt verwijderd na finale aflevering; gebruik `/reasoning on` wanneer redenering zichtbaar moet blijven
|
||||
- het finale antwoord wordt zonder redeneringstekst verzonden
|
||||
- `/reasoning stream` verzendt redenering naar de livepreview tijdens het genereren
|
||||
- de redeneerpreview wordt verwijderd na de eindbezorging; gebruik `/reasoning on` wanneer redenering zichtbaar moet blijven
|
||||
- het definitieve antwoord wordt zonder redeneertekst verzonden
|
||||
|
||||
</Accordion>
|
||||
|
||||
@ -370,17 +370,17 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
Uitgaande tekst gebruikt Telegram `parse_mode: "HTML"`.
|
||||
|
||||
- Markdown-achtige tekst wordt gerenderd naar Telegram-veilige HTML.
|
||||
- Ruwe model-HTML wordt escaped om Telegram-parsefouten te beperken.
|
||||
- Ruwe model-HTML wordt geëscapet om Telegram-parsefouten te verminderen.
|
||||
- Als Telegram geparsede HTML weigert, probeert OpenClaw het opnieuw als platte tekst.
|
||||
|
||||
Linkvoorbeelden zijn standaard ingeschakeld en kunnen worden uitgeschakeld met `channels.telegram.linkPreview: false`.
|
||||
Linkpreviews zijn standaard ingeschakeld en kunnen worden uitgeschakeld met `channels.telegram.linkPreview: false`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Native opdrachten en aangepaste opdrachten">
|
||||
Registratie van het Telegram-opdrachtmenu wordt bij het opstarten afgehandeld met `setMyCommands`.
|
||||
|
||||
Standaardinstellingen voor native opdrachten:
|
||||
Standaardwaarden voor native opdrachten:
|
||||
|
||||
- `commands.native: "auto"` schakelt native opdrachten in voor Telegram
|
||||
|
||||
@ -406,42 +406,42 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
- aangepaste opdrachten kunnen native opdrachten niet overschrijven
|
||||
- conflicten/duplicaten worden overgeslagen en gelogd
|
||||
|
||||
Notities:
|
||||
Opmerkingen:
|
||||
|
||||
- aangepaste opdrachten zijn alleen menu-items; ze implementeren gedrag niet automatisch
|
||||
- Plugin-/Skill-opdrachten kunnen nog steeds werken wanneer ze worden getypt, zelfs als ze niet in het Telegram-menu worden getoond
|
||||
- aangepaste opdrachten zijn alleen menu-items; ze implementeren geen gedrag automatisch
|
||||
- Plugin-/skillopdrachten kunnen nog steeds werken wanneer ze worden getypt, zelfs als ze niet in het Telegram-menu worden weergegeven
|
||||
|
||||
Als native opdrachten zijn uitgeschakeld, worden ingebouwde opdrachten verwijderd. Aangepaste/Plugin-opdrachten kunnen nog steeds worden geregistreerd als ze zijn geconfigureerd.
|
||||
|
||||
Veelvoorkomende configuratiefouten:
|
||||
Veelvoorkomende installatiefouten:
|
||||
|
||||
- `setMyCommands failed` met `BOT_COMMANDS_TOO_MUCH` betekent dat het Telegram-menu na inkorten nog steeds te vol was; verminder Plugin-/Skill-/aangepaste opdrachten of schakel `channels.telegram.commands.native` uit.
|
||||
- `setMyCommands failed` met `BOT_COMMANDS_TOO_MUCH` betekent dat het Telegram-menu na inkorten nog steeds te vol was; verminder Plugin-/skill-/aangepaste opdrachten of schakel `channels.telegram.commands.native` uit.
|
||||
- `deleteWebhook`, `deleteMyCommands` of `setMyCommands` die faalt met `404: Not Found` terwijl directe Bot API-curlopdrachten werken, kan betekenen dat `channels.telegram.apiRoot` was ingesteld op het volledige `/bot<TOKEN>`-eindpunt. `apiRoot` mag alleen de Bot API-root zijn, en `openclaw doctor --fix` verwijdert een per ongeluk toegevoegde afsluitende `/bot<TOKEN>`.
|
||||
- `getMe returned 401` betekent dat Telegram het geconfigureerde bottoken heeft geweigerd. Werk `botToken`, `tokenFile` of `TELEGRAM_BOT_TOKEN` bij met het huidige BotFather-token; OpenClaw stopt voor het pollen, dus dit wordt niet gerapporteerd als een Webhook-opruimfout.
|
||||
- `getMe returned 401` betekent dat Telegram het geconfigureerde bottoken heeft geweigerd. Werk `botToken`, `tokenFile` of `TELEGRAM_BOT_TOKEN` bij met het huidige BotFather-token; OpenClaw stopt vóór het pollen, dus dit wordt niet gerapporteerd als een Webhook-opruimfout.
|
||||
- `setMyCommands failed` met netwerk-/fetchfouten betekent meestal dat uitgaande DNS/HTTPS naar `api.telegram.org` is geblokkeerd.
|
||||
|
||||
### Apparaatkoppelingsopdrachten (`device-pair`-Plugin)
|
||||
### Apparaatkoppelingsopdrachten (`device-pair` Plugin)
|
||||
|
||||
Wanneer de `device-pair`-Plugin is geïnstalleerd:
|
||||
Wanneer de `device-pair` Plugin is geïnstalleerd:
|
||||
|
||||
1. `/pair` genereert configuratiecode
|
||||
2. plak code in iOS-app
|
||||
1. `/pair` genereert installatiecode
|
||||
2. plak code in de iOS-app
|
||||
3. `/pair pending` toont openstaande verzoeken (inclusief rol/scopes)
|
||||
4. keur het verzoek goed:
|
||||
- `/pair approve <requestId>` voor expliciete goedkeuring
|
||||
- `/pair approve` wanneer er slechts één openstaand verzoek is
|
||||
- `/pair approve latest` voor het meest recente
|
||||
|
||||
De configuratiecode bevat een kortlevend bootstrap-token. Ingebouwde bootstrap-overdracht houdt het primaire node-token op `scopes: []`; elk overgedragen operator-token blijft beperkt tot `operator.approvals`, `operator.read`, `operator.talk.secrets` en `operator.write`. Bootstrap-scopecontroles zijn rolgeprefixd, dus die operator-allowlist voldoet alleen aan operatorverzoeken; niet-operatorrollen hebben nog steeds scopes onder hun eigen rolprefix nodig.
|
||||
De installatiecode bevat een kortlevend bootstrap-token. Ingebouwde bootstrap-overdracht houdt het primaire nodetoken op `scopes: []`; elk overgedragen operatortoken blijft begrensd tot `operator.approvals`, `operator.read`, `operator.talk.secrets` en `operator.write`. Bootstrap-scopecontroles hebben een rolprefix, dus die operator-allowlist voldoet alleen aan operatorverzoeken; niet-operatorrollen hebben nog steeds scopes nodig onder hun eigen rolprefix.
|
||||
|
||||
Als een apparaat opnieuw probeert met gewijzigde authgegevens (bijvoorbeeld rol/scopes/publieke sleutel), wordt het vorige openstaande verzoek vervangen en gebruikt het nieuwe verzoek een andere `requestId`. Voer `/pair pending` opnieuw uit voordat je goedkeurt.
|
||||
Als een apparaat het opnieuw probeert met gewijzigde authgegevens (bijvoorbeeld rol/scopes/publieke sleutel), wordt het vorige openstaande verzoek vervangen en gebruikt het nieuwe verzoek een andere `requestId`. Voer `/pair pending` opnieuw uit voordat je goedkeurt.
|
||||
|
||||
Meer details: [Koppelen](/nl/channels/pairing#pair-via-telegram-recommended-for-ios).
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Inline knoppen">
|
||||
Configureer inline toetsenbordscope:
|
||||
Configureer het bereik van het inline toetsenbord:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -455,7 +455,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Per-account override:
|
||||
Overschrijving per account:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -473,7 +473,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Scopes:
|
||||
Bereiken:
|
||||
|
||||
- `off`
|
||||
- `dm`
|
||||
@ -501,7 +501,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Callback-klikken worden als tekst aan de agent doorgegeven:
|
||||
Callback-klikken worden als tekst doorgegeven aan de agent:
|
||||
`callback_data: <value>`
|
||||
|
||||
</Accordion>
|
||||
@ -515,42 +515,42 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
- `editMessage` (`chatId`, `messageId`, `content`)
|
||||
- `createForumTopic` (`chatId`, `name`, optioneel `iconColor`, `iconCustomEmojiId`)
|
||||
|
||||
Kanaalberichtacties stellen ergonomische aliassen beschikbaar (`send`, `react`, `delete`, `edit`, `sticker`, `sticker-search`, `topic-create`).
|
||||
Kanaalberichtacties bieden ergonomische aliassen (`send`, `react`, `delete`, `edit`, `sticker`, `sticker-search`, `topic-create`).
|
||||
|
||||
Gatekeeping-instellingen:
|
||||
Poortwachtercontroles:
|
||||
|
||||
- `channels.telegram.actions.sendMessage`
|
||||
- `channels.telegram.actions.deleteMessage`
|
||||
- `channels.telegram.actions.reactions`
|
||||
- `channels.telegram.actions.sticker` (standaard: uitgeschakeld)
|
||||
|
||||
Opmerking: `edit` en `topic-create` zijn momenteel standaard ingeschakeld en hebben geen afzonderlijke `channels.telegram.actions.*`-toggles.
|
||||
Runtime-verzending gebruikt de actieve config-/secrets-snapshot (opstarten/herladen), dus actiepaden voeren geen ad-hoc SecretRef-heroplossing per verzending uit.
|
||||
Opmerking: `edit` en `topic-create` zijn momenteel standaard ingeschakeld en hebben geen afzonderlijke `channels.telegram.actions.*`-schakelaars.
|
||||
Runtimeverzending gebruikt de actieve config-/secretssnapshot (opstarten/herladen), dus actiepaden voeren geen ad-hoc SecretRef-herresolutie per verzending uit.
|
||||
|
||||
Semantiek voor het verwijderen van reacties: [/tools/reactions](/nl/tools/reactions)
|
||||
Semantiek voor reactieverwijdering: [/tools/reactions](/nl/tools/reactions)
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Antwoord-threadingtags">
|
||||
Telegram ondersteunt expliciete antwoord-threadingtags in gegenereerde uitvoer:
|
||||
<Accordion title="Antwoordthreading-tags">
|
||||
Telegram ondersteunt expliciete antwoordthreading-tags in gegenereerde uitvoer:
|
||||
|
||||
- `[[reply_to_current]]` antwoordt op het activerende bericht
|
||||
- `[[reply_to:<id>]]` antwoordt op een specifiek Telegram-bericht-ID
|
||||
|
||||
`channels.telegram.replyToMode` bepaalt de afhandeling:
|
||||
`channels.telegram.replyToMode` regelt de afhandeling:
|
||||
|
||||
- `off` (standaard)
|
||||
- `first`
|
||||
- `all`
|
||||
|
||||
Wanneer antwoord-threading is ingeschakeld en de oorspronkelijke Telegram-tekst of het bijschrift beschikbaar is, voegt OpenClaw automatisch een native Telegram-citaatfragment toe. Telegram beperkt native citaattekst tot 1024 UTF-16-code-eenheden, dus langere berichten worden vanaf het begin geciteerd en vallen terug op een gewoon antwoord als Telegram het citaat weigert.
|
||||
Wanneer antwoordthreading is ingeschakeld en de oorspronkelijke Telegram-tekst of het bijschrift beschikbaar is, voegt OpenClaw automatisch een native Telegram-citaatexcerpt toe. Telegram beperkt native citaattekst tot 1024 UTF-16-code-eenheden, dus langere berichten worden vanaf het begin geciteerd en vallen terug op een gewoon antwoord als Telegram het citaat weigert.
|
||||
|
||||
Opmerking: `off` schakelt impliciete antwoord-threading uit. Expliciete `[[reply_to_*]]`-tags worden nog steeds gerespecteerd.
|
||||
Opmerking: `off` schakelt impliciete antwoordthreading uit. Expliciete `[[reply_to_*]]`-tags worden nog steeds gerespecteerd.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Forumtopics en threadgedrag">
|
||||
Forum-supergroepen:
|
||||
Forumsupergroepen:
|
||||
|
||||
- topicsessiesleutels voegen `:topic:<threadId>` toe
|
||||
- antwoorden en typen richten zich op de topicthread
|
||||
@ -562,10 +562,10 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
- berichtverzendingen laten `message_thread_id` weg (Telegram weigert `sendMessage(...thread_id=1)`)
|
||||
- typeacties bevatten nog steeds `message_thread_id`
|
||||
|
||||
Topic-overerving: topicitems erven groepsinstellingen tenzij overschreven (`requireMention`, `allowFrom`, `skills`, `systemPrompt`, `enabled`, `groupPolicy`).
|
||||
Topicovererving: topicitems erven groepsinstellingen tenzij overschreven (`requireMention`, `allowFrom`, `skills`, `systemPrompt`, `enabled`, `groupPolicy`).
|
||||
`agentId` is alleen voor topics en erft niet van groepsstandaarden.
|
||||
|
||||
**Agentroutering per topic**: Elk topic kan naar een andere agent routeren door `agentId` in de topicconfiguratie in te stellen. Hierdoor krijgt elk topic zijn eigen geïsoleerde werkruimte, geheugen en sessie. Voorbeeld:
|
||||
**Agentroutering per topic**: Elk topic kan naar een andere agent routeren door `agentId` in de topicconfiguratie in te stellen. Dit geeft elk topic zijn eigen geïsoleerde werkruimte, geheugen en sessie. Voorbeeld:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -585,26 +585,26 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Elk topic heeft dan zijn eigen sessiesleutel: `agent:zu:telegram:group:-1001234567890:topic:3`
|
||||
Elk topic heeft daarna zijn eigen sessiesleutel: `agent:zu:telegram:group:-1001234567890:topic:3`
|
||||
|
||||
**Permanente ACP-topicbinding**: Forumtopics kunnen ACP-harness-sessies pinnen via top-level getypeerde ACP-bindingen (`bindings[]` met `type: "acp"` en `match.channel: "telegram"`, `peer.kind: "group"` en een topic-gekwalificeerd id zoals `-1001234567890:topic:42`). Momenteel beperkt tot forumtopics in groepen/supergroepen. Zie [ACP Agents](/nl/tools/acp-agents).
|
||||
**Persistente ACP-topicbinding**: Forumtopics kunnen ACP-harnesssessies vastzetten via typed ACP-bindingen op topniveau (`bindings[]` met `type: "acp"` en `match.channel: "telegram"`, `peer.kind: "group"`, en een topicgekwalificeerde id zoals `-1001234567890:topic:42`). Momenteel beperkt tot forumtopics in groepen/supergroepen. Zie [ACP Agents](/nl/tools/acp-agents).
|
||||
|
||||
**Thread-gebonden ACP-spawn vanuit chat**: `/acp spawn <agent> --thread here|auto` bindt het huidige topic aan een nieuwe ACP-sessie; vervolgberichten worden daar rechtstreeks naartoe gerouteerd. OpenClaw pint de spawnbevestiging in het topic. Vereist dat `channels.telegram.threadBindings.spawnSessions` ingeschakeld blijft (standaard: `true`).
|
||||
**Threadgebonden ACP-spawn vanuit chat**: `/acp spawn <agent> --thread here|auto` bindt het huidige topic aan een nieuwe ACP-sessie; vervolgberichten worden daar direct heen gerouteerd. OpenClaw zet de spawnbevestiging vast in het topic. Vereist dat `channels.telegram.threadBindings.spawnSessions` ingeschakeld blijft (standaard: `true`).
|
||||
|
||||
Templatecontext stelt `MessageThreadId` en `IsForum` beschikbaar. DM-chats met `message_thread_id` behouden standaard DM-routering en antwoordmetadata op platte sessies; ze gebruiken alleen thread-bewuste sessiesleutels wanneer ze zijn geconfigureerd met `threadReplies: "inbound"`, `threadReplies: "always"`, `requireTopic: true`, of een overeenkomende topicconfiguratie. Gebruik top-level `channels.telegram.dm.threadReplies` voor de accountstandaard, of `direct.<chatId>.threadReplies` voor één DM.
|
||||
Templatecontext stelt `MessageThreadId` en `IsForum` beschikbaar. DM-chats met `message_thread_id` behouden standaard DM-routering en antwoordmetadata op vlakke sessies; ze gebruiken alleen thread-bewuste sessiesleutels wanneer ze zijn geconfigureerd met `threadReplies: "inbound"`, `threadReplies: "always"`, `requireTopic: true`, of een overeenkomende onderwerpconfiguratie. Gebruik `channels.telegram.dm.threadReplies` op het hoogste niveau voor de accountstandaard, of `direct.<chatId>.threadReplies` voor één DM.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Audio, video en stickers">
|
||||
<Accordion title="Audio, video, and stickers">
|
||||
### Audioberichten
|
||||
|
||||
Telegram maakt onderscheid tussen spraaknotities en audiobestanden.
|
||||
|
||||
- standaard: gedrag voor audiobestanden
|
||||
- tag `[[audio_as_voice]]` in het antwoord van de agent om verzenden als spraaknotitie af te dwingen
|
||||
- transcripties van inkomende spraaknotities worden in de agentcontext ingekaderd als machinaal gegenereerde,
|
||||
niet-vertrouwde tekst; detectie van vermeldingen gebruikt nog steeds het ruwe
|
||||
transcript, zodat vermelding-afgeschermde spraakberichten blijven werken.
|
||||
- tag `[[audio_as_voice]]` in agentantwoord om verzenden als spraaknotitie af te dwingen
|
||||
- inkomende transcripties van spraaknotities worden in de agentcontext ingekaderd als machinaal gegenereerde,
|
||||
niet-vertrouwde tekst; vermeldingsdetectie gebruikt nog steeds de ruwe
|
||||
transcriptie, zodat spraakberichten met vermeldingsgate blijven werken.
|
||||
|
||||
Voorbeeld van berichtactie:
|
||||
|
||||
@ -634,7 +634,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
}
|
||||
```
|
||||
|
||||
Videonotities ondersteunen geen bijschriften; opgegeven berichttekst wordt apart verzonden.
|
||||
Videonotities ondersteunen geen bijschriften; opgegeven berichttekst wordt afzonderlijk verzonden.
|
||||
|
||||
### Stickers
|
||||
|
||||
@ -696,7 +696,7 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Reactiemeldingen">
|
||||
<Accordion title="Reaction notifications">
|
||||
Telegram-reacties komen binnen als `message_reaction`-updates (los van berichtpayloads).
|
||||
|
||||
Wanneer ingeschakeld, zet OpenClaw systeemgebeurtenissen in de wachtrij zoals:
|
||||
@ -710,25 +710,25 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
|
||||
Opmerkingen:
|
||||
|
||||
- `own` betekent alleen gebruikersreacties op berichten die door de bot zijn verzonden (beste poging via cache van verzonden berichten).
|
||||
- Reactiegebeurtenissen respecteren nog steeds Telegram-toegangscontroles (`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`); niet-geautoriseerde afzenders worden genegeerd.
|
||||
- `own` betekent alleen gebruikersreacties op door de bot verzonden berichten (best-effort via cache van verzonden berichten).
|
||||
- Reactiegebeurtenissen respecteren nog steeds Telegram-toegangscontroles (`dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`); onbevoegde afzenders worden genegeerd.
|
||||
- Telegram levert geen thread-ID's in reactie-updates.
|
||||
- niet-forumgroepen routeren naar de groepschatsessie
|
||||
- forumgroepen routeren naar de algemene-topic-sessie van de groep (`:topic:1`), niet naar het exacte oorspronkelijke topic
|
||||
- forumgroepen routeren naar de algemene-onderwerpsessie van de groep (`:topic:1`), niet naar het exacte oorspronkelijke onderwerp
|
||||
|
||||
`allowed_updates` voor polling/webhook bevat automatisch `message_reaction`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Ack-reacties">
|
||||
`ackReaction` verzendt een bevestigings-emoji terwijl OpenClaw een inkomend bericht verwerkt.
|
||||
<Accordion title="Ack reactions">
|
||||
`ackReaction` verzendt een bevestigingsemoji terwijl OpenClaw een inkomend bericht verwerkt.
|
||||
|
||||
Resolutievolgorde:
|
||||
|
||||
- `channels.telegram.accounts.<accountId>.ackReaction`
|
||||
- `channels.telegram.ackReaction`
|
||||
- `messages.ackReaction`
|
||||
- fallback naar agentidentiteit-emoji (`agents.list[].identity.emoji`, anders "👀")
|
||||
- fallback naar agentidentiteitsemoji (`agents.list[].identity.emoji`, anders "👀")
|
||||
|
||||
Opmerkingen:
|
||||
|
||||
@ -737,13 +737,13 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Config-schrijfacties vanuit Telegram-gebeurtenissen en -commando's">
|
||||
Kanaalconfiguratie schrijven is standaard ingeschakeld (`configWrites !== false`).
|
||||
<Accordion title="Config writes from Telegram events and commands">
|
||||
Schrijfacties naar kanaalconfiguratie zijn standaard ingeschakeld (`configWrites !== false`).
|
||||
|
||||
Door Telegram getriggerde schrijfacties omvatten:
|
||||
Door Telegram geactiveerde schrijfacties omvatten:
|
||||
|
||||
- groepsmigratiegebeurtenissen (`migrate_to_chat_id`) om `channels.telegram.groups` bij te werken
|
||||
- `/config set` en `/config unset` (vereist dat commando's zijn ingeschakeld)
|
||||
- `/config set` en `/config unset` (vereist dat opdrachten zijn ingeschakeld)
|
||||
|
||||
Uitschakelen:
|
||||
|
||||
@ -759,39 +759,40 @@ curl "https://api.telegram.org/bot<bot_token>/getUpdates"
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Long polling versus webhook">
|
||||
Standaard wordt long polling gebruikt. Stel voor webhookmodus `channels.telegram.webhookUrl` en `channels.telegram.webhookSecret` in; optioneel `webhookPath`, `webhookHost`, `webhookPort` (standaardwaarden `/telegram-webhook`, `127.0.0.1`, `8787`).
|
||||
<Accordion title="Long polling vs webhook">
|
||||
Standaard is long polling. Stel voor webhookmodus `channels.telegram.webhookUrl` en `channels.telegram.webhookSecret` in; optioneel `webhookPath`, `webhookHost`, `webhookPort` (standaarden `/telegram-webhook`, `127.0.0.1`, `8787`).
|
||||
|
||||
De lokale listener bindt aan `127.0.0.1:8787`. Plaats voor publieke ingress een reverse proxy vóór de lokale poort of stel bewust `webhookHost: "0.0.0.0"` in.
|
||||
De lokale listener bindt aan `127.0.0.1:8787`. Zet voor publieke ingress een reverse proxy vóór de lokale poort of stel bewust `webhookHost: "0.0.0.0"` in.
|
||||
|
||||
Webhookmodus valideert requestguards, de geheime Telegram-token en de JSON-body voordat `200` naar Telegram wordt geretourneerd.
|
||||
OpenClaw verwerkt de update vervolgens asynchroon via dezelfde per-chat/per-topic bot-lanes die door long polling worden gebruikt, zodat trage agentbeurten de bezorgings-ACK van Telegram niet ophouden.
|
||||
Webhookmodus valideert request-guards, het geheime token van Telegram en de JSON-body voordat `200` aan Telegram wordt geretourneerd.
|
||||
OpenClaw verwerkt de update vervolgens asynchroon via dezelfde botlanes per chat/per onderwerp die door long polling worden gebruikt, zodat trage agentbeurten de afleverings-ACK van Telegram niet vasthouden.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Limieten, opnieuw proberen en CLI-doelen">
|
||||
<Accordion title="Limits, retry, and CLI targets">
|
||||
- `channels.telegram.textChunkLimit` is standaard 4000.
|
||||
- `channels.telegram.chunkMode="newline"` geeft de voorkeur aan alineagrenzen (lege regels) vóór splitsing op lengte.
|
||||
- `channels.telegram.chunkMode="newline"` geeft de voorkeur aan alineagrenzen (lege regels) vóór splitsen op lengte.
|
||||
- `channels.telegram.mediaMaxMb` (standaard 100) begrenst de grootte van inkomende en uitgaande Telegram-media.
|
||||
- `channels.telegram.mediaGroupFlushMs` (standaard 500) bepaalt hoelang Telegram-albums/mediagroepen worden gebufferd voordat OpenClaw ze als één inkomend bericht verzendt. Verhoog dit als albumonderdelen laat aankomen; verlaag dit om de antwoordlatentie voor albums te verminderen.
|
||||
- `channels.telegram.timeoutSeconds` overschrijft de time-out van de Telegram API-client (als dit niet is ingesteld, geldt de grammY-standaard). Botclients klemmen geconfigureerde waarden onder de 60-secondenrequestguard voor uitgaande tekst/typen, zodat grammY zichtbare antwoordbezorging niet afbreekt voordat OpenClaw's transportguard en fallback kunnen uitvoeren. Long polling gebruikt nog steeds een 45-secondenrequestguard voor `getUpdates`, zodat idle polls niet onbeperkt worden verlaten.
|
||||
- `channels.telegram.pollingStallThresholdMs` is standaard `120000`; pas alleen af tussen `30000` en `600000` voor vals-positieve herstarts bij vastgelopen polling.
|
||||
- groepscontextgeschiedenis gebruikt `channels.telegram.historyLimit` of `messages.groupChat.historyLimit` (standaard 50); `0` schakelt dit uit.
|
||||
- aanvullende context voor antwoorden/citaten/doorsturen wordt momenteel doorgegeven zoals ontvangen.
|
||||
- Telegram-allowlists bepalen vooral wie de agent kan triggeren, niet een volledige redactiegrens voor aanvullende context.
|
||||
- Besturing voor DM-geschiedenis:
|
||||
- `channels.telegram.mediaGroupFlushMs` (standaard 500) bepaalt hoelang Telegram-albums/mediagroepen worden gebufferd voordat OpenClaw ze als één inkomend bericht verzendt. Verhoog dit als albumdelen laat aankomen; verlaag dit om de antwoordlatentie voor albums te verminderen.
|
||||
- `channels.telegram.timeoutSeconds` overschrijft de time-out van de Telegram API-client (als dit niet is ingesteld, geldt de grammY-standaard). Botclients klemmen geconfigureerde waarden onder de 60-secondenrequestguard voor uitgaande tekst/typen, zodat grammY zichtbare antwoordlevering niet afbreekt voordat de transportguard en fallback van OpenClaw kunnen draaien. Long polling gebruikt nog steeds een 45-secondenrequestguard voor `getUpdates`, zodat idle polls niet onbeperkt worden achtergelaten.
|
||||
- `channels.telegram.pollingStallThresholdMs` is standaard `120000`; stem alleen af tussen `30000` en `600000` voor fout-positieve herstarts bij polling-stalls.
|
||||
- groepscontexthistorie gebruikt `channels.telegram.historyLimit` of `messages.groupChat.historyLimit` (standaard 50); `0` schakelt dit uit.
|
||||
- aanvullende context voor antwoord/citaat/doorsturen wordt momenteel doorgegeven zoals ontvangen.
|
||||
- Telegram-allowlists begrenzen vooral wie de agent kan activeren, niet een volledige redactieboundary voor aanvullende context.
|
||||
- Besturing voor DM-historie:
|
||||
- `channels.telegram.dmHistoryLimit`
|
||||
- `channels.telegram.dms["<user_id>"].historyLimit`
|
||||
- `channels.telegram.retry`-configuratie is van toepassing op Telegram-verzendhelpers (CLI/tools/acties) voor herstelbare uitgaande API-fouten. Bezorging van het uiteindelijke inkomende antwoord gebruikt ook een begrensde safe-send retry voor Telegram pre-connect-fouten, maar probeert geen ambigue netwerk-enveloppen na verzending opnieuw die zichtbare berichten zouden kunnen dupliceren.
|
||||
- `channels.telegram.retry`-configuratie is van toepassing op Telegram-verzendhelpers (CLI/tools/acties) voor herstelbare uitgaande API-fouten. Inkomende levering van eindantwoorden gebruikt ook een begrensde safe-send-retry voor Telegram-preconnectfouten, maar probeert geen ambigue netwerk-enveloppen na verzending opnieuw die zichtbare berichten zouden kunnen dupliceren.
|
||||
|
||||
CLI-verzenddoel kan een numerieke chat-ID of gebruikersnaam zijn:
|
||||
Verzenddoelen voor CLI en berichttool kunnen een numerieke chat-ID, gebruikersnaam of een forumonderwerpdoel zijn:
|
||||
|
||||
```bash
|
||||
openclaw message send --channel telegram --target 123456789 --message "hi"
|
||||
openclaw message send --channel telegram --target @name --message "hi"
|
||||
openclaw message send --channel telegram --target -1001234567890:topic:42 --message "hi topic"
|
||||
```
|
||||
|
||||
Telegram-polls gebruiken `openclaw message poll` en ondersteunen forumtopics:
|
||||
Telegram-polls gebruiken `openclaw message poll` en ondersteunen forumonderwerpen:
|
||||
|
||||
```bash
|
||||
openclaw message poll --channel telegram --target 123456789 \
|
||||
@ -801,41 +802,41 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \
|
||||
--poll-duration-seconds 300 --poll-public
|
||||
```
|
||||
|
||||
Alleen-Telegram poll-flags:
|
||||
Pollvlaggen alleen voor Telegram:
|
||||
|
||||
- `--poll-duration-seconds` (5-600)
|
||||
- `--poll-anonymous`
|
||||
- `--poll-public`
|
||||
- `--thread-id` voor forumtopics (of gebruik een `:topic:`-doel)
|
||||
- `--thread-id` voor forumonderwerpen (of gebruik een `:topic:`-doel)
|
||||
|
||||
Telegram-verzenden ondersteunt ook:
|
||||
|
||||
- `--presentation` met `buttons`-blokken voor inline toetsenborden wanneer `channels.telegram.capabilities.inlineButtons` dit toestaat
|
||||
- `--pin` of `--delivery '{"pin":true}'` om vastgezette bezorging aan te vragen wanneer de bot in die chat kan vastzetten
|
||||
- `--pin` of `--delivery '{"pin":true}'` om gepinde levering aan te vragen wanneer de bot in die chat kan pinnen
|
||||
- `--force-document` om uitgaande afbeeldingen en GIF's als documenten te verzenden in plaats van als gecomprimeerde foto- of animated-media-uploads
|
||||
|
||||
Actieafscherming:
|
||||
Actiegating:
|
||||
|
||||
- `channels.telegram.actions.sendMessage=false` schakelt uitgaande Telegram-berichten uit, inclusief polls
|
||||
- `channels.telegram.actions.poll=false` schakelt het maken van Telegram-polls uit, terwijl gewone verzending ingeschakeld blijft
|
||||
- `channels.telegram.actions.poll=false` schakelt het maken van Telegram-polls uit terwijl gewone verzendacties ingeschakeld blijven
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Exec-goedkeuringen in Telegram">
|
||||
Telegram ondersteunt exec-goedkeuringen in goedkeurders-DM's en kan optioneel prompts plaatsen in de oorspronkelijke chat of het oorspronkelijke topic. Goedkeurders moeten numerieke Telegram-gebruikers-ID's zijn.
|
||||
<Accordion title="Exec approvals in Telegram">
|
||||
Telegram ondersteunt exec-goedkeuringen in approver-DM's en kan optioneel prompts plaatsen in de oorspronkelijke chat of het oorspronkelijke onderwerp. Approvers moeten numerieke Telegram-gebruikers-ID's zijn.
|
||||
|
||||
Configuratiepad:
|
||||
|
||||
- `channels.telegram.execApprovals.enabled` (wordt automatisch ingeschakeld wanneer ten minste één goedkeurder oplosbaar is)
|
||||
- `channels.telegram.execApprovals.approvers` (valt terug op numerieke owner-ID's uit `commands.ownerAllowFrom`)
|
||||
- `channels.telegram.execApprovals.enabled` (wordt automatisch ingeschakeld wanneer ten minste één approver oplosbaar is)
|
||||
- `channels.telegram.execApprovals.approvers` (valt terug op numerieke eigenaar-ID's uit `commands.ownerAllowFrom`)
|
||||
- `channels.telegram.execApprovals.target`: `dm` (standaard) | `channel` | `both`
|
||||
- `agentFilter`, `sessionFilter`
|
||||
|
||||
`channels.telegram.allowFrom`, `groupAllowFrom` en `defaultTo` bepalen wie met de bot kan praten en waar normale antwoorden naartoe worden gestuurd. Ze maken iemand niet tot exec-goedkeurder. De eerste goedgekeurde DM-koppeling bootstrapt `commands.ownerAllowFrom` wanneer er nog geen commando-owner bestaat, zodat de setup met één owner nog steeds werkt zonder ID's onder `execApprovals.approvers` te dupliceren.
|
||||
`channels.telegram.allowFrom`, `groupAllowFrom` en `defaultTo` bepalen wie met de bot kan praten en waar deze normale antwoorden naartoe stuurt. Ze maken iemand geen exec-approver. De eerste goedgekeurde DM-koppeling bootstrapt `commands.ownerAllowFrom` wanneer er nog geen opdrachteigenaar bestaat, zodat de één-eigenaarsetup nog steeds werkt zonder ID's te dupliceren onder `execApprovals.approvers`.
|
||||
|
||||
Kanaalbezorging toont de commandotekst in de chat; schakel `channel` of `both` alleen in vertrouwde groepen/topics in. Wanneer de prompt in een forumtopic terechtkomt, behoudt OpenClaw het topic voor de goedkeuringsprompt en de follow-up. Exec-goedkeuringen verlopen standaard na 30 minuten.
|
||||
Kanaallevering toont de opdrachttekst in de chat; schakel `channel` of `both` alleen in vertrouwde groepen/onderwerpen in. Wanneer de prompt in een forumonderwerp landt, behoudt OpenClaw het onderwerp voor de goedkeuringsprompt en de opvolging. Exec-goedkeuringen verlopen standaard na 30 minuten.
|
||||
|
||||
Inline goedkeuringsknoppen vereisen ook dat `channels.telegram.capabilities.inlineButtons` het doeloppervlak toestaat (`dm`, `group` of `all`). Goedkeurings-ID's met prefix `plugin:` worden via plugin-goedkeuringen opgelost; andere worden eerst via exec-goedkeuringen opgelost.
|
||||
Inline goedkeuringsknoppen vereisen ook dat `channels.telegram.capabilities.inlineButtons` het doeloppervlak toestaat (`dm`, `group` of `all`). Goedkeurings-ID's met het voorvoegsel `plugin:` worden via Plugin-goedkeuringen opgelost; andere worden eerst via exec-goedkeuringen opgelost.
|
||||
|
||||
Zie [Exec-goedkeuringen](/nl/tools/exec-approvals).
|
||||
|
||||
@ -844,14 +845,14 @@ openclaw message poll --channel telegram --target -1001234567890:topic:42 \
|
||||
|
||||
## Besturing voor foutantwoorden
|
||||
|
||||
Wanneer de agent een bezorgings- of providerfout tegenkomt, kan Telegram antwoorden met de fouttekst of die onderdrukken. Twee configuratiesleutels bepalen dit gedrag:
|
||||
Wanneer de agent een leverings- of providerfout tegenkomt, kan Telegram antwoorden met de fouttekst of deze onderdrukken. Twee configuratiesleutels sturen dit gedrag:
|
||||
|
||||
| Sleutel | Waarden | Standaard | Beschrijving |
|
||||
| ------------------------------------ | ----------------- | --------- | ---------------------------------------------------------------------------------------------- |
|
||||
| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` verzendt een vriendelijke foutmelding naar de chat. `silent` onderdrukt foutantwoorden volledig. |
|
||||
| `channels.telegram.errorCooldownMs` | getal (ms) | `60000` | Minimale tijd tussen foutantwoorden naar dezelfde chat. Voorkomt foutspam tijdens storingen. |
|
||||
| Sleutel | Waarden | Standaard | Beschrijving |
|
||||
| ----------------------------------- | ----------------- | --------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| `channels.telegram.errorPolicy` | `reply`, `silent` | `reply` | `reply` stuurt een vriendelijke foutmelding naar de chat. `silent` onderdrukt foutantwoorden volledig. |
|
||||
| `channels.telegram.errorCooldownMs` | number (ms) | `60000` | Minimale tijd tussen foutantwoorden aan dezelfde chat. Voorkomt foutspam tijdens storingen. |
|
||||
|
||||
Overrides per account, per groep en per topic worden ondersteund (dezelfde overerving als andere Telegram-configuratiesleutels).
|
||||
Overschrijvingen per account, per groep en per onderwerp worden ondersteund (dezelfde overerving als andere Telegram-configuratiesleutels).
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -869,16 +870,16 @@ Overrides per account, per groep en per topic worden ondersteund (dezelfde overe
|
||||
}
|
||||
```
|
||||
|
||||
## Probleemoplossing
|
||||
## Problemen oplossen
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Bot reageert niet op groepsberichten zonder vermelding">
|
||||
<Accordion title="Bot does not respond to non mention group messages">
|
||||
|
||||
- Als `requireMention=false`, moet Telegram-privacymodus volledige zichtbaarheid toestaan.
|
||||
- BotFather: `/setprivacy` -> Disable
|
||||
- verwijder de bot daarna uit de groep en voeg hem opnieuw toe
|
||||
- `openclaw channels status` waarschuwt wanneer de configuratie onvermelde groepsberichten verwacht.
|
||||
- `openclaw channels status --probe` kan expliciete numerieke groeps-ID's controleren; wildcard `"*"` kan niet op lidmaatschap worden geprobed.
|
||||
- Als `requireMention=false`, moet de privacymodus van Telegram volledige zichtbaarheid toestaan.
|
||||
- BotFather: `/setprivacy` -> Uitschakelen
|
||||
- verwijder de bot daarna uit de groep en voeg deze opnieuw toe
|
||||
- `openclaw channels status` waarschuwt wanneer de configuratie niet-vermelde groepsberichten verwacht.
|
||||
- `openclaw channels status --probe` kan expliciete numerieke groeps-ID's controleren; wildcard `"*"` kan niet op lidmaatschap worden gecontroleerd.
|
||||
- snelle sessietest: `/activation always`.
|
||||
|
||||
</Accordion>
|
||||
@ -886,42 +887,42 @@ Overrides per account, per groep en per topic worden ondersteund (dezelfde overe
|
||||
<Accordion title="Bot ziet helemaal geen groepsberichten">
|
||||
|
||||
- wanneer `channels.telegram.groups` bestaat, moet de groep worden vermeld (of `"*"` bevatten)
|
||||
- controleer botlidmaatschap in de groep
|
||||
- bekijk logs: `openclaw logs --follow` voor redenen voor overslaan
|
||||
- controleer het botlidmaatschap in de groep
|
||||
- bekijk logs: `openclaw logs --follow` voor redenen om over te slaan
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Opdrachten werken gedeeltelijk of helemaal niet">
|
||||
<Accordion title="Commando's werken gedeeltelijk of helemaal niet">
|
||||
|
||||
- autoriseer je afzenderidentiteit (koppeling en/of numerieke `allowFrom`)
|
||||
- opdrachtautorisatie blijft gelden, zelfs wanneer groepsbeleid `open` is
|
||||
- `setMyCommands failed` met `BOT_COMMANDS_TOO_MUCH` betekent dat het native menu te veel items heeft; verminder plugin-/skill-/aangepaste opdrachten of schakel native menu's uit
|
||||
- `deleteMyCommands` / `setMyCommands`-startaanroepen en `sendChatAction`-typeaanroepen zijn begrensd en proberen eenmaal opnieuw via Telegram's transportfallback bij time-out van het verzoek. Aanhoudende netwerk-/fetchfouten wijzen meestal op DNS-/HTTPS-bereikbaarheidsproblemen naar `api.telegram.org`
|
||||
- commando-autorisatie blijft gelden, zelfs wanneer groepsbeleid `open` is
|
||||
- `setMyCommands failed` met `BOT_COMMANDS_TOO_MUCH` betekent dat het native menu te veel vermeldingen heeft; verminder Plugin-/Skills-/aangepaste commando's of schakel native menu's uit
|
||||
- opstartaanroepen van `deleteMyCommands` / `setMyCommands` en typeaanroepen van `sendChatAction` zijn begrensd en proberen eenmaal opnieuw via Telegram's transportfallback bij een time-out van het verzoek. Aanhoudende netwerk-/fetchfouten wijzen meestal op DNS-/HTTPS-bereikbaarheidsproblemen naar `api.telegram.org`
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Opstarten meldt niet-geautoriseerd token">
|
||||
<Accordion title="Opstarten meldt ongeautoriseerd token">
|
||||
|
||||
- `getMe returned 401` is een Telegram-authenticatiefout voor het geconfigureerde bottoken.
|
||||
- Kopieer het bottoken opnieuw of genereer het opnieuw in BotFather, werk daarna `channels.telegram.botToken`, `channels.telegram.tokenFile`, `channels.telegram.accounts.<id>.botToken` of `TELEGRAM_BOT_TOKEN` bij voor het standaardaccount.
|
||||
- `deleteWebhook 401 Unauthorized` tijdens het opstarten is ook een authenticatiefout; dit behandelen als "er bestaat geen Webhook" zou dezelfde fout met een ongeldig token alleen uitstellen tot latere API-aanroepen.
|
||||
- Kopieer het bottoken opnieuw of genereer het opnieuw in BotFather, en werk daarna `channels.telegram.botToken`, `channels.telegram.tokenFile`, `channels.telegram.accounts.<id>.botToken` of `TELEGRAM_BOT_TOKEN` bij voor het standaardaccount.
|
||||
- `deleteWebhook 401 Unauthorized` tijdens het opstarten is ook een authenticatiefout; dit behandelen als "er bestaat geen webhook" zou dezelfde fout door een ongeldig token alleen uitstellen tot latere API-aanroepen.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Polling- of netwerkinstabiliteit">
|
||||
|
||||
- Node 22+ + aangepaste fetch/proxy kan direct afbreekgedrag veroorzaken als AbortSignal-typen niet overeenkomen.
|
||||
- Node 22+ + aangepaste fetch/proxy kan onmiddellijk afbreekgedrag activeren als AbortSignal-typen niet overeenkomen.
|
||||
- Sommige hosts lossen `api.telegram.org` eerst op naar IPv6; defecte IPv6-egress kan intermitterende Telegram API-fouten veroorzaken.
|
||||
- Als logs `TypeError: fetch failed` of `Network request for 'getUpdates' failed!` bevatten, probeert OpenClaw deze nu opnieuw als herstelbare netwerkfouten.
|
||||
- Tijdens het opstarten van polling hergebruikt OpenClaw de succesvolle `getMe`-opstartprobe voor grammY, zodat de runner geen tweede `getMe` nodig heeft vóór de eerste `getUpdates`.
|
||||
- Als `deleteWebhook` mislukt met een tijdelijke netwerkfout tijdens het opstarten van polling, gaat OpenClaw door met long polling in plaats van nog een pre-poll-control-plane-aanroep te doen. Een nog actieve Webhook verschijnt als een `getUpdates`-conflict; OpenClaw bouwt daarna het Telegram-transport opnieuw op en probeert Webhook-opschoning opnieuw.
|
||||
- Als Telegram-sockets op een korte vaste cadans worden gerecycled, controleer dan op een lage `channels.telegram.timeoutSeconds`; botclients klemmen geconfigureerde waarden onder de outbound- en `getUpdates`-verzoekbewakers vast, maar oudere releases konden elke poll of elk antwoord afbreken wanneer dit onder die bewakers was ingesteld.
|
||||
- Als logs `Polling stall detected` bevatten, herstart OpenClaw standaard polling en bouwt het Telegram-transport opnieuw op na 120 seconden zonder voltooide long-poll-liveness.
|
||||
- Tijdens het opstarten van polling hergebruikt OpenClaw de succesvolle opstartprobe `getMe` voor grammY, zodat de runner geen tweede `getMe` nodig heeft vóór de eerste `getUpdates`.
|
||||
- Als `deleteWebhook` mislukt met een tijdelijke netwerkfout tijdens het opstarten van polling, gaat OpenClaw door met long polling in plaats van nog een pre-poll control-plane-aanroep te doen. Een nog actieve Webhook verschijnt als een `getUpdates`-conflict; OpenClaw bouwt daarna het Telegram-transport opnieuw op en probeert Webhook-opruiming opnieuw.
|
||||
- Als Telegram-sockets volgens een korte vaste cadans worden gerecycled, controleer dan op een lage `channels.telegram.timeoutSeconds`; botclients klemmen geconfigureerde waarden onder de uitgaande en `getUpdates`-request guards af, maar oudere releases konden elke poll of reactie afbreken wanneer dit onder die guards was ingesteld.
|
||||
- Als logs `Polling stall detected` bevatten, herstart OpenClaw polling en bouwt het Telegram-transport opnieuw op na standaard 120 seconden zonder voltooide long-poll-liveness.
|
||||
- `openclaw channels status --probe` en `openclaw doctor` waarschuwen wanneer een actief pollingaccount na de opstartgratie geen `getUpdates` heeft voltooid, wanneer een actief Webhook-account na de opstartgratie geen `setWebhook` heeft voltooid, of wanneer de laatste succesvolle pollingtransportactiviteit verouderd is.
|
||||
- Verhoog `channels.telegram.pollingStallThresholdMs` alleen wanneer langlopende `getUpdates`-aanroepen gezond zijn, maar je host nog steeds valse polling-stall-herstarts meldt. Aanhoudende stalls wijzen meestal op proxy-, DNS-, IPv6- of TLS-egressproblemen tussen de host en `api.telegram.org`.
|
||||
- Telegram respecteert ook process-proxy-env voor Bot API-transport, waaronder `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` en hun varianten in kleine letters. `NO_PROXY` / `no_proxy` kan `api.telegram.org` nog steeds omzeilen.
|
||||
- Verhoog `channels.telegram.pollingStallThresholdMs` alleen wanneer langdurige `getUpdates`-aanroepen gezond zijn maar je host nog steeds valse polling-stall-herstarts meldt. Aanhoudende stalls wijzen meestal op proxy-, DNS-, IPv6- of TLS-egressproblemen tussen de host en `api.telegram.org`.
|
||||
- Telegram respecteert ook procesproxy-env voor Bot API-transport, inclusief `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY` en hun varianten in kleine letters. `NO_PROXY` / `no_proxy` kan `api.telegram.org` nog steeds omzeilen.
|
||||
- Als de door OpenClaw beheerde proxy via `OPENCLAW_PROXY_URL` is geconfigureerd voor een serviceomgeving en er geen standaard proxy-env aanwezig is, gebruikt Telegram die URL ook voor Bot API-transport.
|
||||
- Routeer Telegram API-aanroepen op VPS-hosts met instabiele directe egress/TLS via `channels.telegram.proxy`:
|
||||
- Routeer op VPS-hosts met instabiele directe egress/TLS Telegram API-aanroepen via `channels.telegram.proxy`:
|
||||
|
||||
```yaml
|
||||
channels:
|
||||
@ -929,7 +930,7 @@ channels:
|
||||
proxy: socks5://<user>:<password>@proxy-host:1080
|
||||
```
|
||||
|
||||
- Node 22+ gebruikt standaard `autoSelectFamily=true` (behalve WSL2). De volgorde van Telegram DNS-resultaten respecteert `OPENCLAW_TELEGRAM_DNS_RESULT_ORDER`, daarna `channels.telegram.network.dnsResultOrder`, daarna de processtandaard zoals `NODE_OPTIONS=--dns-result-order=ipv4first`; als niets van toepassing is, valt Node 22+ terug op `ipv4first`.
|
||||
- Node 22+ gebruikt standaard `autoSelectFamily=true` (behalve WSL2). De volgorde van Telegram DNS-resultaten respecteert eerst `OPENCLAW_TELEGRAM_DNS_RESULT_ORDER`, daarna `channels.telegram.network.dnsResultOrder`, daarna de processtandaard zoals `NODE_OPTIONS=--dns-result-order=ipv4first`; als geen daarvan van toepassing is, valt Node 22+ terug op `ipv4first`.
|
||||
- Als je host WSL2 is of expliciet beter werkt met alleen-IPv4-gedrag, forceer dan familieselectie:
|
||||
|
||||
```yaml
|
||||
@ -941,9 +942,9 @@ channels:
|
||||
|
||||
- Antwoorden uit het RFC 2544-benchmarkbereik (`198.18.0.0/15`) zijn standaard al toegestaan
|
||||
voor Telegram-mediadownloads. Als een vertrouwde fake-IP- of
|
||||
transparante proxy `api.telegram.org` herschrijft naar een ander
|
||||
privé-/intern/speciaal-adres tijdens mediadownloads, kun je je
|
||||
aanmelden voor de alleen-Telegram-bypass:
|
||||
transparante proxy `api.telegram.org` tijdens mediadownloads herschrijft naar een ander
|
||||
privé/intern/special-use-adres, kun je je aanmelden
|
||||
voor de alleen-Telegram-bypass:
|
||||
|
||||
```yaml
|
||||
channels:
|
||||
@ -952,18 +953,18 @@ channels:
|
||||
dangerouslyAllowPrivateNetwork: true
|
||||
```
|
||||
|
||||
- Dezelfde opt-in is beschikbaar per account op
|
||||
- Dezelfde opt-in is per account beschikbaar op
|
||||
`channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork`.
|
||||
- Als je proxy Telegram-mediahosts oplost naar `198.18.x.x`, laat de
|
||||
gevaarlijke vlag eerst uit. Telegram-media staat het RFC 2544-
|
||||
- Als je proxy Telegram-mediahosts omzet naar `198.18.x.x`, laat dan eerst de
|
||||
gevaarlijke vlag uit. Telegram-media staat het RFC 2544-
|
||||
benchmarkbereik standaard al toe.
|
||||
|
||||
<Warning>
|
||||
`channels.telegram.network.dangerouslyAllowPrivateNetwork` verzwakt Telegram-
|
||||
media-SSRF-bescherming. Gebruik dit alleen voor vertrouwde, door operators beheerde proxy-
|
||||
omgevingen zoals Clash, Mihomo of Surge fake-IP-routing wanneer die
|
||||
privé- of speciaal-gebruik-antwoorden buiten het RFC 2544-benchmark-
|
||||
bereik synthetiseren. Laat dit uit voor normale openbare Telegram-toegang via internet.
|
||||
`channels.telegram.network.dangerouslyAllowPrivateNetwork` verzwakt de SSRF-bescherming
|
||||
voor Telegram-media. Gebruik dit alleen voor vertrouwde, door operators beheerde proxy-
|
||||
omgevingen zoals Clash, Mihomo of Surge fake-IP-routing wanneer zij
|
||||
privé- of special-use-antwoorden synthetiseren buiten het RFC 2544-benchmark-
|
||||
bereik. Laat dit uit voor normale openbare internettoegang tot Telegram.
|
||||
</Warning>
|
||||
|
||||
- Omgevingsoverschrijvingen (tijdelijk):
|
||||
@ -986,27 +987,27 @@ Meer hulp: [Kanaalprobleemoplossing](/nl/channels/troubleshooting).
|
||||
|
||||
Primaire referentie: [Configuratiereferentie - Telegram](/nl/gateway/config-channels#telegram).
|
||||
|
||||
<Accordion title="Telegram-velden met hoog signaal">
|
||||
<Accordion title="Belangrijke Telegram-velden">
|
||||
|
||||
- opstarten/auth: `enabled`, `botToken`, `tokenFile`, `accounts.*` (`tokenFile` moet naar een gewoon bestand verwijzen; symlinks worden geweigerd)
|
||||
- opstarten/auth: `enabled`, `botToken`, `tokenFile`, `accounts.*` (`tokenFile` moet naar een normaal bestand wijzen; symlinks worden geweigerd)
|
||||
- toegangscontrole: `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups`, `groups.*.topics.*`, top-level `bindings[]` (`type: "acp"`)
|
||||
- exec-goedkeuringen: `execApprovals`, `accounts.*.execApprovals`
|
||||
- opdracht/menu: `commands.native`, `commands.nativeSkills`, `customCommands`
|
||||
- threads/antwoorden: `replyToMode`, `dm.threadReplies`, `direct.*.threadReplies`
|
||||
- uitvoeringsgoedkeuringen: `execApprovals`, `accounts.*.execApprovals`
|
||||
- commando/menu: `commands.native`, `commands.nativeSkills`, `customCommands`
|
||||
- threads/reacties: `replyToMode`, `dm.threadReplies`, `direct.*.threadReplies`
|
||||
- streaming: `streaming` (preview), `streaming.preview.toolProgress`, `blockStreaming`
|
||||
- opmaak/levering: `textChunkLimit`, `chunkMode`, `linkPreview`, `responsePrefix`
|
||||
- opmaak/bezorging: `textChunkLimit`, `chunkMode`, `linkPreview`, `responsePrefix`
|
||||
- media/netwerk: `mediaMaxMb`, `mediaGroupFlushMs`, `timeoutSeconds`, `pollingStallThresholdMs`, `retry`, `network.autoSelectFamily`, `network.dangerouslyAllowPrivateNetwork`, `proxy`
|
||||
- aangepaste API-root: `apiRoot` (alleen Bot API-root; neem `/bot<TOKEN>` niet op)
|
||||
- Webhook: `webhookUrl`, `webhookSecret`, `webhookPath`, `webhookHost`
|
||||
- acties/capabilities: `capabilities.inlineButtons`, `actions.sendMessage|editMessage|deleteMessage|reactions|sticker`
|
||||
- acties/capaciteiten: `capabilities.inlineButtons`, `actions.sendMessage|editMessage|deleteMessage|reactions|sticker`
|
||||
- reacties: `reactionNotifications`, `reactionLevel`
|
||||
- fouten: `errorPolicy`, `errorCooldownMs`
|
||||
- writes/geschiedenis: `configWrites`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
|
||||
- schrijfbewerkingen/geschiedenis: `configWrites`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Note>
|
||||
Prioriteit bij meerdere accounts: wanneer twee of meer account-ID's zijn geconfigureerd, stel `channels.telegram.defaultAccount` in (of neem `channels.telegram.accounts.default` op) om standaardroutering expliciet te maken. Anders valt OpenClaw terug op de eerste genormaliseerde account-ID en waarschuwt `openclaw doctor`. Benoemde accounts erven `channels.telegram.allowFrom` / `groupAllowFrom`, maar geen waarden uit `accounts.default.*`.
|
||||
Voorrang bij meerdere accounts: wanneer twee of meer account-ID's zijn geconfigureerd, stel `channels.telegram.defaultAccount` in (of neem `channels.telegram.accounts.default` op) om standaardroutering expliciet te maken. Anders valt OpenClaw terug op de eerste genormaliseerde account-ID en waarschuwt `openclaw doctor`. Benoemde accounts erven `channels.telegram.allowFrom` / `groupAllowFrom`, maar niet de waarden van `accounts.default.*`.
|
||||
</Note>
|
||||
|
||||
## Gerelateerd
|
||||
@ -1016,18 +1017,18 @@ Prioriteit bij meerdere accounts: wanneer twee of meer account-ID's zijn geconfi
|
||||
Koppel een Telegram-gebruiker aan de Gateway.
|
||||
</Card>
|
||||
<Card title="Groepen" icon="users" href="/nl/channels/groups">
|
||||
Gedrag voor allowlists van groepen en onderwerpen.
|
||||
Gedrag van allowlists voor groepen en onderwerpen.
|
||||
</Card>
|
||||
<Card title="Kanaalroutering" icon="route" href="/nl/channels/channel-routing">
|
||||
Routeer inkomende berichten naar agents.
|
||||
</Card>
|
||||
<Card title="Beveiliging" icon="shield" href="/nl/gateway/security">
|
||||
Dreigingsmodel en hardening.
|
||||
Dreigingsmodel en verharding.
|
||||
</Card>
|
||||
<Card title="Multi-agent-routering" icon="sitemap" href="/nl/concepts/multi-agent">
|
||||
Koppel groepen en onderwerpen aan agents.
|
||||
<Card title="Routering met meerdere agents" icon="sitemap" href="/nl/concepts/multi-agent">
|
||||
Wijs groepen en onderwerpen toe aan agents.
|
||||
</Card>
|
||||
<Card title="Probleemoplossing" icon="wrench" href="/nl/channels/troubleshooting">
|
||||
Cross-channeldiagnostiek.
|
||||
Diagnostiek voor meerdere kanalen.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -1,21 +1,21 @@
|
||||
---
|
||||
read_when:
|
||||
- CLI-acties voor berichten toevoegen of wijzigen
|
||||
- Gedrag van uitgaande kanalen wijzigen
|
||||
summary: CLI-referentie voor `openclaw message` (send + kanaalacties)
|
||||
- Bericht-CLI-acties toevoegen of wijzigen
|
||||
- Uitgaand kanaalgedrag wijzigen
|
||||
summary: CLI-referentie voor `openclaw message` (verzenden + kanaalacties)
|
||||
title: Bericht
|
||||
x-i18n:
|
||||
generated_at: "2026-05-02T20:41:40Z"
|
||||
generated_at: "2026-05-04T09:36:53Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 6b73a50da34838f80ad5d0d266f5c66f95436f8535e6312296ae022918b1ab55
|
||||
source_hash: 9ef57d33c93206a61a6d044667de4faf6340f7d8cc324300f235e838ee3b7ff1
|
||||
source_path: cli/message.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
# `openclaw message`
|
||||
|
||||
Enkele uitgaande opdracht voor het verzenden van berichten en kanaalacties
|
||||
Eén enkele uitgaande opdracht voor het verzenden van berichten en kanaalacties
|
||||
(Discord/Google Chat/iMessage/Matrix/Mattermost (plugin)/Microsoft Teams/Signal/Slack/Telegram/WhatsApp).
|
||||
|
||||
## Gebruik
|
||||
@ -26,19 +26,19 @@ openclaw message <subcommand> [flags]
|
||||
|
||||
Kanaalselectie:
|
||||
|
||||
- `--channel` is vereist als meer dan één kanaal is geconfigureerd.
|
||||
- Als precies één kanaal is geconfigureerd, wordt dat de standaard.
|
||||
- `--channel` is vereist als er meer dan één kanaal is geconfigureerd.
|
||||
- Als er precies één kanaal is geconfigureerd, wordt dit de standaard.
|
||||
- Waarden: `discord|googlechat|imessage|matrix|mattermost|msteams|signal|slack|telegram|whatsapp` (Mattermost vereist plugin)
|
||||
- `openclaw message` zet het geselecteerde kanaal om naar de bijbehorende plugin wanneer `--channel` of een doel met kanaalvoorvoegsel aanwezig is; anders laadt het geconfigureerde kanaalplugins voor standaardkanaalafleiding.
|
||||
- `openclaw message` herleidt het geselecteerde kanaal naar de eigenaar-plugin wanneer `--channel` of een doel met kanaalvoorvoegsel aanwezig is; anders laadt het geconfigureerde kanaalplugins voor afleiding van het standaardkanaal.
|
||||
|
||||
Doelindelingen (`--target`):
|
||||
Doelformaten (`--target`):
|
||||
|
||||
- WhatsApp: E.164, groeps-JID of WhatsApp Channel/Newsletter-JID (`...@newsletter`)
|
||||
- Telegram: chat-id of `@username`
|
||||
- Discord: `channel:<id>` of `user:<id>` (of `<@id>`-vermelding; ruwe numerieke ids worden als kanalen behandeld)
|
||||
- WhatsApp: E.164, groeps-JID of WhatsApp-kanaal-/nieuwsbrief-JID (`...@newsletter`)
|
||||
- Telegram: chat-id, `@username` of forumonderwerpdoel (`-1001234567890:topic:42`, of `--thread-id 42`)
|
||||
- Discord: `channel:<id>` of `user:<id>` (of `<@id>`-vermelding; ruwe numerieke id's worden behandeld als kanalen)
|
||||
- Google Chat: `spaces/<spaceId>` of `users/<userId>`
|
||||
- Slack: `channel:<id>` of `user:<id>` (ruwe kanaal-id wordt geaccepteerd)
|
||||
- Mattermost (plugin): `channel:<id>`, `user:<id>` of `@username` (kale ids worden als kanalen behandeld)
|
||||
- Mattermost (plugin): `channel:<id>`, `user:<id>` of `@username` (kale id's worden behandeld als kanalen)
|
||||
- Signal: `+E.164`, `group:<id>`, `signal:+E.164`, `signal:group:<id>` of `username:<name>`/`u:<name>`
|
||||
- iMessage: handle, `chat_id:<id>`, `chat_guid:<guid>` of `chat_identifier:<id>`
|
||||
- Matrix: `@user:server`, `!room:server` of `#alias:server`
|
||||
@ -46,14 +46,14 @@ Doelindelingen (`--target`):
|
||||
|
||||
Naamopzoeking:
|
||||
|
||||
- Voor ondersteunde providers (Discord/Slack/etc.) worden kanaalnamen zoals `Help` of `#help` opgelost via de directory-cache.
|
||||
- Voor ondersteunde providers (Discord/Slack/enz.) worden kanaalnamen zoals `Help` of `#help` opgelost via de directory-cache.
|
||||
- Bij een cachemisser probeert OpenClaw een live directory-opzoeking wanneer de provider dit ondersteunt.
|
||||
|
||||
## Algemene flags
|
||||
## Algemene vlaggen
|
||||
|
||||
- `--channel <name>`
|
||||
- `--account <id>`
|
||||
- `--target <dest>` (doelkanaal of doelgebruiker voor verzenden/pollen/lezen/etc.)
|
||||
- `--target <dest>` (doelkanaal of doelgebruiker voor verzenden/pollen/lezen/enz.)
|
||||
- `--targets <name>` (herhalen; alleen broadcast)
|
||||
- `--json`
|
||||
- `--dry-run`
|
||||
@ -62,12 +62,12 @@ Naamopzoeking:
|
||||
## SecretRef-gedrag
|
||||
|
||||
- `openclaw message` lost ondersteunde kanaal-SecretRefs op voordat de geselecteerde actie wordt uitgevoerd.
|
||||
- Resolutie wordt waar mogelijk beperkt tot het actieve actiedoel:
|
||||
- Oplossing is waar mogelijk beperkt tot het actieve actiedoel:
|
||||
- kanaalgebonden wanneer `--channel` is ingesteld (of afgeleid uit doelen met voorvoegsel zoals `discord:...`)
|
||||
- accountgebonden wanneer `--account` is ingesteld (kanaalglobals + geselecteerde accountoppervlakken)
|
||||
- wanneer `--account` is weggelaten, forceert OpenClaw geen `default`-account-SecretRef-scope
|
||||
- Niet-opgeloste SecretRefs op niet-gerelateerde kanalen blokkeren een gerichte berichtactie niet.
|
||||
- Als de geselecteerde kanaal-/account-SecretRef niet is opgelost, faalt de opdracht gesloten voor die actie.
|
||||
- accountgebonden wanneer `--account` is ingesteld (kanaalglobalen + geselecteerde accountoppervlakken)
|
||||
- wanneer `--account` is weggelaten, dwingt OpenClaw geen `default` account-SecretRef-scope af
|
||||
- Onopgeloste SecretRefs op niet-gerelateerde kanalen blokkeren een gerichte berichtactie niet.
|
||||
- Als de SecretRef van het geselecteerde kanaal/account onopgelost is, faalt de opdracht gesloten voor die actie.
|
||||
|
||||
## Acties
|
||||
|
||||
@ -78,12 +78,12 @@ Naamopzoeking:
|
||||
- Vereist: `--target`, plus `--message`, `--media` of `--presentation`
|
||||
- Optioneel: `--media`, `--presentation`, `--delivery`, `--pin`, `--reply-to`, `--thread-id`, `--gif-playback`, `--force-document`, `--silent`
|
||||
- Gedeelde presentatiepayloads: `--presentation` verzendt semantische blokken (`text`, `context`, `divider`, `buttons`, `select`) die de kern rendert via de gedeclareerde mogelijkheden van het geselecteerde kanaal. Zie [Berichtpresentatie](/nl/plugins/message-presentation).
|
||||
- Generieke bezorgingsvoorkeuren: `--delivery` accepteert bezorgingshints zoals `{ "pin": true }`; `--pin` is een verkorte vorm voor vastgezette bezorging wanneer het kanaal dit ondersteunt.
|
||||
- Alleen Telegram: `--force-document` (afbeeldingen en GIFs als documenten verzenden om Telegram-compressie te vermijden)
|
||||
- Algemene afleveringsvoorkeuren: `--delivery` accepteert afleveringshints zoals `{ "pin": true }`; `--pin` is een verkorte vorm voor vastgezette aflevering wanneer het kanaal dit ondersteunt.
|
||||
- Alleen Telegram: `--force-document` (afbeeldingen en GIF's als documenten verzenden om Telegram-compressie te vermijden)
|
||||
- Alleen Telegram: `--thread-id` (forumonderwerp-id)
|
||||
- Alleen Slack: `--thread-id` (threadtijdstempel; `--reply-to` gebruikt hetzelfde veld)
|
||||
- Telegram + Discord: `--silent`
|
||||
- Alleen WhatsApp: `--gif-playback`; WhatsApp Channels/Newsletters worden geadresseerd met hun native `@newsletter`-JID.
|
||||
- Alleen WhatsApp: `--gif-playback`; WhatsApp-kanalen/nieuwsbrieven worden geadresseerd met hun native `@newsletter` JID.
|
||||
|
||||
- `poll`
|
||||
- Kanalen: WhatsApp/Telegram/Discord/Matrix/Microsoft Teams
|
||||
@ -109,7 +109,7 @@ Naamopzoeking:
|
||||
- Kanalen: Discord/Slack/Matrix
|
||||
- Vereist: `--target`
|
||||
- Optioneel: `--limit`, `--message-id`, `--before`, `--after`
|
||||
- Alleen Slack: `--message-id` leest een specifiek Slack-berichttijdstempel; combineer met `--thread-id` om een exacte threadreactie te lezen.
|
||||
- Alleen Slack: `--message-id` leest een specifieke Slack-berichttijdstempel; combineer met `--thread-id` om een exact threadantwoord te lezen.
|
||||
- Alleen Discord: `--around`
|
||||
|
||||
- `edit`
|
||||
@ -159,7 +159,7 @@ Naamopzoeking:
|
||||
|
||||
- `emoji list`
|
||||
- Discord: `--guild-id`
|
||||
- Slack: geen extra flags
|
||||
- Slack: geen extra vlaggen
|
||||
|
||||
- `emoji upload`
|
||||
- Kanalen: Discord
|
||||
@ -177,7 +177,7 @@ Naamopzoeking:
|
||||
- Kanalen: Discord
|
||||
- Vereist: `--guild-id`, `--sticker-name`, `--sticker-desc`, `--sticker-tags`, `--media`
|
||||
|
||||
### Rollen / Kanalen / Leden / Spraak
|
||||
### Rollen / Kanalen / Leden / Voice
|
||||
|
||||
- `role info` (Discord): `--guild-id`
|
||||
- `role add` / `role remove` (Discord): `--guild-id`, `--user-id`, `--role-id`
|
||||
@ -186,7 +186,7 @@ Naamopzoeking:
|
||||
- `member info` (Discord/Slack): `--user-id` (+ `--guild-id` voor Discord)
|
||||
- `voice status` (Discord): `--guild-id`, `--user-id`
|
||||
|
||||
### Events
|
||||
### Gebeurtenissen
|
||||
|
||||
- `event list` (Discord): `--guild-id`
|
||||
- `event create` (Discord): `--guild-id`, `--event-name`, `--start-time`
|
||||
@ -208,14 +208,14 @@ Naamopzoeking:
|
||||
|
||||
## Voorbeelden
|
||||
|
||||
Verzend een Discord-antwoord:
|
||||
Een Discord-antwoord verzenden:
|
||||
|
||||
```
|
||||
openclaw message send --channel discord \
|
||||
--target channel:123 --message "hi" --reply-to 456
|
||||
```
|
||||
|
||||
Verzend een bericht met semantische knoppen:
|
||||
Een bericht met semantische knoppen verzenden:
|
||||
|
||||
```
|
||||
openclaw message send --channel discord \
|
||||
@ -223,9 +223,9 @@ openclaw message send --channel discord \
|
||||
--presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Approve","value":"approve","style":"success"},{"label":"Decline","value":"decline","style":"danger"}]}]}'
|
||||
```
|
||||
|
||||
De kern rendert dezelfde `presentation`-payload naar Discord-componenten, Slack-blokken, Telegram-inlineknoppen, Mattermost-props of Teams/Feishu-kaarten, afhankelijk van de kanaalmogelijkheid. Zie [Berichtpresentatie](/nl/plugins/message-presentation) voor het volledige contract en terugvalregels.
|
||||
De kern rendert dezelfde `presentation`-payload naar Discord-componenten, Slack-blokken, Telegram-inlineknoppen, Mattermost-props of Teams/Feishu-kaarten, afhankelijk van de kanaalmogelijkheid. Zie [Berichtpresentatie](/nl/plugins/message-presentation) voor het volledige contract en de fallbackregels.
|
||||
|
||||
Verzend een rijkere presentatiepayload:
|
||||
Een rijkere presentatiepayload verzenden:
|
||||
|
||||
```bash
|
||||
openclaw message send --channel googlechat --target spaces/AAA... \
|
||||
@ -233,7 +233,7 @@ openclaw message send --channel googlechat --target spaces/AAA... \
|
||||
--presentation '{"title":"Deploy approval","tone":"warning","blocks":[{"type":"text","text":"Choose a path"},{"type":"buttons","buttons":[{"label":"Approve","value":"approve"},{"label":"Decline","value":"decline"}]}]}'
|
||||
```
|
||||
|
||||
Maak een Discord-poll:
|
||||
Een Discord-poll maken:
|
||||
|
||||
```
|
||||
openclaw message poll --channel discord \
|
||||
@ -243,7 +243,7 @@ openclaw message poll --channel discord \
|
||||
--poll-multi --poll-duration-hours 48
|
||||
```
|
||||
|
||||
Maak een Telegram-poll (sluit automatisch na 2 minuten):
|
||||
Een Telegram-poll maken (automatisch sluiten na 2 minuten):
|
||||
|
||||
```
|
||||
openclaw message poll --channel telegram \
|
||||
@ -253,14 +253,14 @@ openclaw message poll --channel telegram \
|
||||
--poll-duration-seconds 120 --silent
|
||||
```
|
||||
|
||||
Verzend een proactief Teams-bericht:
|
||||
Een proactief Teams-bericht verzenden:
|
||||
|
||||
```
|
||||
openclaw message send --channel msteams \
|
||||
--target conversation:19:abc@thread.tacv2 --message "hi"
|
||||
```
|
||||
|
||||
Maak een Teams-poll:
|
||||
Een Teams-poll maken:
|
||||
|
||||
```
|
||||
openclaw message poll --channel msteams \
|
||||
@ -269,14 +269,14 @@ openclaw message poll --channel msteams \
|
||||
--poll-option Pizza --poll-option Sushi
|
||||
```
|
||||
|
||||
Reageer in Slack:
|
||||
Reageren in Slack:
|
||||
|
||||
```
|
||||
openclaw message react --channel slack \
|
||||
--target C123 --message-id 456 --emoji "✅"
|
||||
```
|
||||
|
||||
Reageer in een Signal-groep:
|
||||
Reageren in een Signal-groep:
|
||||
|
||||
```
|
||||
openclaw message react --channel signal \
|
||||
@ -284,14 +284,14 @@ openclaw message react --channel signal \
|
||||
--emoji "✅" --target-author-uuid 123e4567-e89b-12d3-a456-426614174000
|
||||
```
|
||||
|
||||
Verzend Telegram-inlineknoppen via generieke presentatie:
|
||||
Telegram-inlineknoppen verzenden via algemene presentatie:
|
||||
|
||||
```
|
||||
openclaw message send --channel telegram --target @mychat --message "Choose:" \
|
||||
--presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Yes","value":"cmd:yes"},{"label":"No","value":"cmd:no"}]}]}'
|
||||
```
|
||||
|
||||
Verzend een Teams-kaart via generieke presentatie:
|
||||
Een Teams-kaart verzenden via algemene presentatie:
|
||||
|
||||
```bash
|
||||
openclaw message send --channel msteams \
|
||||
@ -299,7 +299,7 @@ openclaw message send --channel msteams \
|
||||
--presentation '{"title":"Status update","blocks":[{"type":"text","text":"Build completed"}]}'
|
||||
```
|
||||
|
||||
Verzend een Telegram-afbeelding als document om compressie te vermijden:
|
||||
Een Telegram-afbeelding als document verzenden om compressie te vermijden:
|
||||
|
||||
```bash
|
||||
openclaw message send --channel telegram --target @mychat \
|
||||
|
||||
@ -6,22 +6,22 @@ sidebarTitle: Plugins
|
||||
summary: CLI-referentie voor `openclaw plugins` (list, install, marketplace, uninstall, enable/disable, doctor)
|
||||
title: Plugins
|
||||
x-i18n:
|
||||
generated_at: "2026-05-04T07:02:50Z"
|
||||
generated_at: "2026-05-04T09:36:56Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 36ae7edb12986ead7e126f25e0761bf312b2644b35017181b674082105886776
|
||||
source_hash: f561ce098181b07f25db3520b1726162863469ac05fb4a3e786915257d97c9a4
|
||||
source_path: cli/plugins.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Beheer Gateway-plugins, hook-pakketten en compatibele bundels.
|
||||
Beheer Gateway-plugins, hook packs en compatibele bundels.
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Plugin-systeem" href="/nl/tools/plugin">
|
||||
Gebruikershandleiding voor het installeren, inschakelen en oplossen van problemen met plugins.
|
||||
Eindgebruikersgids voor het installeren, inschakelen en oplossen van problemen met plugins.
|
||||
</Card>
|
||||
<Card title="Plugins beheren" href="/nl/plugins/manage-plugins">
|
||||
Korte voorbeelden voor installeren, weergeven, bijwerken, verwijderen en publiceren.
|
||||
Snelle voorbeelden voor installeren, weergeven, bijwerken, verwijderen en publiceren.
|
||||
</Card>
|
||||
<Card title="Plugin-bundels" href="/nl/plugins/bundles">
|
||||
Compatibiliteitsmodel voor bundels.
|
||||
@ -30,7 +30,7 @@ Beheer Gateway-plugins, hook-pakketten en compatibele bundels.
|
||||
Manifestvelden en configuratieschema.
|
||||
</Card>
|
||||
<Card title="Beveiliging" href="/nl/gateway/security">
|
||||
Beveiligingsversterking voor plugin-installaties.
|
||||
Beveiligingshardening voor plugin-installaties.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -62,12 +62,14 @@ openclaw plugins marketplace list <marketplace>
|
||||
openclaw plugins marketplace list <marketplace> --json
|
||||
```
|
||||
|
||||
Voor onderzoek naar trage installatie-, inspectie-, verwijderings- of registry-refresh-acties voer je de opdracht uit met `OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1`. De trace schrijft fasetimings naar stderr en houdt JSON-uitvoer parseerbaar. Zie [Debuggen](/nl/help/debugging#plugin-lifecycle-trace).
|
||||
Voor onderzoek naar trage installatie, inspectie, verwijdering of registry-refresh voer je de
|
||||
opdracht uit met `OPENCLAW_PLUGIN_LIFECYCLE_TRACE=1`. De trace schrijft fasetimings
|
||||
naar stderr en houdt JSON-uitvoer parseerbaar. Zie [Debugging](/nl/help/debugging#plugin-lifecycle-trace).
|
||||
|
||||
<Note>
|
||||
Gebundelde plugins worden met OpenClaw meegeleverd. Sommige zijn standaard ingeschakeld (bijvoorbeeld gebundelde modelproviders, gebundelde spraakproviders en de gebundelde browserplugin); andere vereisen `plugins enable`.
|
||||
|
||||
Native OpenClaw-plugins moeten `openclaw.plugin.json` leveren met een inline JSON Schema (`configSchema`, zelfs als het leeg is). Compatibele bundels gebruiken in plaats daarvan hun eigen bundelmanifesten.
|
||||
Native OpenClaw-plugins moeten `openclaw.plugin.json` leveren met een inline JSON Schema (`configSchema`, zelfs als dit leeg is). Compatibele bundels gebruiken in plaats daarvan hun eigen bundelmanifests.
|
||||
|
||||
`plugins list` toont `Format: openclaw` of `Format: bundle`. Uitgebreide list/info-uitvoer toont ook het bundelsubtype (`codex`, `claude` of `cursor`) plus gedetecteerde bundelmogelijkheden.
|
||||
</Note>
|
||||
@ -91,57 +93,65 @@ openclaw plugins install <plugin> --marketplace https://github.com/<owner>/<repo
|
||||
```
|
||||
|
||||
<Warning>
|
||||
Kale pakketnamen installeren tijdens de lanceringsovergang standaard vanuit npm. Gebruik `clawhub:<package>` voor ClawHub. Behandel plugin-installaties alsof je code uitvoert. Geef de voorkeur aan vastgepinde versies.
|
||||
Kale pakketnamen installeren tijdens de launch-cutover standaard vanuit npm. Gebruik `clawhub:<package>` voor ClawHub. Behandel plugin-installaties als het uitvoeren van code. Geef de voorkeur aan vastgepinde versies.
|
||||
</Warning>
|
||||
|
||||
`plugins search` bevraagt ClawHub op installeerbare plugin-pakketten en toont pakketnamen die direct geïnstalleerd kunnen worden. Het zoekt code-plugin- en bundel-plugin-pakketten, geen Skills. Gebruik `openclaw skills search` voor ClawHub-Skills.
|
||||
`plugins search` doorzoekt ClawHub naar installeerbare plugin-pakketten en drukt
|
||||
installatieklare pakketnamen af. Het zoekt naar code-plugin- en bundle-plugin-pakketten,
|
||||
niet naar skills. Gebruik `openclaw skills search` voor ClawHub-skills.
|
||||
|
||||
<Note>
|
||||
ClawHub is het primaire distributie- en ontdekkingsoppervlak voor de meeste plugins. Npm blijft een ondersteunde fallback en direct-installatiepad. OpenClaw-eigen `@openclaw/*` plugin-pakketten worden weer op npm gepubliceerd; zie de huidige lijst op [npmjs.com/org/openclaw](https://www.npmjs.com/org/openclaw) of de [plugin-inventaris](/nl/plugins/plugin-inventory). Stabiele installaties gebruiken `latest`. Installaties en updates via het bètakanaal geven de voorkeur aan de npm-`beta` dist-tag wanneer die tag beschikbaar is, en vallen daarna terug op `latest`.
|
||||
ClawHub is het primaire distributie- en ontdekkingsoppervlak voor de meeste plugins. Npm
|
||||
blijft een ondersteunde fallback en direct-installatiepad. Plugin-pakketten in eigendom van OpenClaw
|
||||
`@openclaw/*` worden weer op npm gepubliceerd; zie de huidige lijst
|
||||
op [npmjs.com/org/openclaw](https://www.npmjs.com/org/openclaw) of de
|
||||
[plugin-inventaris](/nl/plugins/plugin-inventory). Stabiele installaties gebruiken `latest`.
|
||||
Installaties en updates via het betakanaal geven de voorkeur aan de npm `beta` dist-tag wanneer die tag
|
||||
beschikbaar is, en vallen daarna terug op `latest`.
|
||||
</Note>
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Config-includes en reparatie van ongeldige configuratie">
|
||||
Als je `plugins`-sectie wordt ondersteund door een single-file `$include`, schrijven `plugins install/update/enable/disable/uninstall` door naar dat opgenomen bestand en laten ze `openclaw.json` ongemoeid. Root-includes, include-arrays en includes met sibling-overrides falen gesloten in plaats van af te vlakken. Zie [Config-includes](/nl/gateway/configuration) voor de ondersteunde vormen.
|
||||
<Accordion title="Config-includes en herstel van ongeldige config">
|
||||
Als je `plugins`-sectie wordt ondersteund door een single-file `$include`, schrijven `plugins install/update/enable/disable/uninstall` door naar dat included bestand en laten ze `openclaw.json` ongemoeid. Root-includes, include-arrays en includes met sibling-overrides falen gesloten in plaats van te flattenen. Zie [Config-includes](/nl/gateway/configuration) voor de ondersteunde vormen.
|
||||
|
||||
Als de configuratie ongeldig is tijdens installatie, faalt `plugins install` normaal gesloten en zegt het dat je eerst `openclaw doctor --fix` moet uitvoeren. Tijdens het starten en hot reloaden van de Gateway faalt ongeldige plugin-configuratie gesloten zoals elke andere ongeldige configuratie; `openclaw doctor --fix` kan de ongeldige plugin-vermelding in quarantaine plaatsen. De enige gedocumenteerde uitzondering tijdens installatie is een smal herstelpad voor gebundelde plugins voor plugins die expliciet kiezen voor `openclaw.install.allowInvalidConfigRecovery`.
|
||||
Als de config ongeldig is tijdens installatie, faalt `plugins install` normaal gesproken gesloten en zegt het dat je eerst `openclaw doctor --fix` moet uitvoeren. Tijdens het opstarten en hot reloaden van de Gateway faalt ongeldige plugin-config gesloten zoals elke andere ongeldige config; `openclaw doctor --fix` kan de ongeldige plugin-entry in quarantaine plaatsen. De enige gedocumenteerde uitzondering tijdens installatie is een smal herstelpad voor gebundelde plugins voor plugins die expliciet kiezen voor `openclaw.install.allowInvalidConfigRecovery`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="--force en herinstalleren versus bijwerken">
|
||||
`--force` hergebruikt het bestaande installatiedoel en overschrijft een reeds geïnstalleerde plugin of hook-pakket ter plekke. Gebruik dit wanneer je bewust dezelfde id opnieuw installeert vanuit een nieuw lokaal pad, archief, ClawHub-pakket of npm-artefact. Voor routinematige upgrades van een al gevolgde npm-plugin geef je de voorkeur aan `openclaw plugins update <id-or-npm-spec>`.
|
||||
<Accordion title="--force en opnieuw installeren versus update">
|
||||
`--force` hergebruikt het bestaande installatiedoel en overschrijft een al geïnstalleerde plugin of hook pack op zijn plek. Gebruik dit wanneer je bewust dezelfde id opnieuw installeert vanuit een nieuw lokaal pad, archief, ClawHub-pakket of npm-artefact. Voor routinematige upgrades van een al bijgehouden npm-plugin geef je de voorkeur aan `openclaw plugins update <id-or-npm-spec>`.
|
||||
|
||||
Als je `plugins install` uitvoert voor een plugin-id die al is geïnstalleerd, stopt OpenClaw en verwijst het je naar `plugins update <id-or-npm-spec>` voor een normale upgrade, of naar `plugins install <package> --force` wanneer je de huidige installatie echt vanuit een andere bron wilt overschrijven.
|
||||
Als je `plugins install` uitvoert voor een plugin-id die al is geïnstalleerd, stopt OpenClaw en verwijst het je naar `plugins update <id-or-npm-spec>` voor een normale upgrade, of naar `plugins install <package> --force` wanneer je de huidige installatie echt wilt overschrijven vanuit een andere bron.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Bereik van --pin">
|
||||
`--pin` is alleen van toepassing op npm-installaties. Het wordt niet ondersteund met `git:`-installaties; gebruik een expliciete git-ref zoals `git:github.com/acme/plugin@v1.2.3` wanneer je een vastgepinde bron wilt. Het wordt niet ondersteund met `--marketplace`, omdat marketplace-installaties marketplace-bronmetadata bewaren in plaats van een npm-specificatie.
|
||||
`--pin` geldt alleen voor npm-installaties. Het wordt niet ondersteund met `git:`-installaties; gebruik een expliciete git-ref zoals `git:github.com/acme/plugin@v1.2.3` wanneer je een vastgepinde bron wilt. Het wordt niet ondersteund met `--marketplace`, omdat marketplace-installaties marketplace-bronmetadata bewaren in plaats van een npm-spec.
|
||||
</Accordion>
|
||||
<Accordion title="--dangerously-force-unsafe-install">
|
||||
`--dangerously-force-unsafe-install` is een noodoptie voor fout-positieven in de ingebouwde scanner voor gevaarlijke code. Hiermee kan de installatie doorgaan, zelfs wanneer de ingebouwde scanner `critical`-bevindingen rapporteert, maar het omzeilt **geen** beleidsblokkades van plugin-`before_install`-hooks en omzeilt **geen** scanfouten.
|
||||
`--dangerously-force-unsafe-install` is een break-glass-optie voor foutpositieven in de ingebouwde scanner voor gevaarlijke code. Hiermee kan de installatie doorgaan, zelfs wanneer de ingebouwde scanner `critical`-bevindingen rapporteert, maar het omzeilt **niet** de beleidsblokkades van plugin-`before_install`-hooks en omzeilt **niet** scanfouten.
|
||||
|
||||
Deze CLI-vlag is van toepassing op plugin-installatie- en updateflows. Door de Gateway ondersteunde installaties van skill-afhankelijkheden gebruiken de overeenkomende `dangerouslyForceUnsafeInstall`-requestoverride, terwijl `openclaw skills install` een afzonderlijke download-/installatieflow voor ClawHub-skills blijft.
|
||||
Deze CLI-vlag is van toepassing op plugin install/update-flows. Door de Gateway ondersteunde installaties van skill-afhankelijkheden gebruiken de overeenkomende request-override `dangerouslyForceUnsafeInstall`, terwijl `openclaw skills install` een afzonderlijke ClawHub-skill-download/install-flow blijft.
|
||||
|
||||
Als een plugin die je op ClawHub hebt gepubliceerd wordt geblokkeerd door een registry-scan, gebruik dan de publicatiestappen in [ClawHub](/nl/tools/clawhub).
|
||||
Als een plugin die je op ClawHub hebt gepubliceerd wordt geblokkeerd door een registryscan, gebruik dan de publisher-stappen in [ClawHub](/nl/tools/clawhub).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Hook-pakketten en npm-specificaties">
|
||||
`plugins install` is ook het installatieoppervlak voor hook-pakketten die `openclaw.hooks` in `package.json` aanbieden. Gebruik `openclaw hooks` voor gefilterde hook-zichtbaarheid en inschakeling per hook, niet voor pakketinstallatie.
|
||||
<Accordion title="Hook packs en npm-specs">
|
||||
`plugins install` is ook het installatieoppervlak voor hook packs die `openclaw.hooks` in `package.json` blootstellen. Gebruik `openclaw hooks` voor gefilterde hook-zichtbaarheid en inschakeling per hook, niet voor pakketinstallatie.
|
||||
|
||||
Npm-specificaties zijn **alleen registry** (pakketnaam + optionele **exacte versie** of **dist-tag**). Git-/URL-/file-specificaties en semver-bereiken worden geweigerd. Afhankelijkheidsinstallaties draaien projectlokaal met `--ignore-scripts` voor veiligheid, zelfs wanneer je shell globale npm-installatie-instellingen heeft.
|
||||
Npm-specs zijn **alleen registry** (pakketnaam + optionele **exacte versie** of **dist-tag**). Git/URL/file-specs en semver-ranges worden geweigerd. Afhankelijkheidsinstallaties draaien projectlokaal met `--ignore-scripts` voor veiligheid, zelfs wanneer je shell globale npm-installatie-instellingen heeft.
|
||||
|
||||
Gebruik `npm:<package>` wanneer je npm-resolutie expliciet wilt maken. Kale pakketspecificaties installeren tijdens de lanceringsovergang ook direct vanuit npm.
|
||||
Gebruik `npm:<package>` wanneer je npm-resolutie expliciet wilt maken. Kale pakketspecs installeren tijdens de launch-cutover ook rechtstreeks vanuit npm.
|
||||
|
||||
Kale specificaties en `@latest` blijven op het stabiele spoor. OpenClaw-correctieversies met datumstempel zoals `2026.5.3-1` zijn stabiele releases voor deze controle. Als npm een van beide naar een prerelease resolveert, stopt OpenClaw en vraagt het je expliciet in te stemmen met een prerelease-tag zoals `@beta`/`@rc` of een exacte prerelease-versie zoals `@1.2.3-beta.4`.
|
||||
Kale specs en `@latest` blijven op het stabiele spoor. OpenClaw-datumgestempelde correctieversies zoals `2026.5.3-1` zijn stabiele releases voor deze check. Als npm een van deze naar een prerelease resolveert, stopt OpenClaw en vraagt het je om expliciet in te stappen met een prerelease-tag zoals `@beta`/`@rc` of een exacte prerelease-versie zoals `@1.2.3-beta.4`.
|
||||
|
||||
Als een kale installatiespecificatie overeenkomt met een officiële plugin-id (bijvoorbeeld `diffs`), installeert OpenClaw de catalogusvermelding direct. Gebruik een expliciete scoped specificatie (bijvoorbeeld `@scope/diffs`) om een npm-pakket met dezelfde naam te installeren.
|
||||
Als een kale installatiespec overeenkomt met een officiële plugin-id (bijvoorbeeld `diffs`), installeert OpenClaw de catalogusentry rechtstreeks. Gebruik een expliciete scoped spec (bijvoorbeeld `@scope/diffs`) om een npm-pakket met dezelfde naam te installeren.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Git-repository's">
|
||||
Gebruik `git:<repo>` om direct vanuit een git-repository te installeren. Ondersteunde vormen zijn onder andere `git:github.com/owner/repo`, `git:owner/repo`, volledige `https://`, `ssh://`, `git://`, `file://` en `git@host:owner/repo.git` clone-URL's. Voeg `@<ref>` of `#<ref>` toe om vóór installatie een branch, tag of commit uit te checken.
|
||||
<Accordion title="Git-repositories">
|
||||
Gebruik `git:<repo>` om rechtstreeks vanuit een git-repository te installeren. Ondersteunde vormen zijn onder andere `git:github.com/owner/repo`, `git:owner/repo`, volledige `https://`-, `ssh://`-, `git://`-, `file://`- en `git@host:owner/repo.git`-clone-URL's. Voeg `@<ref>` of `#<ref>` toe om een branch, tag of commit uit te checken vóór installatie.
|
||||
|
||||
Git-installaties klonen naar een tijdelijke map, checken de gevraagde ref uit wanneer aanwezig en gebruiken daarna de normale installer voor plugin-mappen. Dat betekent dat manifestvalidatie, scanning op gevaarlijke code, package-manager-installatiewerk en installatierecords zich gedragen zoals bij npm-installaties. Vastgelegde git-installaties bevatten de bron-URL/ref plus de opgeloste commit, zodat `openclaw plugins update` de bron later opnieuw kan resolven.
|
||||
Git-installaties clonen naar een tijdelijke directory, checken de gevraagde ref uit wanneer aanwezig, en gebruiken daarna de normale installateur voor plugin-directories. Dat betekent dat manifestvalidatie, scanning op gevaarlijke code, package-manager-installatiewerk en installatierecords zich gedragen zoals bij npm-installaties. Vastgelegde git-installaties bevatten de bron-URL/ref plus de opgeloste commit, zodat `openclaw plugins update` de bron later opnieuw kan resolven.
|
||||
|
||||
Gebruik na installatie vanuit git `openclaw plugins inspect <id> --runtime --json` om runtime-registraties zoals gateway-methoden en CLI-opdrachten te verifiëren. Als de plugin een CLI-root heeft geregistreerd met `api.registerCli`, voer die opdracht dan direct uit via de OpenClaw-root-CLI, bijvoorbeeld `openclaw demo-plugin ping`.
|
||||
Gebruik na installatie vanuit git `openclaw plugins inspect <id> --runtime --json` om runtimeregistraties zoals gateway-methoden en CLI-opdrachten te verifiëren. Als de plugin een CLI-root heeft geregistreerd met `api.registerCli`, voer die opdracht dan rechtstreeks uit via de OpenClaw-root-CLI, bijvoorbeeld `openclaw demo-plugin ping`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Archieven">
|
||||
@ -159,7 +169,7 @@ openclaw plugins install clawhub:openclaw-codex-app-server
|
||||
openclaw plugins install clawhub:openclaw-codex-app-server@1.2.3
|
||||
```
|
||||
|
||||
Kale npm-veilige plugin-specificaties installeren tijdens de lanceringsovergang standaard vanuit npm:
|
||||
Kale npm-veilige plugin-specs installeren tijdens de launch-cutover standaard vanuit npm:
|
||||
|
||||
```bash
|
||||
openclaw plugins install openclaw-codex-app-server
|
||||
@ -172,12 +182,12 @@ openclaw plugins install npm:openclaw-codex-app-server
|
||||
openclaw plugins install npm:@scope/plugin-name@1.0.1
|
||||
```
|
||||
|
||||
OpenClaw controleert vóór installatie de geadverteerde plugin-API / minimale gateway-compatibiliteit. Wanneer de geselecteerde ClawHub-versie een ClawPack-artefact publiceert, downloadt OpenClaw de geversioneerde npm-pack-`.tgz`, verifieert het de ClawHub-digestheader en de artefactdigest, en installeert het deze daarna via het normale archiefpad. Oudere ClawHub-versies zonder ClawPack-metadata installeren nog steeds via het legacy-verificatiepad voor pakketarchieven. Vastgelegde installaties bewaren hun ClawHub-bronmetadata, artefactsoort, npm-integriteit, npm-shasum, tarballnaam en ClawPack-digestfeiten voor latere updates.
|
||||
Ongeversioneerde ClawHub-installaties bewaren een ongeversioneerde vastgelegde specificatie zodat `openclaw plugins update` nieuwere ClawHub-releases kan volgen; expliciete versie- of tagselectors zoals `clawhub:pkg@1.2.3` en `clawhub:pkg@beta` blijven vastgepind op die selector.
|
||||
OpenClaw controleert de geadverteerde plugin-API / minimale gateway-compatibiliteit vóór installatie. Wanneer de geselecteerde ClawHub-versie een ClawPack-artefact publiceert, downloadt OpenClaw de geversioneerde npm-pack `.tgz`, verifieert het de ClawHub-digestheader en de artefactdigest, en installeert het die daarna via het normale archiefpad. Oudere ClawHub-versies zonder ClawPack-metadata installeren nog steeds via het legacy-verificatiepad voor pakketarchieven. Vastgelegde installaties behouden hun ClawHub-bronmetadata, artefactsoort, npm-integriteit, npm-shasum, tarballnaam en ClawPack-digestfeiten voor latere updates.
|
||||
Ongeversioneerde ClawHub-installaties behouden een ongeversioneerde vastgelegde spec zodat `openclaw plugins update` nieuwere ClawHub-releases kan volgen; expliciete versie- of tagselectoren zoals `clawhub:pkg@1.2.3` en `clawhub:pkg@beta` blijven vastgepind op die selector.
|
||||
|
||||
#### Marketplace-shorthand
|
||||
|
||||
Gebruik de `plugin@marketplace`-shorthand wanneer de marketplace-naam bestaat in Claude's lokale registry-cache op `~/.claude/plugins/known_marketplaces.json`:
|
||||
Gebruik `plugin@marketplace`-shorthand wanneer de marketplace-naam bestaat in Claude's lokale registry-cache op `~/.claude/plugins/known_marketplaces.json`:
|
||||
|
||||
```bash
|
||||
openclaw plugins marketplace list <marketplace-name>
|
||||
@ -194,16 +204,16 @@ openclaw plugins install <plugin-name> --marketplace ./my-marketplace
|
||||
```
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Marketplace-bronnen">
|
||||
- een bekende Claude-marketplace-naam uit `~/.claude/plugins/known_marketplaces.json`
|
||||
- een lokale marketplace-root of `marketplace.json`-pad
|
||||
- een GitHub-repo-afkorting zoals `owner/repo`
|
||||
<Tab title="Marketplace sources">
|
||||
- een bekende Claude-marketplacenaam uit `~/.claude/plugins/known_marketplaces.json`
|
||||
- een lokale marketplace-root of pad naar `marketplace.json`
|
||||
- een GitHub-repoverkorting zoals `owner/repo`
|
||||
- een GitHub-repo-URL zoals `https://github.com/owner/repo`
|
||||
- een git-URL
|
||||
|
||||
</Tab>
|
||||
<Tab title="Regels voor externe marketplaces">
|
||||
Voor externe marketplaces die vanuit GitHub of git worden geladen, moeten pluginvermeldingen binnen de gekloonde marketplace-repo blijven. OpenClaw accepteert relatieve padbronnen uit die repo en weigert HTTP(S), absolute paden, git, GitHub en andere niet-pad-pluginbronnen uit externe manifests.
|
||||
<Tab title="Remote marketplace rules">
|
||||
Voor externe marketplaces die vanuit GitHub of git worden geladen, moeten pluginvermeldingen binnen de gekloonde marketplace-repo blijven. OpenClaw accepteert relatieve padbronnen uit die repo en weigert HTTP(S), absolute paden, git, GitHub en andere niet-padgebonden pluginbronnen uit externe manifests.
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
@ -215,7 +225,7 @@ Voor lokale paden en archieven detecteert OpenClaw automatisch:
|
||||
- Cursor-compatibele bundels (`.cursor-plugin/plugin.json`)
|
||||
|
||||
<Note>
|
||||
Compatibele bundels worden in de normale plugin-root geïnstalleerd en nemen deel aan dezelfde list/info/enable/disable-flow. Momenteel worden bundel-Skills, Claude command-skills, Claude-standaardwaarden voor `settings.json`, Claude-standaardwaarden voor `.lsp.json` / in het manifest gedeclareerde `lspServers`, Cursor command-skills en compatibele Codex-hookmappen ondersteund; andere gedetecteerde bundelmogelijkheden worden getoond in diagnostiek/info, maar zijn nog niet gekoppeld aan runtime-uitvoering.
|
||||
Compatibele bundels worden in de normale pluginroot geïnstalleerd en doen mee aan dezelfde list/info/enable/disable-flow. Momenteel worden bundelvaardigheden, Claude-command-skills, standaardwaarden uit Claude `settings.json`, standaardwaarden uit Claude `.lsp.json` / in het manifest gedeclareerde `lspServers`, Cursor-command-skills en compatibele Codex-hookdirectories ondersteund; andere gedetecteerde bundelmogelijkheden worden getoond in diagnostics/info, maar zijn nog niet aangesloten op runtime-uitvoering.
|
||||
</Note>
|
||||
|
||||
### Lijst
|
||||
@ -234,58 +244,57 @@ openclaw plugins search <query> --json
|
||||
Toon alleen ingeschakelde plugins.
|
||||
</ParamField>
|
||||
<ParamField path="--verbose" type="boolean">
|
||||
Schakel over van de tabelweergave naar detailregels per plugin met metadata over source/origin/version/activation.
|
||||
Schakel over van de tabelweergave naar detailregels per plugin met metadata over bron/oorsprong/versie/activatie.
|
||||
</ParamField>
|
||||
<ParamField path="--json" type="boolean">
|
||||
Machineleesbare inventaris plus registrydiagnostiek en installatiestatus van package-afhankelijkheden.
|
||||
Machinaal leesbare inventaris plus registry-diagnostics en installatiestatus van packageafhankelijkheden.
|
||||
</ParamField>
|
||||
|
||||
<Note>
|
||||
`plugins list` leest eerst de opgeslagen lokale plugin-registry, met een alleen-uit-manifest-afgeleide fallback wanneer de registry ontbreekt of ongeldig is. Dit is nuttig om te controleren of een plugin is geïnstalleerd, ingeschakeld en zichtbaar is voor koude startupplanning, maar het is geen live runtime-probe van een al draaiend Gateway-proces. Nadat je plugincode, inschakeling, hookbeleid of `plugins.load.paths` hebt gewijzigd, herstart je de Gateway die het kanaal bedient voordat je verwacht dat nieuwe `register(api)`-code of hooks worden uitgevoerd. Controleer bij externe/containerdeployments dat je het daadwerkelijke `openclaw gateway run`-child herstart, niet alleen een wrapperproces.
|
||||
`plugins list` leest eerst de blijvend opgeslagen lokale pluginregistry, met een manifest-only afgeleide fallback wanneer de registry ontbreekt of ongeldig is. Dit is nuttig om te controleren of een plugin is geïnstalleerd, ingeschakeld en zichtbaar is voor cold-startupplanning, maar het is geen live runtime-probe van een al draaiend Gateway-proces. Start na het wijzigen van plugincode, inschakeling, hookbeleid of `plugins.load.paths` de Gateway opnieuw die het kanaal bedient voordat je verwacht dat nieuwe `register(api)`-code of hooks worden uitgevoerd. Controleer bij externe/containerdeployments dat je het daadwerkelijke `openclaw gateway run`-childproces opnieuw start, niet alleen een wrapperproces.
|
||||
|
||||
`plugins list --json` bevat voor elke plugin de `dependencyStatus` uit `package.json`
|
||||
`dependencies` en `optionalDependencies`. OpenClaw controleert of die package-
|
||||
namen aanwezig zijn langs het normale Node-`node_modules`-opzoekpad van de plugin; het
|
||||
importeert geen plugin-runtimecode, voert geen package manager uit en repareert geen ontbrekende
|
||||
afhankelijkheden.
|
||||
`plugins list --json` bevat per plugin de `dependencyStatus` uit `package.json`
|
||||
`dependencies` en `optionalDependencies`. OpenClaw controleert of die packagenamen
|
||||
aanwezig zijn langs het normale Node-zoekpad voor `node_modules` van de plugin; het
|
||||
importeert geen pluginruntimecode, voert geen packagemanager uit en repareert geen
|
||||
ontbrekende afhankelijkheden.
|
||||
</Note>
|
||||
|
||||
`plugins search` is een externe ClawHub-cataloguszoekopdracht. Het inspecteert geen lokale
|
||||
status, muteert geen config, installeert geen packages en laadt geen plugin-runtimecode. Zoek
|
||||
resultaten bevatten de ClawHub-packagenaam, familie, kanaal, versie, samenvatting en
|
||||
`plugins search` is een externe ClawHub-catalogusopzoeking. Het inspecteert geen lokale
|
||||
status, wijzigt geen configuratie, installeert geen packages en laadt geen pluginruntimecode. Zoekresultaten bevatten de ClawHub-packagenaam, familie, kanaal, versie, samenvatting en
|
||||
een installatietip zoals `openclaw plugins install clawhub:<package>`.
|
||||
|
||||
Voor werk aan gebundelde plugins binnen een packaged Docker-image bind-mount je de
|
||||
bronmap van de plugin over het overeenkomende packaged bronpad, zoals
|
||||
`/app/extensions/synology-chat`. OpenClaw ontdekt die gekoppelde bron-
|
||||
overlay vóór `/app/dist/extensions/synology-chat`; een gewone gekopieerde bron-
|
||||
map blijft inert, zodat normale packaged installaties nog steeds de gecompileerde dist gebruiken.
|
||||
Voor werk aan gebundelde plugins binnen een verpakte Docker-image bind-mount je de
|
||||
pluginbrondirectory over het overeenkomende verpakte bronpad, zoals
|
||||
`/app/extensions/synology-chat`. OpenClaw ontdekt die gemounte bron-overlay
|
||||
vóór `/app/dist/extensions/synology-chat`; een gewone gekopieerde brondirectory
|
||||
blijft inert, zodat normale verpakte installaties nog steeds de gecompileerde dist gebruiken.
|
||||
|
||||
Voor runtime-hookdebugging:
|
||||
|
||||
- `openclaw plugins inspect <id> --runtime --json` toont geregistreerde hooks en diagnostiek uit een inspectiepass met geladen module. Runtime-inspectie installeert nooit afhankelijkheden; gebruik `openclaw doctor --fix` om legacy-afhankelijkheidsstatus op te schonen of ontbrekende geconfigureerde downloadbare plugins te installeren.
|
||||
- `openclaw gateway status --deep --require-rpc` bevestigt de bereikbare Gateway, service-/proceshints, het configpad en de RPC-gezondheid.
|
||||
- Niet-gebundelde gesprekshooks (`llm_input`, `llm_output`, `before_agent_finalize`, `agent_end`) vereisen `plugins.entries.<id>.hooks.allowConversationAccess=true`.
|
||||
- `openclaw plugins inspect <id> --runtime --json` toont geregistreerde hooks en diagnostics uit een inspectiepass met geladen module. Runtime-inspectie installeert nooit afhankelijkheden; gebruik `openclaw doctor --fix` om legacy-afhankelijkheidsstatus op te schonen of ontbrekende geconfigureerde downloadbare plugins te installeren.
|
||||
- `openclaw gateway status --deep --require-rpc` bevestigt de bereikbare Gateway, service-/proceshints, configuratiepad en RPC-gezondheid.
|
||||
- Niet-gebundelde conversatiehooks (`llm_input`, `llm_output`, `before_agent_finalize`, `agent_end`) vereisen `plugins.entries.<id>.hooks.allowConversationAccess=true`.
|
||||
|
||||
Gebruik `--link` om te voorkomen dat een lokale map wordt gekopieerd (voegt toe aan `plugins.load.paths`):
|
||||
Gebruik `--link` om het kopiëren van een lokale directory te vermijden (voegt toe aan `plugins.load.paths`):
|
||||
|
||||
```bash
|
||||
openclaw plugins install -l ./my-plugin
|
||||
```
|
||||
|
||||
<Note>
|
||||
`--force` wordt niet ondersteund met `--link`, omdat gelinkte installaties het bronpad hergebruiken in plaats van over een beheerd installatiedoel heen te kopiëren.
|
||||
`--force` wordt niet ondersteund met `--link`, omdat gekoppelde installaties het bronpad hergebruiken in plaats van over een beheerd installatiedoel heen te kopiëren.
|
||||
|
||||
Gebruik `--pin` bij npm-installaties om de opgeloste exacte spec (`name@version`) in de beheerde pluginindex op te slaan terwijl het standaardgedrag ongepind blijft.
|
||||
</Note>
|
||||
|
||||
### Pluginindex
|
||||
|
||||
Installatiemetadata van plugins is machinebeheerde status, geen gebruikersconfiguratie. Installaties en updates schrijven deze naar `plugins/installs.json` onder de actieve OpenClaw-statusmap. De top-level `installRecords`-map is de duurzame bron van installatiemetadata, inclusief records voor kapotte of ontbrekende pluginmanifests. De `plugins`-array is de uit het manifest afgeleide koude registrycache. Het bestand bevat een waarschuwing dat het niet handmatig mag worden bewerkt en wordt gebruikt door `openclaw plugins update`, uninstall, diagnostiek en de koude pluginregistry.
|
||||
Plugininstallatiemetadata is machinaal beheerde status, geen gebruikersconfiguratie. Installaties en updates schrijven dit naar `plugins/installs.json` onder de actieve OpenClaw-statusdirectory. De top-level `installRecords`-map is de duurzame bron van installatiemetadata, inclusief records voor defecte of ontbrekende pluginmanifests. De `plugins`-array is de uit manifests afgeleide koude registrycache. Het bestand bevat een waarschuwing om het niet te bewerken en wordt gebruikt door `openclaw plugins update`, de-installatie, diagnostics en de koude pluginregistry.
|
||||
|
||||
Wanneer OpenClaw verzonden legacy-`plugins.installs`-records in de config ziet, verplaatst het deze naar de pluginindex en verwijdert het de configkey; als een van beide schrijfoperaties mislukt, blijven de configrecords behouden zodat de installatiemetadata niet verloren gaat.
|
||||
Wanneer OpenClaw meegeleverde legacy-`plugins.installs`-records in de configuratie ziet, verplaatst het die naar de pluginindex en verwijdert het de configuratiesleutel; als een van beide schrijfacties mislukt, blijven de configuratierecords behouden zodat de installatiemetadata niet verloren gaat.
|
||||
|
||||
### Deïnstalleren
|
||||
### De-installeren
|
||||
|
||||
```bash
|
||||
openclaw plugins uninstall <id>
|
||||
@ -293,7 +302,7 @@ openclaw plugins uninstall <id> --dry-run
|
||||
openclaw plugins uninstall <id> --keep-files
|
||||
```
|
||||
|
||||
`uninstall` verwijdert pluginrecords uit `plugins.entries`, de opgeslagen pluginindex, plugin allow/deny-listvermeldingen en gelinkte `plugins.load.paths`-vermeldingen waar van toepassing. Tenzij `--keep-files` is ingesteld, verwijdert uninstall ook de bijgehouden beheerde installatiemap wanneer die zich binnen de plugin-extensieroot van OpenClaw bevindt. Voor Active Memory-plugins wordt de geheugensleuf gereset naar `memory-core`.
|
||||
`uninstall` verwijdert pluginrecords uit `plugins.entries`, de blijvend opgeslagen pluginindex, plugin allow/deny-listvermeldingen en gekoppelde `plugins.load.paths`-vermeldingen wanneer van toepassing. Tenzij `--keep-files` is ingesteld, verwijdert de de-installatie ook de bijgehouden beheerde installatiedirectory wanneer die zich binnen de pluginextensions-root van OpenClaw bevindt. Voor active-memory-plugins wordt de geheugensleuf teruggezet naar `memory-core`.
|
||||
|
||||
<Note>
|
||||
`--keep-config` wordt ondersteund als verouderde alias voor `--keep-files`.
|
||||
@ -309,28 +318,28 @@ openclaw plugins update @openclaw/voice-call
|
||||
openclaw plugins update openclaw-codex-app-server --dangerously-force-unsafe-install
|
||||
```
|
||||
|
||||
Updates worden toegepast op bijgehouden plugininstallaties in de beheerde pluginindex en bijgehouden hook-pack-installaties in `hooks.internal.installs`.
|
||||
Updates zijn van toepassing op bijgehouden plugininstallaties in de beheerde pluginindex en bijgehouden hook-pack-installaties in `hooks.internal.installs`.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Plugin-id versus npm-spec oplossen">
|
||||
Wanneer je een plugin-id doorgeeft, hergebruikt OpenClaw de vastgelegde installatiespec voor die plugin. Dat betekent dat eerder opgeslagen dist-tags zoals `@beta` en exact gepinde versies ook bij latere `update <id>`-runs gebruikt blijven worden.
|
||||
<Accordion title="Resolving plugin id vs npm spec">
|
||||
Wanneer je een plugin-id doorgeeft, hergebruikt OpenClaw de vastgelegde installatiespec voor die plugin. Dat betekent dat eerder opgeslagen dist-tags zoals `@beta` en exacte gepinde versies bij latere `update <id>`-runs gebruikt blijven worden.
|
||||
|
||||
Voor npm-installaties kun je ook een expliciete npm-packagespec met een dist-tag of exacte versie doorgeven. OpenClaw herleidt die packagenaam terug naar het bijgehouden pluginrecord, werkt die geïnstalleerde plugin bij en legt de nieuwe npm-spec vast voor toekomstige updates op basis van id.
|
||||
Voor npm-installaties kun je ook een expliciete npm-packagespec met een dist-tag of exacte versie doorgeven. OpenClaw herleidt die packagenaam naar het bijgehouden pluginrecord, werkt die geïnstalleerde plugin bij en legt de nieuwe npm-spec vast voor toekomstige updates op basis van id.
|
||||
|
||||
Het doorgeven van de npm-packagenaam zonder versie of tag wordt ook terug herleid naar het bijgehouden pluginrecord. Gebruik dit wanneer een plugin was gepind op een exacte versie en je deze terug wilt verplaatsen naar de standaard releaselijn van de registry.
|
||||
Het doorgeven van de npm-packagenaam zonder versie of tag herleidt ook naar het bijgehouden pluginrecord. Gebruik dit wanneer een plugin op een exacte versie was gepind en je die terug wilt zetten naar de standaardreleaselijn van de registry.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Updates voor het betakanaal">
|
||||
`openclaw plugins update` hergebruikt de bijgehouden pluginspec tenzij je een nieuwe spec doorgeeft. `openclaw update` kent daarnaast het actieve OpenClaw-updatekanaal: op het betakanaal proberen npm- en ClawHub-pluginrecords op de standaardlijn eerst `@beta` en vallen daarna terug op de vastgelegde default/latest-spec als er geen bètarelease van de plugin bestaat. Exacte versies en expliciete tags blijven gepind op die selector.
|
||||
<Accordion title="Beta channel updates">
|
||||
`openclaw plugins update` hergebruikt de bijgehouden pluginspec tenzij je een nieuwe spec doorgeeft. `openclaw update` kent daarnaast het actieve OpenClaw-updatekanaal: op het bètakanaal proberen default-line npm- en ClawHub-pluginrecords eerst `@beta`, en vallen daarna terug op de vastgelegde default/latest-spec als er geen plugin-bètarelease bestaat. Exacte versies en expliciete tags blijven gepind aan die selector.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Versiecontroles en integriteitsdrift">
|
||||
Vóór een live npm-update controleert OpenClaw de geïnstalleerde packageversie tegen de metadata van de npm-registry. Als de geïnstalleerde versie en vastgelegde artifact-identiteit al overeenkomen met het opgeloste doel, wordt de update overgeslagen zonder downloaden, opnieuw installeren of herschrijven van `openclaw.json`.
|
||||
<Accordion title="Version checks and integrity drift">
|
||||
Vóór een live npm-update controleert OpenClaw de geïnstalleerde packageversie tegen de npm-registrymetadata. Als de geïnstalleerde versie en vastgelegde artefactidentiteit al overeenkomen met het opgeloste doel, wordt de update overgeslagen zonder te downloaden, opnieuw te installeren of `openclaw.json` te herschrijven.
|
||||
|
||||
Wanneer er een opgeslagen integriteitshash bestaat en de opgehaalde artifacthash verandert, behandelt OpenClaw dat als npm-artifactdrift. De interactieve opdracht `openclaw plugins update` print de verwachte en daadwerkelijke hashes en vraagt om bevestiging voordat wordt doorgegaan. Niet-interactieve updatehelpers falen gesloten tenzij de aanroeper een expliciet voortzettingsbeleid opgeeft.
|
||||
Wanneer er een opgeslagen integriteitshash bestaat en de opgehaalde artefacthash verandert, behandelt OpenClaw dat als npm-artefactdrift. Het interactieve commando `openclaw plugins update` toont de verwachte en daadwerkelijke hashes en vraagt om bevestiging voordat het doorgaat. Niet-interactieve updatehelpers falen gesloten tenzij de aanroeper een expliciet vervolgbeleid opgeeft.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="--dangerously-force-unsafe-install bij update">
|
||||
<Accordion title="--dangerously-force-unsafe-install on update">
|
||||
`--dangerously-force-unsafe-install` is ook beschikbaar bij `plugins update` als break-glass-override voor fout-positieven in de ingebouwde dangerous-code-scan tijdens pluginupdates. Het omzeilt nog steeds geen plugin-`before_install`-beleidsblokkades of blokkering door scanfouten, en het geldt alleen voor pluginupdates, niet voor hook-pack-updates.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -343,21 +352,21 @@ openclaw plugins inspect <id> --runtime
|
||||
openclaw plugins inspect <id> --json
|
||||
```
|
||||
|
||||
Inspect toont identiteit, laadstatus, bron, manifestmogelijkheden, beleidsvlaggen, diagnostiek, installatiemetadata, bundelmogelijkheden en alle gedetecteerde MCP- of LSP-serverondersteuning zonder standaard plugin-runtime te importeren. Voeg `--runtime` toe om de pluginmodule te laden en geregistreerde hooks, tools, opdrachten, services, gatewaymethoden en HTTP-routes op te nemen. Runtime-inspectie rapporteert ontbrekende pluginafhankelijkheden direct; installaties en reparaties blijven in `openclaw plugins install`, `openclaw plugins update` en `openclaw doctor --fix`.
|
||||
Inspect toont identiteit, laadstatus, bron, manifestmogelijkheden, beleidsvlaggen, diagnostics, installatiemetadata, bundelmogelijkheden en eventuele gedetecteerde MCP- of LSP-serverondersteuning zonder standaard pluginruntime te importeren. Voeg `--runtime` toe om de pluginmodule te laden en geregistreerde hooks, tools, commando's, services, gatewaymethoden en HTTP-routes op te nemen. Runtime-inspectie rapporteert ontbrekende pluginafhankelijkheden direct; installaties en reparaties blijven in `openclaw plugins install`, `openclaw plugins update` en `openclaw doctor --fix`.
|
||||
|
||||
CLI-opdrachten die eigendom zijn van een plugin worden geïnstalleerd als root-`openclaw`-opdrachtgroepen. Nadat `inspect --runtime` een opdracht onder `cliCommands` toont, voer je deze uit als `openclaw <command> ...`; een plugin die bijvoorbeeld `demo-git` registreert, kan worden gecontroleerd met `openclaw demo-git ping`.
|
||||
CLI-commando's die eigendom zijn van plugins worden geïnstalleerd als root-`openclaw`-commandogroepen. Nadat `inspect --runtime` een commando onder `cliCommands` toont, voer je het uit als `openclaw <command> ...`; een plugin die bijvoorbeeld `demo-git` registreert, kan worden gecontroleerd met `openclaw demo-git ping`.
|
||||
|
||||
Elke plugin wordt geclassificeerd op basis van wat deze daadwerkelijk tijdens runtime registreert:
|
||||
Elke plugin wordt geclassificeerd op basis van wat deze daadwerkelijk registreert tijdens runtime:
|
||||
|
||||
- **plain-capability** — één mogelijkheidstype (bijv. een provider-only-plugin)
|
||||
- **hybrid-capability** — meerdere mogelijkheidstypen (bijv. tekst + spraak + afbeeldingen)
|
||||
- **hook-only** — alleen hooks, geen mogelijkheden of oppervlakken
|
||||
- **non-capability** — tools/opdrachten/services maar geen mogelijkheden
|
||||
- **plain-capability** — één type capability (bijv. een plugin die alleen provider is)
|
||||
- **hybrid-capability** — meerdere capabilitytypen (bijv. tekst + spraak + afbeeldingen)
|
||||
- **hook-only** — alleen hooks, geen capabilities of surfaces
|
||||
- **non-capability** — tools/commando's/services maar geen capabilities
|
||||
|
||||
Zie [Pluginvormen](/nl/plugins/architecture#plugin-shapes) voor meer over het mogelijkhedenmodel.
|
||||
Zie [Plugin shapes](/nl/plugins/architecture#plugin-shapes) voor meer over het capabilitymodel.
|
||||
|
||||
<Note>
|
||||
De vlag `--json` geeft een machineleesbaar rapport dat geschikt is voor scripting en auditing. `inspect --all` rendert een fleet-brede tabel met kolommen voor vorm, capabilitysoorten, compatibiliteitsmeldingen, bundelmogelijkheden en hooksamenvatting. `info` is een alias voor `inspect`.
|
||||
De vlag `--json` geeft een machinaal leesbaar rapport dat geschikt is voor scripting en auditing. `inspect --all` rendert een fleet-wide tabel met kolommen voor shape, capabilitysoorten, compatibiliteitsmeldingen, bundelmogelijkheden en hooksamenvatting. `info` is een alias voor `inspect`.
|
||||
</Note>
|
||||
|
||||
### Doctor
|
||||
@ -366,11 +375,11 @@ De vlag `--json` geeft een machineleesbaar rapport dat geschikt is voor scriptin
|
||||
openclaw plugins doctor
|
||||
```
|
||||
|
||||
`doctor` rapporteert pluginlaadfouten, manifest-/discoverydiagnostiek en compatibiliteitsmeldingen. Wanneer alles schoon is, print het `No plugin issues detected.`
|
||||
`doctor` rapporteert laadfouten van plugins, manifest-/discovery-diagnostics en compatibiliteitsmeldingen. Wanneer alles schoon is, drukt het `No plugin issues detected.` af
|
||||
|
||||
Als een geconfigureerde plugin op schijf aanwezig is maar wordt geblokkeerd door de path-safety-controles van de loader, behoudt configvalidatie de pluginvermelding en rapporteert deze als `present but blocked`. Los de voorafgaande diagnostiek voor de geblokkeerde plugin op, zoals padeigendom of world-writable machtigingen, in plaats van de config `plugins.entries.<id>` of `plugins.allow` te verwijderen.
|
||||
Als een geconfigureerde plugin op schijf aanwezig is maar wordt geblokkeerd door de padveiligheidscontroles van de loader, behoudt configuratievalidatie de pluginvermelding en rapporteert deze als `present but blocked`. Los de voorafgaande blocked-plugin-diagnostic op, zoals padeigendom of world-writable permissies, in plaats van de configuratie `plugins.entries.<id>` of `plugins.allow` te verwijderen.
|
||||
|
||||
Voor modulevormfouten zoals ontbrekende `register`/`activate`-exports voer je opnieuw uit met `OPENCLAW_PLUGIN_LOAD_DEBUG=1` om een compacte exportvormsamenvatting in de diagnostische output op te nemen.
|
||||
Voor module-shape-fouten zoals ontbrekende `register`/`activate`-exports, voer opnieuw uit met `OPENCLAW_PLUGIN_LOAD_DEBUG=1` om een compacte export-shape-samenvatting in de diagnostische uitvoer op te nemen.
|
||||
|
||||
### Registry
|
||||
|
||||
@ -380,12 +389,14 @@ openclaw plugins registry --refresh
|
||||
openclaw plugins registry --json
|
||||
```
|
||||
|
||||
De lokale pluginregistry is het opgeslagen koude leesmodel van OpenClaw voor geïnstalleerde pluginidentiteit, inschakeling, bronmetadata en eigenaarschap van bijdragen. Normale startup, provider-eigenaaropzoeking, classificatie van kanaalsetup en plugininventaris kunnen deze lezen zonder plugin-runtimemodules te importeren.
|
||||
De lokale pluginregistry is OpenClaw's blijvend opgeslagen koude leesmodel voor geïnstalleerde pluginidentiteit, inschakeling, bronmetadata en eigendom van bijdragen. Normale startup, provider-owner lookup, classificatie van kanaalsetup en plugininventaris kunnen dit lezen zonder pluginruntimemodules te importeren.
|
||||
|
||||
Gebruik `plugins registry` om te controleren of het opgeslagen register aanwezig, actueel of verouderd is. Gebruik `--refresh` om het opnieuw op te bouwen vanuit de opgeslagen Plugin-index, het configuratiebeleid en de manifest-/pakketmetadata. Dit is een herstelpad, geen pad voor runtime-activering.
|
||||
Gebruik `plugins registry` om te controleren of het persistente register aanwezig, actueel of verouderd is. Gebruik `--refresh` om het opnieuw op te bouwen vanuit de persistente Plugin-index, het configuratiebeleid en de manifest-/pakketmetadata. Dit is een herstelpad, geen pad voor runtime-activering.
|
||||
|
||||
`openclaw doctor --fix` herstelt ook beheerde npm-afwijkingen rond het register: als een verweesd of hersteld `@openclaw/*`-pakket onder de beheerde Plugin-npm-root een meegeleverde Plugin overschaduwt, verwijdert doctor dat verouderde pakket en bouwt het register opnieuw op zodat de opstartvalidatie tegen het meegeleverde manifest plaatsvindt.
|
||||
|
||||
<Warning>
|
||||
`OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY=1` is een verouderde break-glass-compatibiliteitsschakelaar voor leesfouten in het register. Gebruik bij voorkeur `plugins registry --refresh` of `openclaw doctor --fix`; de env-fallback is alleen bedoeld voor noodherstel bij het opstarten terwijl de migratie wordt uitgerold.
|
||||
`OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY=1` is een verouderde noodschakelaar voor compatibiliteit bij leesfouten in het register. Geef de voorkeur aan `plugins registry --refresh` of `openclaw doctor --fix`; de env-fallback is alleen bedoeld voor noodherstel bij het opstarten terwijl de migratie wordt uitgerold.
|
||||
</Warning>
|
||||
|
||||
### Marktplaats
|
||||
@ -395,10 +406,10 @@ openclaw plugins marketplace list <source>
|
||||
openclaw plugins marketplace list <source> --json
|
||||
```
|
||||
|
||||
De marktplaatslijst accepteert een lokaal marktplaatspad, een `marketplace.json`-pad, een GitHub-shorthand zoals `owner/repo`, een GitHub-repo-URL of een git-URL. `--json` print het opgeloste bronlabel plus het geparsete marktplaatsmanifest en de Plugin-vermeldingen.
|
||||
De marktplaatslijst accepteert een lokaal marktplaatspad, een `marketplace.json`-pad, een GitHub-verkorte notatie zoals `owner/repo`, een GitHub-repo-URL of een git-URL. `--json` drukt het opgeloste bronlabel af plus het geparseerde marktplaatsmanifest en de Plugin-vermeldingen.
|
||||
|
||||
## Gerelateerd
|
||||
|
||||
- [Plugins bouwen](/nl/plugins/building-plugins)
|
||||
- [CLI-referentie](/nl/cli)
|
||||
- [Community-plugins](/nl/plugins/community)
|
||||
- [Community-Plugins](/nl/plugins/community)
|
||||
|
||||
@ -1,22 +1,22 @@
|
||||
---
|
||||
read_when:
|
||||
- Doctor-migraties toevoegen of wijzigen
|
||||
- Incompatibele configuratiewijzigingen introduceren
|
||||
- doctor-migraties toevoegen of wijzigen
|
||||
- Niet-compatibele configuratiewijzigingen introduceren
|
||||
sidebarTitle: Doctor
|
||||
summary: 'Doctor-commando: gezondheidscontroles, configuratiemigraties en reparatiestappen'
|
||||
title: Doctor
|
||||
summary: 'Doctor-commando: gezondheidscontroles, configuratiemigraties en herstelstappen'
|
||||
title: Dokter
|
||||
x-i18n:
|
||||
generated_at: "2026-05-03T11:09:49Z"
|
||||
generated_at: "2026-05-04T09:36:59Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 20b2cb3c3cd88e01050cb285a08a020603642439bd35668b7414360801fc03ff
|
||||
source_hash: 1bc8615f5e49e8c20785a9dc9779c447fd0d5794c80663d2396b0a20b4187798
|
||||
source_path: gateway/doctor.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
`openclaw doctor` is de reparatie- en migratietool voor OpenClaw. Het herstelt verouderde configuratie/status, controleert de gezondheid en biedt uitvoerbare reparatiestappen.
|
||||
`openclaw doctor` is het reparatie- en migratiehulpmiddel voor OpenClaw. Het herstelt verouderde configuratie/status, controleert de gezondheid en biedt uitvoerbare reparatiestappen.
|
||||
|
||||
## Snel aan de slag
|
||||
## Snelstart
|
||||
|
||||
```bash
|
||||
openclaw doctor
|
||||
@ -30,7 +30,7 @@ openclaw doctor
|
||||
openclaw doctor --yes
|
||||
```
|
||||
|
||||
Accepteer standaardwaarden zonder prompts (inclusief herstart-, service- en sandboxreparatiestappen wanneer van toepassing).
|
||||
Accepteer standaardwaarden zonder prompts (inclusief herstart-/service-/sandboxreparatiestappen wanneer van toepassing).
|
||||
|
||||
</Tab>
|
||||
<Tab title="--repair">
|
||||
@ -38,7 +38,7 @@ openclaw doctor
|
||||
openclaw doctor --repair
|
||||
```
|
||||
|
||||
Pas aanbevolen reparaties toe zonder prompts (reparaties en herstarts waar dat veilig is).
|
||||
Pas aanbevolen reparaties toe zonder prompts (reparaties en herstarts waar veilig).
|
||||
|
||||
</Tab>
|
||||
<Tab title="--repair --force">
|
||||
@ -46,7 +46,7 @@ openclaw doctor
|
||||
openclaw doctor --repair --force
|
||||
```
|
||||
|
||||
Pas ook agressieve reparaties toe (overschrijft aangepaste supervisorconfiguraties).
|
||||
Pas ook ingrijpende reparaties toe (overschrijft aangepaste supervisorconfiguraties).
|
||||
|
||||
</Tab>
|
||||
<Tab title="--non-interactive">
|
||||
@ -54,7 +54,7 @@ openclaw doctor
|
||||
openclaw doctor --non-interactive
|
||||
```
|
||||
|
||||
Voer uit zonder prompts en pas alleen veilige migraties toe (configuratienormalisatie en verplaatsingen van status op schijf). Slaat herstart-, service- en sandboxacties over die menselijke bevestiging vereisen. Migraties van verouderde status worden automatisch uitgevoerd wanneer ze worden gedetecteerd.
|
||||
Voer uit zonder prompts en pas alleen veilige migraties toe (configuratienormalisatie en statusverplaatsingen op schijf). Slaat herstart-/service-/sandboxacties over die menselijke bevestiging vereisen. Verouderde statusmigraties worden automatisch uitgevoerd wanneer ze worden gedetecteerd.
|
||||
|
||||
</Tab>
|
||||
<Tab title="--deep">
|
||||
@ -62,12 +62,12 @@ openclaw doctor
|
||||
openclaw doctor --deep
|
||||
```
|
||||
|
||||
Scan systeemservices op extra gateway-installaties (launchd/systemd/schtasks).
|
||||
Scan systeemservices op extra Gateway-installaties (launchd/systemd/schtasks).
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
Als je wijzigingen wilt beoordelen voordat ze worden weggeschreven, open dan eerst het configuratiebestand:
|
||||
Als je wijzigingen wilt bekijken voordat je schrijft, open dan eerst het configuratiebestand:
|
||||
|
||||
```bash
|
||||
cat ~/.openclaw/openclaw.json
|
||||
@ -78,89 +78,89 @@ cat ~/.openclaw/openclaw.json
|
||||
<AccordionGroup>
|
||||
<Accordion title="Gezondheid, UI en updates">
|
||||
- Optionele pre-flight-update voor git-installaties (alleen interactief).
|
||||
- Controle van UI-protocolactualiteit (bouwt Control UI opnieuw wanneer het protocolschema nieuwer is).
|
||||
- Gezondheidscontrole en prompt om opnieuw te starten.
|
||||
- Statusoverzicht van Skills (geschikt/ontbrekend/geblokkeerd) en Plugin-status.
|
||||
- Controle op versheid van het UI-protocol (bouwt Control UI opnieuw wanneer het protocolschema nieuwer is).
|
||||
- Gezondheidscontrole + herstartprompt.
|
||||
- Skills-statussamenvatting (geschikt/ontbrekend/geblokkeerd) en Plugin-status.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Configuratie en migraties">
|
||||
- Configuratienormalisatie voor verouderde waarden.
|
||||
- Migratie van Talk-configuratie van verouderde platte `talk.*`-velden naar `talk.provider` + `talk.providers.<provider>`.
|
||||
- Talk-configuratiemigratie van verouderde platte `talk.*`-velden naar `talk.provider` + `talk.providers.<provider>`.
|
||||
- Browsermigratiecontroles voor verouderde Chrome-extensieconfiguraties en Chrome MCP-gereedheid.
|
||||
- Waarschuwingen voor OpenCode-provideroverschrijvingen (`models.providers.opencode` / `models.providers.opencode-go`).
|
||||
- Waarschuwingen voor Codex OAuth-shadowing (`models.providers.openai-codex`).
|
||||
- Controle van OAuth TLS-vereisten voor OpenAI Codex OAuth-profielen.
|
||||
- Waarschuwingen voor Plugin-/tool-allowlists wanneer `plugins.allow` beperkend is maar het toolbeleid nog steeds om wildcard- of Plugin-eigen tools vraagt.
|
||||
- Migratie van verouderde status op schijf (sessies/agentmap/WhatsApp-authenticatie).
|
||||
- Waarschuwingen voor Codex OAuth-schaduwconfiguratie (`models.providers.openai-codex`).
|
||||
- Controle op OAuth TLS-vereisten voor OpenAI Codex OAuth-profielen.
|
||||
- Waarschuwingen voor Plugin-/tool-allowlist wanneer `plugins.allow` beperkend is maar het toolbeleid nog steeds om wildcard- of Plugin-eigen tools vraagt.
|
||||
- Migratie van verouderde status op schijf (sessies/agentmap/WhatsApp-auth).
|
||||
- Migratie van verouderde Plugin-manifestcontractsleutels (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders` → `contracts`).
|
||||
- Migratie van verouderde cron-opslag (`jobId`, `schedule.cron`, velden voor levering/payload op topniveau, payload `provider`, eenvoudige `notify: true` webhook-fallbacktaken).
|
||||
- Migratie van verouderde Cron-opslag (`jobId`, `schedule.cron`, top-level delivery-/payloadvelden, payload `provider`, eenvoudige `notify: true` Webhook-fallbacktaken).
|
||||
- Migratie van verouderd agent-runtimebeleid naar `agents.defaults.agentRuntime` en `agents.list[].agentRuntime`.
|
||||
- Opruimen van verouderde Plugin-configuratie wanneer plugins zijn ingeschakeld; wanneer `plugins.enabled=false`, worden verouderde Plugin-verwijzingen behandeld als inerte containmentconfiguratie en behouden.
|
||||
- Opschoning van verouderde Plugin-configuratie wanneer Plugins zijn ingeschakeld; wanneer `plugins.enabled=false`, worden verouderde Plugin-verwijzingen behandeld als inerte containmentconfiguratie en behouden.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Status en integriteit">
|
||||
- Inspectie van sessievergrendelingsbestanden en opruimen van verouderde vergrendelingen.
|
||||
- Reparatie van sessietranscripten voor dubbele prompt-rewrite-branches die zijn aangemaakt door getroffen 2026.4.24-builds.
|
||||
- Detectie van tombstones voor herstart-herstel van vastgelopen subagents, met `--fix`-ondersteuning voor het wissen van verouderde afgebroken herstelvlaggen zodat startup het kind niet als herstart-afgebroken blijft behandelen.
|
||||
- Controles van statusintegriteit en machtigingen (sessies, transcripten, statusmap).
|
||||
- Controles van configuratiebestandsmachtigingen (chmod 600) wanneer lokaal uitgevoerd.
|
||||
- Gezondheid van modelauthenticatie: controleert OAuth-verval, kan bijna vervallen tokens vernieuwen en rapporteert cooldown-/uitgeschakelde statussen van auth-profielen.
|
||||
- Inspectie van sessievergrendelingsbestanden en opschoning van verouderde vergrendelingen.
|
||||
- Reparatie van sessietranscripten voor gedupliceerde prompt-rewrite-branches die zijn gemaakt door getroffen 2026.4.24-builds.
|
||||
- Detectie van tombstones voor vastgelopen subagent-herstartrecovery, met `--fix`-ondersteuning voor het wissen van verouderde afgebroken recovery-vlaggen zodat startup het kind niet blijft behandelen als door herstart afgebroken.
|
||||
- Statusintegriteits- en machtigingencontroles (sessies, transcripten, statusmap).
|
||||
- Machtigingencontroles voor configuratiebestanden (chmod 600) bij lokaal uitvoeren.
|
||||
- Gezondheid van modelauthenticatie: controleert OAuth-verloop, kan bijna verlopende tokens vernieuwen en rapporteert cooldown-/uitgeschakelde statussen van auth-profielen.
|
||||
- Detectie van extra werkruimtemap (`~/openclaw`).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Gateway, services en supervisors">
|
||||
- Reparatie van sandbox-image wanneer sandboxing is ingeschakeld.
|
||||
- Migratie van verouderde services en detectie van extra gateways.
|
||||
- Sandboximagereparatie wanneer sandboxing is ingeschakeld.
|
||||
- Verouderde servicemigratie en detectie van extra Gateways.
|
||||
- Migratie van verouderde Matrix-kanaalstatus (in `--fix`- / `--repair`-modus).
|
||||
- Runtimecontroles van Gateway (service geïnstalleerd maar niet actief; launchd-label in cache).
|
||||
- Waarschuwingen over kanaalstatus (gepeild vanaf de actieve gateway).
|
||||
- Gateway-runtimecontroles (service geïnstalleerd maar niet actief; gecached launchd-label).
|
||||
- Kanaalstatuswaarschuwingen (gepeild vanuit de actieve Gateway).
|
||||
- Audit van supervisorconfiguratie (launchd/systemd/schtasks) met optionele reparatie.
|
||||
- Opschonen van embedded proxy-omgeving voor Gateway-services die shellwaarden voor `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` hebben vastgelegd tijdens installatie of update.
|
||||
- Controles van best practices voor Gateway-runtime (Node versus Bun, paden van versiebeheerders).
|
||||
- Opschoning van embedded-proxyomgeving voor Gateway-services die shellwaarden `HTTP_PROXY` / `HTTPS_PROXY` / `NO_PROXY` hebben vastgelegd tijdens installatie of update.
|
||||
- Best-practicecontroles voor Gateway-runtime (Node versus Bun, paden voor versiebeheerders).
|
||||
- Diagnostiek voor Gateway-poortconflicten (standaard `18789`).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Authenticatie, beveiliging en koppeling">
|
||||
- Beveiligingswaarschuwingen voor open DM-beleid.
|
||||
- Gateway-authenticatiecontroles voor lokale tokenmodus (biedt tokengeneratie aan wanneer er geen tokenbron bestaat; overschrijft geen token-SecretRef-configuraties).
|
||||
- Detectie van problemen met apparaatkoppeling (wachtende eerste koppelingsverzoeken, wachtende rol-/scope-upgrades, verouderde drift in lokale apparaat-token-cache en authenticatiedrift in gekoppelde records).
|
||||
- Gateway-authenticatiecontroles voor lokale tokenmodus (biedt tokengeneratie wanneer er geen tokenbron bestaat; overschrijft geen token-SecretRef-configuraties).
|
||||
- Detectie van problemen met apparaatkoppeling (wachtende eerste koppelverzoeken, wachtende rol-/scope-upgrades, verouderde lokale device-token-cacheafwijking en auth-afwijking in gekoppelde records).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Werkruimte en shell">
|
||||
- Controle van systemd-linger op Linux.
|
||||
- Controle van bestandsgrootte van werkruimte-bootstrap (waarschuwingen voor afkapping/bijna-limiet voor contextbestanden).
|
||||
- Gereedheidscontrole van Skills voor de standaardagent; rapporteert toegestane Skills met ontbrekende bins, env, configuratie of OS-vereisten, en `--fix` kan niet-beschikbare Skills uitschakelen in `skills.entries`.
|
||||
- Statuscontrole en automatische installatie/upgrade van shell completion.
|
||||
- Gereedheidscontrole van embeddingprovider voor geheugenzoekopdrachten (lokaal model, externe API-sleutel of QMD-binary).
|
||||
- Controles van broninstallatie (pnpm-werkruimtemismatch, ontbrekende UI-assets, ontbrekende tsx-binary).
|
||||
- Schrijft bijgewerkte configuratie en wizardmetadata weg.
|
||||
- Controle op systemd linger op Linux.
|
||||
- Controle van bestandsgrootte van werkruimte-bootstrapbestanden (waarschuwingen voor afkapping/bijna-limiet voor contextbestanden).
|
||||
- Skills-gereedheidscontrole voor de standaardagent; rapporteert toegestane Skills met ontbrekende binaries, env, configuratie of OS-vereisten, en `--fix` kan niet-beschikbare Skills uitschakelen in `skills.entries`.
|
||||
- Controle van shellcompletionstatus en automatische installatie/upgrade.
|
||||
- Gereedheidscontrole voor embeddingprovider voor geheugenzoekopdrachten (lokaal model, externe API-sleutel of QMD-binary).
|
||||
- Controles voor broninstallatie (pnpm-werkruimtemismatch, ontbrekende UI-assets, ontbrekende tsx-binary).
|
||||
- Schrijft bijgewerkte configuratie + wizardmetadata.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Dreams UI-backfill en reset
|
||||
|
||||
De Dreams-scène van Control UI bevat acties **Backfill**, **Reset** en **Clear Grounded** voor de grounded dreaming-workflow. Deze acties gebruiken RPC-methoden in Gateway doctor-stijl, maar ze maken **geen** deel uit van reparatie/migratie via de `openclaw doctor` CLI.
|
||||
De Dreams-scene van de Control UI bevat acties **Backfill**, **Reset** en **Clear Grounded** voor de grounded dreaming-workflow. Deze acties gebruiken RPC-methoden in Gateway doctor-stijl, maar ze maken **geen** deel uit van de reparatie/migratie van de `openclaw doctor` CLI.
|
||||
|
||||
Wat ze doen:
|
||||
|
||||
- **Backfill** scant historische `memory/YYYY-MM-DD.md`-bestanden in de actieve werkruimte, voert de grounded REM-dagboekpass uit en schrijft omkeerbare backfill-items naar `DREAMS.md`.
|
||||
- **Reset** verwijdert alleen die gemarkeerde backfill-dagboekitems uit `DREAMS.md`.
|
||||
- **Clear Grounded** verwijdert alleen gefaseerde grounded-only kortetermijnitems die uit historische replay kwamen en nog geen live recall of dagelijkse ondersteuning hebben opgebouwd.
|
||||
- **Clear Grounded** verwijdert alleen staged grounded-only kortetermijnitems die uit historische replay kwamen en nog geen live recall of dagelijkse ondersteuning hebben verzameld.
|
||||
|
||||
Wat ze zelf **niet** doen:
|
||||
Wat ze op zichzelf **niet** doen:
|
||||
|
||||
- ze bewerken `MEMORY.md` niet
|
||||
- ze voeren geen volledige doctor-migraties uit
|
||||
- ze faseren grounded candidates niet automatisch in de live kortetermijn-promotieopslag, tenzij je eerst expliciet het gefaseerde CLI-pad uitvoert
|
||||
- ze stagen grounded candidates niet automatisch naar de live promotieopslag voor de korte termijn, tenzij je eerst expliciet het staged CLI-pad uitvoert
|
||||
|
||||
Als je wilt dat grounded historische replay de normale deep-promotion-lane beïnvloedt, gebruik dan in plaats daarvan de CLI-flow:
|
||||
Als je wilt dat grounded historische replay de normale deep promotion-lane beïnvloedt, gebruik dan in plaats daarvan de CLI-flow:
|
||||
|
||||
```bash
|
||||
openclaw memory rem-backfill --path ./memory --stage-short-term
|
||||
```
|
||||
|
||||
Dat faseert grounded duurzame candidates in de kortetermijn-Dreaming-opslag, terwijl `DREAMS.md` het beoordelingsoppervlak blijft.
|
||||
Dat staget grounded duurzame candidates naar de short-term dreaming-opslag, terwijl `DREAMS.md` het beoordelingsoppervlak blijft.
|
||||
|
||||
## Gedetailleerd gedrag en rationale
|
||||
|
||||
@ -171,11 +171,11 @@ Dat faseert grounded duurzame candidates in de kortetermijn-Dreaming-opslag, ter
|
||||
<Accordion title="1. Configuratienormalisatie">
|
||||
Als de configuratie verouderde waardevormen bevat (bijvoorbeeld `messages.ackReaction` zonder kanaalspecifieke overschrijving), normaliseert doctor deze naar het huidige schema.
|
||||
|
||||
Dat omvat verouderde platte Talk-velden. De huidige openbare Talk-configuratie is `talk.provider` + `talk.providers.<provider>`. Doctor herschrijft oude vormen `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / `talk.apiKey` naar de providermap.
|
||||
Dat omvat verouderde platte Talk-velden. De huidige publieke Talk-configuratie is `talk.provider` + `talk.providers.<provider>`. Doctor herschrijft oude vormen van `talk.voiceId` / `talk.voiceAliases` / `talk.modelId` / `talk.outputFormat` / `talk.apiKey` naar de providermap.
|
||||
|
||||
Doctor waarschuwt ook wanneer `plugins.allow` niet leeg is en toolbeleid
|
||||
wildcard- of Plugin-eigen toolitems gebruikt. `tools.allow: ["*"]` matcht alleen tools
|
||||
van plugins die daadwerkelijk laden; het omzeilt de exclusieve Plugin-
|
||||
van Plugins die daadwerkelijk laden; het omzeilt de exclusieve Plugin-
|
||||
allowlist niet.
|
||||
|
||||
</Accordion>
|
||||
@ -188,7 +188,7 @@ Dat faseert grounded duurzame candidates in de kortetermijn-Dreaming-opslag, ter
|
||||
- De migratie tonen die is toegepast.
|
||||
- `~/.openclaw/openclaw.json` herschrijven met het bijgewerkte schema.
|
||||
|
||||
De Gateway voert ook automatisch doctor-migraties uit bij het opstarten wanneer een verouderd configuratieformaat wordt gedetecteerd, zodat verouderde configuraties zonder handmatige tussenkomst worden gerepareerd. Migraties van Cron-taakopslag worden afgehandeld door `openclaw doctor --fix`.
|
||||
De Gateway voert doctor-migraties ook automatisch uit bij het opstarten wanneer een verouderd configuratieformaat wordt gedetecteerd, zodat verouderde configuraties zonder handmatige tussenkomst worden hersteld. Migraties van Cron-taakopslag worden afgehandeld door `openclaw doctor --fix`.
|
||||
|
||||
Huidige migraties:
|
||||
|
||||
@ -198,7 +198,7 @@ Dat faseert grounded duurzame candidates in de kortetermijn-Dreaming-opslag, ter
|
||||
- `routing.groupChat.mentionPatterns` → `messages.groupChat.mentionPatterns`
|
||||
- geconfigureerde kanaalconfiguraties zonder zichtbaar antwoordbeleid → `messages.groupChat.visibleReplies: "message_tool"`
|
||||
- `routing.queue` → `messages.queue`
|
||||
- `routing.bindings` → top-level `bindings`
|
||||
- `routing.bindings` → `bindings` op topniveau
|
||||
- `routing.agents`/`routing.defaultAgentId` → `agents.list` + `agents.list[].default`
|
||||
- verouderde `talk.voiceId`/`talk.voiceAliases`/`talk.modelId`/`talk.outputFormat`/`talk.apiKey` → `talk.provider` + `talk.providers.<provider>`
|
||||
- `routing.agentToAgent` → `tools.agentToAgent`
|
||||
@ -214,214 +214,214 @@ Dat faseert grounded duurzame candidates in de kortetermijn-Dreaming-opslag, ter
|
||||
- `plugins.entries.voice-call.config.streaming.sttProvider` → `plugins.entries.voice-call.config.streaming.provider`
|
||||
- `plugins.entries.voice-call.config.streaming.openaiApiKey|sttModel|silenceDurationMs|vadThreshold` → `plugins.entries.voice-call.config.streaming.providers.openai.*`
|
||||
- `bindings[].match.accountID` → `bindings[].match.accountId`
|
||||
- Voor kanalen met benoemde `accounts` maar resterende single-accountwaarden op topniveau voor het kanaal: verplaats die accountgebonden waarden naar het gepromoveerde account dat voor dat kanaal is gekozen (`accounts.default` voor de meeste kanalen; Matrix kan een bestaand overeenkomend benoemd/default doel behouden)
|
||||
- Verplaats bij kanalen met benoemde `accounts` maar nog aanwezige kanaalwaarden op topniveau voor één account die accountgebonden waarden naar het gepromoveerde account dat voor dat kanaal is gekozen (`accounts.default` voor de meeste kanalen; Matrix kan een bestaand overeenkomend benoemd/standaard doel behouden)
|
||||
- `identity` → `agents.list[].identity`
|
||||
- `agent.*` → `agents.defaults` + `tools.*` (tools/elevated/exec/sandbox/subagents)
|
||||
- `agent.model`/`allowedModels`/`modelAliases`/`modelFallbacks`/`imageModelFallbacks` → `agents.defaults.models` + `agents.defaults.model.primary/fallbacks` + `agents.defaults.imageModel.primary/fallbacks`
|
||||
- verwijder `agents.defaults.llm`; gebruik `models.providers.<id>.timeoutSeconds` voor trage provider-/model-time-outs
|
||||
- `browser.ssrfPolicy.allowPrivateNetwork` → `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork`
|
||||
- `browser.profiles.*.driver: "extension"` → `"existing-session"`
|
||||
- verwijder `browser.relayBindHost` (verouderde extension-relayinstelling)
|
||||
- verouderde `models.providers.*.api: "openai"` → `"openai-completions"` (Gateway-start slaat ook providers over waarvan `api` is ingesteld op een toekomstige of onbekende enumwaarde, in plaats van gesloten te falen)
|
||||
- verwijder `browser.relayBindHost` (verouderde instelling voor de extensierelay)
|
||||
- verouderde `models.providers.*.api: "openai"` → `"openai-completions"` (Gateway-opstart slaat ook providers over waarvan `api` is ingesteld op een toekomstige of onbekende enumwaarde in plaats van gesloten te falen)
|
||||
|
||||
Doctor-waarschuwingen bevatten ook account-default-begeleiding voor multi-accountkanalen:
|
||||
Doctor-waarschuwingen bevatten ook richtlijnen voor standaardaccounts bij kanalen met meerdere accounts:
|
||||
|
||||
- Als twee of meer `channels.<channel>.accounts`-vermeldingen zijn geconfigureerd zonder `channels.<channel>.defaultAccount` of `accounts.default`, waarschuwt doctor dat fallback-routering een onverwacht account kan kiezen.
|
||||
- Als twee of meer `channels.<channel>.accounts`-vermeldingen zijn geconfigureerd zonder `channels.<channel>.defaultAccount` of `accounts.default`, waarschuwt doctor dat fallbackroutering een onverwacht account kan kiezen.
|
||||
- Als `channels.<channel>.defaultAccount` is ingesteld op een onbekende account-ID, waarschuwt doctor en vermeldt hij de geconfigureerde account-ID's.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="2b. OpenCode provider overrides">
|
||||
Als je `models.providers.opencode`, `opencode-zen` of `opencode-go` handmatig hebt toegevoegd, overschrijft dit de ingebouwde OpenCode-catalogus van `@mariozechner/pi-ai`. Daardoor kunnen modellen naar de verkeerde API worden geforceerd of kunnen kosten op nul worden gezet. Doctor waarschuwt zodat je de overschrijving kunt verwijderen en API-routering + kosten per model kunt herstellen.
|
||||
<Accordion title="2b. OpenCode-provideroverschrijvingen">
|
||||
Als je `models.providers.opencode`, `opencode-zen` of `opencode-go` handmatig hebt toegevoegd, overschrijft dit de ingebouwde OpenCode-catalogus uit `@mariozechner/pi-ai`. Daardoor kunnen modellen op de verkeerde API worden gedwongen of kunnen kosten op nul worden gezet. Doctor waarschuwt zodat je de overschrijving kunt verwijderen en API-routering + kosten per model kunt herstellen.
|
||||
</Accordion>
|
||||
<Accordion title="2c. Browsermigratie en gereedheid voor Chrome MCP">
|
||||
Als je browserconfiguratie nog naar het verwijderde Chrome-extensionpad verwijst, normaliseert doctor dit naar het huidige host-lokale Chrome MCP-attachmodel:
|
||||
Als je browserconfiguratie nog steeds naar het verwijderde Chrome-extensiepad verwijst, normaliseert doctor dit naar het huidige host-lokale Chrome MCP-attach-model:
|
||||
|
||||
- `browser.profiles.*.driver: "extension"` wordt `"existing-session"`
|
||||
- `browser.relayBindHost` wordt verwijderd
|
||||
|
||||
Doctor controleert ook het host-lokale Chrome MCP-pad wanneer je `defaultProfile: "user"` of een geconfigureerd `existing-session`-profiel gebruikt:
|
||||
|
||||
- controleert of Google Chrome op dezelfde host is geïnstalleerd voor default auto-connect-profielen
|
||||
- controleert de gedetecteerde Chrome-versie en waarschuwt wanneer deze lager is dan Chrome 144
|
||||
- herinnert je eraan remote debugging in te schakelen op de inspectiepagina van de browser (bijvoorbeeld `chrome://inspect/#remote-debugging`, `brave://inspect/#remote-debugging` of `edge://inspect/#remote-debugging`)
|
||||
- controleert of Google Chrome op dezelfde host is geïnstalleerd voor standaardprofielen met automatisch verbinden
|
||||
- controleert de gedetecteerde Chrome-versie en waarschuwt wanneer die lager is dan Chrome 144
|
||||
- herinnert je eraan debuggen op afstand in te schakelen op de inspectiepagina van de browser (bijvoorbeeld `chrome://inspect/#remote-debugging`, `brave://inspect/#remote-debugging` of `edge://inspect/#remote-debugging`)
|
||||
|
||||
Doctor kan de Chrome-instelling niet voor je inschakelen. Host-lokale Chrome MCP vereist nog steeds:
|
||||
Doctor kan de instelling aan Chrome-zijde niet voor je inschakelen. Host-lokale Chrome MCP vereist nog steeds:
|
||||
|
||||
- een Chromium-gebaseerde browser 144+ op de gateway-/node-host
|
||||
- de browser die lokaal draait
|
||||
- remote debugging ingeschakeld in die browser
|
||||
- goedkeuring van de eerste attach-toestemmingsprompt in de browser
|
||||
- een op Chromium gebaseerde browser 144+ op de Gateway/Node-host
|
||||
- de browser lokaal actief
|
||||
- debuggen op afstand ingeschakeld in die browser
|
||||
- goedkeuring van de eerste toestemmingsprompt voor attach in de browser
|
||||
|
||||
Gereedheid gaat hier alleen over lokale attach-vereisten. Existing-session behoudt de huidige routelimieten van Chrome MCP; geavanceerde routes zoals `responsebody`, PDF-export, downloadonderschepping en batchacties vereisen nog steeds een beheerde browser of raw CDP-profiel.
|
||||
|
||||
Deze controle is **niet** van toepassing op Docker-, sandbox-, remote-browser- of andere headless flows. Die blijven raw CDP gebruiken.
|
||||
Deze controle is **niet** van toepassing op Docker-, sandbox-, remote-browser- of andere headless-stromen. Die blijven raw CDP gebruiken.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="2d. OAuth TLS-vereisten">
|
||||
Wanneer een OpenAI Codex OAuth-profiel is geconfigureerd, test doctor het OpenAI-autorisatie-eindpunt om te verifiëren dat de lokale Node/OpenSSL TLS-stack de certificaatketen kan valideren. Als de test mislukt met een certificaatfout (bijvoorbeeld `UNABLE_TO_GET_ISSUER_CERT_LOCALLY`, verlopen certificaat of zelfondertekend certificaat), toont doctor platformspecifieke herstelrichtlijnen. Op macOS met een Homebrew Node is de oplossing meestal `brew postinstall ca-certificates`. Met `--deep` wordt de test uitgevoerd, zelfs als de gateway gezond is.
|
||||
Wanneer een OpenAI Codex OAuth-profiel is geconfigureerd, peilt doctor het OpenAI-autorisatie-eindpunt om te verifiëren dat de lokale Node/OpenSSL TLS-stack de certificaatketen kan valideren. Als de peiling faalt met een certificaatfout (bijvoorbeeld `UNABLE_TO_GET_ISSUER_CERT_LOCALLY`, verlopen certificaat of zelfondertekend certificaat), geeft doctor platformspecifieke herstelrichtlijnen weer. Op macOS met een Homebrew Node is de oplossing meestal `brew postinstall ca-certificates`. Met `--deep` wordt de peiling uitgevoerd, zelfs als de Gateway gezond is.
|
||||
</Accordion>
|
||||
<Accordion title="2e. Codex OAuth-provideroverschrijvingen">
|
||||
Als je eerder verouderde OpenAI-transportinstellingen hebt toegevoegd onder `models.providers.openai-codex`, kunnen die het ingebouwde Codex OAuth-providerpad overschaduwen dat nieuwere releases automatisch gebruiken. Doctor waarschuwt wanneer hij die oude transportinstellingen naast Codex OAuth ziet, zodat je de verouderde transportoverschrijving kunt verwijderen of herschrijven en het ingebouwde routerings-/fallbackgedrag terugkrijgt. Aangepaste proxy's en alleen-headeroverschrijvingen worden nog steeds ondersteund en activeren deze waarschuwing niet.
|
||||
Als je eerder verouderde OpenAI-transportinstellingen onder `models.providers.openai-codex` hebt toegevoegd, kunnen die het ingebouwde Codex OAuth-providerpad overschaduwen dat nieuwere releases automatisch gebruiken. Doctor waarschuwt wanneer hij die oude transportinstellingen naast Codex OAuth ziet, zodat je de verouderde transportoverschrijving kunt verwijderen of herschrijven en het ingebouwde routerings-/fallbackgedrag terugkrijgt. Aangepaste proxy's en overschrijvingen die alleen headers aanpassen, worden nog steeds ondersteund en activeren deze waarschuwing niet.
|
||||
</Accordion>
|
||||
<Accordion title="2f. Codex Plugin-routewaarschuwingen">
|
||||
Wanneer de gebundelde Codex Plugin is ingeschakeld, controleert doctor ook of primaire modelrefs van `openai-codex/*` nog steeds via de default PI-runner worden opgelost. Die combinatie is geldig wanneer je Codex OAuth-/abonnementsauthenticatie via PI wilt, maar is gemakkelijk te verwarren met de native Codex app-server-harness. Doctor waarschuwt en verwijst naar de expliciete app-server-vorm: `openai/*` plus `agentRuntime.id: "codex"` of `OPENCLAW_AGENT_RUNTIME=codex`.
|
||||
<Accordion title="2f. Codex-pluginroutewaarschuwingen">
|
||||
Wanneer de meegeleverde Codex-plugin is ingeschakeld, controleert doctor ook of primaire modelverwijzingen van `openai-codex/*` nog steeds via de standaard PI-runner worden opgelost. Die combinatie is geldig wanneer je Codex OAuth-/abonnementsauthenticatie via PI wilt, maar is makkelijk te verwarren met het native Codex-app-serverharnas. Doctor waarschuwt en wijst naar de expliciete app-server-vorm: `openai/*` plus `agentRuntime.id: "codex"` of `OPENCLAW_AGENT_RUNTIME=codex`.
|
||||
|
||||
Doctor repareert dit niet automatisch omdat beide routes geldig zijn:
|
||||
Doctor herstelt dit niet automatisch, omdat beide routes geldig zijn:
|
||||
|
||||
- `openai-codex/*` + PI betekent "gebruik Codex OAuth-/abonnementsauthenticatie via de normale OpenClaw-runner."
|
||||
- `openai/*` + `agentRuntime.id: "codex"` betekent "voer de ingebedde beurt uit via native Codex app-server."
|
||||
- `openai/*` + `agentRuntime.id: "codex"` betekent "voer de ingebedde interactiebeurt uit via de native Codex-app-server."
|
||||
- `/codex ...` betekent "beheer of bind een native Codex-gesprek vanuit chat."
|
||||
- `/acp ...` of `runtime: "acp"` betekent "gebruik de externe ACP/acpx-adapter."
|
||||
|
||||
Als de waarschuwing verschijnt, kies je de bedoelde route en bewerk je de configuratie handmatig. Laat de waarschuwing ongewijzigd wanneer PI Codex OAuth de bedoeling is.
|
||||
Als de waarschuwing verschijnt, kies dan de route die je bedoelde en bewerk de configuratie handmatig. Laat de waarschuwing ongewijzigd wanneer PI Codex OAuth bewust is.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="3. Verouderde statusmigraties (schijfindeling)">
|
||||
Doctor kan oudere on-disk indelingen migreren naar de huidige structuur:
|
||||
Doctor kan oudere schijfindelingen migreren naar de huidige structuur:
|
||||
|
||||
- Sessiesopslag + transcripties:
|
||||
- Sessieopslag + transcripties:
|
||||
- van `~/.openclaw/sessions/` naar `~/.openclaw/agents/<agentId>/sessions/`
|
||||
- Agentmap:
|
||||
- van `~/.openclaw/agent/` naar `~/.openclaw/agents/<agentId>/agent/`
|
||||
- WhatsApp-authenticatiestatus (Baileys):
|
||||
- van verouderde `~/.openclaw/credentials/*.json` (behalve `oauth.json`)
|
||||
- naar `~/.openclaw/credentials/whatsapp/<accountId>/...` (default account-ID: `default`)
|
||||
- naar `~/.openclaw/credentials/whatsapp/<accountId>/...` (standaard account-ID: `default`)
|
||||
|
||||
Deze migraties zijn best-effort en idempotent; doctor geeft waarschuwingen wanneer hij verouderde mappen als back-up achterlaat. De Gateway/CLI migreert de verouderde sessies + agentmap ook automatisch bij het opstarten, zodat geschiedenis/authenticatie/modellen in het per-agentpad terechtkomen zonder handmatige doctor-run. WhatsApp-authenticatie wordt bewust alleen via `openclaw doctor` gemigreerd. Normalisatie van talk-provider/provider-map vergelijkt nu op structurele gelijkheid, zodat verschillen die alleen uit sleutelvolgorde bestaan niet langer herhaaldelijk no-op `doctor --fix`-wijzigingen activeren.
|
||||
Deze migraties zijn best-effort en idempotent; doctor geeft waarschuwingen wanneer hij verouderde mappen als back-ups achterlaat. De Gateway/CLI migreert de verouderde sessies + agentmap ook automatisch bij het opstarten, zodat geschiedenis/authenticatie/modellen in het pad per agent terechtkomen zonder handmatige doctor-run. Normalisatie van Talk-provider/providermap vergelijkt nu op structurele gelijkheid, zodat diffs die alleen de sleutelvolgorde betreffen niet langer herhaalde no-op-wijzigingen door `doctor --fix` veroorzaken.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="3a. Verouderde Plugin-manifestmigraties">
|
||||
Doctor scant alle geïnstalleerde Plugin-manifesten op verouderde capability-sleutels op topniveau (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders`). Wanneer ze worden gevonden, biedt hij aan ze naar het `contracts`-object te verplaatsen en het manifestbestand in-place te herschrijven. Deze migratie is idempotent; als de `contracts`-sleutel al dezelfde waarden heeft, wordt de verouderde sleutel verwijderd zonder de data te dupliceren.
|
||||
<Accordion title="3a. Verouderde pluginmanifestmigraties">
|
||||
Doctor scant alle geïnstalleerde pluginmanifesten op verouderde capability-sleutels op topniveau (`speechProviders`, `realtimeTranscriptionProviders`, `realtimeVoiceProviders`, `mediaUnderstandingProviders`, `imageGenerationProviders`, `videoGenerationProviders`, `webFetchProviders`, `webSearchProviders`). Wanneer die worden gevonden, biedt hij aan ze naar het `contracts`-object te verplaatsen en het manifestbestand ter plaatse te herschrijven. Deze migratie is idempotent; als de `contracts`-sleutel al dezelfde waarden heeft, wordt de verouderde sleutel verwijderd zonder de gegevens te dupliceren.
|
||||
</Accordion>
|
||||
<Accordion title="3b. Verouderde Cron-opslagmigraties">
|
||||
Doctor controleert ook de cron-jobopslag (`~/.openclaw/cron/jobs.json` standaard, of `cron.store` wanneer overschreven) op oude jobvormen die de scheduler nog steeds accepteert voor compatibiliteit.
|
||||
Doctor controleert ook de Cron-taakopslag (`~/.openclaw/cron/jobs.json` standaard, of `cron.store` wanneer overschreven) op oude taakvormen die de scheduler nog steeds accepteert voor compatibiliteit.
|
||||
|
||||
Huidige cron-opruimingen omvatten:
|
||||
Huidige Cron-opschoningen omvatten:
|
||||
|
||||
- `jobId` → `id`
|
||||
- `schedule.cron` → `schedule.expr`
|
||||
- payloadvelden op topniveau (`message`, `model`, `thinking`, ...) → `payload`
|
||||
- leveringsvelden op topniveau (`deliver`, `channel`, `to`, `provider`, ...) → `delivery`
|
||||
- payload-`provider`-leveringsaliassen → expliciete `delivery.channel`
|
||||
- eenvoudige verouderde `notify: true` webhook-fallbackjobs → expliciete `delivery.mode="webhook"` met `delivery.to=cron.webhook`
|
||||
- bezorgingsvelden op topniveau (`deliver`, `channel`, `to`, `provider`, ...) → `delivery`
|
||||
- bezorgingsaliassen voor payload-`provider` → expliciete `delivery.channel`
|
||||
- eenvoudige verouderde `notify: true` Webhook-fallbacktaken → expliciete `delivery.mode="webhook"` met `delivery.to=cron.webhook`
|
||||
|
||||
Doctor migreert `notify: true`-jobs alleen automatisch wanneer dat kan zonder gedrag te wijzigen. Als een job verouderde notify-fallback combineert met een bestaande niet-webhook-leveringsmodus, waarschuwt doctor en laat hij die job staan voor handmatige review.
|
||||
Doctor migreert `notify: true`-taken alleen automatisch wanneer dat kan zonder gedrag te veranderen. Als een taak verouderde notify-fallback combineert met een bestaande niet-Webhook-bezorgmodus, waarschuwt doctor en laat hij die taak over voor handmatige beoordeling.
|
||||
|
||||
Op Linux waarschuwt doctor ook wanneer de crontab van de gebruiker nog steeds het verouderde `~/.openclaw/bin/ensure-whatsapp.sh` aanroept. Dat host-lokale script wordt niet onderhouden door de huidige OpenClaw en kan valse `Gateway inactive`-berichten schrijven naar `~/.openclaw/logs/whatsapp-health.log` wanneer cron de systemd-gebruikersbus niet kan bereiken. Verwijder de verouderde crontabvermelding met `crontab -e`; gebruik `openclaw channels status --probe`, `openclaw doctor` en `openclaw gateway status` voor huidige gezondheidscontroles.
|
||||
Op Linux waarschuwt doctor ook wanneer de crontab van de gebruiker nog steeds verouderde `~/.openclaw/bin/ensure-whatsapp.sh` aanroept. Dat host-lokale script wordt niet onderhouden door de huidige OpenClaw en kan valse `Gateway inactive`-berichten schrijven naar `~/.openclaw/logs/whatsapp-health.log` wanneer Cron de systemd-gebruikersbus niet kan bereiken. Verwijder de verouderde crontab-vermelding met `crontab -e`; gebruik `openclaw channels status --probe`, `openclaw doctor` en `openclaw gateway status` voor huidige gezondheidscontroles.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="3c. Opschoning van sessievergrendelingen">
|
||||
Doctor scant elke sessiemap van agents op verouderde schrijfvergrendelingsbestanden — bestanden die achterbleven toen een sessie abnormaal werd afgesloten. Voor elk gevonden vergrendelingsbestand rapporteert het: het pad, de PID, of de PID nog actief is, de leeftijd van de vergrendeling en of deze als verouderd wordt beschouwd (dode PID of ouder dan 30 minuten). In `--fix`- / `--repair`-modus verwijdert het verouderde vergrendelingsbestanden automatisch; anders drukt het een opmerking af en instrueert het je om opnieuw uit te voeren met `--fix`.
|
||||
Doctor scant elke directory voor agentsessies op verouderde write-lock-bestanden — bestanden die zijn achtergelaten toen een sessie abnormaal werd afgesloten. Voor elk gevonden lockbestand rapporteert het: het pad, PID, of de PID nog leeft, de leeftijd van de lock en of deze als verouderd wordt beschouwd (dode PID of ouder dan 30 minuten). In de modus `--fix` / `--repair` verwijdert het automatisch verouderde lockbestanden; anders drukt het een opmerking af en instrueert het je om opnieuw uit te voeren met `--fix`.
|
||||
</Accordion>
|
||||
<Accordion title="3d. Herstel van transcript-branches voor sessies">
|
||||
Doctor scant JSONL-bestanden van agentsessies op de gedupliceerde branch-vorm die is gemaakt door de prompttranscript-herschrijffout van 2026.4.24: een verlaten gebruikersbeurt met interne runtimecontext van OpenClaw plus een actieve sibling met dezelfde zichtbare gebruikersprompt. In `--fix`- / `--repair`-modus maakt doctor naast het origineel een back-up van elk getroffen bestand en herschrijft het het transcript naar de actieve branch, zodat Gateway-geschiedenis en geheugenlezers geen dubbele beurten meer zien.
|
||||
<Accordion title="3d. Reparatie van sessietranscript-branch">
|
||||
Doctor scant JSONL-bestanden van agentsessies op de gedupliceerde branch-vorm die is gemaakt door de bug in de prompttranscriptherschrijving van 2026.4.24: een verlaten gebruikersbeurt met interne runtimecontext van OpenClaw plus een actieve sibling met dezelfde zichtbare gebruikersprompt. In de modus `--fix` / `--repair` maakt doctor naast het origineel een back-up van elk getroffen bestand en herschrijft het transcript naar de actieve branch, zodat Gateway-geschiedenis en geheugenlezers geen dubbele beurten meer zien.
|
||||
</Accordion>
|
||||
<Accordion title="4. Integriteitscontroles van status (sessiepersistentie, routering en veiligheid)">
|
||||
De statusmap is de operationele hersenstam. Als die verdwijnt, verlies je sessies, referenties, logs en config (tenzij je elders back-ups hebt).
|
||||
<Accordion title="4. Controles op statusintegriteit (sessiepersistentie, routering en veiligheid)">
|
||||
De statusdirectory is de operationele hersenstam. Als die verdwijnt, verlies je sessies, referenties, logs en configuratie (tenzij je elders back-ups hebt).
|
||||
|
||||
Doctor controleert:
|
||||
|
||||
- **Statusmap ontbreekt**: waarschuwt voor catastrofaal statusverlies, vraagt om de map opnieuw te maken en herinnert je eraan dat ontbrekende gegevens niet kunnen worden hersteld.
|
||||
- **Rechten van statusmap**: verifieert schrijfbaarheid; biedt aan om rechten te herstellen (en geeft een `chown`-hint wanneer een eigenaar-/groepmismatch wordt gedetecteerd).
|
||||
- **macOS-cloudgesynchroniseerde statusmap**: waarschuwt wanneer status wordt opgelost onder iCloud Drive (`~/Library/Mobile Documents/com~apple~CloudDocs/...`) of `~/Library/CloudStorage/...`, omdat door synchronisatie ondersteunde paden tragere I/O en vergrendelings-/synchronisatieraces kunnen veroorzaken.
|
||||
- **Linux SD- of eMMC-statusmap**: waarschuwt wanneer status wordt opgelost naar een `mmcblk*`-mountbron, omdat door SD of eMMC ondersteunde willekeurige I/O langzamer kan zijn en sneller kan slijten bij sessie- en referentieschrijfbewerkingen.
|
||||
- **Sessiemappen ontbreken**: `sessions/` en de sessieopslagmap zijn vereist om geschiedenis te bewaren en `ENOENT`-crashes te voorkomen.
|
||||
- **Statusdirectory ontbreekt**: waarschuwt voor catastrofaal statusverlies, vraagt om de directory opnieuw te maken en herinnert je eraan dat ontbrekende gegevens niet kunnen worden hersteld.
|
||||
- **Machtigingen voor statusdirectory**: verifieert schrijfbaarheid; biedt aan machtigingen te repareren (en geeft een `chown`-hint wanneer een mismatch in eigenaar/groep wordt gedetecteerd).
|
||||
- **macOS-cloudgesynchroniseerde statusdirectory**: waarschuwt wanneer status wordt opgelost onder iCloud Drive (`~/Library/Mobile Documents/com~apple~CloudDocs/...`) of `~/Library/CloudStorage/...`, omdat door synchronisatie ondersteunde paden tragere I/O en lock-/synchronisatieraces kunnen veroorzaken.
|
||||
- **Linux SD- of eMMC-statusdirectory**: waarschuwt wanneer status wordt opgelost naar een `mmcblk*`-mountbron, omdat willekeurige I/O op SD of eMMC trager kan zijn en sneller kan slijten bij sessie- en referentiewrites.
|
||||
- **Sessiedirectory's ontbreken**: `sessions/` en de sessieopslagdirectory zijn vereist om geschiedenis te bewaren en `ENOENT`-crashes te voorkomen.
|
||||
- **Transcriptmismatch**: waarschuwt wanneer recente sessie-items ontbrekende transcriptbestanden hebben.
|
||||
- **Hoofdsessie "1-regelige JSONL"**: markeert wanneer het hoofdtranscript slechts één regel heeft (geschiedenis stapelt zich niet op).
|
||||
- **Meerdere statusmappen**: waarschuwt wanneer meerdere `~/.openclaw`-mappen bestaan in verschillende home-directories of wanneer `OPENCLAW_STATE_DIR` ergens anders naar verwijst (geschiedenis kan over installaties worden verdeeld).
|
||||
- **Herinnering voor externe modus**: als `gateway.mode=remote`, herinnert doctor je eraan het op de externe host uit te voeren (de status bevindt zich daar).
|
||||
- **Rechten van configbestand**: waarschuwt als `~/.openclaw/openclaw.json` leesbaar is voor groep/wereld en biedt aan dit aan te scherpen naar `600`.
|
||||
- **Meerdere statusdirectory's**: waarschuwt wanneer meerdere `~/.openclaw`-mappen bestaan in verschillende homedirectory's of wanneer `OPENCLAW_STATE_DIR` ergens anders naar verwijst (geschiedenis kan over installaties worden gesplitst).
|
||||
- **Herinnering voor externe modus**: als `gateway.mode=remote`, herinnert doctor je eraan om het op de externe host uit te voeren (de status leeft daar).
|
||||
- **Machtigingen voor configuratiebestand**: waarschuwt als `~/.openclaw/openclaw.json` leesbaar is voor groep/wereld en biedt aan dit aan te scherpen naar `600`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="5. Gezondheid van modelauthenticatie (OAuth-verloop)">
|
||||
Doctor inspecteert OAuth-profielen in de auth-opslag, waarschuwt wanneer tokens bijna verlopen of verlopen zijn, en kan ze vernieuwen wanneer dat veilig is. Als het Anthropic OAuth-/tokenprofiel verouderd is, suggereert het een Anthropic API-sleutel of het Anthropic setup-tokenpad. Vernieuwingsprompts verschijnen alleen bij interactief uitvoeren (TTY); `--non-interactive` slaat vernieuwingspogingen over.
|
||||
Doctor inspecteert OAuth-profielen in de auth-opslag, waarschuwt wanneer tokens bijna verlopen of verlopen zijn, en kan ze vernieuwen wanneer dat veilig is. Als het Anthropic OAuth-/tokenprofiel verouderd is, stelt het een Anthropic-API-sleutel of het Anthropic setup-tokenpad voor. Vernieuwingsprompts verschijnen alleen wanneer interactief wordt uitgevoerd (TTY); `--non-interactive` slaat vernieuwingspogingen over.
|
||||
|
||||
Wanneer een OAuth-vernieuwing permanent mislukt (bijvoorbeeld `refresh_token_reused`, `invalid_grant`, of een provider die je vraagt opnieuw in te loggen), rapporteert doctor dat opnieuw authenticeren vereist is en drukt het de exacte opdracht `openclaw models auth login --provider ...` af die je moet uitvoeren.
|
||||
Wanneer een OAuth-vernieuwing permanent mislukt (bijvoorbeeld `refresh_token_reused`, `invalid_grant`, of een provider die je vertelt opnieuw in te loggen), rapporteert doctor dat herauthenticatie vereist is en drukt het de exacte opdracht `openclaw models auth login --provider ...` af om uit te voeren.
|
||||
|
||||
Doctor rapporteert ook auth-profielen die tijdelijk onbruikbaar zijn door:
|
||||
|
||||
- korte afkoelperiodes (ratelimieten/time-outs/auth-fouten)
|
||||
- langere uitschakelingen (facturerings-/tegoedfouten)
|
||||
- korte cooldowns (rate limits/time-outs/authenticatiefouten)
|
||||
- langere uitschakelingen (facturerings-/kredietfouten)
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="6. Validatie van hooks-model">
|
||||
Als `hooks.gmail.model` is ingesteld, valideert doctor de modelreferentie tegen de catalogus en allowlist en waarschuwt het wanneer deze niet kan worden opgelost of niet is toegestaan.
|
||||
<Accordion title="6. Validatie van Hooks-model">
|
||||
Als `hooks.gmail.model` is ingesteld, valideert doctor de modelverwijzing tegen de catalogus en allowlist en waarschuwt het wanneer deze niet kan worden opgelost of niet is toegestaan.
|
||||
</Accordion>
|
||||
<Accordion title="7. Herstel van sandbox-image">
|
||||
<Accordion title="7. Reparatie van sandbox-image">
|
||||
Wanneer sandboxing is ingeschakeld, controleert doctor Docker-images en biedt het aan om te bouwen of over te schakelen naar legacy-namen als de huidige image ontbreekt.
|
||||
</Accordion>
|
||||
<Accordion title="7b. Opschoning van Plugin-installatie">
|
||||
Doctor verwijdert legacy door OpenClaw gegenereerde stagingstatus voor Plugin-afhankelijkheden in `openclaw doctor --fix`- / `openclaw doctor --repair`-modus. Dit dekt verouderde gegenereerde afhankelijkheidsroots, oude install-stage-mappen en pakketlokale resten uit eerdere reparatiecode voor afhankelijkheden van gebundelde plugins.
|
||||
Doctor verwijdert legacy door OpenClaw gegenereerde stagingstatus voor Plugin-afhankelijkheden in de modus `openclaw doctor --fix` / `openclaw doctor --repair`. Dit dekt verouderde gegenereerde dependency-roots, oude install-stage-directory's, package-lokale resten van eerdere reparatiecode voor afhankelijkheden van gebundelde Plugins, en verweesde of herstelde beheerde npm-kopieën van gebundelde `@openclaw/*` Plugins die het huidige gebundelde manifest kunnen overschaduwen.
|
||||
|
||||
Doctor kan ook geconfigureerde downloadbare plugins opnieuw installeren wanneer de config ernaar verwijst maar het lokale pluginregister ze niet kan vinden. Voor de externalisatie van gebundelde plugins in 2026.5.2 installeert doctor automatisch downloadbare plugins die de bestaande config al gebruikt en vertrouwt het daarna op `meta.lastTouchedVersion` om die releasepass slechts één keer uit te voeren. Gateway-opstart en config-herladen voeren geen pakketmanagers uit; plugininstallaties blijven expliciet doctor-/install-/updatewerk.
|
||||
Doctor kan ook geconfigureerde downloadbare Plugins opnieuw installeren wanneer de configuratie ernaar verwijst maar het lokale Plugin-register ze niet kan vinden. Voor de externalisatie van gebundelde Plugins in 2026.5.2 installeert doctor automatisch downloadbare Plugins die de bestaande configuratie al gebruikt en vertrouwt vervolgens op `meta.lastTouchedVersion` om die releasepass slechts één keer uit te voeren. Gateway-opstart en config-herladen voeren geen package managers uit; Plugin-installaties blijven expliciet doctor-/install-/updatewerk.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="8. Migraties en opschoonhints voor Gateway-service">
|
||||
Doctor detecteert legacy Gateway-services (launchd/systemd/schtasks) en biedt aan deze te verwijderen en de OpenClaw-service te installeren met de huidige Gateway-poort. Het kan ook scannen op extra Gateway-achtige services en opschoonhints afdrukken. Profielbenoemde OpenClaw Gateway-services worden als eersteklas beschouwd en worden niet als "extra" gemarkeerd.
|
||||
<Accordion title="8. Gateway-servicemigraties en opschoonhints">
|
||||
Doctor detecteert legacy Gateway-services (launchd/systemd/schtasks) en biedt aan ze te verwijderen en de OpenClaw-service te installeren met de huidige Gateway-poort. Het kan ook scannen op extra Gateway-achtige services en opschoonhints afdrukken. Profielbenoemde OpenClaw Gateway-services worden als eersteklas beschouwd en niet als "extra" gemarkeerd.
|
||||
|
||||
Op Linux installeert doctor niet automatisch een tweede service op gebruikersniveau als de Gateway-service op gebruikersniveau ontbreekt maar er een OpenClaw Gateway-service op systeemniveau bestaat. Inspecteer met `openclaw gateway status --deep` of `openclaw doctor --deep`, verwijder daarna het duplicaat of stel `OPENCLAW_SERVICE_REPAIR_POLICY=external` in wanneer een systeem-supervisor de levenscyclus van de Gateway beheert.
|
||||
Op Linux installeert doctor niet automatisch een tweede service op gebruikersniveau als de Gateway-service op gebruikersniveau ontbreekt maar er een OpenClaw Gateway-service op systeemniveau bestaat. Inspecteer met `openclaw gateway status --deep` of `openclaw doctor --deep`, verwijder daarna het duplicaat of stel `OPENCLAW_SERVICE_REPAIR_POLICY=external` in wanneer een systeemsupervisor de Gateway-levenscyclus beheert.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="8b. Startup Matrix-migratie">
|
||||
Wanneer een Matrix-kanaalaccount een openstaande of uitvoerbare legacy-statusmigratie heeft, maakt doctor (in `--fix`- / `--repair`-modus) een pre-migratie-snapshot en voert het daarna de best-effort migratiestappen uit: legacy Matrix-statusmigratie en legacy voorbereiding van versleutelde status. Beide stappen zijn niet-fataal; fouten worden gelogd en het opstarten gaat door. In alleen-lezen-modus (`openclaw doctor` zonder `--fix`) wordt deze controle volledig overgeslagen.
|
||||
Wanneer een Matrix-kanaalaccount een in behandeling zijnde of uitvoerbare legacy-statusmigratie heeft, maakt doctor (in de modus `--fix` / `--repair`) een pre-migratiesnapshot en voert daarna de best-effort migratiestappen uit: legacy Matrix-statusmigratie en voorbereiding van legacy versleutelde status. Beide stappen zijn niet-fataal; fouten worden gelogd en het opstarten gaat door. In alleen-lezen-modus (`openclaw doctor` zonder `--fix`) wordt deze controle volledig overgeslagen.
|
||||
</Accordion>
|
||||
<Accordion title="8c. Apparaatkoppeling en auth-drift">
|
||||
Doctor inspecteert nu de status van apparaatkoppeling als onderdeel van de normale gezondheidspass.
|
||||
Doctor inspecteert nu de apparaatkoppelingsstatus als onderdeel van de normale gezondheidscontrole.
|
||||
|
||||
Wat het rapporteert:
|
||||
|
||||
- openstaande eerste koppelingsverzoeken
|
||||
- openstaande rolupgrades voor al gekoppelde apparaten
|
||||
- openstaande scope-upgrades voor al gekoppelde apparaten
|
||||
- herstel van public-key-mismatches waarbij de apparaat-id nog steeds overeenkomt maar de apparaatidentiteit niet meer overeenkomt met de goedgekeurde record
|
||||
- reparaties voor publieke-sleutelmismatches waarbij de apparaat-id nog steeds overeenkomt maar de apparaatidentiteit niet langer overeenkomt met het goedgekeurde record
|
||||
- gekoppelde records zonder actief token voor een goedgekeurde rol
|
||||
- gekoppelde tokens waarvan de scopes buiten de goedgekeurde koppelingsbaseline zijn gedrift
|
||||
- lokale gecachte device-token-items voor de huidige machine die ouder zijn dan een Gateway-side tokenrotatie of verouderde scopemetadata bevatten
|
||||
- gekoppelde tokens waarvan scopes buiten de goedgekeurde koppelingsbasislijn driften
|
||||
- lokaal gecachte apparaattoken-items voor de huidige machine die ouder zijn dan een tokenrotatie aan Gateway-zijde of verouderde scopemetadata bevatten
|
||||
|
||||
Doctor keurt koppelingsverzoeken niet automatisch goed en roteert apparaattokens niet automatisch. Het drukt in plaats daarvan de exacte vervolgstappen af:
|
||||
|
||||
- inspecteer openstaande verzoeken met `openclaw devices list`
|
||||
- keur het exacte verzoek goed met `openclaw devices approve <requestId>`
|
||||
- roteer een vers token met `openclaw devices rotate --device <deviceId> --role <role>`
|
||||
- verwijder een verouderd record en keur opnieuw goed met `openclaw devices remove <deviceId>`
|
||||
- verwijder en keur een verouderd record opnieuw goed met `openclaw devices remove <deviceId>`
|
||||
|
||||
Dit sluit het veelvoorkomende gat "al gekoppeld maar nog steeds koppeling vereist": doctor onderscheidt nu eerste koppeling van openstaande rol-/scope-upgrades en van verouderde token-/apparaatidentiteitsdrift.
|
||||
Dit sluit het veelvoorkomende gat "al gekoppeld maar nog steeds koppeling vereist": doctor maakt nu onderscheid tussen eerste koppeling, openstaande rol-/scope-upgrades en verouderde token-/apparaatidentiteitsdrift.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="9. Beveiligingswaarschuwingen">
|
||||
Doctor geeft waarschuwingen wanneer een provider openstaat voor DM's zonder allowlist, of wanneer een beleid op een gevaarlijke manier is geconfigureerd.
|
||||
</Accordion>
|
||||
<Accordion title="10. systemd linger (Linux)">
|
||||
Als het draait als een systemd-gebruikersservice, zorgt doctor ervoor dat lingering is ingeschakeld zodat de Gateway na uitloggen actief blijft.
|
||||
Als het draait als een systemd-gebruikersservice, zorgt doctor ervoor dat lingering is ingeschakeld zodat de Gateway actief blijft na uitloggen.
|
||||
</Accordion>
|
||||
<Accordion title="11. Werkruimtestatus (Skills, plugins en legacy-mappen)">
|
||||
<Accordion title="11. Werkruimtestatus (Skills, Plugins en legacy-directory's)">
|
||||
Doctor drukt een samenvatting af van de werkruimtestatus voor de standaardagent:
|
||||
|
||||
- **Skills-status**: telt in aanmerking komende Skills, Skills met ontbrekende vereisten en door allowlist geblokkeerde Skills.
|
||||
- **Legacy-werkruimtemappen**: waarschuwt wanneer `~/openclaw` of andere legacy-werkruimtemappen naast de huidige werkruimte bestaan.
|
||||
- **Plugin-status**: telt ingeschakelde/uitgeschakelde/foutieve plugins; vermeldt plugin-ID's voor eventuele fouten; rapporteert mogelijkheden van gebundelde plugins.
|
||||
- **Plugin-compatibiliteitswaarschuwingen**: markeert plugins die compatibiliteitsproblemen hebben met de huidige runtime.
|
||||
- **Plugin-diagnostiek**: toont eventuele laadwaarschuwingen of -fouten die door het pluginregister worden uitgegeven.
|
||||
- **Legacy-werkruimtedirectory's**: waarschuwt wanneer `~/openclaw` of andere legacy-werkruimtedirectory's naast de huidige werkruimte bestaan.
|
||||
- **Plugin-status**: telt ingeschakelde/uitgeschakelde/gefoute Plugins; vermeldt Plugin-ID's voor eventuele fouten; rapporteert capabilities van bundel-Plugins.
|
||||
- **Plugin-compatibiliteitswaarschuwingen**: markeert Plugins die compatibiliteitsproblemen hebben met de huidige runtime.
|
||||
- **Plugin-diagnostiek**: toont eventuele waarschuwingen of fouten tijdens het laden die door het Plugin-register zijn uitgegeven.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="11b. Grootte van bootstrapbestand">
|
||||
Doctor controleert of bootstrapbestanden van de werkruimte (bijvoorbeeld `AGENTS.md`, `CLAUDE.md` of andere geïnjecteerde contextbestanden) dicht bij of boven het geconfigureerde tekenbudget zitten. Het rapporteert per bestand ruwe versus geïnjecteerde tekentellingen, truncatiepercentage, truncatieoorzaak (`max/file` of `max/total`) en totale geïnjecteerde tekens als fractie van het totale budget. Wanneer bestanden zijn afgekapt of dicht bij de limiet zitten, drukt doctor tips af voor het afstemmen van `agents.defaults.bootstrapMaxChars` en `agents.defaults.bootstrapTotalMaxChars`.
|
||||
<Accordion title="11b. Grootte van bootstrap-bestand">
|
||||
Doctor controleert of bootstrap-bestanden van de werkruimte (bijvoorbeeld `AGENTS.md`, `CLAUDE.md` of andere geïnjecteerde contextbestanden) dicht bij of boven het geconfigureerde tekenbudget zitten. Het rapporteert per bestand ruwe versus geïnjecteerde tekentellingen, truncatiepercentage, truncatieoorzaak (`max/file` of `max/total`) en totale geïnjecteerde tekens als fractie van het totale budget. Wanneer bestanden worden afgekapt of dicht bij de limiet zitten, drukt doctor tips af voor het afstemmen van `agents.defaults.bootstrapMaxChars` en `agents.defaults.bootstrapTotalMaxChars`.
|
||||
</Accordion>
|
||||
<Accordion title="11d. Opschoning van verouderde kanaalplugin">
|
||||
Wanneer `openclaw doctor --fix` een ontbrekende kanaalplugin verwijdert, verwijdert het ook de loshangende kanaalgescopeerde config die naar die plugin verwees: `channels.<id>`-items, heartbeat-doelen die het kanaal noemden en `agents.*.models["<channel>/*"]`-overrides. Dit voorkomt Gateway-opstartlussen waarbij de kanaalruntime weg is maar de config de Gateway nog steeds vraagt eraan te binden.
|
||||
<Accordion title="11d. Opschoning van verouderde kanaal-Plugin">
|
||||
Wanneer `openclaw doctor --fix` een ontbrekende kanaal-Plugin verwijdert, verwijdert het ook de loshangende kanaalgescope configuratie die naar die Plugin verwees: `channels.<id>`-items, Heartbeat-doelen die het kanaal noemden, en `agents.*.models["<channel>/*"]`-overrides. Dit voorkomt Gateway-opstartlussen waarbij de kanaalruntime verdwenen is maar de configuratie de Gateway nog steeds vraagt eraan te binden.
|
||||
</Accordion>
|
||||
<Accordion title="11c. Shell-aanvulling">
|
||||
<Accordion title="11c. Shellaanvulling">
|
||||
Doctor controleert of tabaanvulling is geïnstalleerd voor de huidige shell (zsh, bash, fish of PowerShell):
|
||||
|
||||
- Als het shellprofiel een traag dynamisch aanvullingspatroon gebruikt (`source <(openclaw completion ...)`), werkt doctor dit bij naar de snellere variant met gecacht bestand.
|
||||
- Als aanvulling in het profiel is geconfigureerd maar het cachebestand ontbreekt, regenereert doctor de cache automatisch.
|
||||
- Als het shellprofiel een traag dynamisch aanvullingspatroon gebruikt (`source <(openclaw completion ...)`), upgradet doctor dit naar de snellere variant met gecachet bestand.
|
||||
- Als aanvulling in het profiel is geconfigureerd maar het cachebestand ontbreekt, genereert doctor de cache automatisch opnieuw.
|
||||
- Als er helemaal geen aanvulling is geconfigureerd, vraagt doctor om deze te installeren (alleen interactieve modus; overgeslagen met `--non-interactive`).
|
||||
|
||||
Voer `openclaw completion --write-state` uit om de cache handmatig opnieuw te genereren.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="12. Gateway-auth-controles (lokaal token)">
|
||||
Doctor controleert de gereedheid van lokale Gateway-tokenauth.
|
||||
<Accordion title="12. Gateway-authenticatiecontroles (lokaal token)">
|
||||
Doctor controleert de gereedheid van lokale Gateway-tokenauthenticatie.
|
||||
|
||||
- Als tokenmodus een token nodig heeft en er geen tokenbron bestaat, biedt doctor aan er een te genereren.
|
||||
- Als `gateway.auth.token` door SecretRef wordt beheerd maar niet beschikbaar is, waarschuwt doctor en overschrijft het dit niet met platte tekst.
|
||||
@ -429,34 +429,34 @@ Dat faseert grounded duurzame candidates in de kortetermijn-Dreaming-opslag, ter
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="12b. Alleen-lezen SecretRef-bewuste reparaties">
|
||||
Sommige reparatiestromen moeten geconfigureerde referenties inspecteren zonder runtime-fail-fastgedrag te verzwakken.
|
||||
Sommige reparatiestromen moeten geconfigureerde referenties inspecteren zonder runtime fail-fast-gedrag te verzwakken.
|
||||
|
||||
- `openclaw doctor --fix` gebruikt nu hetzelfde alleen-lezen SecretRef-samenvattingsmodel als statusfamilieopdrachten voor gerichte configreparaties.
|
||||
- `openclaw doctor --fix` gebruikt nu hetzelfde alleen-lezen SecretRef-samenvattingsmodel als statusfamilieopdrachten voor gerichte configuratiereparaties.
|
||||
- Voorbeeld: Telegram `allowFrom` / `groupAllowFrom` `@username`-reparatie probeert geconfigureerde botreferenties te gebruiken wanneer beschikbaar.
|
||||
- Als het Telegram-bottoken via SecretRef is geconfigureerd maar niet beschikbaar is in het huidige opdrachtpad, rapporteert doctor dat de referentie geconfigureerd-maar-niet-beschikbaar is en slaat het automatische oplossing over in plaats van te crashen of het token ten onrechte als ontbrekend te rapporteren.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="13. Gateway-gezondheidscontrole + herstart">
|
||||
Doctor voert een gezondheidscontrole uit en biedt aan de gateway opnieuw te starten wanneer die ongezond lijkt.
|
||||
Doctor voert een gezondheidscontrole uit en biedt aan de Gateway opnieuw te starten wanneer deze ongezond lijkt.
|
||||
</Accordion>
|
||||
<Accordion title="13b. Gereedheid van geheugenzoekfunctie">
|
||||
<Accordion title="13b. Gereedheid voor geheugenzoekfunctie">
|
||||
Doctor controleert of de geconfigureerde embeddingprovider voor geheugenzoekopdrachten gereed is voor de standaardagent. Het gedrag hangt af van de geconfigureerde backend en provider:
|
||||
|
||||
- **QMD-backend**: controleert of de `qmd`-binary beschikbaar en startbaar is. Zo niet, dan wordt hersteladvies weergegeven, inclusief het npm-pakket en een optie voor een handmatig binarypad.
|
||||
- **Expliciete lokale provider**: controleert op een lokaal modelbestand of een herkende externe/downloadbare model-URL. Als die ontbreekt, wordt voorgesteld om over te schakelen naar een externe provider.
|
||||
- **Expliciete externe provider** (`openai`, `voyage`, enz.): controleert of er een API-sleutel aanwezig is in de omgeving of auth-store. Geeft uitvoerbare hersteltips weer als die ontbreekt.
|
||||
- **Automatische provider**: controleert eerst de beschikbaarheid van het lokale model en probeert daarna elke externe provider in de volgorde voor automatische selectie.
|
||||
- **QMD-backend**: controleert of de binary `qmd` beschikbaar en startbaar is. Zo niet, dan wordt hersteladvies afgedrukt, inclusief het npm-pakket en een optie voor een handmatig binary-pad.
|
||||
- **Expliciete lokale provider**: controleert op een lokaal modelbestand of een herkende externe/downloadbare model-URL. Als die ontbreekt, wordt voorgesteld over te schakelen naar een externe provider.
|
||||
- **Expliciete externe provider** (`openai`, `voyage`, enz.): controleert of er een API-sleutel aanwezig is in de omgeving of auth-store. Drukt bruikbare hersteltips af als deze ontbreekt.
|
||||
- **Automatische provider**: controleert eerst de beschikbaarheid van lokale modellen en probeert daarna elke externe provider in de volgorde voor automatische selectie.
|
||||
|
||||
Wanneer een gecachet Gateway-proberesultaat beschikbaar is (de gateway was gezond op het moment van de controle), vergelijkt doctor dat resultaat met de voor de CLI zichtbare configuratie en vermeldt eventuele afwijkingen. Doctor start geen nieuwe embedding-ping op het standaardpad; gebruik de opdracht voor diepe geheugenstatus wanneer u een live providercontrole wilt.
|
||||
Wanneer een gecachet Gateway-sonderingsresultaat beschikbaar is (de Gateway was gezond op het moment van de controle), vergelijkt doctor het resultaat met de voor de CLI zichtbare configuratie en vermeldt eventuele verschillen. Doctor start geen nieuwe embedding-ping op het standaardpad; gebruik de opdracht voor diepgaande geheugenstatus wanneer je een live providercontrole wilt.
|
||||
|
||||
Gebruik `openclaw memory status --deep` om de gereedheid van embeddings tijdens runtime te verifiëren.
|
||||
Gebruik `openclaw memory status --deep` om de embeddinggereedheid tijdens runtime te verifiëren.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="14. Waarschuwingen over kanaalstatus">
|
||||
Als de gateway gezond is, voert doctor een kanaalstatusprobe uit en rapporteert waarschuwingen met voorgestelde oplossingen.
|
||||
<Accordion title="14. Waarschuwingen voor kanaalstatus">
|
||||
Als de Gateway gezond is, voert doctor een kanaalstatuscontrole uit en rapporteert waarschuwingen met voorgestelde oplossingen.
|
||||
</Accordion>
|
||||
<Accordion title="15. Audit + herstel van supervisorconfiguratie">
|
||||
Doctor controleert de geïnstalleerde supervisorconfiguratie (launchd/systemd/schtasks) op ontbrekende of verouderde standaardwaarden (bijv. systemd network-online-afhankelijkheden en herstartvertraging). Wanneer er een mismatch wordt gevonden, beveelt doctor een update aan en kan het servicebestand/de taak worden herschreven naar de huidige standaardwaarden.
|
||||
Doctor controleert de geïnstalleerde supervisorconfiguratie (launchd/systemd/schtasks) op ontbrekende of verouderde standaardwaarden (bijv. systemd-afhankelijkheden van network-online en herstartvertraging). Wanneer er een verschil wordt gevonden, raadt doctor een update aan en kan het servicebestand/de taak herschrijven naar de huidige standaardwaarden.
|
||||
|
||||
Opmerkingen:
|
||||
|
||||
@ -464,34 +464,34 @@ Dat faseert grounded duurzame candidates in de kortetermijn-Dreaming-opslag, ter
|
||||
- `openclaw doctor --yes` accepteert de standaardherstelprompts.
|
||||
- `openclaw doctor --repair` past aanbevolen oplossingen toe zonder prompts.
|
||||
- `openclaw doctor --repair --force` overschrijft aangepaste supervisorconfiguraties.
|
||||
- `OPENCLAW_SERVICE_REPAIR_POLICY=external` houdt doctor alleen-lezen voor de lifecycle van de Gateway-service. Het rapporteert nog steeds servicestatus en voert niet-serviceherstel uit, maar slaat service-installatie/start/herstart/bootstrap, herschrijven van supervisorconfiguratie en opschonen van legacy-services over omdat een externe supervisor die lifecycle beheert.
|
||||
- Op Linux herschrijft doctor geen opdracht-/entrypointmetadata terwijl de overeenkomende systemd Gateway-unit actief is. Het negeert ook inactieve niet-legacy extra gateway-achtige units tijdens de scan op dubbele services, zodat bijbehorende servicebestanden geen opschoonruis veroorzaken.
|
||||
- Als token-authenticatie een token vereist en `gateway.auth.token` door SecretRef wordt beheerd, valideert doctor bij service-installatie/herstel de SecretRef, maar blijven opgeloste platteteksttokenwaarden niet bewaard in de omgevingsmetadata van de supervisorservice.
|
||||
- Doctor detecteert beheerde `.env`-/SecretRef-ondersteunde serviceomgevingswaarden die oudere LaunchAgent-, systemd- of Windows Scheduled Task-installaties inline hebben ingesloten en herschrijft de servicemetadata zodat die waarden uit de runtimebron worden geladen in plaats van uit de supervisordefinitie.
|
||||
- `OPENCLAW_SERVICE_REPAIR_POLICY=external` houdt doctor alleen-lezen voor de levenscyclus van de Gateway-service. Het rapporteert nog steeds servicestatus en voert niet-serviceherstel uit, maar slaat service-installatie/start/herstart/bootstrap, herschrijvingen van supervisorconfiguratie en opschoning van legacy-services over, omdat een externe supervisor die levenscyclus beheert.
|
||||
- Op Linux herschrijft doctor geen opdracht-/entrypointmetadata terwijl de overeenkomende systemd-Gateway-unit actief is. Het negeert ook inactieve niet-legacy extra Gateway-achtige units tijdens de scan op dubbele services, zodat begeleidende servicebestanden geen opschoningsruis veroorzaken.
|
||||
- Als token-auth een token vereist en `gateway.auth.token` door SecretRef wordt beheerd, valideert doctor service-installatie/herstel de SecretRef, maar blijven opgeloste platteteksttokenwaarden niet behouden in de omgevingsmetadata van de supervisorservice.
|
||||
- Doctor detecteert beheerde `.env`-/SecretRef-ondersteunde serviceomgevingswaarden die oudere LaunchAgent-, systemd- of Windows Scheduled Task-installaties inline hebben ingebed en herschrijft de servicemetadata zodat die waarden worden geladen vanuit de runtimebron in plaats van uit de supervisordefinitie.
|
||||
- Doctor detecteert wanneer de serviceopdracht nog steeds een oude `--port` vastzet nadat `gateway.port` is gewijzigd en herschrijft de servicemetadata naar de huidige poort.
|
||||
- Als token-authenticatie een token vereist en de geconfigureerde token-SecretRef niet kan worden opgelost, blokkeert doctor het installatie-/herstelpad met uitvoerbare begeleiding.
|
||||
- Als token-auth een token vereist en de geconfigureerde token-SecretRef niet kan worden opgelost, blokkeert doctor het installatie-/herstelpad met bruikbare begeleiding.
|
||||
- Als zowel `gateway.auth.token` als `gateway.auth.password` zijn geconfigureerd en `gateway.auth.mode` niet is ingesteld, blokkeert doctor installatie/herstel totdat de modus expliciet is ingesteld.
|
||||
- Voor Linux user-systemd-units nemen doctor-tokenafwijkingscontroles nu zowel `Environment=`- als `EnvironmentFile=`-bronnen mee bij het vergelijken van service-auth-metadata.
|
||||
- Doctor-serviceherstel weigert een Gateway-service van een oudere OpenClaw-binary te herschrijven, stoppen of herstarten wanneer de configuratie het laatst door een nieuwere versie is geschreven. Zie [Gateway-probleemoplossing](/nl/gateway/troubleshooting#split-brain-installs-and-newer-config-guard).
|
||||
- U kunt altijd een volledige herschrijving forceren via `openclaw gateway install --force`.
|
||||
- Voor Linux user-systemd-units omvatten doctor-tokenafwijkingscontroles nu zowel `Environment=`- als `EnvironmentFile=`-bronnen bij het vergelijken van service-authmetadata.
|
||||
- Doctor-serviceherstel weigert een Gateway-service van een oudere OpenClaw-binary te herschrijven, stoppen of herstarten wanneer de configuratie voor het laatst door een nieuwere versie is geschreven. Zie [Gateway-probleemoplossing](/nl/gateway/troubleshooting#split-brain-installs-and-newer-config-guard).
|
||||
- Je kunt altijd een volledige herschrijving forceren via `openclaw gateway install --force`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="16. Diagnostiek voor Gateway-runtime + poort">
|
||||
Doctor inspecteert de serviceruntime (PID, laatste afsluitstatus) en waarschuwt wanneer de service is geïnstalleerd maar niet daadwerkelijk draait. Het controleert ook op poortconflicten op de Gateway-poort (standaard `18789`) en rapporteert waarschijnlijke oorzaken (gateway draait al, SSH-tunnel).
|
||||
<Accordion title="16. Gateway-runtime + poortdiagnostiek">
|
||||
Doctor inspecteert de serviceruntime (PID, laatste afsluitstatus) en waarschuwt wanneer de service is geïnstalleerd maar niet daadwerkelijk draait. Het controleert ook op poortconflicten op de Gateway-poort (standaard `18789`) en rapporteert waarschijnlijke oorzaken (Gateway draait al, SSH-tunnel).
|
||||
</Accordion>
|
||||
<Accordion title="17. Best practices voor Gateway-runtime">
|
||||
Doctor waarschuwt wanneer de Gateway-service draait op Bun of een versiebeheerd Node-pad (`nvm`, `fnm`, `volta`, `asdf`, enz.). WhatsApp- en Telegram-kanalen vereisen Node, en paden van versiebeheerders kunnen na upgrades breken omdat de service uw shell-init niet laadt. Doctor biedt aan te migreren naar een systeeminstallatie van Node wanneer die beschikbaar is (Homebrew/apt/choco).
|
||||
Doctor waarschuwt wanneer de Gateway-service op Bun draait of op een versiebeheerd Node-pad (`nvm`, `fnm`, `volta`, `asdf`, enz.). WhatsApp- en Telegram-kanalen vereisen Node, en paden van versiebeheerders kunnen na upgrades breken omdat de service je shell-init niet laadt. Doctor biedt aan om te migreren naar een systeeminstallatie van Node wanneer beschikbaar (Homebrew/apt/choco).
|
||||
|
||||
Nieuw geïnstalleerde of herstelde macOS LaunchAgents gebruiken een canonieke systeem-PATH (`/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin`) in plaats van de interactieve shell-PATH te kopiëren, zodat Volta, asdf, fnm, pnpm en andere mappen van versiebeheerders niet wijzigen welke Node-childprocessen worden gevonden. Linux-services behouden nog steeds expliciete omgevingsroots (`NVM_DIR`, `FNM_DIR`, `VOLTA_HOME`, `ASDF_DATA_DIR`, `BUN_INSTALL`, `PNPM_HOME`) en stabiele user-bin-mappen, maar geraden fallbackmappen van versiebeheerders worden alleen naar de service-PATH geschreven wanneer die mappen op schijf bestaan.
|
||||
Nieuw geïnstalleerde of herstelde macOS LaunchAgents gebruiken een canoniek systeem-PATH (`/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin`) in plaats van het interactieve shell-PATH te kopiëren, zodat Volta, asdf, fnm, pnpm en andere versiebeheerdermappen niet wijzigen welke Node-kindprocessen worden gevonden. Linux-services behouden nog steeds expliciete omgevingsroots (`NVM_DIR`, `FNM_DIR`, `VOLTA_HOME`, `ASDF_DATA_DIR`, `BUN_INSTALL`, `PNPM_HOME`) en stabiele user-bin-mappen, maar geraden fallbackmappen van versiebeheerders worden alleen naar het service-PATH geschreven wanneer die mappen op schijf bestaan.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="18. Configuratie schrijven + wizardmetadata">
|
||||
Doctor bewaart eventuele configuratiewijzigingen en stempelt wizardmetadata om de doctor-run vast te leggen.
|
||||
Doctor bewaart eventuele configuratiewijzigingen en stempelt wizardmetadata om de doctor-uitvoering vast te leggen.
|
||||
</Accordion>
|
||||
<Accordion title="19. Werkruimtetips (back-up + geheugensysteem)">
|
||||
Doctor stelt een werkruimtegeheugensysteem voor wanneer dat ontbreekt en geeft een back-uptip weer als de werkruimte nog niet onder git staat.
|
||||
Doctor stelt een werkruimtegeheugensysteem voor wanneer dit ontbreekt en drukt een back-uptip af als de werkruimte nog niet onder git staat.
|
||||
|
||||
Zie [/concepts/agent-workspace](/nl/concepts/agent-workspace) voor een volledige handleiding voor werkruimtestructuur en git-back-up (aanbevolen privé-GitHub of GitLab).
|
||||
Zie [/concepts/agent-workspace](/nl/concepts/agent-workspace) voor een volledige gids voor werkruimtestructuur en git-back-up (aanbevolen privé GitHub of GitLab).
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
@ -1,22 +1,22 @@
|
||||
---
|
||||
read_when:
|
||||
- Je bepaalt of een Plugin wordt meegeleverd in het kern-npm-pakket of afzonderlijk wordt geïnstalleerd
|
||||
- Je werkt metadata voor meegeleverde Plugin-pakketten of release-automatisering bij
|
||||
- Je hebt de canonieke lijst met interne versus externe Plugins nodig
|
||||
- Je bepaalt of een Plugin wordt meegeleverd in het npm-kernpakket of afzonderlijk wordt geïnstalleerd
|
||||
- Je werkt gebundelde Plugin-pakketmetadata of release-automatisering bij
|
||||
- Je hebt de canonieke lijst met interne versus externe Plugin nodig
|
||||
summary: Gegenereerde inventaris van OpenClaw-plugins die in de kern worden meegeleverd, extern worden gepubliceerd of alleen als broncode worden bewaard
|
||||
title: Plugin-inventaris
|
||||
x-i18n:
|
||||
generated_at: "2026-05-03T11:12:54Z"
|
||||
generated_at: "2026-05-04T09:37:02Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 2099d8a67847f54040db332287708a1f79aa6c08e6e33125425389fe962865cb
|
||||
source_hash: 64f3d27ae65faacf89deeaad1b456318fa72993fdcf16262f30fb3f48b898024
|
||||
source_path: plugins/plugin-inventory.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
# Plugin-inventaris
|
||||
|
||||
Deze pagina wordt gegenereerd uit `extensions/*/package.json`, `openclaw.plugin.json`,
|
||||
Deze pagina wordt gegenereerd op basis van `extensions/*/package.json`, `openclaw.plugin.json`
|
||||
en de `files`-uitsluitingen van het root-npm-pakket. Genereer deze opnieuw met:
|
||||
|
||||
```bash
|
||||
@ -25,113 +25,134 @@ pnpm plugins:inventory:gen
|
||||
|
||||
## Definities
|
||||
|
||||
- **Core npm-pakket:** ingebouwd in het `openclaw` npm-pakket en beschikbaar zonder aparte plugin-installatie.
|
||||
- **Officieel extern pakket:** door OpenClaw onderhouden plugin die is weggelaten uit het core npm-pakket, in deze officiële inventaris wordt bijgehouden en op aanvraag via ClawHub en/of npm wordt geïnstalleerd.
|
||||
- **Alleen broncheckout:** repo-lokale plugin die is weggelaten uit gepubliceerde npm-artefacten en niet wordt aangeboden als installeerbaar pakket.
|
||||
- **Kern-npm-pakket:** ingebouwd in het `openclaw`-npm-pakket en beschikbaar zonder afzonderlijke Plugin-installatie.
|
||||
- **Officieel extern pakket:** door OpenClaw onderhouden Plugin die is weggelaten uit het kern-npm-pakket, in deze officiële inventaris wordt bewaard en op aanvraag via ClawHub en/of npm wordt geïnstalleerd.
|
||||
- **Alleen broncheckout:** repo-lokale Plugin die is weggelaten uit gepubliceerde npm-artefacten en niet wordt aangeprezen als installeerbaar pakket.
|
||||
|
||||
Broncheckouts verschillen van npm-installaties: na `pnpm install` worden gebundelde
|
||||
plugins geladen vanuit `extensions/<id>`, zodat lokale wijzigingen en pakketlokale workspace-afhankelijkheden beschikbaar zijn.
|
||||
plugins geladen vanuit `extensions/<id>`, zodat lokale bewerkingen en package-lokale workspace-
|
||||
afhankelijkheden beschikbaar zijn.
|
||||
|
||||
## Core npm-pakket
|
||||
## Een Plugin installeren
|
||||
|
||||
| Plugin | Beschrijving | Distributie | Oppervlak |
|
||||
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [alibaba](/nl/plugins/reference/alibaba) | Voegt ondersteuning toe voor providers voor videogeneratie. | `@openclaw/alibaba-provider`<br />opgenomen in OpenClaw | contracten: videoGenerationProviders |
|
||||
| [amazon-bedrock](/nl/plugins/reference/amazon-bedrock) | Voegt ondersteuning toe voor de Amazon Bedrock-modelprovider aan OpenClaw. | `@openclaw/amazon-bedrock-provider`<br />opgenomen in OpenClaw | providers: amazon-bedrock; contracten: memoryEmbeddingProviders |
|
||||
| [amazon-bedrock-mantle](/nl/plugins/reference/amazon-bedrock-mantle) | Voegt ondersteuning toe voor de Amazon Bedrock Mantle-modelprovider aan OpenClaw. | `@openclaw/amazon-bedrock-mantle-provider`<br />opgenomen in OpenClaw | providers: amazon-bedrock-mantle |
|
||||
| [anthropic](/nl/plugins/reference/anthropic) | Voegt ondersteuning toe voor de Anthropic-modelprovider aan OpenClaw. | `@openclaw/anthropic-provider`<br />opgenomen in OpenClaw | providers: anthropic; contracten: mediaUnderstandingProviders |
|
||||
| [anthropic-vertex](/nl/plugins/reference/anthropic-vertex) | Voegt ondersteuning toe voor de Anthropic Vertex-modelprovider aan OpenClaw. | `@openclaw/anthropic-vertex-provider`<br />opgenomen in OpenClaw | providers: anthropic-vertex |
|
||||
| [arcee](/nl/plugins/reference/arcee) | Voegt ondersteuning toe voor de Arcee-modelprovider aan OpenClaw. | `@openclaw/arcee-provider`<br />opgenomen in OpenClaw | providers: arcee |
|
||||
| [azure-speech](/nl/plugins/reference/azure-speech) | Azure AI Speech tekst-naar-spraak (MP3, native Ogg/Opus-spraaknotities, PCM-telefonie). | `@openclaw/azure-speech`<br />opgenomen in OpenClaw | contracten: speechProviders |
|
||||
| [bonjour](/nl/plugins/reference/bonjour) | Kondigt de lokale OpenClaw-gateway aan via Bonjour/mDNS. | `@openclaw/bonjour`<br />opgenomen in OpenClaw | Plugin |
|
||||
| [browser](/nl/plugins/reference/browser) | Voegt door agents aanroepbare tools toe. | `@openclaw/browser-plugin`<br />opgenomen in OpenClaw | contracten: tools; Skills |
|
||||
| [byteplus](/nl/plugins/reference/byteplus) | Voegt ondersteuning toe voor de BytePlus- en BytePlus Plan-modelproviders aan OpenClaw. | `@openclaw/byteplus-provider`<br />opgenomen in OpenClaw | providers: byteplus, byteplus-plan; contracten: videoGenerationProviders |
|
||||
| [cerebras](/nl/plugins/reference/cerebras) | Voegt ondersteuning toe voor de Cerebras-modelprovider aan OpenClaw. | `@openclaw/cerebras-provider`<br />opgenomen in OpenClaw | providers: cerebras |
|
||||
| [chutes](/nl/plugins/reference/chutes) | Voegt ondersteuning toe voor de Chutes-modelprovider aan OpenClaw. | `@openclaw/chutes-provider`<br />opgenomen in OpenClaw | providers: chutes |
|
||||
| [cloudflare-ai-gateway](/nl/plugins/reference/cloudflare-ai-gateway) | Voegt ondersteuning toe voor de Cloudflare AI Gateway-modelprovider aan OpenClaw. | `@openclaw/cloudflare-ai-gateway-provider`<br />opgenomen in OpenClaw | providers: cloudflare-ai-gateway |
|
||||
| [comfy](/nl/plugins/reference/comfy) | Voegt ondersteuning toe voor de ComfyUI-modelprovider aan OpenClaw. | `@openclaw/comfy-provider`<br />opgenomen in OpenClaw | providers: comfy; contracten: imageGenerationProviders, musicGenerationProviders, videoGenerationProviders |
|
||||
| [copilot-proxy](/nl/plugins/reference/copilot-proxy) | Voegt ondersteuning toe voor de Copilot Proxy-modelprovider aan OpenClaw. | `@openclaw/copilot-proxy`<br />opgenomen in OpenClaw | providers: copilot-proxy |
|
||||
| [deepgram](/nl/plugins/reference/deepgram) | Voegt ondersteuning toe voor een provider voor media-inzicht. Voegt ondersteuning toe voor een provider voor realtime transcriptie. | `@openclaw/deepgram-provider`<br />opgenomen in OpenClaw | contracten: mediaUnderstandingProviders, realtimeTranscriptionProviders |
|
||||
| [deepinfra](/nl/plugins/reference/deepinfra) | Voegt ondersteuning toe voor de DeepInfra-modelprovider aan OpenClaw. | `@openclaw/deepinfra-provider`<br />opgenomen in OpenClaw | providers: deepinfra; contracten: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, speechProviders, videoGenerationProviders |
|
||||
| [deepseek](/nl/plugins/reference/deepseek) | Voegt ondersteuning toe voor de DeepSeek-modelprovider aan OpenClaw. | `@openclaw/deepseek-provider`<br />opgenomen in OpenClaw | providers: deepseek |
|
||||
| [document-extract](/nl/plugins/reference/document-extract) | Extraheert tekst en fallback-pagina-afbeeldingen uit lokale documentbijlagen. | `@openclaw/document-extract-plugin`<br />opgenomen in OpenClaw | contracten: documentExtractors |
|
||||
| [duckduckgo](/nl/plugins/reference/duckduckgo) | Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/duckduckgo-plugin`<br />meegeleverd met OpenClaw | contracts: webSearchProviders |
|
||||
| [elevenlabs](/nl/plugins/reference/elevenlabs) | Voegt ondersteuning voor providers voor mediabegrip toe. Voegt ondersteuning voor providers voor realtime transcriptie toe. Voegt ondersteuning voor tekst-naar-spraakproviders toe. | `@openclaw/elevenlabs-speech`<br />meegeleverd met OpenClaw | contracts: mediaUnderstandingProviders, realtimeTranscriptionProviders, speechProviders |
|
||||
| [exa](/nl/plugins/reference/exa) | Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/exa-plugin`<br />meegeleverd met OpenClaw | contracts: webSearchProviders |
|
||||
| [fal](/nl/plugins/reference/fal) | Voegt ondersteuning voor de fal-modelprovider toe aan OpenClaw. | `@openclaw/fal-provider`<br />meegeleverd met OpenClaw | providers: fal; contracts: imageGenerationProviders, videoGenerationProviders |
|
||||
| [file-transfer](/nl/plugins/reference/file-transfer) | Haal bestanden op, geef ze weer en schrijf ze op gekoppelde nodes via speciale node-opdrachten. Omzeilt afkapping van bash-stdout door base64 via node.invoke te gebruiken voor binaire bestanden tot 16 MB. | `@openclaw/file-transfer`<br />meegeleverd met OpenClaw | contracts: tools |
|
||||
| [firecrawl](/nl/plugins/reference/firecrawl) | Voegt door agents aanroepbare tools toe. Voegt ondersteuning voor webophaalproviders toe. Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/firecrawl-plugin`<br />meegeleverd met OpenClaw | contracts: tools, webFetchProviders, webSearchProviders |
|
||||
| [fireworks](/nl/plugins/reference/fireworks) | Voegt ondersteuning voor de Fireworks-modelprovider toe aan OpenClaw. | `@openclaw/fireworks-provider`<br />meegeleverd met OpenClaw | providers: fireworks |
|
||||
| [github-copilot](/nl/plugins/reference/github-copilot) | Voegt ondersteuning voor de GitHub Copilot-modelprovider toe aan OpenClaw. | `@openclaw/github-copilot-provider`<br />meegeleverd met OpenClaw | providers: github-copilot; contracts: memoryEmbeddingProviders |
|
||||
| [google](/nl/plugins/reference/google) | Voegt ondersteuning voor Google-, Google Gemini CLI- en Google Vertex-modelproviders toe aan OpenClaw. | `@openclaw/google-plugin`<br />meegeleverd met OpenClaw | providers: google, google-gemini-cli, google-vertex; contracts: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, musicGenerationProviders, realtimeVoiceProviders, speechProviders, videoGenerationProviders, webSearchProviders |
|
||||
| [gradium](/nl/plugins/reference/gradium) | Voegt ondersteuning voor tekst-naar-spraakproviders toe. | `@openclaw/gradium-speech`<br />meegeleverd met OpenClaw | contracts: speechProviders |
|
||||
| [groq](/nl/plugins/reference/groq) | Voegt ondersteuning voor de Groq-modelprovider toe aan OpenClaw. | `@openclaw/groq-provider`<br />meegeleverd met OpenClaw | providers: groq; contracts: mediaUnderstandingProviders |
|
||||
| [huggingface](/nl/plugins/reference/huggingface) | Voegt ondersteuning voor de Hugging Face-modelprovider toe aan OpenClaw. | `@openclaw/huggingface-provider`<br />meegeleverd met OpenClaw | providers: huggingface |
|
||||
| [imessage](/nl/plugins/reference/imessage) | Voegt de iMessage-kanaalinterface toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/imessage`<br />meegeleverd met OpenClaw | channels: imessage |
|
||||
| [inworld](/nl/plugins/reference/inworld) | Inworld streaming tekst-naar-spraak (MP3, OGG_OPUS, PCM-telefonie). | `@openclaw/inworld-speech`<br />meegeleverd met OpenClaw | contracts: speechProviders |
|
||||
| [irc](/nl/plugins/reference/irc) | Voegt de IRC-kanaalinterface toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/irc`<br />meegeleverd met OpenClaw | channels: irc |
|
||||
| [kilocode](/nl/plugins/reference/kilocode) | Voegt ondersteuning voor de Kilocode-modelprovider toe aan OpenClaw. | `@openclaw/kilocode-provider`<br />meegeleverd met OpenClaw | providers: kilocode |
|
||||
| [kimi](/nl/plugins/reference/kimi) | Voegt ondersteuning voor Kimi- en Kimi Coding-modelproviders toe aan OpenClaw. | `@openclaw/kimi-provider`<br />meegeleverd met OpenClaw | providers: kimi, kimi-coding |
|
||||
| [litellm](/nl/plugins/reference/litellm) | Voegt ondersteuning voor de LiteLLM-modelprovider toe aan OpenClaw. | `@openclaw/litellm-provider`<br />meegeleverd met OpenClaw | providers: litellm; contracts: imageGenerationProviders |
|
||||
| [llm-task](/nl/plugins/reference/llm-task) | Generieke JSON-only LLM-tool voor gestructureerde taken die vanuit workflows kan worden aangeroepen. | `@openclaw/llm-task`<br />meegeleverd met OpenClaw | contracts: tools |
|
||||
| [lmstudio](/nl/plugins/reference/lmstudio) | Voegt ondersteuning voor de LM Studio-modelprovider toe aan OpenClaw. | `@openclaw/lmstudio-provider`<br />meegeleverd met OpenClaw | providers: lmstudio; contracts: memoryEmbeddingProviders |
|
||||
| [matrix](/nl/plugins/reference/matrix) | Voegt de Matrix-kanaalinterface toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/matrix`<br />meegeleverd met OpenClaw | channels: matrix |
|
||||
| [mattermost](/nl/plugins/reference/mattermost) | Voegt de Mattermost-kanaalinterface toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/mattermost`<br />opgenomen in OpenClaw | channels: mattermost |
|
||||
| [memory-core](/nl/plugins/reference/memory-core) | Voegt ondersteuning toe voor providers van memory-embeddings. Voegt door agents aanroepbare tools toe. | `@openclaw/memory-core`<br />opgenomen in OpenClaw | contracts: memoryEmbeddingProviders, tools |
|
||||
| [memory-wiki](/nl/plugins/reference/memory-wiki) | Persistente wiki-compiler en Obsidian-vriendelijke kennisvault voor OpenClaw. | `@openclaw/memory-wiki`<br />opgenomen in OpenClaw | contracts: tools; skills |
|
||||
| [microsoft](/nl/plugins/reference/microsoft) | Voegt ondersteuning toe voor providers voor tekst-naar-spraak. | `@openclaw/microsoft-speech`<br />opgenomen in OpenClaw | contracts: speechProviders |
|
||||
| [microsoft-foundry](/nl/plugins/reference/microsoft-foundry) | Voegt ondersteuning voor de Microsoft Foundry-modelprovider toe aan OpenClaw. | `@openclaw/microsoft-foundry`<br />opgenomen in OpenClaw | providers: microsoft-foundry |
|
||||
| [migrate-claude](/nl/plugins/reference/migrate-claude) | Importeert Claude Code- en Claude Desktop-instructies, MCP-servers, skills en veilige configuratie in OpenClaw. | `@openclaw/migrate-claude`<br />opgenomen in OpenClaw | contracts: migrationProviders |
|
||||
| [migrate-hermes](/nl/plugins/reference/migrate-hermes) | Importeert Hermes-configuratie, herinneringen, skills en ondersteunde referenties in OpenClaw. | `@openclaw/migrate-hermes`<br />opgenomen in OpenClaw | contracts: migrationProviders |
|
||||
| [minimax](/nl/plugins/reference/minimax) | Voegt ondersteuning voor de MiniMax- en MiniMax Portal-modelproviders toe aan OpenClaw. | `@openclaw/minimax-provider`<br />opgenomen in OpenClaw | providers: minimax, minimax-portal; contracts: imageGenerationProviders, mediaUnderstandingProviders, musicGenerationProviders, speechProviders, videoGenerationProviders, webSearchProviders |
|
||||
| [mistral](/nl/plugins/reference/mistral) | Voegt ondersteuning voor de Mistral-modelprovider toe aan OpenClaw. | `@openclaw/mistral-provider`<br />opgenomen in OpenClaw | providers: mistral; contracts: mediaUnderstandingProviders, memoryEmbeddingProviders, realtimeTranscriptionProviders |
|
||||
| [moonshot](/nl/plugins/reference/moonshot) | Voegt ondersteuning voor de Moonshot-modelprovider toe aan OpenClaw. | `@openclaw/moonshot-provider`<br />opgenomen in OpenClaw | providers: moonshot; contracts: mediaUnderstandingProviders, webSearchProviders |
|
||||
| [nvidia](/nl/plugins/reference/nvidia) | Voegt ondersteuning voor de NVIDIA-modelprovider toe aan OpenClaw. | `@openclaw/nvidia-provider`<br />opgenomen in OpenClaw | providers: nvidia |
|
||||
| [ollama](/nl/plugins/reference/ollama) | Voegt ondersteuning voor de Ollama-modelprovider toe aan OpenClaw. | `@openclaw/ollama-provider`<br />opgenomen in OpenClaw | providers: ollama; contracts: memoryEmbeddingProviders, webSearchProviders |
|
||||
| [open-prose](/nl/plugins/reference/open-prose) | OpenProse VM-Skills-pakket met een /prose slash-command. | `@openclaw/open-prose`<br />opgenomen in OpenClaw | skills |
|
||||
| [openai](/nl/plugins/reference/openai) | Voegt ondersteuning voor de OpenAI- en OpenAI Codex-modelproviders toe aan OpenClaw. | `@openclaw/openai-provider`<br />opgenomen in OpenClaw | providers: openai, openai-codex; contracts: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, speechProviders, videoGenerationProviders |
|
||||
| [opencode](/nl/plugins/reference/opencode) | Voegt ondersteuning voor de OpenCode-modelprovider toe aan OpenClaw. | `@openclaw/opencode-provider`<br />opgenomen in OpenClaw | providers: opencode; contracts: mediaUnderstandingProviders |
|
||||
| [opencode-go](/nl/plugins/reference/opencode-go) | Voegt ondersteuning voor de OpenCode Go-modelprovider toe aan OpenClaw. | `@openclaw/opencode-go-provider`<br />opgenomen in OpenClaw | providers: opencode-go; contracts: mediaUnderstandingProviders |
|
||||
| [openrouter](/nl/plugins/reference/openrouter) | Voegt ondersteuning voor de OpenRouter-modelprovider toe aan OpenClaw. | `@openclaw/openrouter-provider`<br />opgenomen in OpenClaw | providers: openrouter; contracts: imageGenerationProviders, mediaUnderstandingProviders, speechProviders, videoGenerationProviders |
|
||||
| [openshell](/nl/plugins/reference/openshell) | Sandbox-backend aangedreven door OpenShell met gespiegelde lokale werkruimten en SSH-gebaseerde opdrachtuitvoering. | `@openclaw/openshell-sandbox`<br />opgenomen in OpenClaw | plugin |
|
||||
| [perplexity](/nl/plugins/reference/perplexity) | Voegt ondersteuning toe voor webzoekproviders. | `@openclaw/perplexity-plugin`<br />opgenomen in OpenClaw | contracts: webSearchProviders |
|
||||
| [qianfan](/nl/plugins/reference/qianfan) | Voegt ondersteuning voor de Qianfan-modelprovider toe aan OpenClaw. | `@openclaw/qianfan-provider`<br />opgenomen in OpenClaw | providers: qianfan |
|
||||
| [qwen](/nl/plugins/reference/qwen) | Voegt ondersteuning voor Qwen-, Qwen Cloud-, Model Studio- en DashScope-modelproviders toe aan OpenClaw. | `@openclaw/qwen-provider`<br />opgenomen in OpenClaw | providers: qwen, qwencloud, modelstudio, dashscope; contracts: mediaUnderstandingProviders, videoGenerationProviders |
|
||||
| [runway](/nl/plugins/reference/runway) | Voegt ondersteuning voor videogeneratieproviders toe. | `@openclaw/runway-provider`<br />opgenomen in OpenClaw | contracts: videoGenerationProviders |
|
||||
| [searxng](/nl/plugins/reference/searxng) | Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/searxng-plugin`<br />opgenomen in OpenClaw | contracts: webSearchProviders |
|
||||
| [senseaudio](/nl/plugins/reference/senseaudio) | Voegt ondersteuning voor media-inzichtproviders toe. | `@openclaw/senseaudio-provider`<br />opgenomen in OpenClaw | contracts: mediaUnderstandingProviders |
|
||||
| [sglang](/nl/plugins/reference/sglang) | Voegt ondersteuning voor de SGLang-modelprovider toe aan OpenClaw. | `@openclaw/sglang-provider`<br />opgenomen in OpenClaw | providers: sglang |
|
||||
| [signal](/nl/plugins/reference/signal) | Voegt de Signal-kanaalinterface toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/signal`<br />opgenomen in OpenClaw | channels: signal |
|
||||
| [skill-workshop](/nl/plugins/reference/skill-workshop) | Legt herhaalbare werkstromen vast als werkruimte-Skills, met wachtende beoordeling, veilige schrijfacties en vernieuwing van skill-prompts. | `@openclaw/skill-workshop`<br />opgenomen in OpenClaw | contracts: tools |
|
||||
| [slack](/nl/plugins/reference/slack) | Voegt de Slack-kanaalinterface toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/slack`<br />opgenomen in OpenClaw | channels: slack |
|
||||
| [stepfun](/nl/plugins/reference/stepfun) | Voegt ondersteuning voor de StepFun- en StepFun Plan-modelprovider toe aan OpenClaw. | `@openclaw/stepfun-provider`<br />opgenomen in OpenClaw | providers: stepfun, stepfun-plan |
|
||||
| [synthetic](/nl/plugins/reference/synthetic) | Voegt ondersteuning voor de Synthetic-modelprovider toe aan OpenClaw. | `@openclaw/synthetic-provider`<br />opgenomen in OpenClaw | providers: synthetic |
|
||||
| [tavily](/nl/plugins/reference/tavily) | Voegt tools toe die door agents kunnen worden aangeroepen. Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/tavily-plugin`<br />opgenomen in OpenClaw | contracts: tools, webSearchProviders; skills |
|
||||
| [telegram](/nl/plugins/reference/telegram) | Voegt de Telegram-kanaalinterface toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/telegram`<br />opgenomen in OpenClaw | channels: telegram |
|
||||
| [tencent](/nl/plugins/reference/tencent) | Voegt ondersteuning voor de Tencent TokenHub-modelprovider toe aan OpenClaw. | `@openclaw/tencent-provider`<br />opgenomen in OpenClaw | providers: tencent-tokenhub |
|
||||
| [together](/nl/plugins/reference/together) | Voegt ondersteuning voor de Together-modelprovider toe aan OpenClaw. | `@openclaw/together-provider`<br />opgenomen in OpenClaw | providers: together; contracts: videoGenerationProviders |
|
||||
| [tokenjuice](/nl/plugins/reference/tokenjuice) | Comprimeert resultaten van exec- en bash-tools met tokenjuice-reducers. | `@openclaw/tokenjuice`<br />opgenomen in OpenClaw | contracts: agentToolResultMiddleware |
|
||||
| [tts-local-cli](/nl/plugins/reference/tts-local-cli) | Voegt ondersteuning voor tekst-naar-spraakproviders toe. | `@openclaw/tts-local-cli`<br />opgenomen in OpenClaw | contracts: speechProviders |
|
||||
| [venice](/nl/plugins/reference/venice) | Voegt ondersteuning voor de Venice-modelprovider toe aan OpenClaw. | `@openclaw/venice-provider`<br />opgenomen in OpenClaw | providers: venice |
|
||||
| [vercel-ai-gateway](/nl/plugins/reference/vercel-ai-gateway) | Voegt ondersteuning voor de Vercel AI Gateway-modelprovider toe aan OpenClaw. | `@openclaw/vercel-ai-gateway-provider`<br />opgenomen in OpenClaw | providers: vercel-ai-gateway |
|
||||
| [vllm](/nl/plugins/reference/vllm) | Voegt ondersteuning voor de vLLM-modelprovider toe aan OpenClaw. | `@openclaw/vllm-provider`<br />opgenomen in OpenClaw | providers: vllm |
|
||||
| [volcengine](/nl/plugins/reference/volcengine) | Voegt ondersteuning voor de Volcengine- en Volcengine Plan-modelprovider toe aan OpenClaw. | `@openclaw/volcengine-provider`<br />opgenomen in OpenClaw | providers: volcengine, volcengine-plan; contracts: speechProviders |
|
||||
| [voyage](/nl/plugins/reference/voyage) | Voegt ondersteuning voor geheugen-embeddingproviders toe. | `@openclaw/voyage-provider`<br />opgenomen in OpenClaw | contracts: memoryEmbeddingProviders |
|
||||
| [vydra](/nl/plugins/reference/vydra) | Voegt ondersteuning voor de Vydra-modelprovider toe aan OpenClaw. | `@openclaw/vydra-provider`<br />opgenomen in OpenClaw | providers: vydra; contracts: imageGenerationProviders, speechProviders, videoGenerationProviders |
|
||||
| [web-readability](/nl/plugins/reference/web-readability) | Extraheert leesbare artikelinhoud uit lokale HTML-webophaalreacties. | `@openclaw/web-readability-plugin`<br />opgenomen in OpenClaw | contracts: webContentExtractors |
|
||||
| [webhooks](/nl/plugins/reference/webhooks) | Geverifieerde inkomende webhooks die externe automatisering koppelen aan OpenClaw TaskFlows. | `@openclaw/webhooks`<br />opgenomen in OpenClaw | plugin |
|
||||
| [xai](/nl/plugins/reference/xai) | Voegt ondersteuning voor de xAI-modelprovider toe aan OpenClaw. | `@openclaw/xai-plugin`<br />opgenomen in OpenClaw | providers: xai; contracts: imageGenerationProviders, mediaUnderstandingProviders, realtimeTranscriptionProviders, speechProviders, tools, videoGenerationProviders, webSearchProviders |
|
||||
| [xiaomi](/nl/plugins/reference/xiaomi) | Voegt ondersteuning voor de Xiaomi-modelprovider toe aan OpenClaw. | `@openclaw/xiaomi-provider`<br />opgenomen in OpenClaw | providers: xiaomi; contracts: speechProviders |
|
||||
| [zai](/nl/plugins/reference/zai) | Voegt ondersteuning voor de Z.AI-modelprovider toe aan OpenClaw. | `@openclaw/zai-provider`<br />opgenomen in OpenClaw | providers: zai; contracts: mediaUnderstandingProviders |
|
||||
Gebruik de kolom **Distributie** om te bepalen of installatie nodig is. Plugins waarvoor
|
||||
`included in OpenClaw` staat, zijn al aanwezig in het kernpakket. Officiële
|
||||
externe pakketten hebben één installatie nodig, gevolgd door een herstart van de Gateway.
|
||||
|
||||
Discord is bijvoorbeeld een officieel extern pakket:
|
||||
|
||||
```bash
|
||||
openclaw plugins install @openclaw/discord
|
||||
openclaw gateway restart
|
||||
openclaw plugins inspect discord --runtime --json
|
||||
```
|
||||
|
||||
Kale pakketspecificaties proberen eerst ClawHub en daarna npm als fallback. Gebruik
|
||||
`clawhub:@openclaw/discord` of `npm:@openclaw/discord` om een bron af te dwingen. Volg na installatie
|
||||
de installatiedocumentatie van de Plugin, zoals [Discord](/nl/channels/discord), om referenties
|
||||
en kanaalconfiguratie toe te voegen. Zie [Plugins beheren](/nl/plugins/manage-plugins) voor update-,
|
||||
verwijder- en publicatieopdrachten.
|
||||
|
||||
## Kern-npm-pakket
|
||||
|
||||
| Plugin | Beschrijving | Distributie | Oppervlak |
|
||||
| ----------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| [alibaba](/nl/plugins/reference/alibaba) | Voegt ondersteuning toe voor de videogeneratieprovider. | `@openclaw/alibaba-provider`<br />opgenomen in OpenClaw | contracten: videoGenerationProviders |
|
||||
| [amazon-bedrock](/nl/plugins/reference/amazon-bedrock) | Voegt ondersteuning voor de Amazon Bedrock-modelprovider toe aan OpenClaw. | `@openclaw/amazon-bedrock-provider`<br />opgenomen in OpenClaw | providers: amazon-bedrock; contracten: memoryEmbeddingProviders |
|
||||
| [amazon-bedrock-mantle](/nl/plugins/reference/amazon-bedrock-mantle) | Voegt ondersteuning voor de Amazon Bedrock Mantle-modelprovider toe aan OpenClaw. | `@openclaw/amazon-bedrock-mantle-provider`<br />opgenomen in OpenClaw | providers: amazon-bedrock-mantle |
|
||||
| [anthropic](/nl/plugins/reference/anthropic) | Voegt ondersteuning voor de Anthropic-modelprovider toe aan OpenClaw. | `@openclaw/anthropic-provider`<br />opgenomen in OpenClaw | providers: anthropic; contracten: mediaUnderstandingProviders |
|
||||
| [anthropic-vertex](/nl/plugins/reference/anthropic-vertex) | Voegt ondersteuning voor de Anthropic Vertex-modelprovider toe aan OpenClaw. | `@openclaw/anthropic-vertex-provider`<br />opgenomen in OpenClaw | providers: anthropic-vertex |
|
||||
| [arcee](/nl/plugins/reference/arcee) | Voegt ondersteuning voor de Arcee-modelprovider toe aan OpenClaw. | `@openclaw/arcee-provider`<br />opgenomen in OpenClaw | providers: arcee |
|
||||
| [azure-speech](/nl/plugins/reference/azure-speech) | Azure AI Speech tekst-naar-spraak (MP3, native Ogg/Opus-spraaknotities, PCM-telefonie). | `@openclaw/azure-speech`<br />opgenomen in OpenClaw | contracten: speechProviders |
|
||||
| [bonjour](/nl/plugins/reference/bonjour) | Adverteer de lokale OpenClaw-Gateway via Bonjour/mDNS. | `@openclaw/bonjour`<br />opgenomen in OpenClaw | Plugin |
|
||||
| [browser](/nl/plugins/reference/browser) | Voegt tools toe die door agents kunnen worden aangeroepen. | `@openclaw/browser-plugin`<br />opgenomen in OpenClaw | contracten: tools; Skills |
|
||||
| [byteplus](/nl/plugins/reference/byteplus) | Voegt ondersteuning voor de BytePlus- en BytePlus Plan-modelprovider toe aan OpenClaw. | `@openclaw/byteplus-provider`<br />opgenomen in OpenClaw | providers: byteplus, byteplus-plan; contracten: videoGenerationProviders |
|
||||
| [cerebras](/nl/plugins/reference/cerebras) | Voegt ondersteuning voor de Cerebras-modelprovider toe aan OpenClaw. | `@openclaw/cerebras-provider`<br />opgenomen in OpenClaw | providers: cerebras |
|
||||
| [chutes](/nl/plugins/reference/chutes) | Voegt ondersteuning voor de Chutes-modelprovider toe aan OpenClaw. | `@openclaw/chutes-provider`<br />opgenomen in OpenClaw | providers: chutes |
|
||||
| [cloudflare-ai-gateway](/nl/plugins/reference/cloudflare-ai-gateway) | Voegt ondersteuning voor de Cloudflare AI Gateway-modelprovider toe aan OpenClaw. | `@openclaw/cloudflare-ai-gateway-provider`<br />opgenomen in OpenClaw | providers: cloudflare-ai-gateway |
|
||||
| [comfy](/nl/plugins/reference/comfy) | Voegt ondersteuning voor de ComfyUI-modelprovider toe aan OpenClaw. | `@openclaw/comfy-provider`<br />opgenomen in OpenClaw | providers: comfy; contracten: imageGenerationProviders, musicGenerationProviders, videoGenerationProviders |
|
||||
| [copilot-proxy](/nl/plugins/reference/copilot-proxy) | Voegt ondersteuning voor de Copilot Proxy-modelprovider toe aan OpenClaw. | `@openclaw/copilot-proxy`<br />opgenomen in OpenClaw | providers: copilot-proxy |
|
||||
| [deepgram](/nl/plugins/reference/deepgram) | Voegt ondersteuning toe voor de provider voor mediabegrip. Voegt ondersteuning toe voor de provider voor realtime transcriptie. | `@openclaw/deepgram-provider`<br />opgenomen in OpenClaw | contracten: mediaUnderstandingProviders, realtimeTranscriptionProviders |
|
||||
| [deepinfra](/nl/plugins/reference/deepinfra) | Voegt ondersteuning voor de DeepInfra-modelprovider toe aan OpenClaw. | `@openclaw/deepinfra-provider`<br />opgenomen in OpenClaw | providers: deepinfra; contracten: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, speechProviders, videoGenerationProviders |
|
||||
| [deepseek](/nl/plugins/reference/deepseek) | Voegt ondersteuning voor de DeepSeek-modelprovider toe aan OpenClaw. | `@openclaw/deepseek-provider`<br />opgenomen in OpenClaw | providers: deepseek |
|
||||
| [document-extract](/nl/plugins/reference/document-extract) | Extraheer tekst en fallback-pagina-afbeeldingen uit lokale documentbijlagen. | `@openclaw/document-extract-plugin`<br />opgenomen in OpenClaw | contracten: documentExtractors |
|
||||
| [duckduckgo](/nl/plugins/reference/duckduckgo) | Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/duckduckgo-plugin`<br />opgenomen in OpenClaw | contracts: webSearchProviders |
|
||||
| [elevenlabs](/nl/plugins/reference/elevenlabs) | Voegt ondersteuning voor providers voor mediabegrip toe. Voegt ondersteuning voor providers voor realtime transcriptie toe. Voegt ondersteuning voor tekst-naar-spraakproviders toe. | `@openclaw/elevenlabs-speech`<br />opgenomen in OpenClaw | contracts: mediaUnderstandingProviders, realtimeTranscriptionProviders, speechProviders |
|
||||
| [exa](/nl/plugins/reference/exa) | Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/exa-plugin`<br />opgenomen in OpenClaw | contracts: webSearchProviders |
|
||||
| [fal](/nl/plugins/reference/fal) | Voegt ondersteuning voor de fal-modelprovider toe aan OpenClaw. | `@openclaw/fal-provider`<br />opgenomen in OpenClaw | providers: fal; contracts: imageGenerationProviders, videoGenerationProviders |
|
||||
| [file-transfer](/nl/plugins/reference/file-transfer) | Haal bestanden op, som ze op en schrijf ze op gekoppelde nodes via speciale node-opdrachten. Omzeilt afkapping van bash-stdout door base64 via node.invoke te gebruiken voor binaire bestanden tot 16 MB. | `@openclaw/file-transfer`<br />opgenomen in OpenClaw | contracts: tools |
|
||||
| [firecrawl](/nl/plugins/reference/firecrawl) | Voegt door agents aanroepbare tools toe. Voegt ondersteuning voor webophaalproviders toe. Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/firecrawl-plugin`<br />opgenomen in OpenClaw | contracts: tools, webFetchProviders, webSearchProviders |
|
||||
| [fireworks](/nl/plugins/reference/fireworks) | Voegt ondersteuning voor de Fireworks-modelprovider toe aan OpenClaw. | `@openclaw/fireworks-provider`<br />opgenomen in OpenClaw | providers: fireworks |
|
||||
| [github-copilot](/nl/plugins/reference/github-copilot) | Voegt ondersteuning voor de GitHub Copilot-modelprovider toe aan OpenClaw. | `@openclaw/github-copilot-provider`<br />opgenomen in OpenClaw | providers: github-copilot; contracts: memoryEmbeddingProviders |
|
||||
| [google](/nl/plugins/reference/google) | Voegt ondersteuning voor de Google-, Google Gemini CLI- en Google Vertex-modelproviders toe aan OpenClaw. | `@openclaw/google-plugin`<br />opgenomen in OpenClaw | providers: google, google-gemini-cli, google-vertex; contracts: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, musicGenerationProviders, realtimeVoiceProviders, speechProviders, videoGenerationProviders, webSearchProviders |
|
||||
| [gradium](/nl/plugins/reference/gradium) | Voegt ondersteuning voor tekst-naar-spraakproviders toe. | `@openclaw/gradium-speech`<br />opgenomen in OpenClaw | contracts: speechProviders |
|
||||
| [groq](/nl/plugins/reference/groq) | Voegt ondersteuning voor de Groq-modelprovider toe aan OpenClaw. | `@openclaw/groq-provider`<br />opgenomen in OpenClaw | providers: groq; contracts: mediaUnderstandingProviders |
|
||||
| [huggingface](/nl/plugins/reference/huggingface) | Voegt ondersteuning voor de Hugging Face-modelprovider toe aan OpenClaw. | `@openclaw/huggingface-provider`<br />opgenomen in OpenClaw | providers: huggingface |
|
||||
| [imessage](/nl/plugins/reference/imessage) | Voegt het iMessage-kanaaloppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/imessage`<br />opgenomen in OpenClaw | channels: imessage |
|
||||
| [inworld](/nl/plugins/reference/inworld) | Inworld-streaming tekst-naar-spraak (MP3, OGG_OPUS, PCM-telefonie). | `@openclaw/inworld-speech`<br />opgenomen in OpenClaw | contracts: speechProviders |
|
||||
| [irc](/nl/plugins/reference/irc) | Voegt het IRC-kanaaloppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/irc`<br />opgenomen in OpenClaw | channels: irc |
|
||||
| [kilocode](/nl/plugins/reference/kilocode) | Voegt ondersteuning voor de Kilocode-modelprovider toe aan OpenClaw. | `@openclaw/kilocode-provider`<br />opgenomen in OpenClaw | providers: kilocode |
|
||||
| [kimi](/nl/plugins/reference/kimi) | Voegt ondersteuning voor de Kimi- en Kimi Coding-modelproviders toe aan OpenClaw. | `@openclaw/kimi-provider`<br />opgenomen in OpenClaw | providers: kimi, kimi-coding |
|
||||
| [litellm](/nl/plugins/reference/litellm) | Voegt ondersteuning voor de LiteLLM-modelprovider toe aan OpenClaw. | `@openclaw/litellm-provider`<br />opgenomen in OpenClaw | providers: litellm; contracts: imageGenerationProviders |
|
||||
| [llm-task](/nl/plugins/reference/llm-task) | Generieke LLM-tool alleen voor JSON voor gestructureerde taken die vanuit workflows kan worden aangeroepen. | `@openclaw/llm-task`<br />opgenomen in OpenClaw | contracts: tools |
|
||||
| [lmstudio](/nl/plugins/reference/lmstudio) | Voegt ondersteuning voor de LM Studio-modelprovider toe aan OpenClaw. | `@openclaw/lmstudio-provider`<br />opgenomen in OpenClaw | providers: lmstudio; contracts: memoryEmbeddingProviders |
|
||||
| [matrix](/nl/plugins/reference/matrix) | Voegt het Matrix-kanaaloppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/matrix`<br />opgenomen in OpenClaw | channels: matrix |
|
||||
| [mattermost](/nl/plugins/reference/mattermost) | Voegt het Mattermost-kanaaloppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/mattermost`<br />meegeleverd met OpenClaw | channels: mattermost |
|
||||
| [memory-core](/nl/plugins/reference/memory-core) | Voegt ondersteuning toe voor geheugenembeddingproviders. Voegt door agents aanroepbare tools toe. | `@openclaw/memory-core`<br />meegeleverd met OpenClaw | contracts: memoryEmbeddingProviders, tools |
|
||||
| [memory-wiki](/nl/plugins/reference/memory-wiki) | Persistente wikicompiler en Obsidian-vriendelijke kennisvault voor OpenClaw. | `@openclaw/memory-wiki`<br />meegeleverd met OpenClaw | contracts: tools; skills |
|
||||
| [microsoft](/nl/plugins/reference/microsoft) | Voegt ondersteuning toe voor tekst-naar-spraakproviders. | `@openclaw/microsoft-speech`<br />meegeleverd met OpenClaw | contracts: speechProviders |
|
||||
| [microsoft-foundry](/nl/plugins/reference/microsoft-foundry) | Voegt ondersteuning voor Microsoft Foundry-modelproviders toe aan OpenClaw. | `@openclaw/microsoft-foundry`<br />meegeleverd met OpenClaw | providers: microsoft-foundry |
|
||||
| [migrate-claude](/nl/plugins/reference/migrate-claude) | Importeert Claude Code- en Claude Desktop-instructies, MCP-servers, skills en veilige configuratie in OpenClaw. | `@openclaw/migrate-claude`<br />meegeleverd met OpenClaw | contracts: migrationProviders |
|
||||
| [migrate-hermes](/nl/plugins/reference/migrate-hermes) | Importeert Hermes-configuratie, herinneringen, skills en ondersteunde referenties in OpenClaw. | `@openclaw/migrate-hermes`<br />meegeleverd met OpenClaw | contracts: migrationProviders |
|
||||
| [minimax](/nl/plugins/reference/minimax) | Voegt ondersteuning voor MiniMax- en MiniMax Portal-modelproviders toe aan OpenClaw. | `@openclaw/minimax-provider`<br />meegeleverd met OpenClaw | providers: minimax, minimax-portal; contracts: imageGenerationProviders, mediaUnderstandingProviders, musicGenerationProviders, speechProviders, videoGenerationProviders, webSearchProviders |
|
||||
| [mistral](/nl/plugins/reference/mistral) | Voegt ondersteuning voor Mistral-modelproviders toe aan OpenClaw. | `@openclaw/mistral-provider`<br />meegeleverd met OpenClaw | providers: mistral; contracts: mediaUnderstandingProviders, memoryEmbeddingProviders, realtimeTranscriptionProviders |
|
||||
| [moonshot](/nl/plugins/reference/moonshot) | Voegt ondersteuning voor Moonshot-modelproviders toe aan OpenClaw. | `@openclaw/moonshot-provider`<br />meegeleverd met OpenClaw | providers: moonshot; contracts: mediaUnderstandingProviders, webSearchProviders |
|
||||
| [nvidia](/nl/plugins/reference/nvidia) | Voegt ondersteuning voor NVIDIA-modelproviders toe aan OpenClaw. | `@openclaw/nvidia-provider`<br />meegeleverd met OpenClaw | providers: nvidia |
|
||||
| [ollama](/nl/plugins/reference/ollama) | Voegt ondersteuning voor Ollama-modelproviders toe aan OpenClaw. | `@openclaw/ollama-provider`<br />meegeleverd met OpenClaw | providers: ollama; contracts: memoryEmbeddingProviders, webSearchProviders |
|
||||
| [open-prose](/nl/plugins/reference/open-prose) | OpenProse VM-skillpakket met een `/prose`-slashopdracht. | `@openclaw/open-prose`<br />meegeleverd met OpenClaw | skills |
|
||||
| [openai](/nl/plugins/reference/openai) | Voegt ondersteuning voor OpenAI- en OpenAI Codex-modelproviders toe aan OpenClaw. | `@openclaw/openai-provider`<br />meegeleverd met OpenClaw | providers: openai, openai-codex; contracts: imageGenerationProviders, mediaUnderstandingProviders, memoryEmbeddingProviders, realtimeTranscriptionProviders, realtimeVoiceProviders, speechProviders, videoGenerationProviders |
|
||||
| [opencode](/nl/plugins/reference/opencode) | Voegt ondersteuning voor OpenCode-modelproviders toe aan OpenClaw. | `@openclaw/opencode-provider`<br />meegeleverd met OpenClaw | providers: opencode; contracts: mediaUnderstandingProviders |
|
||||
| [opencode-go](/nl/plugins/reference/opencode-go) | Voegt ondersteuning voor OpenCode Go-modelproviders toe aan OpenClaw. | `@openclaw/opencode-go-provider`<br />meegeleverd met OpenClaw | providers: opencode-go; contracts: mediaUnderstandingProviders |
|
||||
| [openrouter](/nl/plugins/reference/openrouter) | Voegt ondersteuning voor OpenRouter-modelproviders toe aan OpenClaw. | `@openclaw/openrouter-provider`<br />meegeleverd met OpenClaw | providers: openrouter; contracts: imageGenerationProviders, mediaUnderstandingProviders, speechProviders, videoGenerationProviders |
|
||||
| [openshell](/nl/plugins/reference/openshell) | Sandboxbackend aangedreven door OpenShell met gespiegelde lokale werkruimten en SSH-gebaseerde opdrachtuitvoering. | `@openclaw/openshell-sandbox`<br />meegeleverd met OpenClaw | plugin |
|
||||
| [perplexity](/nl/plugins/reference/perplexity) | Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/perplexity-plugin`<br />meegeleverd met OpenClaw | contracts: webSearchProviders |
|
||||
| [qianfan](/nl/plugins/reference/qianfan) | Voegt ondersteuning voor Qianfan-modelproviders toe aan OpenClaw. | `@openclaw/qianfan-provider`<br />meegeleverd met OpenClaw | providers: qianfan |
|
||||
| [qwen](/nl/plugins/reference/qwen) | Voegt ondersteuning voor Qwen-, Qwen Cloud-, Model Studio- en DashScope-modelproviders toe aan OpenClaw. | `@openclaw/qwen-provider`<br />meegeleverd met OpenClaw | providers: qwen, qwencloud, modelstudio, dashscope; contracts: mediaUnderstandingProviders, videoGenerationProviders |
|
||||
| [runway](/nl/plugins/reference/runway) | Voegt ondersteuning voor videogeneratieproviders toe. | `@openclaw/runway-provider`<br />meegeleverd met OpenClaw | contracts: videoGenerationProviders |
|
||||
| [searxng](/nl/plugins/reference/searxng) | Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/searxng-plugin`<br />meegeleverd met OpenClaw | contracts: webSearchProviders |
|
||||
| [senseaudio](/nl/plugins/reference/senseaudio) | Voegt ondersteuning voor providers voor mediabegrip toe. | `@openclaw/senseaudio-provider`<br />meegeleverd met OpenClaw | contracts: mediaUnderstandingProviders |
|
||||
| [sglang](/nl/plugins/reference/sglang) | Voegt ondersteuning voor SGLang-modelproviders toe aan OpenClaw. | `@openclaw/sglang-provider`<br />meegeleverd met OpenClaw | providers: sglang |
|
||||
| [signal](/nl/plugins/reference/signal) | Voegt het Signal-kanaaloppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/signal`<br />meegeleverd met OpenClaw | channels: signal |
|
||||
| [skill-workshop](/nl/plugins/reference/skill-workshop) | Legt herhaalbare werkstromen vast als werkruimte-Skills, met wachtende review, veilige schrijfacties en vernieuwing van skill-prompts. | `@openclaw/skill-workshop`<br />meegeleverd met OpenClaw | contracts: tools |
|
||||
| [slack](/nl/plugins/reference/slack) | Voegt het Slack-kanaaloppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/slack`<br />meegeleverd met OpenClaw | channels: slack |
|
||||
| [stepfun](/nl/plugins/reference/stepfun) | Voegt ondersteuning voor StepFun- en StepFun Plan-modelproviders toe aan OpenClaw. | `@openclaw/stepfun-provider`<br />meegeleverd met OpenClaw | providers: stepfun, stepfun-plan |
|
||||
| [synthetic](/nl/plugins/reference/synthetic) | Voegt ondersteuning voor Synthetic-modelproviders toe aan OpenClaw. | `@openclaw/synthetic-provider`<br />meegeleverd met OpenClaw | providers: synthetic |
|
||||
| [tavily](/nl/plugins/reference/tavily) | Voegt tools toe die door agents kunnen worden aangeroepen. Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/tavily-plugin`<br />meegeleverd met OpenClaw | contracts: tools, webSearchProviders; skills |
|
||||
| [telegram](/nl/plugins/reference/telegram) | Voegt het Telegram-kanaaloppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/telegram`<br />meegeleverd met OpenClaw | channels: telegram |
|
||||
| [tencent](/nl/plugins/reference/tencent) | Voegt ondersteuning voor Tencent TokenHub-modelproviders toe aan OpenClaw. | `@openclaw/tencent-provider`<br />meegeleverd met OpenClaw | providers: tencent-tokenhub |
|
||||
| [together](/nl/plugins/reference/together) | Voegt ondersteuning voor Together-modelproviders toe aan OpenClaw. | `@openclaw/together-provider`<br />meegeleverd met OpenClaw | providers: together; contracts: videoGenerationProviders |
|
||||
| [tokenjuice](/nl/plugins/reference/tokenjuice) | Comprimeert resultaten van exec- en bash-tools met tokenjuice-reducers. | `@openclaw/tokenjuice`<br />meegeleverd met OpenClaw | contracts: agentToolResultMiddleware |
|
||||
| [tts-local-cli](/nl/plugins/reference/tts-local-cli) | Voegt ondersteuning voor tekst-naar-spraakproviders toe. | `@openclaw/tts-local-cli`<br />meegeleverd met OpenClaw | contracts: speechProviders |
|
||||
| [venice](/nl/plugins/reference/venice) | Voegt ondersteuning voor Venice-modelproviders toe aan OpenClaw. | `@openclaw/venice-provider`<br />meegeleverd met OpenClaw | providers: venice |
|
||||
| [vercel-ai-gateway](/nl/plugins/reference/vercel-ai-gateway) | Voegt ondersteuning voor Vercel AI Gateway-modelproviders toe aan OpenClaw. | `@openclaw/vercel-ai-gateway-provider`<br />meegeleverd met OpenClaw | providers: vercel-ai-gateway |
|
||||
| [vllm](/nl/plugins/reference/vllm) | Voegt ondersteuning voor vLLM-modelproviders toe aan OpenClaw. | `@openclaw/vllm-provider`<br />meegeleverd met OpenClaw | providers: vllm |
|
||||
| [volcengine](/nl/plugins/reference/volcengine) | Voegt ondersteuning voor Volcengine- en Volcengine Plan-modelproviders toe aan OpenClaw. | `@openclaw/volcengine-provider`<br />meegeleverd met OpenClaw | providers: volcengine, volcengine-plan; contracts: speechProviders |
|
||||
| [voyage](/nl/plugins/reference/voyage) | Voegt ondersteuning voor providers voor geheugen-embeddings toe. | `@openclaw/voyage-provider`<br />meegeleverd met OpenClaw | contracts: memoryEmbeddingProviders |
|
||||
| [vydra](/nl/plugins/reference/vydra) | Voegt ondersteuning voor Vydra-modelproviders toe aan OpenClaw. | `@openclaw/vydra-provider`<br />meegeleverd met OpenClaw | providers: vydra; contracts: imageGenerationProviders, speechProviders, videoGenerationProviders |
|
||||
| [web-readability](/nl/plugins/reference/web-readability) | Extraheert leesbare artikelinhoud uit lokale HTML-webfetch-responsen. | `@openclaw/web-readability-plugin`<br />opgenomen in OpenClaw | contracten: webContentExtractors |
|
||||
| [webhooks](/nl/plugins/reference/webhooks) | Geverifieerde inkomende Webhooks die externe automatisering aan OpenClaw TaskFlows koppelen. | `@openclaw/webhooks`<br />opgenomen in OpenClaw | Plugin |
|
||||
| [xai](/nl/plugins/reference/xai) | Voegt ondersteuning voor de xAI-modelprovider toe aan OpenClaw. | `@openclaw/xai-plugin`<br />opgenomen in OpenClaw | providers: xai; contracten: imageGenerationProviders, mediaUnderstandingProviders, realtimeTranscriptionProviders, speechProviders, tools, videoGenerationProviders, webSearchProviders |
|
||||
| [xiaomi](/nl/plugins/reference/xiaomi) | Voegt ondersteuning voor de Xiaomi-modelprovider toe aan OpenClaw. | `@openclaw/xiaomi-provider`<br />opgenomen in OpenClaw | providers: xiaomi; contracten: speechProviders |
|
||||
| [zai](/nl/plugins/reference/zai) | Voegt ondersteuning voor de Z.AI-modelprovider toe aan OpenClaw. | `@openclaw/zai-provider`<br />opgenomen in OpenClaw | providers: zai; contracten: mediaUnderstandingProviders |
|
||||
|
||||
## Officiële externe pakketten
|
||||
|
||||
| Plugin | Beschrijving | Distributie | Oppervlak |
|
||||
| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- |
|
||||
| [acpx](/nl/plugins/reference/acpx) | Ingebedde ACP-runtimebackend met door de plugin beheerd sessie- en transportbeheer. | `@openclaw/acpx`<br />npm; ClawHub | skills |
|
||||
| [acpx](/nl/plugins/reference/acpx) | Ingesloten ACP-runtimebackend met door de plugin beheerd sessie- en transportbeheer. | `@openclaw/acpx`<br />npm; ClawHub | skills |
|
||||
| [bluebubbles](/nl/plugins/reference/bluebubbles) | Voegt het BlueBubbles-kanaaloppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/bluebubbles`<br />npm; ClawHub | channels: bluebubbles |
|
||||
| [brave](/nl/plugins/reference/brave) | Voegt ondersteuning voor webzoekproviders toe. | `@openclaw/brave-plugin`<br />npm; ClawHub | contracts: webSearchProviders |
|
||||
| [codex](/nl/plugins/reference/codex) | Codex app-server-harnas en door Codex beheerde GPT-modelcatalogus. | `@openclaw/codex`<br />npm; ClawHub | providers: codex; contracts: mediaUnderstandingProviders, migrationProviders |
|
||||
| [brave](/nl/plugins/reference/brave) | Voegt ondersteuning toe voor webzoekproviders. | `@openclaw/brave-plugin`<br />npm; ClawHub | contracts: webSearchProviders |
|
||||
| [codex](/nl/plugins/reference/codex) | Codex-app-serverharnas en door Codex beheerde GPT-modelcatalogus. | `@openclaw/codex`<br />npm; ClawHub | providers: codex; contracts: mediaUnderstandingProviders, migrationProviders |
|
||||
| [diagnostics-otel](/nl/plugins/reference/diagnostics-otel) | OpenClaw-diagnostiekexporter voor OpenTelemetry. | `@openclaw/diagnostics-otel`<br />npm; ClawHub: `clawhub:@openclaw/diagnostics-otel` | plugin |
|
||||
| [diagnostics-prometheus](/nl/plugins/reference/diagnostics-prometheus) | OpenClaw-diagnostiekexporter voor Prometheus. | `@openclaw/diagnostics-prometheus`<br />npm; ClawHub: `clawhub:@openclaw/diagnostics-prometheus` | plugin |
|
||||
| [diffs](/nl/plugins/reference/diffs) | Alleen-lezen diffviewer en bestandsrenderer voor agents. | `@openclaw/diffs`<br />npm; ClawHub | contracts: tools; skills |
|
||||
@ -154,10 +175,10 @@ plugins geladen vanuit `extensions/<id>`, zodat lokale wijzigingen en pakketloka
|
||||
| [zalo](/nl/plugins/reference/zalo) | Voegt het Zalo-kanaaloppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/zalo`<br />npm; ClawHub | channels: zalo |
|
||||
| [zalouser](/nl/plugins/reference/zalouser) | Voegt het Zalo Personal-kanaaloppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/zalouser`<br />npm; ClawHub | channels: zalouser; contracts: tools |
|
||||
|
||||
## Alleen source-checkout
|
||||
## Alleen source checkout
|
||||
|
||||
| Plugin | Beschrijving | Distributie | Oppervlak |
|
||||
| ------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------------ | -------------------- |
|
||||
| [qa-channel](/nl/plugins/reference/qa-channel) | Voegt het QA Channel-oppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/qa-channel`<br />alleen source-checkout | channels: qa-channel |
|
||||
| [qa-lab](/nl/plugins/reference/qa-lab) | OpenClaw QA-labplugin met privé-debugger-UI en scenariorunner. | `@openclaw/qa-lab`<br />alleen source-checkout | plugin |
|
||||
| [qa-matrix](/nl/plugins/reference/qa-matrix) | Matrix QA-transportrunner en substraat. | `@openclaw/qa-matrix`<br />alleen source-checkout | plugin |
|
||||
| [qa-channel](/nl/plugins/reference/qa-channel) | Voegt het QA Channel-oppervlak toe voor het verzenden en ontvangen van OpenClaw-berichten. | `@openclaw/qa-channel`<br />alleen source checkout | channels: qa-channel |
|
||||
| [qa-lab](/nl/plugins/reference/qa-lab) | OpenClaw QA-labplugin met privédebugger-UI en scenariorunner. | `@openclaw/qa-lab`<br />alleen source checkout | plugin |
|
||||
| [qa-matrix](/nl/plugins/reference/qa-matrix) | Matrix QA-transportrunner en substraat. | `@openclaw/qa-matrix`<br />alleen source checkout | plugin |
|
||||
|
||||
@ -1,28 +1,28 @@
|
||||
---
|
||||
read_when:
|
||||
- Je moet core-helpers vanuit een Plugin aanroepen (TTS, STT, beeldgeneratie, webzoekfunctie, subagent, nodes)
|
||||
- Je moet kernhelpers aanroepen vanuit een Plugin (TTS, STT, beeldgeneratie, zoeken op het web, subagent, knooppunten)
|
||||
- Je wilt begrijpen wat api.runtime beschikbaar stelt
|
||||
- Je gebruikt configuratie-, agent- of mediahelpers vanuit plugin-code
|
||||
- Je gebruikt configuratie-, agent- of mediahelpers vanuit plugincode
|
||||
sidebarTitle: Runtime helpers
|
||||
summary: api.runtime -- de geïnjecteerde runtime-hulpfuncties die beschikbaar zijn voor plugins
|
||||
title: Plugin-runtimehulpfuncties
|
||||
summary: api.runtime -- de geïnjecteerde runtimehelpers die beschikbaar zijn voor plugins
|
||||
title: Plugin-runtimehelpers
|
||||
x-i18n:
|
||||
generated_at: "2026-05-02T20:57:41Z"
|
||||
generated_at: "2026-05-04T09:37:05Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 26df37a2ad0dcd29648e382eb579b6892068af4dea1c47460cfd379458a8081c
|
||||
source_hash: c968f30052ecba4359bdaa9b1c640c1220268933ce01ccef06bcade225b50b7d
|
||||
source_path: plugins/sdk-runtime.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Naslag voor het `api.runtime`-object dat tijdens registratie in elke plugin wordt geïnjecteerd. Gebruik deze helpers in plaats van host-internals rechtstreeks te importeren.
|
||||
Referentie voor het `api.runtime`-object dat tijdens registratie in elke plugin wordt geïnjecteerd. Gebruik deze helpers in plaats van hostinternals rechtstreeks te importeren.
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Kanaalplugins" href="/nl/plugins/sdk-channel-plugins">
|
||||
Stapsgewijze gids die deze helpers in context gebruikt voor kanaalplugins.
|
||||
<Card title="Channel-plugins" href="/nl/plugins/sdk-channel-plugins">
|
||||
Stapsgewijze handleiding die deze helpers in context gebruikt voor channel-plugins.
|
||||
</Card>
|
||||
<Card title="Providerplugins" href="/nl/plugins/sdk-provider-plugins">
|
||||
Stapsgewijze gids die deze helpers in context gebruikt voor providerplugins.
|
||||
<Card title="Provider-plugins" href="/nl/plugins/sdk-provider-plugins">
|
||||
Stapsgewijze handleiding die deze helpers in context gebruikt voor provider-plugins.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -32,40 +32,40 @@ register(api) {
|
||||
}
|
||||
```
|
||||
|
||||
## Configuratie Laden En Schrijven
|
||||
## Configuratie laden en schrijven
|
||||
|
||||
Geef de voorkeur aan configuratie die al aan het actieve aanroeppad is doorgegeven, bijvoorbeeld `api.config` tijdens registratie of een `cfg`-argument in kanaal-/providercallbacks. Zo blijft één processnapshot door het werk stromen in plaats van configuratie opnieuw te parsen op hot paths.
|
||||
Geef de voorkeur aan configuratie die al aan het actieve callpad is doorgegeven, bijvoorbeeld `api.config` tijdens registratie of een `cfg`-argument bij channel-/provider-callbacks. Zo blijft een proces-snapshot door het werk stromen in plaats van configuratie opnieuw te parsen op hot paths.
|
||||
|
||||
Gebruik `api.runtime.config.current()` alleen wanneer een langlevende handler de huidige processnapshot nodig heeft en er geen configuratie aan die functie is doorgegeven. De geretourneerde waarde is readonly; kloon deze of gebruik een mutatiehelper voordat je bewerkingen uitvoert.
|
||||
Gebruik `api.runtime.config.current()` alleen wanneer een langdurig actieve handler de huidige proces-snapshot nodig heeft en er geen configuratie aan die functie is doorgegeven. De geretourneerde waarde is alleen-lezen; kloon deze of gebruik een mutation-helper voordat je bewerkingen uitvoert.
|
||||
|
||||
Tool factories ontvangen `ctx.runtimeConfig` plus `ctx.getRuntimeConfig()`. Gebruik de getter binnen de `execute`-callback van een langlevende tool wanneer configuratie kan veranderen nadat de tooldefinitie is gemaakt.
|
||||
Tool-factories ontvangen `ctx.runtimeConfig` plus `ctx.getRuntimeConfig()`. Gebruik de getter binnen de `execute`-callback van een langdurig actieve tool wanneer configuratie kan wijzigen nadat de tooldefinitie is gemaakt.
|
||||
|
||||
Sla wijzigingen op met `api.runtime.config.mutateConfigFile(...)` of `api.runtime.config.replaceConfigFile(...)`. Elke schrijfactie moet een expliciet `afterWrite`-beleid kiezen:
|
||||
Persist wijzigingen met `api.runtime.config.mutateConfigFile(...)` of `api.runtime.config.replaceConfigFile(...)`. Elke schrijfactie moet een expliciet `afterWrite`-beleid kiezen:
|
||||
|
||||
- `afterWrite: { mode: "auto" }` laat de herlaadplanner van de Gateway beslissen.
|
||||
- `afterWrite: { mode: "auto" }` laat de gateway-herlaadplanner beslissen.
|
||||
- `afterWrite: { mode: "restart", reason: "..." }` forceert een schone herstart wanneer de schrijver weet dat hot reload onveilig is.
|
||||
- `afterWrite: { mode: "none", reason: "..." }` onderdrukt automatisch herladen/herstarten alleen wanneer de aanroeper eigenaar is van de follow-up.
|
||||
|
||||
De mutatiehelpers retourneren `afterWrite` plus een getypte `followUp`-samenvatting, zodat aanroepers kunnen loggen of testen of ze een herstart hebben aangevraagd. De Gateway blijft bepalen wanneer die herstart daadwerkelijk plaatsvindt.
|
||||
De mutation-helpers retourneren `afterWrite` plus een getypeerde `followUp`-samenvatting zodat aanroepers kunnen loggen of testen of ze een herstart hebben aangevraagd. De Gateway blijft bepalen wanneer die herstart daadwerkelijk plaatsvindt.
|
||||
|
||||
`api.runtime.config.loadConfig()` en `api.runtime.config.writeConfigFile(...)` zijn verouderde compatibiliteitshelpers onder `runtime-config-load-write`. Ze waarschuwen eenmaal tijdens runtime en blijven beschikbaar voor oude externe plugins tijdens het migratievenster. Gebundelde plugins mogen ze niet gebruiken; de configuratiegrensbewakers falen als plugincode ze aanroept of die helpers importeert vanuit plugin-SDK-subpaden.
|
||||
`api.runtime.config.loadConfig()` en `api.runtime.config.writeConfigFile(...)` zijn verouderde compatibiliteitshelpers onder `runtime-config-load-write`. Ze waarschuwen eenmaal tijdens runtime en blijven beschikbaar voor oude externe plugins tijdens het migratievenster. Gebundelde plugins mogen ze niet gebruiken; de config-boundary-guards falen als plugin-code ze aanroept of die helpers uit plugin-SDK-subpaden importeert.
|
||||
|
||||
Gebruik voor rechtstreekse SDK-imports de gerichte configuratiesubpaden in plaats van de brede
|
||||
`openclaw/plugin-sdk/config-runtime`-compatibiliteitsbarrel: `config-types` voor
|
||||
typen, `plugin-config-runtime` voor al geladen configuratie-assertions en plugin-
|
||||
entry lookup, `runtime-config-snapshot` voor huidige processnapshots, en
|
||||
`config-mutation` voor schrijfoperaties. Tests voor gebundelde plugins moeten deze gerichte
|
||||
Gebruik voor rechtstreekse SDK-imports de gerichte config-subpaden in plaats van de brede compatibiliteitsbarrel
|
||||
`openclaw/plugin-sdk/config-runtime`: `config-types` voor
|
||||
typen, `plugin-config-runtime` voor assertions op al geladen configuratie en plugin-
|
||||
entry-lookup, `runtime-config-snapshot` voor huidige proces-snapshots, en
|
||||
`config-mutation` voor schrijfacties. Tests voor gebundelde plugins moeten deze gerichte
|
||||
subpaden rechtstreeks mocken in plaats van de brede compatibiliteitsbarrel te mocken.
|
||||
|
||||
Interne OpenClaw-runtimecode volgt dezelfde richting: laad configuratie eenmaal aan de CLI-, Gateway- of procesgrens en geef die waarde daarna door. Succesvolle mutatieschrijfacties verversen de procesruntime-snapshot en verhogen de interne revisie; langlevende caches moeten de runtime-eigen cachesleutel gebruiken in plaats van configuratie lokaal te serialiseren. Langlevende runtimemodules hebben een zero-tolerance scanner voor ambient `loadConfig()`-aanroepen; gebruik een doorgegeven `cfg`, een request `context.getRuntimeConfig()`, of `getRuntimeConfig()` aan een expliciete procesgrens.
|
||||
Interne OpenClaw-runtimecode volgt dezelfde richting: laad configuratie eenmaal aan de CLI-, Gateway- of procesgrens en geef die waarde daarna door. Geslaagde mutation-schrijfacties verversen de proces-runtime-snapshot en verhogen de interne revisie; langdurig actieve caches moeten keyen op de runtime-owned cache-key in plaats van configuratie lokaal te serialiseren. Langdurig actieve runtime-modules hebben een zero-tolerance-scanner voor ambient `loadConfig()`-aanroepen; gebruik een doorgegeven `cfg`, een request-`context.getRuntimeConfig()`, of `getRuntimeConfig()` aan een expliciete procesgrens.
|
||||
|
||||
Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratiesnapshot gebruiken, niet een bestandssnapshot die is geretourneerd voor configuratie-readback of bewerking. Bestandssnapshots bewaren bronwaarden zoals SecretRef-markeringen voor UI en schrijfoperaties; providercallbacks hebben de opgeloste runtimeweergave nodig. Wanneer een helper kan worden aangeroepen met de actieve bronsnapshot of de actieve runtimesnapshot, routeer dan via `selectApplicableRuntimeConfig()` voordat credentials worden gelezen.
|
||||
Provider- en channel-uitvoeringspaden moeten de actieve runtime-config-snapshot gebruiken, niet een bestandssnapshot die is geretourneerd voor config-readback of bewerking. Bestandssnapshots behouden bronwaarden zoals SecretRef-markers voor UI en schrijfacties; provider-callbacks hebben de opgeloste runtime-weergave nodig. Wanneer een helper kan worden aangeroepen met de actieve bron-snapshot of de actieve runtime-snapshot, routeer dan via `selectApplicableRuntimeConfig()` voordat je credentials leest.
|
||||
|
||||
## Runtime-namespaces
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="api.runtime.agent">
|
||||
Agentidentiteit, directories en sessiebeheer.
|
||||
Agentidentiteit, mappen en sessiebeheer.
|
||||
|
||||
```typescript
|
||||
// Resolve the agent's working directory
|
||||
@ -109,15 +109,15 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
});
|
||||
```
|
||||
|
||||
`runEmbeddedAgent(...)` is de neutrale helper om vanuit plugincode een normale OpenClaw-agentbeurt te starten. Deze gebruikt dezelfde provider-/modelresolutie en agent-harnessselectie als door kanalen getriggerde antwoorden.
|
||||
`runEmbeddedAgent(...)` is de neutrale helper om vanuit plugin-code een normale OpenClaw-agentturn te starten. Deze gebruikt dezelfde provider-/modelresolutie en agent-harnessselectie als channel-getriggerde antwoorden.
|
||||
|
||||
`runEmbeddedPiAgent(...)` blijft beschikbaar als compatibiliteitsalias.
|
||||
`runEmbeddedPiAgent(...)` blijft bestaan als compatibiliteitsalias.
|
||||
|
||||
`resolveThinkingPolicy(...)` retourneert de ondersteunde denkniveaus van de provider/het model en een optionele standaardwaarde. Providerplugins zijn eigenaar van het modelspecifieke profiel via hun thinking-hooks, dus toolplugins moeten deze runtimehelper aanroepen in plaats van providerlijsten te importeren of te dupliceren.
|
||||
`resolveThinkingPolicy(...)` retourneert de ondersteunde thinking-niveaus en optionele standaard van de provider/het model. Provider-plugins zijn eigenaar van het modelspecifieke profiel via hun thinking-hooks, dus tool-plugins moeten deze runtime-helper aanroepen in plaats van providerlijsten te importeren of te dupliceren.
|
||||
|
||||
`normalizeThinkingLevel(...)` zet gebruikerstekst zoals `on`, `x-high` of `extra high` om naar het canonieke opgeslagen niveau voordat dit wordt gecontroleerd tegen het opgeloste beleid.
|
||||
`normalizeThinkingLevel(...)` converteert gebruikerstekst zoals `on`, `x-high` of `extra high` naar het canonieke opgeslagen niveau voordat dit wordt gecontroleerd tegen het opgeloste beleid.
|
||||
|
||||
**Helpers voor sessiestores** staan onder `api.runtime.agent.session`:
|
||||
**Session-store-helpers** staan onder `api.runtime.agent.session`:
|
||||
|
||||
```typescript
|
||||
const storePath = api.runtime.agent.session.resolveStorePath(cfg);
|
||||
@ -129,7 +129,7 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
const filePath = api.runtime.agent.session.resolveSessionFilePath(cfg, sessionId);
|
||||
```
|
||||
|
||||
Geef voor runtime-schrijfoperaties de voorkeur aan `updateSessionStore(...)` of `updateSessionStoreEntry(...)`. Ze routeren via de sessiestoreschrijver die eigendom is van de Gateway, behouden gelijktijdige updates en hergebruiken de hot cache. `saveSessionStore(...)` blijft beschikbaar voor compatibiliteit en offline onderhoudsachtige herschrijfacties.
|
||||
Geef de voorkeur aan `updateSessionStore(...)` of `updateSessionStoreEntry(...)` voor runtime-schrijfacties. Ze routeren via de session-store-writer van de Gateway, behouden gelijktijdige updates en hergebruiken de hot cache. `saveSessionStore(...)` blijft beschikbaar voor compatibiliteit en offline onderhoudsachtige herschrijfacties.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.agent.defaults">
|
||||
@ -170,14 +170,14 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
```
|
||||
|
||||
<Warning>
|
||||
Modeloverrides (`provider`/`model`) vereisen opt-in van de operator via `plugins.entries.<id>.subagent.allowModelOverride: true` in de configuratie. Niet-vertrouwde plugins kunnen nog steeds subagents uitvoeren, maar overrideverzoeken worden geweigerd.
|
||||
Model-overrides (`provider`/`model`) vereisen operator-opt-in via `plugins.entries.<id>.subagent.allowModelOverride: true` in configuratie. Niet-vertrouwde plugins kunnen nog steeds subagents uitvoeren, maar override-aanvragen worden geweigerd.
|
||||
</Warning>
|
||||
|
||||
`deleteSession(...)` kan sessies verwijderen die door dezelfde plugin zijn gemaakt via `api.runtime.subagent.run(...)`. Het verwijderen van willekeurige gebruikers- of operatorsessies vereist nog steeds een Gateway-verzoek met admin-scope.
|
||||
`deleteSession(...)` kan sessies verwijderen die door dezelfde plugin zijn gemaakt via `api.runtime.subagent.run(...)`. Het verwijderen van willekeurige gebruikers- of operatorsessies vereist nog steeds een admin-scoped Gateway-request.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.nodes">
|
||||
Toon verbonden nodes en roep een node-hostcommand aan vanuit door de Gateway geladen plugincode of vanuit plugin-CLI-commands. Gebruik dit wanneer een plugin eigenaar is van lokaal werk op een gekoppeld apparaat, bijvoorbeeld een browser- of audiobridge op een andere Mac.
|
||||
Toon verbonden nodes en roep een node-host-command aan vanuit door de Gateway geladen plugin-code of vanuit plugin-CLI-commands. Gebruik dit wanneer een plugin lokaal werk bezit op een gekoppeld apparaat, bijvoorbeeld een browser- of audiobridge op een andere Mac.
|
||||
|
||||
```typescript
|
||||
const { nodes } = await api.runtime.nodes.list({ connected: true });
|
||||
@ -190,13 +190,13 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
});
|
||||
```
|
||||
|
||||
Binnen de Gateway is deze runtime in-process. In plugin-CLI-commands roept deze de geconfigureerde Gateway aan via RPC, zodat commands zoals `openclaw googlemeet recover-tab` gekoppelde nodes vanuit de terminal kunnen inspecteren. Node-commands lopen nog steeds via normale Gateway-nodekoppeling, command-allowlists, pluginbeleid voor node-invoke en node-lokale commandafhandeling.
|
||||
Binnen de Gateway draait deze runtime in-process. In plugin-CLI-commands roept deze de geconfigureerde Gateway aan via RPC, zodat commands zoals `openclaw googlemeet recover-tab` gekoppelde nodes vanuit de terminal kunnen inspecteren. Node-commands lopen nog steeds via normale Gateway-nodekoppeling, command-allowlists, plugin-node-invoke-beleid en node-local command-afhandeling.
|
||||
|
||||
Plugins die gevaarlijke node-hostcommands beschikbaar maken, moeten een node-invoke-beleid registreren met `api.registerNodeInvokePolicy(...)`. Het beleid draait in de Gateway na command-allowlistchecks en voordat het command naar de node wordt doorgestuurd, zodat rechtstreekse `node.invoke`-aanroepen en plugintools op hoger niveau hetzelfde handhavingspad delen.
|
||||
Plugins die gevaarlijke node-host-commands beschikbaar maken, moeten een node-invoke-beleid registreren met `api.registerNodeInvokePolicy(...)`. Het beleid draait in de Gateway na command-allowlist-controles en voordat het command naar de node wordt doorgestuurd, zodat rechtstreekse `node.invoke`-aanroepen en hogere plugin-tools hetzelfde handhavingspad delen.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.tasks.managedFlows">
|
||||
Bind een Task Flow-runtime aan een bestaande OpenClaw-sessiesleutel of vertrouwde toolcontext, en maak en beheer daarna Task Flows zonder bij elke aanroep een eigenaar door te geven.
|
||||
Bind een TaskFlow-runtime aan een bestaande OpenClaw-sessiesleutel of vertrouwde toolcontext, en maak en beheer daarna TaskFlows zonder bij elke aanroep een eigenaar door te geven.
|
||||
|
||||
```typescript
|
||||
const taskFlow = api.runtime.tasks.managedFlows.fromToolContext(ctx);
|
||||
@ -223,11 +223,11 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
});
|
||||
```
|
||||
|
||||
Gebruik `bindSession({ sessionKey, requesterOrigin })` wanneer je al een vertrouwde OpenClaw-sessiesleutel hebt vanuit je eigen bindingslaag. Bind niet vanuit ruwe gebruikersinvoer.
|
||||
Gebruik `bindSession({ sessionKey, requesterOrigin })` wanneer je al een vertrouwde OpenClaw-sessiesleutel uit je eigen bindinglaag hebt. Bind niet vanuit ruwe gebruikersinvoer.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.tts">
|
||||
Tekst-naar-spraaksynthese.
|
||||
Tekst-naar-spraak-synthese.
|
||||
|
||||
```typescript
|
||||
// Standard TTS
|
||||
@ -249,7 +249,7 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
});
|
||||
```
|
||||
|
||||
Gebruikt de coreconfiguratie `messages.tts` en providerselectie. Retourneert PCM-audiobuffer + sample rate.
|
||||
Gebruikt de core-`messages.tts`-configuratie en providerselectie. Retourneert PCM-audiobuffer + samplefrequentie.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.mediaUnderstanding">
|
||||
@ -291,7 +291,7 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.imageGeneration">
|
||||
Beeldgeneratie.
|
||||
Afbeeldingen genereren.
|
||||
|
||||
```typescript
|
||||
const result = await api.runtime.imageGeneration.generate({
|
||||
@ -342,9 +342,9 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.config">
|
||||
Huidige momentopname van de runtimeconfiguratie en transactionele configuratieschrijfbewerkingen. Geef de voorkeur aan
|
||||
configuratie die al is doorgegeven aan het actieve aanroeppad; gebruik
|
||||
`current()` alleen wanneer de handler de procesmomentopname rechtstreeks nodig heeft.
|
||||
Huidige snapshot van de runtimeconfiguratie en transactionele schrijfbewerkingen naar de configuratie. Geef de voorkeur aan
|
||||
configuratie die al aan het actieve aanroeppad is doorgegeven; gebruik
|
||||
`current()` alleen wanneer de handler de processnapshot rechtstreeks nodig heeft.
|
||||
|
||||
```typescript
|
||||
const cfg = api.runtime.config.current();
|
||||
@ -358,8 +358,8 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
|
||||
`mutateConfigFile(...)` en `replaceConfigFile(...)` retourneren een `followUp`-
|
||||
waarde, bijvoorbeeld `{ mode: "restart", requiresRestart: true, reason }`,
|
||||
waarmee de intentie van de schrijver wordt vastgelegd zonder de herstartcontrole over te nemen van de
|
||||
Gateway.
|
||||
die de intentie van de writer vastlegt zonder de herstartbesturing bij de
|
||||
Gateway weg te nemen.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.system">
|
||||
@ -379,7 +379,7 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.events">
|
||||
Gebeurtenisabonnementen.
|
||||
Eventabonnementen.
|
||||
|
||||
```typescript
|
||||
api.runtime.events.onAgentEvent((event) => {
|
||||
@ -401,7 +401,7 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.modelAuth">
|
||||
Authenticatieresolutie voor model en provider.
|
||||
Auth-resolutie voor model en provider.
|
||||
|
||||
```typescript
|
||||
const auth = await api.runtime.modelAuth.getApiKeyForModel({ model, cfg });
|
||||
@ -413,7 +413,7 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.state">
|
||||
Oplossing van de statusdirectory en door SQLite ondersteunde opslag met sleutels.
|
||||
Resolutie van de statusdirectory en op SQLite gebaseerde keyed opslag.
|
||||
|
||||
```typescript
|
||||
const stateDir = api.runtime.state.resolveStateDir(process.env);
|
||||
@ -424,12 +424,13 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
});
|
||||
|
||||
await store.register("key-1", { value: "hello" });
|
||||
const claimed = await store.registerIfAbsent("dedupe-key", { value: "first" });
|
||||
const value = await store.lookup("key-1");
|
||||
await store.consume("key-1");
|
||||
await store.clear();
|
||||
```
|
||||
|
||||
Opslag met sleutels overleeft herstarts en wordt geïsoleerd op basis van de runtime-gebonden plugin-id. Limieten: `maxEntries` per namespace, 1.000 live rijen per Plugin, JSON-waarden kleiner dan 64 KB, en optionele TTL-vervaldatum.
|
||||
Keyed stores blijven behouden na herstarts en zijn geïsoleerd door de runtime-gebonden Plugin-id. Gebruik `registerIfAbsent(...)` voor atomische deduplicatieclaims: dit retourneert `true` wanneer de sleutel ontbrak of verlopen was en is geregistreerd, of `false` wanneer er al een live waarde bestaat zonder de waarde, aanmaaktijd of TTL te overschrijven. Limieten: `maxEntries` per namespace, 1.000 live rijen per Plugin, JSON-waarden kleiner dan 64 KB en optioneel TTL-verval.
|
||||
|
||||
<Warning>
|
||||
Alleen gebundelde plugins in deze release.
|
||||
@ -437,7 +438,7 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="api.runtime.tools">
|
||||
Factory's voor geheugentools en CLI.
|
||||
Memory-tool factories en CLI.
|
||||
|
||||
```typescript
|
||||
const getTool = api.runtime.tools.createMemoryGetTool(/* ... */);
|
||||
@ -449,7 +450,7 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
<Accordion title="api.runtime.channel">
|
||||
Kanaalspecifieke runtimehelpers (beschikbaar wanneer een kanaalplugin is geladen).
|
||||
|
||||
`api.runtime.channel.mentions` is het gedeelde oppervlak voor inkomend vermeldingsbeleid voor gebundelde kanaalplugins die runtime-injectie gebruiken:
|
||||
`api.runtime.channel.mentions` is het gedeelde inbound mention-policy-oppervlak voor gebundelde kanaalplugins die runtime-injectie gebruiken:
|
||||
|
||||
```typescript
|
||||
const mentionMatch = api.runtime.channel.mentions.matchesMentionWithExplicit(text, {
|
||||
@ -476,7 +477,7 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
});
|
||||
```
|
||||
|
||||
Beschikbare vermeldingshelpers:
|
||||
Beschikbare mentionhelpers:
|
||||
|
||||
- `buildMentionRegexes`
|
||||
- `matchesMentionPatterns`
|
||||
@ -484,14 +485,14 @@ Uitvoeringspaden voor providers en kanalen moeten de actieve runtimeconfiguratie
|
||||
- `implicitMentionKindWhen`
|
||||
- `resolveInboundMentionDecision`
|
||||
|
||||
`api.runtime.channel.mentions` stelt de oudere `resolveMentionGating*`-compatibiliteitshelpers bewust niet beschikbaar. Geef de voorkeur aan het genormaliseerde `{ facts, policy }`-pad.
|
||||
`api.runtime.channel.mentions` stelt de oudere compatibiliteitshelpers `resolveMentionGating*` bewust niet beschikbaar. Geef de voorkeur aan het genormaliseerde pad `{ facts, policy }`.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Runtimeverwijzingen opslaan
|
||||
|
||||
Gebruik `createPluginRuntimeStore` om de runtimeverwijzing op te slaan voor gebruik buiten de `register`-callback:
|
||||
Gebruik `createPluginRuntimeStore` om de runtimeverwijzing op te slaan voor gebruik buiten de callback `register`:
|
||||
|
||||
<Steps>
|
||||
<Step title="Create the store">
|
||||
@ -532,7 +533,7 @@ Gebruik `createPluginRuntimeStore` om de runtimeverwijzing op te slaan voor gebr
|
||||
</Steps>
|
||||
|
||||
<Note>
|
||||
Geef de voorkeur aan `pluginId` voor de identiteit van de runtime-store. De lower-level `key`-vorm is bedoeld voor ongebruikelijke gevallen waarin één Plugin bewust meer dan één runtimeslot nodig heeft.
|
||||
Geef de voorkeur aan `pluginId` voor de identiteit van de runtime-store. De lower-level vorm `key` is bedoeld voor ongebruikelijke gevallen waarin een Plugin bewust meer dan één runtimeslot nodig heeft.
|
||||
</Note>
|
||||
|
||||
## Andere top-level `api`-velden
|
||||
@ -546,23 +547,23 @@ Naast `api.runtime` biedt het API-object ook:
|
||||
Weergavenaam van Plugin.
|
||||
</ParamField>
|
||||
<ParamField path="api.config" type="OpenClawConfig">
|
||||
Huidige configuratiemomentopname (actieve runtime-momentopname in het geheugen indien beschikbaar).
|
||||
Huidige configuratiesnapshot (actieve in-memory runtimesnapshot wanneer beschikbaar).
|
||||
</ParamField>
|
||||
<ParamField path="api.pluginConfig" type="Record<string, unknown>">
|
||||
Plugin-specifieke configuratie uit `plugins.entries.<id>.config`.
|
||||
</ParamField>
|
||||
<ParamField path="api.logger" type="PluginLogger">
|
||||
Gescopeerde logger (`debug`, `info`, `warn`, `error`).
|
||||
Scoped logger (`debug`, `info`, `warn`, `error`).
|
||||
</ParamField>
|
||||
<ParamField path="api.registrationMode" type="PluginRegistrationMode">
|
||||
Huidige laadmodus; `"setup-runtime"` is het lichte opstart-/setupvenster vóór de volledige entry.
|
||||
Huidige laadmodus; `"setup-runtime"` is het lichte opstart-/setupvenster vóór volledige entry.
|
||||
</ParamField>
|
||||
<ParamField path="api.resolvePath(input)" type="(string) => string">
|
||||
Los een pad op ten opzichte van de Plugin-root.
|
||||
Los een pad op relatief aan de Plugin-root.
|
||||
</ParamField>
|
||||
|
||||
## Gerelateerd
|
||||
|
||||
- [Plugin-internals](/nl/plugins/architecture) — capaciteitsmodel en register
|
||||
- [SDK-entrypoints](/nl/plugins/sdk-entrypoints) — `definePluginEntry`-opties
|
||||
- [SDK-overzicht](/nl/plugins/sdk-overview) — subpadreferentie
|
||||
- [Plugin-internals](/nl/plugins/architecture) — capabilitymodel en registry
|
||||
- [SDK-entry points](/nl/plugins/sdk-entrypoints) — opties voor `definePluginEntry`
|
||||
- [SDK-overzicht](/nl/plugins/sdk-overview) — subpathreferentie
|
||||
|
||||
@ -1,42 +1,42 @@
|
||||
---
|
||||
read_when:
|
||||
- Debuggen waarom een agent op een bepaalde manier antwoordde, faalde of hulpmiddelen aanriep
|
||||
- Fouten opsporen waarom een agent op een bepaalde manier antwoordde, faalde of hulpmiddelen aanriep
|
||||
- Een supportbundel exporteren voor een OpenClaw-sessie
|
||||
- Promptcontext, toolaanroepen, runtimefouten of gebruiksmetadata onderzoeken
|
||||
- Trajectorie-opname uitschakelen of verplaatsen
|
||||
- Trajectvastlegging uitschakelen of verplaatsen
|
||||
summary: Exporteer geredacteerde trajectbundels voor het debuggen van een OpenClaw-agentsessie
|
||||
title: Trajectoriebundels
|
||||
title: Trajectbundels
|
||||
x-i18n:
|
||||
generated_at: "2026-04-29T23:27:13Z"
|
||||
generated_at: "2026-05-04T09:37:12Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 8dad01b3662d5e75b7626eb7ed3c3ac2dce4e3a7db2ba5952d7086c721151d1f
|
||||
source_hash: b8b1256e52d27185a48ceddaf7937b4f37ad6d57d075fea0d0b6d3abb871f1d8
|
||||
source_path: tools/trajectory.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Trajectory capture is OpenClaw's vluchtrecorder per sessie. Het legt een
|
||||
gestructureerde tijdlijn vast voor elke agent-run, waarna `/export-trajectory` de
|
||||
Trajectorie-opname is OpenClaw's vluchtrecorder per sessie. Deze registreert een
|
||||
gestructureerde tijdlijn voor elke agentrun, waarna `/export-trajectory` de
|
||||
huidige sessie verpakt in een geredigeerde supportbundel.
|
||||
|
||||
Gebruik dit wanneer je vragen moet beantwoorden zoals:
|
||||
|
||||
- Welke prompt, systeemprompt en tools zijn naar het model verzonden?
|
||||
- Welke prompt, systeemprompt en tools zijn naar het model gestuurd?
|
||||
- Welke transcriptberichten en toolaanroepen hebben tot dit antwoord geleid?
|
||||
- Is de run verlopen, afgebroken, gecompacteerd, of op een providerfout gestuit?
|
||||
- Is de run verlopen, afgebroken, gecompacteerd of op een providerfout gestuit?
|
||||
- Welk model, welke plugins, Skills en runtime-instellingen waren actief?
|
||||
- Welke gebruiks- en prompt-cachemetadata heeft de provider geretourneerd?
|
||||
- Welke gebruiks- en promptcachemetadata heeft de provider teruggegeven?
|
||||
|
||||
Als je een breed supportrapport indient voor een live Gateway-probleem, begin dan met
|
||||
[`/diagnostics`](/nl/gateway/diagnostics#chat-command). Diagnostics verzamelt de
|
||||
gesaneerde Gateway-bundel en kan, voor OpenAI Codex-harnesssessies, na goedkeuring
|
||||
[`/diagnostics`](/nl/gateway/diagnostics#chat-command). Diagnostiek verzamelt de
|
||||
gesaneerde Gateway-bundel en kan voor OpenAI Codex-harnesssessies na goedkeuring
|
||||
ook Codex-feedback naar OpenAI-servers sturen. Gebruik `/export-trajectory` wanneer
|
||||
je specifiek de gedetailleerde prompt-, tool- en transcripttijdlijn per sessie
|
||||
nodig hebt.
|
||||
|
||||
## Snel starten
|
||||
|
||||
Verzend dit in de actieve sessie:
|
||||
Stuur dit in de actieve sessie:
|
||||
|
||||
```text
|
||||
/export-trajectory
|
||||
@ -60,15 +60,15 @@ Je kunt een relatieve naam voor de uitvoermap kiezen:
|
||||
/export-trajectory bug-1234
|
||||
```
|
||||
|
||||
Het aangepaste pad wordt opgelost binnen `.openclaw/trajectory-exports/`. Absolute
|
||||
Het aangepaste pad wordt binnen `.openclaw/trajectory-exports/` opgelost. Absolute
|
||||
paden en `~`-paden worden geweigerd.
|
||||
|
||||
Trajectory-bundels kunnen prompts, modelberichten, toolschema's, toolresultaten,
|
||||
runtime-events en lokale paden bevatten. De slashopdracht in de chat loopt daarom
|
||||
elke keer via exec-goedkeuring. Keur de export één keer goed wanneer je de bundel
|
||||
wilt maken; gebruik geen allow-all. In groepschats stuurt OpenClaw de
|
||||
goedkeuringsprompt en het exportresultaat privé naar de eigenaar, in plaats van de
|
||||
trajectory-details terug in de gedeelde ruimte te plaatsen.
|
||||
Trajectoriebundels kunnen prompts, modelberichten, toolschema's, toolresultaten,
|
||||
runtime-events en lokale paden bevatten. De chat-schuine-streepopdracht loopt
|
||||
daarom elke keer via exec-goedkeuring. Keur de export eenmalig goed wanneer je de
|
||||
bundel wilt maken; gebruik geen allow-all. In groepschats stuurt OpenClaw de
|
||||
goedkeuringsprompt en het exportresultaat privé naar de eigenaar in plaats van de
|
||||
trajectoriedetails terug naar de gedeelde ruimte te plaatsen.
|
||||
|
||||
Voor lokale inspectie of supportworkflows kun je het goedgekeurde opdrachtpad ook
|
||||
rechtstreeks uitvoeren:
|
||||
@ -79,12 +79,12 @@ openclaw sessions export-trajectory --session-key "agent:main:telegram:direct:12
|
||||
|
||||
## Toegang
|
||||
|
||||
Trajectory-export is een eigenaarsopdracht. De afzender moet slagen voor de normale
|
||||
autorisatiecontroles voor opdrachten en eigenaarscontroles voor het kanaal.
|
||||
Trajectorie-export is een eigenaaropdracht. De afzender moet slagen voor de normale
|
||||
autorisatiecontroles voor opdrachten en de eigenaarcontroles voor het kanaal.
|
||||
|
||||
## Wat wordt vastgelegd
|
||||
## Wat wordt opgenomen
|
||||
|
||||
Trajectory capture staat standaard aan voor OpenClaw-agent-runs.
|
||||
Trajectorie-opname staat standaard aan voor OpenClaw-agentruns.
|
||||
|
||||
Runtime-events omvatten:
|
||||
|
||||
@ -92,12 +92,12 @@ Runtime-events omvatten:
|
||||
- `trace.metadata`
|
||||
- `context.compiled`
|
||||
- `prompt.submitted`
|
||||
- `model.fallback_step`, inclusief het bronmodel, volgende model, reden/details van de fout, positie in de keten, en of fallback vooruitging, slaagde, of de keten uitputte
|
||||
- `model.fallback_step`, inclusief het bronmodel, het volgende model, de foutreden/details, de ketenpositie en of fallback is doorgegaan, is geslaagd of de keten heeft uitgeput
|
||||
- `model.completed`
|
||||
- `trace.artifacts`
|
||||
- `session.ended`
|
||||
|
||||
Transcriptevents worden ook gereconstrueerd vanuit de actieve sessietak:
|
||||
Transcript-events worden ook gereconstrueerd vanuit de actieve sessietak:
|
||||
|
||||
- gebruikersberichten
|
||||
- assistentberichten
|
||||
@ -105,7 +105,7 @@ Transcriptevents worden ook gereconstrueerd vanuit de actieve sessietak:
|
||||
- toolresultaten
|
||||
- compactions
|
||||
- modelwijzigingen
|
||||
- labels en aangepaste sessievermeldingen
|
||||
- labels en aangepaste sessie-items
|
||||
|
||||
Events worden geschreven als JSON Lines met deze schemamarkering:
|
||||
|
||||
@ -124,47 +124,46 @@ Een geëxporteerde bundel kan bevatten:
|
||||
| -------------------- | ---------------------------------------------------------------------------------------------- |
|
||||
| `manifest.json` | Bundelschema, bronbestanden, eventaantallen en gegenereerde bestandslijst |
|
||||
| `events.jsonl` | Geordende runtime- en transcripttijdlijn |
|
||||
| `session-branch.json` | Geredigeerde actieve transcripttak en sessieheader |
|
||||
| `metadata.json` | OpenClaw-versie, OS/runtime, model, configuratiesnapshot, plugins, Skills en promptmetadata |
|
||||
| `artifacts.json` | Eindstatus, fouten, gebruik, prompt-cache, compaction-aantal, assistenttekst en toolmetadata |
|
||||
| `session-branch.json` | Geredigeerde actieve transcripttak en sessiekop |
|
||||
| `metadata.json` | OpenClaw-versie, OS/runtime, model, config-snapshot, plugins, Skills en promptmetadata |
|
||||
| `artifacts.json` | Eindstatus, fouten, gebruik, promptcache, compaction-aantal, assistenttekst en toolmetadata |
|
||||
| `prompts.json` | Ingediende prompts en geselecteerde details voor promptopbouw |
|
||||
| `system-prompt.txt` | Laatst gecompileerde systeemprompt, wanneer vastgelegd |
|
||||
| `tools.json` | Tooldefinities die naar het model zijn verzonden, wanneer vastgelegd |
|
||||
| `tools.json` | Tooldefinities die naar het model zijn gestuurd, wanneer vastgelegd |
|
||||
|
||||
`manifest.json` vermeldt de bestanden die in die bundel aanwezig zijn. Sommige
|
||||
bestanden worden weggelaten wanneer de sessie de bijbehorende runtimedata niet
|
||||
heeft vastgelegd.
|
||||
`manifest.json` vermeldt de bestanden die in die bundel aanwezig zijn. Sommige bestanden worden weggelaten
|
||||
wanneer de sessie de bijbehorende runtimedata niet heeft vastgelegd.
|
||||
|
||||
## Vastleglocatie
|
||||
## Opnamelocatie
|
||||
|
||||
Standaard worden runtime-trajectory-events naast het sessiebestand geschreven:
|
||||
Standaard worden runtime-trajectorie-events naast het sessiebestand geschreven:
|
||||
|
||||
```text
|
||||
<session>.trajectory.jsonl
|
||||
```
|
||||
|
||||
OpenClaw schrijft ook een pointerbestand op basis van best effort naast de sessie:
|
||||
OpenClaw schrijft ook een best-effort pointerbestand naast de sessie:
|
||||
|
||||
```text
|
||||
<session>.trajectory-path.json
|
||||
```
|
||||
|
||||
Stel `OPENCLAW_TRAJECTORY_DIR` in om runtime-trajectory-sidecars in een
|
||||
toegewezen map op te slaan:
|
||||
Stel `OPENCLAW_TRAJECTORY_DIR` in om runtime-trajectorie-sidecars in een
|
||||
specifieke map op te slaan:
|
||||
|
||||
```bash
|
||||
export OPENCLAW_TRAJECTORY_DIR=/var/lib/openclaw/trajectories
|
||||
```
|
||||
|
||||
Wanneer deze variabele is ingesteld, schrijft OpenClaw één JSONL-bestand per
|
||||
sessie-id in die map.
|
||||
Wanneer deze variabele is ingesteld, schrijft OpenClaw één JSONL-bestand per sessie-id in die
|
||||
map.
|
||||
|
||||
Sessieonderhoud verwijdert trajectory-sidecars wanneer de bijbehorende
|
||||
sessievermelding wordt gesnoeid, begrensd, of verwijderd door het schijfbudget
|
||||
voor sessies. Runtimebestanden buiten de sessiemap worden alleen verwijderd
|
||||
wanneer het pointerdoel nog steeds bewijst dat het bij die sessie hoort.
|
||||
Sessieonderhoud verwijdert trajectorie-sidecars wanneer hun bijbehorende sessie-item
|
||||
wordt opgeschoond, begrensd of verwijderd door het schijfbudget voor sessies. Runtimebestanden buiten
|
||||
de sessiemap worden alleen verwijderd wanneer het pointerdoel nog steeds bewijst dat het
|
||||
bij die sessie hoort.
|
||||
|
||||
## Vastleggen uitschakelen
|
||||
## Opname uitschakelen
|
||||
|
||||
Stel `OPENCLAW_TRAJECTORY=0` in voordat je OpenClaw start:
|
||||
|
||||
@ -172,39 +171,38 @@ Stel `OPENCLAW_TRAJECTORY=0` in voordat je OpenClaw start:
|
||||
export OPENCLAW_TRAJECTORY=0
|
||||
```
|
||||
|
||||
Dit schakelt runtime-trajectory-capture uit. `/export-trajectory` kan nog steeds
|
||||
de transcripttak exporteren, maar runtime-only bestanden zoals gecompileerde
|
||||
context, providerartefacten en promptmetadata kunnen ontbreken.
|
||||
Dit schakelt runtime-trajectorie-opname uit. `/export-trajectory` kan nog steeds
|
||||
de transcripttak exporteren, maar runtime-only bestanden zoals gecompileerde context,
|
||||
providerartefacten en promptmetadata kunnen ontbreken.
|
||||
|
||||
## Privacy en limieten
|
||||
|
||||
Trajectory-bundels zijn bedoeld voor support en debugging, niet voor openbare
|
||||
publicatie. OpenClaw redigeert gevoelige waarden voordat exportbestanden worden
|
||||
geschreven:
|
||||
Trajectoriebundels zijn bedoeld voor support en debugging, niet voor openbare publicatie.
|
||||
OpenClaw redigeert gevoelige waarden voordat exportbestanden worden geschreven:
|
||||
|
||||
- inloggegevens en bekende secret-achtige payloadvelden
|
||||
- inloggegevens en bekende geheim-achtige payloadvelden
|
||||
- afbeeldingsdata
|
||||
- lokale statuspaden
|
||||
- werkruimtepaden, vervangen door `$WORKSPACE_DIR`
|
||||
- homemappaden, waar gedetecteerd
|
||||
- homemap-paden, waar gedetecteerd
|
||||
|
||||
De exporter begrenst ook de invoergrootte:
|
||||
|
||||
- runtime-sidecarbestanden: 50 MiB
|
||||
- runtime-sidecarbestanden: live opname stopt bij 10 MiB en registreert een truncatie-event wanneer er ruimte overblijft; export accepteert bestaande runtime-sidecars tot 50 MiB
|
||||
- sessiebestanden: 50 MiB
|
||||
- runtime-events: 200.000
|
||||
- totaal geëxporteerde events: 250.000
|
||||
- afzonderlijke runtime-eventregels worden afgekapt boven 256 KiB
|
||||
- afzonderlijke runtime-eventregels worden boven 256 KiB afgekapt
|
||||
|
||||
Controleer bundels voordat je ze buiten je team deelt. Redactie is best effort
|
||||
en kan niet elk applicatiespecifiek secret kennen.
|
||||
Controleer bundels voordat je ze buiten je team deelt. Redactie is best-effort
|
||||
en kan niet elk toepassingsspecifiek geheim kennen.
|
||||
|
||||
## Problemen oplossen
|
||||
|
||||
Als de export geen runtime-events heeft:
|
||||
|
||||
- bevestig dat OpenClaw is gestart zonder `OPENCLAW_TRAJECTORY=0`
|
||||
- controleer of `OPENCLAW_TRAJECTORY_DIR` naar een schrijfbare map wijst
|
||||
- controleer of `OPENCLAW_TRAJECTORY_DIR` naar een beschrijfbare map verwijst
|
||||
- voer nog een bericht uit in de sessie en exporteer daarna opnieuw
|
||||
- inspecteer `manifest.json` op `runtimeEventCount`
|
||||
|
||||
@ -215,8 +213,7 @@ Als de opdracht het uitvoerpad weigert:
|
||||
- houd de export binnen `.openclaw/trajectory-exports/`
|
||||
|
||||
Als de export mislukt met een groottefout, heeft de sessie of sidecar de
|
||||
veiligheidslimieten voor export overschreden. Start een nieuwe sessie of exporteer
|
||||
een kleinere reproductie.
|
||||
veiligheidslimieten voor export overschreden. Start een nieuwe sessie of exporteer een kleinere reproductie.
|
||||
|
||||
## Gerelateerd
|
||||
|
||||
|
||||
@ -3,149 +3,150 @@ read_when:
|
||||
- Je wilt de Gateway vanuit een browser bedienen
|
||||
- Je wilt Tailnet-toegang zonder SSH-tunnels
|
||||
sidebarTitle: Control UI
|
||||
summary: Browsergebaseerde beheerinterface voor de Gateway (chat, knooppunten, configuratie)
|
||||
title: Bedieningsinterface
|
||||
summary: Browsergebaseerde beheer-UI voor de Gateway (chat, knooppunten, configuratie)
|
||||
title: Controle-UI
|
||||
x-i18n:
|
||||
generated_at: "2026-05-04T07:10:16Z"
|
||||
generated_at: "2026-05-04T09:37:49Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 07fbbe1c7fec5f67a04a231e02bdf0f7d16be9c5fe188915674d71fcd69002a5
|
||||
source_hash: 4b68b5203b369de6a3354a7e7442ee38ee790875b2d7054b0c8ec997098fd9de
|
||||
source_path: web/control-ui.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
De Control UI is een kleine **Vite + Lit** single-page-app die door de Gateway wordt geserveerd:
|
||||
De Control UI is een kleine **Vite + Lit** single-page app die door de Gateway wordt geserveerd:
|
||||
|
||||
- standaard: `http://<host>:18789/`
|
||||
- optioneel prefix: stel `gateway.controlUi.basePath` in (bijv. `/openclaw`)
|
||||
- optioneel voorvoegsel: stel `gateway.controlUi.basePath` in (bijv. `/openclaw`)
|
||||
|
||||
Deze communiceert **rechtstreeks met de Gateway WebSocket** op dezelfde poort.
|
||||
|
||||
## Snel openen (lokaal)
|
||||
|
||||
Als de Gateway op dezelfde computer draait, open:
|
||||
Als de Gateway op dezelfde computer draait, open dan:
|
||||
|
||||
- [http://127.0.0.1:18789/](http://127.0.0.1:18789/) (of [http://localhost:18789/](http://localhost:18789/))
|
||||
|
||||
Als de pagina niet laadt, start dan eerst de Gateway: `openclaw gateway`.
|
||||
|
||||
Authenticatie wordt tijdens de WebSocket-handshake geleverd via:
|
||||
Auth wordt tijdens de WebSocket-handshake aangeleverd via:
|
||||
|
||||
- `connect.params.auth.token`
|
||||
- `connect.params.auth.password`
|
||||
- Tailscale Serve-identiteitsheaders wanneer `gateway.auth.allowTailscale: true`
|
||||
- trusted-proxy-identiteitsheaders wanneer `gateway.auth.mode: "trusted-proxy"`
|
||||
|
||||
Het instellingenpaneel van het dashboard bewaart een token voor de huidige browsertabsessie en geselecteerde gateway-URL; wachtwoorden worden niet bewaard. Onboarding genereert meestal een gateway-token voor shared-secret-authenticatie bij de eerste verbinding, maar wachtwoordauthenticatie werkt ook wanneer `gateway.auth.mode` `"password"` is.
|
||||
Het instellingenpaneel van het dashboard bewaart een token voor de huidige browsertabsessie en de geselecteerde gateway-URL; wachtwoorden worden niet persistent opgeslagen. Onboarding genereert meestal een gateway-token voor gedeelde-geheim-auth bij de eerste verbinding, maar wachtwoordauth werkt ook wanneer `gateway.auth.mode` `"password"` is.
|
||||
|
||||
## Apparaatkoppeling (eerste verbinding)
|
||||
## Apparaat koppelen (eerste verbinding)
|
||||
|
||||
Wanneer je vanaf een nieuwe browser of apparaat verbinding maakt met de Control UI, vereist de Gateway meestal een **eenmalige koppelingsgoedkeuring**. Dit is een beveiligingsmaatregel om ongeautoriseerde toegang te voorkomen.
|
||||
Wanneer je vanaf een nieuwe browser of een nieuw apparaat verbinding maakt met de Control UI, vereist de Gateway meestal een **eenmalige koppelingsgoedkeuring**. Dit is een beveiligingsmaatregel om onbevoegde toegang te voorkomen.
|
||||
|
||||
**Wat je ziet:** "verbinding verbroken (1008): koppeling vereist"
|
||||
**Wat je ziet:** "disconnected (1008): pairing required"
|
||||
|
||||
<Steps>
|
||||
<Step title="Openstaande verzoeken weergeven">
|
||||
<Step title="List pending requests">
|
||||
```bash
|
||||
openclaw devices list
|
||||
```
|
||||
</Step>
|
||||
<Step title="Goedkeuren op verzoek-ID">
|
||||
<Step title="Approve by request ID">
|
||||
```bash
|
||||
openclaw devices approve <requestId>
|
||||
```
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
Als de browser opnieuw probeert te koppelen met gewijzigde authenticatiegegevens (rol/scopes/openbare sleutel), wordt het vorige openstaande verzoek vervangen en wordt er een nieuwe `requestId` aangemaakt. Voer `openclaw devices list` opnieuw uit vóór goedkeuring.
|
||||
Als de browser opnieuw probeert te koppelen met gewijzigde auth-gegevens (rol/scopes/openbare sleutel), wordt het vorige openstaande verzoek vervangen en wordt er een nieuwe `requestId` aangemaakt. Voer `openclaw devices list` opnieuw uit vóór goedkeuring.
|
||||
|
||||
Als de browser al gekoppeld is en je deze wijzigt van leestoegang naar schrijf-/beheerderstoegang, wordt dit behandeld als een goedkeuringsupgrade, niet als een stille herverbinding. OpenClaw houdt de oude goedkeuring actief, blokkeert de bredere herverbinding en vraagt je de nieuwe set scopes expliciet goed te keuren.
|
||||
Als de browser al is gekoppeld en je deze wijzigt van leestoegang naar schrijf-/admintoegang, wordt dit behandeld als een goedkeuringsupgrade, niet als een stille herverbinding. OpenClaw houdt de oude goedkeuring actief, blokkeert de bredere herverbinding en vraagt je de nieuwe scopeset expliciet goed te keuren.
|
||||
|
||||
Na goedkeuring wordt het apparaat onthouden en is geen hernieuwde goedkeuring vereist, tenzij je het intrekt met `openclaw devices revoke --device <id> --role <role>`. Zie [Apparaten-CLI](/nl/cli/devices) voor tokenrotatie en intrekking.
|
||||
Na goedkeuring wordt het apparaat onthouden en is geen nieuwe goedkeuring vereist, tenzij je het intrekt met `openclaw devices revoke --device <id> --role <role>`. Zie [Devices CLI](/nl/cli/devices) voor tokenrotatie en intrekking.
|
||||
|
||||
<Note>
|
||||
- Rechtstreekse local loopback-browserverbindingen (`127.0.0.1` / `localhost`) worden automatisch goedgekeurd.
|
||||
- Tailscale Serve kan de koppelingsronde overslaan voor Control UI-operatorsessies wanneer `gateway.auth.allowTailscale: true`, Tailscale-identiteit wordt geverifieerd en de browser zijn apparaatidentiteit presenteert.
|
||||
- Rechtstreekse Tailnet-binds, LAN-browserverbindingen en browserprofielen zonder apparaatidentiteit vereisen nog steeds expliciete goedkeuring.
|
||||
- Rechtstreekse browserverbindingen via local loopback (`127.0.0.1` / `localhost`) worden automatisch goedgekeurd.
|
||||
- Tailscale Serve kan de koppelingsronde overslaan voor Control UI-operatorsessies wanneer `gateway.auth.allowTailscale: true`, de Tailscale-identiteit wordt geverifieerd en de browser zijn apparaatidentiteit presenteert.
|
||||
- Rechtstreekse Tailnet-bindings, LAN-browserverbindingen en browserprofielen zonder apparaatidentiteit vereisen nog steeds expliciete goedkeuring.
|
||||
- Elk browserprofiel genereert een unieke apparaat-ID, dus wisselen van browser of browsergegevens wissen vereist opnieuw koppelen.
|
||||
|
||||
</Note>
|
||||
|
||||
## Persoonlijke identiteit (browser-lokaal)
|
||||
|
||||
De Control UI ondersteunt een persoonlijke identiteit per browser (weergavenaam en avatar) die aan uitgaande berichten wordt gekoppeld voor attributie in gedeelde sessies. Deze staat in browseropslag, is beperkt tot het huidige browserprofiel en wordt niet gesynchroniseerd naar andere apparaten of server-side bewaard buiten de normale auteurschapsmetadata van transcripties op berichten die je daadwerkelijk verstuurt. Sitegegevens wissen of van browser wisselen zet deze terug naar leeg.
|
||||
De Control UI ondersteunt een persoonlijke identiteit per browser (weergavenaam en avatar) die aan uitgaande berichten wordt gekoppeld voor attributie in gedeelde sessies. Deze leeft in browseropslag, is beperkt tot het huidige browserprofiel en wordt niet gesynchroniseerd naar andere apparaten of server-side persistent opgeslagen buiten de normale transcript-auteurschapsmetadata op berichten die je daadwerkelijk verzendt. Sitegegevens wissen of van browser wisselen zet deze terug naar leeg.
|
||||
|
||||
Hetzelfde browser-lokale patroon geldt voor de override van de assistentavatar. Geüploade assistentavatars overlappen de door de gateway opgeloste identiteit alleen in de lokale browser en maken nooit een round-trip via `config.patch`. Het gedeelde configuratieveld `ui.assistant.avatar` blijft beschikbaar voor niet-UI-clients die het veld rechtstreeks schrijven (zoals scripted gateways of aangepaste dashboards).
|
||||
Hetzelfde browser-lokale patroon geldt voor de override van de assistent-avatar. Geüploade assistent-avatars leggen de door de gateway opgeloste identiteit alleen over de lokale browser heen en maken nooit een round-trip via `config.patch`. Het gedeelde configuratieveld `ui.assistant.avatar` blijft beschikbaar voor niet-UI-clients die het veld rechtstreeks schrijven (zoals gescripte gateways of aangepaste dashboards).
|
||||
|
||||
## Runtime-configuratie-eindpunt
|
||||
## Runtimeconfiguratie-endpoint
|
||||
|
||||
De Control UI haalt zijn runtime-instellingen op van `/__openclaw/control-ui-config.json`. Dat eindpunt wordt afgeschermd door dezelfde gateway-authenticatie als de rest van het HTTP-oppervlak: niet-geauthenticeerde browsers kunnen het niet ophalen, en een succesvolle fetch vereist een al geldig gateway-token/wachtwoord, Tailscale Serve-identiteit of een trusted-proxy-identiteit.
|
||||
De Control UI haalt zijn runtime-instellingen op uit `/__openclaw/control-ui-config.json`. Dat endpoint wordt beschermd door dezelfde gateway-auth als de rest van het HTTP-oppervlak: niet-geauthenticeerde browsers kunnen het niet ophalen, en een succesvolle fetch vereist een al geldig gateway-token/wachtwoord, Tailscale Serve-identiteit of trusted-proxy-identiteit.
|
||||
|
||||
## Taalondersteuning
|
||||
|
||||
De Control UI kan zichzelf bij de eerste laadbeurt lokaliseren op basis van je browserlocale. Om dit later te overschrijven, open **Overzicht -> Gateway-toegang -> Taal**. De locale-kiezer staat in de Gateway-toegangskaart, niet onder Uiterlijk.
|
||||
De Control UI kan zichzelf bij de eerste laadbeurt lokaliseren op basis van je browserlocale. Om dit later te overschrijven, open **Overview -> Gateway Access -> Language**. De locale-kiezer staat in de Gateway Access-kaart, niet onder Appearance.
|
||||
|
||||
- Ondersteunde locales: `en`, `zh-CN`, `zh-TW`, `pt-BR`, `de`, `es`, `ja-JP`, `ko`, `fr`, `ar`, `it`, `tr`, `uk`, `id`, `pl`, `th`, `vi`, `nl`, `fa`
|
||||
- Niet-Engelse vertalingen worden lazy-loaded in de browser.
|
||||
- De geselecteerde locale wordt opgeslagen in browseropslag en hergebruikt bij toekomstige bezoeken.
|
||||
- Ontbrekende vertaalsleutels vallen terug op Engels.
|
||||
|
||||
Documentatievertalingen worden gegenereerd voor dezelfde niet-Engelse localeset, maar de ingebouwde Mintlify-taalkiezer van de documentatiesite is beperkt tot de locale-codes die Mintlify accepteert. Thaise (`th`) en Perzische (`fa`) documentatie wordt nog steeds gegenereerd in de publicatierepo; deze verschijnt mogelijk pas in die kiezer wanneer Mintlify die codes ondersteunt.
|
||||
Docs-vertalingen worden gegenereerd voor dezelfde niet-Engelse localeset, maar de ingebouwde Mintlify-taalkiezer van de documentatiesite is beperkt tot de locale-codes die Mintlify accepteert. Thaise (`th`) en Perzische (`fa`) docs worden nog steeds gegenereerd in de publish-repo; ze verschijnen mogelijk pas in die kiezer wanneer Mintlify die codes ondersteunt.
|
||||
|
||||
## Uiterlijkthema's
|
||||
## Weergavethema's
|
||||
|
||||
Het paneel Uiterlijk behoudt de ingebouwde Claw-, Knot- en Dash-thema's, plus één browser-lokaal tweakcn-importslot. Om een thema te importeren, open [tweakcn editor](https://tweakcn.com/editor/theme), kies of maak een thema, klik op **Delen** en plak de gekopieerde themalink in Uiterlijk. De importfunctie accepteert ook `https://tweakcn.com/r/themes/<id>`-registry-URL's, editor-URL's zoals `https://tweakcn.com/editor/theme?theme=amethyst-haze`, relatieve `/themes/<id>`-paden, ruwe thema-ID's en standaardthemanamen zoals `amethyst-haze`.
|
||||
Het Appearance-paneel behoudt de ingebouwde Claw-, Knot- en Dash-thema's, plus één browser-lokaal tweakcn-importslot. Om een thema te importeren, open [tweakcn editor](https://tweakcn.com/editor/theme), kies of maak een thema, klik op **Share** en plak de gekopieerde themalink in Appearance. De importer accepteert ook `https://tweakcn.com/r/themes/<id>`-registry-URL's, editor-URL's zoals `https://tweakcn.com/editor/theme?theme=amethyst-haze`, relatieve `/themes/<id>`-paden, ruwe thema-ID's en standaardthemanamen zoals `amethyst-haze`.
|
||||
|
||||
Geïmporteerde thema's worden alleen opgeslagen in het huidige browserprofiel. Ze worden niet naar de gateway-configuratie geschreven en synchroniseren niet tussen apparaten. Het vervangen van het geïmporteerde thema werkt het ene lokale slot bij; wissen schakelt het actieve thema terug naar Claw als het geïmporteerde thema geselecteerd was.
|
||||
Geïmporteerde thema's worden alleen opgeslagen in het huidige browserprofiel. Ze worden niet naar gateway-configuratie geschreven en synchroniseren niet tussen apparaten. Het geïmporteerde thema vervangen werkt het ene lokale slot bij; het wissen schakelt het actieve thema terug naar Claw als het geïmporteerde thema was geselecteerd.
|
||||
|
||||
## Wat het kan doen (vandaag)
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Chat en Talk">
|
||||
<Accordion title="Chat and Talk">
|
||||
- Chat met het model via Gateway WS (`chat.history`, `chat.send`, `chat.abort`, `chat.inject`).
|
||||
- Praat via realtime browsersessies. OpenAI gebruikt directe WebRTC, Google Live gebruikt een beperkt eenmalig browser-token via WebSocket, en realtime spraakplugins die alleen op de backend draaien gebruiken het Gateway-relaytransport. De relay houdt providerreferenties op de Gateway terwijl de browser microfoon-PCM streamt via `talk.realtime.relay*`-RPC's en `openclaw_agent_consult`-toolaanroepen terugstuurt via `chat.send` voor het grotere geconfigureerde OpenClaw-model.
|
||||
- Stream toolaanroepen + live tooluitvoerkaarten in Chat (agentgebeurtenissen).
|
||||
- Praat via realtime browsersessies. OpenAI gebruikt directe WebRTC, Google Live gebruikt een beperkt eenmalig browsertoken via WebSocket, en backend-only realtime voice-plugins gebruiken het Gateway-relaytransport. De relay houdt providerreferenties op de Gateway terwijl de browser microfoon-PCM streamt via `talk.realtime.relay*`-RPC's en `openclaw_agent_consult`-toolaanroepen terugstuurt via `chat.send` voor het grotere geconfigureerde OpenClaw-model.
|
||||
- Stream toolaanroepen + live tooluitvoerkaarten in Chat (agent-events).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Kanalen, instanties, sessies, dromen">
|
||||
- Kanalen: ingebouwde plus gebundelde/externe pluginkanalenstatus, QR-login en configuratie per kanaal (`channels.status`, `web.login.*`, `config.patch`).
|
||||
<Accordion title="Channels, instances, sessions, dreams">
|
||||
- Kanalen: ingebouwde plus gebundelde/externe plugin-kanaalstatus, QR-login en configuratie per kanaal (`channels.status`, `web.login.*`, `config.patch`).
|
||||
- Instanties: aanwezigheidslijst + vernieuwen (`system-presence`).
|
||||
- Sessies: lijst + overrides per sessie voor model/thinking/fast/verbose/trace/reasoning (`sessions.list`, `sessions.patch`).
|
||||
- Dromen: Dreaming-status, in-/uitschakelaar en Dream Diary-lezer (`doctor.memory.status`, `doctor.memory.dreamDiary`, `config.patch`).
|
||||
- Sessies: lijst + model-/thinking-/fast-/verbose-/trace-/reasoning-overrides per sessie (`sessions.list`, `sessions.patch`).
|
||||
- Dreams: dreaming-status, inschakel-/uitschakelknop en Dream Diary-lezer (`doctor.memory.status`, `doctor.memory.dreamDiary`, `config.patch`).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Cron, skills, nodes, exec-goedkeuringen">
|
||||
<Accordion title="Cron, skills, nodes, exec approvals">
|
||||
- Cron-taken: weergeven/toevoegen/bewerken/uitvoeren/inschakelen/uitschakelen + uitvoeringsgeschiedenis (`cron.*`).
|
||||
- Skills: status, inschakelen/uitschakelen, installeren, API-sleutelupdates (`skills.*`).
|
||||
- Nodes: lijst + caps (`node.list`).
|
||||
- Exec-goedkeuringen: gateway- of node-allowlists bewerken + vraagbeleid voor `exec host=gateway/node` (`exec.approvals.*`).
|
||||
- Exec-goedkeuringen: gateway- of node-toelatingslijsten bewerken + vraagbeleid voor `exec host=gateway/node` (`exec.approvals.*`).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Configuratie">
|
||||
<Accordion title="Config">
|
||||
- Bekijk/bewerk `~/.openclaw/openclaw.json` (`config.get`, `config.set`).
|
||||
- Toepassen + opnieuw starten met validatie (`config.apply`) en de laatst actieve sessie wekken.
|
||||
- Schrijfbewerkingen bevatten een base-hash-beveiliging om te voorkomen dat gelijktijdige bewerkingen worden overschreven.
|
||||
- Schrijfbewerkingen (`config.set`/`config.apply`/`config.patch`) voeren vooraf actieve SecretRef-resolutie uit voor refs in de ingediende configuratiepayload; niet-opgeloste actieve ingediende refs worden vóór schrijven geweigerd.
|
||||
- Schema + formulierweergave (`config.schema` / `config.schema.lookup`, inclusief veld `title` / `description`, overeenkomende UI-hints, directe samenvattingen van children, documentatiemetadata op geneste object-/wildcard-/array-/composition-nodes, plus plugin- en kanaalschema's wanneer beschikbaar); de Raw JSON-editor is alleen beschikbaar wanneer de snapshot een veilige raw round-trip heeft.
|
||||
- Als een snapshot niet veilig raw tekst kan round-trippen, dwingt Control UI de formuliermodus af en schakelt Raw-modus uit voor die snapshot.
|
||||
- Raw JSON-editor "Terugzetten naar opgeslagen" behoudt de raw-aangemaakte vorm (opmaak, opmerkingen, `$include`-layout) in plaats van een afgevlakte snapshot opnieuw te renderen, zodat externe bewerkingen een reset overleven wanneer de snapshot veilig kan round-trippen.
|
||||
- Gestructureerde SecretRef-objectwaarden worden read-only weergegeven in formuliertekstinvoeren om onbedoelde corruptie van object naar string te voorkomen.
|
||||
- Toepassen + herstarten met validatie (`config.apply`) en de laatst actieve sessie wekken.
|
||||
- Schrijfacties bevatten een base-hash-guard om te voorkomen dat gelijktijdige bewerkingen worden overschreven.
|
||||
- Schrijfacties (`config.set`/`config.apply`/`config.patch`) voeren vooraf resolutie van actieve SecretRef's uit voor refs in de ingediende configuratiepayload; niet-opgeloste actieve ingediende refs worden vóór schrijven geweigerd.
|
||||
- Schema + formulierweergave (`config.schema` / `config.schema.lookup`, inclusief veld `title` / `description`, gematchte UI-hints, directe child-samenvattingen, docs-metadata op geneste object-/wildcard-/array-/composition-nodes, plus plugin- en kanaalschema's wanneer beschikbaar); Raw JSON-editor is alleen beschikbaar wanneer de snapshot een veilige ruwe round-trip heeft.
|
||||
- Als een snapshot ruwe tekst niet veilig kan round-trippen, dwingt Control UI de formuliermodus af en schakelt Raw-modus uit voor die snapshot.
|
||||
- Raw JSON-editor "Reset to saved" behoudt de ruwe authored-vorm (opmaak, opmerkingen, `$include`-layout) in plaats van een afgeplatte snapshot opnieuw te renderen, zodat externe bewerkingen een reset overleven wanneer de snapshot veilig kan round-trippen.
|
||||
- Gestructureerde SecretRef-objectwaarden worden read-only weergegeven in formulier-tekstinputs om onbedoelde object-naar-string-corruptie te voorkomen.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Debug, logs, update">
|
||||
- Debug: status-/health-/models-snapshots + gebeurtenislog + handmatige RPC-aanroepen (`status`, `health`, `models.list`).
|
||||
- Debug: status-/health-/models-snapshots + eventlog + handmatige RPC-aanroepen (`status`, `health`, `models.list`).
|
||||
- Het eventlog bevat Control UI-verversings-/RPC-timings plus browserresponsiviteit-items voor lange animatieframes of lange taken wanneer de browser die PerformanceObserver-entrytypes aanbiedt.
|
||||
- Logs: live tail van gateway-bestandslogs met filter/export (`logs.tail`).
|
||||
- Update: voer een package-/git-update + herstart uit (`update.run`) met een herstartrapport, en poll daarna `update.status` na herverbinding om de draaiende gateway-versie te verifiëren.
|
||||
- Update: voer een package-/git-update + herstart uit (`update.run`) met een herstartrapport en poll daarna `update.status` na herverbinding om de draaiende gatewayversie te verifiëren.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Opmerkingen bij het Cron-takenpaneel">
|
||||
- Voor geïsoleerde taken is de standaardlevering een aankondigingssamenvatting. Je kunt overschakelen naar geen als je alleen interne uitvoeringen wilt.
|
||||
<Accordion title="Cron jobs panel notes">
|
||||
- Voor geïsoleerde taken is de bezorgstandaard samenvatting aankondigen. Je kunt overschakelen naar geen als je alleen interne runs wilt.
|
||||
- Kanaal-/doelvelden verschijnen wanneer aankondigen is geselecteerd.
|
||||
- Webhook-modus gebruikt `delivery.mode = "webhook"` met `delivery.to` ingesteld op een geldige HTTP(S)-webhook-URL.
|
||||
- Voor taken in de hoofdsessie zijn webhook- en geen-leveringsmodi beschikbaar.
|
||||
- Geavanceerde bewerkingsopties omvatten verwijderen na uitvoeren, agentoverride wissen, cron exact/stagger-opties, overrides voor agentmodel/thinking en best-effort-leveringsschakelaars.
|
||||
- Formuliervalidatie is inline met fouten per veld; ongeldige waarden schakelen de knop Opslaan uit totdat ze zijn gecorrigeerd.
|
||||
- Stel `cron.webhookToken` in om een speciale bearer token te sturen; als dit wordt weggelaten, wordt de webhook zonder auth-header verzonden.
|
||||
- Voor hoofdsessie-taken zijn Webhook- en geen-bezorgmodi beschikbaar.
|
||||
- Geavanceerde bewerkingsopties omvatten verwijderen-na-uitvoer, agent-override wissen, exacte/stagger Cron-opties, agent-model-/thinking-overrides en best-effort-bezorgschakelaars.
|
||||
- Formuliervalidatie is inline met fouten op veldniveau; ongeldige waarden schakelen de opslagknop uit totdat ze zijn opgelost.
|
||||
- Stel `cron.webhookToken` in om een speciaal bearer-token te verzenden; indien weggelaten wordt de Webhook zonder auth-header verzonden.
|
||||
- Verouderde fallback: opgeslagen legacy-taken met `notify: true` kunnen nog steeds `cron.webhook` gebruiken totdat ze zijn gemigreerd.
|
||||
|
||||
</Accordion>
|
||||
@ -154,57 +155,60 @@ Geïmporteerde thema's worden alleen opgeslagen in het huidige browserprofiel. Z
|
||||
## Chatgedrag
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Semantiek voor verzenden en geschiedenis">
|
||||
- `chat.send` is **niet-blokkerend**: het bevestigt onmiddellijk met `{ runId, status: "started" }` en de respons streamt via `chat`-events.
|
||||
- Chat-uploads accepteren afbeeldingen plus niet-videobestanden. Afbeeldingen behouden het native afbeeldingspad; andere bestanden worden opgeslagen als beheerde media en in de geschiedenis weergegeven als bijlagelinks.
|
||||
- Opnieuw verzenden met dezelfde `idempotencyKey` retourneert `{ status: "in_flight" }` terwijl de run actief is, en `{ status: "ok" }` na voltooiing.
|
||||
- `chat.history`-responses zijn qua grootte begrensd voor UI-veiligheid. Wanneer transcriptitems te groot zijn, kan Gateway lange tekstvelden inkorten, zware metadatablokken weglaten en te grote berichten vervangen door een placeholder (`[chat.history omitted: message too large]`).
|
||||
- Door de assistant/gegenereerde afbeeldingen worden bewaard als beheerde mediareferenties en teruggeleverd via geauthenticeerde Gateway-media-URL's, zodat herladen niet afhankelijk is van onbewerkte base64-afbeeldingspayloads die in de chatgeschiedenisrespons blijven.
|
||||
- `chat.history` verwijdert ook inline directivetags die alleen voor weergave zijn uit zichtbare assistant-tekst (bijvoorbeeld `[[reply_to_*]]` en `[[audio_as_voice]]`), tool-call-XML-payloads in platte tekst (waaronder `<tool_call>...</tool_call>`, `<function_call>...</function_call>`, `<tool_calls>...</tool_calls>`, `<function_calls>...</function_calls>` en ingekorte tool-call-blokken), en gelekte ASCII-/volledige-breedte modelbesturingstokens, en laat assistant-items weg waarvan de volledige zichtbare tekst alleen het exacte stille token `NO_REPLY` / `no_reply` is.
|
||||
- Tijdens een actieve send en de laatste geschiedenisverversing houdt de chatweergave lokale optimistische gebruikers-/assistant-berichten zichtbaar als `chat.history` kort een oudere snapshot retourneert; het canonieke transcript vervangt die lokale berichten zodra de Gateway-geschiedenis is bijgewerkt.
|
||||
- Live `chat`-events zijn afleverstatus, terwijl `chat.history` opnieuw wordt opgebouwd uit het duurzame sessietranscript. Na tool-final-events herlaadt de Control UI de geschiedenis en voegt alleen een kleine optimistische staart samen; de transcriptgrens is gedocumenteerd in [WebChat](/nl/web/webchat).
|
||||
- `chat.inject` voegt een assistant-notitie toe aan het sessietranscript en broadcast een `chat`-event voor updates alleen voor de UI (geen agent-run, geen kanaalaflevering).
|
||||
- De model- en thinking-kiezers in de chatkop patchen de actieve sessie onmiddellijk via `sessions.patch`; het zijn permanente sessie-overschrijvingen, geen verzendopties voor slechts één beurt.
|
||||
<Accordion title="Send and history semantics">
|
||||
- `chat.send` is **niet-blokkerend**: het bevestigt direct met `{ runId, status: "started" }` en de reactie wordt gestreamd via `chat`-events.
|
||||
- Chat-uploads accepteren afbeeldingen plus niet-videobestanden. Afbeeldingen behouden het native afbeeldingspad; andere bestanden worden opgeslagen als beheerde media en in de geschiedenis getoond als bijlagelinks.
|
||||
- Opnieuw verzenden met dezelfde `idempotencyKey` retourneert `{ status: "in_flight" }` zolang de uitvoering loopt, en `{ status: "ok" }` na voltooiing.
|
||||
- `chat.history`-reacties zijn in grootte begrensd voor UI-veiligheid. Wanneer transcriptitems te groot zijn, kan de Gateway lange tekstvelden inkorten, zware metadatablokken weglaten en te grote berichten vervangen door een placeholder (`[chat.history omitted: message too large]`).
|
||||
- Door de assistent gegenereerde afbeeldingen worden bewaard als beheerde mediareferenties en teruggeleverd via geauthenticeerde Gateway-media-URL's, zodat herladen niet afhankelijk is van onbewerkte base64-afbeeldingspayloads die in de chatgeschiedenisreactie blijven staan.
|
||||
- `chat.history` verwijdert ook alleen-voor-weergave inline directivetags uit zichtbare assistenttekst (bijvoorbeeld `[[reply_to_*]]` en `[[audio_as_voice]]`), XML-payloads voor tool-aanroepen in platte tekst (inclusief `<tool_call>...</tool_call>`, `<function_call>...</function_call>`, `<tool_calls>...</tool_calls>`, `<function_calls>...</function_calls>` en ingekorte tool-aanroepblokken), en gelekte ASCII-/volledige-breedte modelcontroletokens, en laat assistentitems weg waarvan de volledige zichtbare tekst alleen het exacte stille token `NO_REPLY` / `no_reply` is.
|
||||
- Tijdens een actieve verzending en de laatste geschiedenisverversing houdt de chatweergave lokale optimistische gebruikers-/assistentberichten zichtbaar als `chat.history` kort een oudere snapshot retourneert; het canonieke transcript vervangt die lokale berichten zodra de Gateway-geschiedenis is bijgewerkt.
|
||||
- Live `chat`-events zijn afleverstatus, terwijl `chat.history` opnieuw wordt opgebouwd uit het duurzame sessietranscript. Na tool-final-events laadt de Control UI de geschiedenis opnieuw en voegt alleen een kleine optimistische staart samen; de transcriptgrens is gedocumenteerd in [WebChat](/nl/web/webchat).
|
||||
- `chat.inject` voegt een assistentnotitie toe aan het sessietranscript en zendt een `chat`-event uit voor alleen-UI-updates (geen agentuitvoering, geen kanaalaflevering).
|
||||
- De chatheader toont het agentfilter vóór de sessiekiezer, en de sessiekiezer wordt beperkt tot de geselecteerde agent. Wisselen van agent toont alleen sessies die aan die agent zijn gekoppeld en valt terug op de hoofdsessie van die agent wanneer die nog geen opgeslagen dashboardsessies heeft.
|
||||
- Op desktopbreedtes blijven chatbedieningselementen op één compacte rij en klappen ze in tijdens omlaag scrollen door het transcript; omhoog scrollen, terugkeren naar de bovenkant of de onderkant bereiken herstelt de bedieningselementen.
|
||||
- Opeenvolgende dubbele berichten met alleen tekst worden weergegeven als één ballon met een tellerbadge. Berichten met afbeeldingen, bijlagen, tool-uitvoer of canvasvoorvertoningen blijven niet-ingeklapt.
|
||||
- De model- en denkkeuzes in de chatheader patchen de actieve sessie direct via `sessions.patch`; het zijn persistente sessie-overschrijvingen, geen verzendopties voor slechts één beurt.
|
||||
- `/new` typen in de Control UI maakt dezelfde nieuwe dashboardsessie als New Chat en schakelt ernaar over. `/reset` typen behoudt de expliciete in-place reset van de Gateway voor de huidige sessie.
|
||||
- De chatmodelkiezer vraagt de geconfigureerde modelweergave van de Gateway op. Als `agents.defaults.models` aanwezig is, stuurt die allowlist de kiezer aan. Anders toont de kiezer expliciete `models.providers.*.models`-items plus providers met bruikbare auth. De volledige catalogus blijft beschikbaar via de debug-`models.list`-RPC met `view: "all"`.
|
||||
- Wanneer recente gebruiksrapporten van Gateway-sessies hoge contextdruk tonen, toont het chatcomposer-gebied een contextmelding en, bij aanbevolen compactionniveaus, een compacte knop die het normale sessiecompactionpad uitvoert. Verouderde tokensnapshots worden verborgen totdat de Gateway opnieuw recent gebruik rapporteert.
|
||||
- De chatmodelkiezer vraagt de geconfigureerde modelweergave van de Gateway op. Als `agents.defaults.models` aanwezig is, stuurt die toelatingslijst de kiezer aan. Anders toont de kiezer expliciete `models.providers.*.models`-items plus providers met bruikbare authenticatie. De volledige catalogus blijft beschikbaar via de debug-`models.list`-RPC met `view: "all"`.
|
||||
- Wanneer recente gebruiksrapporten van Gateway-sessies hoge contextdruk tonen, toont het chatcomponistgebied een contextmelding en, bij aanbevolen Compaction-niveaus, een compacte knop die het normale sessie-Compaction-pad uitvoert. Verouderde tokensnapshots worden verborgen totdat de Gateway opnieuw recent gebruik rapporteert.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Praatmodus (browser realtime)">
|
||||
Praatmodus gebruikt een geregistreerde realtime spraakprovider. Configureer OpenAI met `talk.provider: "openai"` plus `talk.providers.openai.apiKey`, of configureer Google met `talk.provider: "google"` plus `talk.providers.google.apiKey`; de realtime providerconfiguratie van Voice Call kan nog steeds als fallback worden hergebruikt. De browser ontvangt nooit een standaard API-sleutel van de provider. OpenAI ontvangt een ephemeral Realtime-clientgeheim voor WebRTC. Google Live ontvangt een eenmalig beperkt Live API-auth-token voor een browser-WebSocket-sessie, waarbij instructies en tooldeclaraties door de Gateway in het token zijn vastgezet. Providers die alleen een backend realtime bridge aanbieden, lopen via het Gateway-relaytransport, zodat credentials en vendor-sockets server-side blijven terwijl browseraudio via geauthenticeerde Gateway-RPC's beweegt. De Realtime-sessieprompt wordt samengesteld door de Gateway; `talk.realtime.session` accepteert geen door de caller aangeleverde instructie-overschrijvingen.
|
||||
<Accordion title="Talk mode (browser realtime)">
|
||||
Talk-modus gebruikt een geregistreerde realtime spraakprovider. Configureer OpenAI met `talk.provider: "openai"` plus `talk.providers.openai.apiKey`, of configureer Google met `talk.provider: "google"` plus `talk.providers.google.apiKey`; realtime providerconfiguratie voor Voice Call kan nog steeds als fallback worden hergebruikt. De browser ontvangt nooit een standaard provider-API-sleutel. OpenAI ontvangt een tijdelijke Realtime-clientsecret voor WebRTC. Google Live ontvangt een eenmalig beperkt Live API-authenticatietoken voor een browser-WebSocket-sessie, waarbij instructies en tooldeclaraties door de Gateway in het token zijn vergrendeld. Providers die alleen een backend realtime bridge aanbieden, lopen via het Gateway-relaytransport, zodat referenties en leverancierssockets server-side blijven terwijl browseraudio via geauthenticeerde Gateway-RPC's beweegt. De Realtime-sessieprompt wordt samengesteld door de Gateway; `talk.realtime.session` accepteert geen door de aanroeper aangeleverde instructie-overschrijvingen.
|
||||
|
||||
In de Chat-composer is de Talk-knop de golfknop naast de microfoonknop voor dicteren. Wanneer Talk start, toont de statusrij van de composer `Connecting Talk...`, daarna `Talk live` terwijl audio verbonden is, of `Asking OpenClaw...` terwijl een realtime tool-call het geconfigureerde grotere model raadpleegt via `chat.send`.
|
||||
In de chatcomponist is het Talk-bedieningselement de golfknop naast de microfoonknop voor dicteren. Wanneer Talk start, toont de statusrij van de componist `Connecting Talk...`, daarna `Talk live` terwijl audio is verbonden, of `Asking OpenClaw...` terwijl een realtime tool-aanroep het geconfigureerde grotere model raadpleegt via `chat.send`.
|
||||
|
||||
Maintainer live smoke: `OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts` verifieert de OpenAI browser-WebRTC-SDP-uitwisseling, de Google Live constrained-token browser-WebSocket-setup en de Gateway-relay browseradapter met nep-microfoonmedia. De opdracht print alleen providerstatus en logt geen secrets.
|
||||
Live-smoketest voor maintainers: `OPENAI_API_KEY=... GEMINI_API_KEY=... node --import tsx scripts/dev/realtime-talk-live-smoke.ts` verifieert de OpenAI browser-WebRTC SDP-uitwisseling, de Google Live constrained-token browser-WebSocket-instelling en de Gateway-relaybrowseradapter met neppe microfoonmedia. De opdracht print alleen providerstatus en logt geen geheimen.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Stoppen en afbreken">
|
||||
<Accordion title="Stop and abort">
|
||||
- Klik op **Stop** (roept `chat.abort` aan).
|
||||
- Terwijl een run actief is, worden normale follow-ups in de wachtrij geplaatst. Klik op **Steer** bij een bericht in de wachtrij om die follow-up in de lopende beurt te injecteren.
|
||||
- Typ `/stop` (of zelfstandige afbreekzinnen zoals `stop`, `stop action`, `stop run`, `stop openclaw`, `please stop`) om out-of-band af te breken.
|
||||
- `chat.abort` ondersteunt `{ sessionKey }` (geen `runId`) om alle actieve runs voor die sessie af te breken.
|
||||
- Terwijl een uitvoering actief is, worden normale vervolgberichten in de wachtrij gezet. Klik op **Steer** bij een bericht in de wachtrij om dat vervolgbericht in de lopende beurt te injecteren.
|
||||
- Typ `/stop` (of losse afbreekzinnen zoals `stop`, `stop action`, `stop run`, `stop openclaw`, `please stop`) om out-of-band af te breken.
|
||||
- `chat.abort` ondersteunt `{ sessionKey }` (geen `runId`) om alle actieve uitvoeringen voor die sessie af te breken.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Behoud van gedeeltelijke abort-output">
|
||||
- Wanneer een run wordt afgebroken, kan gedeeltelijke assistant-tekst nog steeds in de UI worden weergegeven.
|
||||
- Gateway bewaart afgebroken gedeeltelijke assistant-tekst in de transcriptgeschiedenis wanneer gebufferde output bestaat.
|
||||
- Bewaarde items bevatten abortmetadata zodat transcriptconsumenten gedeeltelijke abort-output kunnen onderscheiden van normale voltooiingsoutput.
|
||||
<Accordion title="Abort partial retention">
|
||||
- Wanneer een uitvoering wordt afgebroken, kan gedeeltelijke assistenttekst nog steeds in de UI worden getoond.
|
||||
- Gateway bewaart afgebroken gedeeltelijke assistenttekst in de transcriptgeschiedenis wanneer er gebufferde uitvoer bestaat.
|
||||
- Bewaarde items bevatten afbreekmetadata, zodat transcriptgebruikers afgebroken gedeeltelijke uitvoer kunnen onderscheiden van normale voltooiingsuitvoer.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## PWA-installatie en webpush
|
||||
|
||||
De Control UI levert een `manifest.webmanifest` en een service worker, zodat moderne browsers deze als zelfstandige PWA kunnen installeren. Web Push laat de Gateway de geïnstalleerde PWA wekken met meldingen, zelfs wanneer het tabblad of browservenster niet open is.
|
||||
De Control UI levert een `manifest.webmanifest` en een service worker mee, zodat moderne browsers deze als zelfstandige PWA kunnen installeren. Web Push laat de Gateway de geïnstalleerde PWA wekken met meldingen, zelfs wanneer het tabblad of browservenster niet open is.
|
||||
|
||||
| Oppervlak | Wat het doet |
|
||||
| ----------------------------------------------------- | ----------------------------------------------------------------- |
|
||||
| Oppervlak | Wat het doet |
|
||||
| ----------------------------------------------------- | ------------------------------------------------------------------ |
|
||||
| `ui/public/manifest.webmanifest` | PWA-manifest. Browsers bieden "App installeren" aan zodra het bereikbaar is. |
|
||||
| `ui/public/sw.js` | Service worker die `push`-events en klikken op meldingen afhandelt. |
|
||||
| `push/vapid-keys.json` (onder de OpenClaw-statusmap) | Automatisch gegenereerd VAPID-sleutelpaar dat wordt gebruikt om Web Push-payloads te ondertekenen. |
|
||||
| `push/web-push-subscriptions.json` | Bewaarde browserabonnementseindpunten. |
|
||||
| `push/web-push-subscriptions.json` | Bewaarde browserabonnementseindpunten. |
|
||||
|
||||
Overschrijf het VAPID-sleutelpaar via env vars op het Gateway-proces wanneer je sleutels wilt vastpinnen (voor multi-host-deployments, secretrotatie of tests):
|
||||
Overschrijf het VAPID-sleutelpaar via env-vars op het Gateway-proces wanneer je sleutels wilt vastzetten (voor multi-host-deployments, geheime-rotatie of tests):
|
||||
|
||||
- `OPENCLAW_VAPID_PUBLIC_KEY`
|
||||
- `OPENCLAW_VAPID_PRIVATE_KEY`
|
||||
@ -215,25 +219,25 @@ De Control UI gebruikt deze scope-gated Gateway-methoden om browserabonnementen
|
||||
- `push.web.vapidPublicKey` — haalt de actieve openbare VAPID-sleutel op.
|
||||
- `push.web.subscribe` — registreert een `endpoint` plus `keys.p256dh`/`keys.auth`.
|
||||
- `push.web.unsubscribe` — verwijdert een geregistreerd eindpunt.
|
||||
- `push.web.test` — verzendt een testmelding naar het abonnement van de caller.
|
||||
- `push.web.test` — verstuurt een testmelding naar het abonnement van de aanroeper.
|
||||
|
||||
<Note>
|
||||
Web Push staat los van het iOS APNS-relaypad (zie [Configuratie](/nl/gateway/configuration) voor relay-backed push) en de bestaande `push.test`-methode, die gericht zijn op native mobiele koppeling.
|
||||
Web Push staat los van het iOS APNS-relaypad (zie [Configuratie](/nl/gateway/configuration) voor relay-ondersteunde push) en de bestaande methode `push.test`, die gericht zijn op native mobiele koppeling.
|
||||
</Note>
|
||||
|
||||
## Gehoste embeds
|
||||
|
||||
Assistant-berichten kunnen gehoste webinhoud inline renderen met de `[embed ...]`-shortcode. Het iframe-sandboxbeleid wordt beheerd door `gateway.controlUi.embedSandbox`:
|
||||
Assistentberichten kunnen gehoste webinhoud inline weergeven met de `[embed ...]`-shortcode. Het iframe-sandboxbeleid wordt beheerd door `gateway.controlUi.embedSandbox`:
|
||||
|
||||
<Tabs>
|
||||
<Tab title="strict">
|
||||
Schakelt scriptuitvoering binnen gehoste embeds uit.
|
||||
</Tab>
|
||||
<Tab title="scripts (standaard)">
|
||||
Staat interactieve embeds toe terwijl origin-isolatie behouden blijft; dit is de standaard en is meestal genoeg voor zelfstandige browsergames/widgets.
|
||||
<Tab title="scripts (default)">
|
||||
Staat interactieve embeds toe terwijl origin-isolatie behouden blijft; dit is de standaard en is meestal voldoende voor zelfstandige browsergames/widgets.
|
||||
</Tab>
|
||||
<Tab title="trusted">
|
||||
Voegt `allow-same-origin` toe boven op `allow-scripts` voor same-site-documenten die bewust sterkere rechten nodig hebben.
|
||||
Voegt `allow-same-origin` toe boven op `allow-scripts` voor documenten op dezelfde site die bewust sterkere rechten nodig hebben.
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
@ -257,7 +261,7 @@ Absolute externe `http(s)`-embed-URL's blijven standaard geblokkeerd. Als je bew
|
||||
|
||||
## Breedte van chatberichten
|
||||
|
||||
Gegroepeerde chatberichten gebruiken een leesbare standaard maximale breedte. Wide-monitor-deployments kunnen deze overschrijven zonder gebundelde CSS te patchen door `gateway.controlUi.chatMessageMaxWidth` in te stellen:
|
||||
Gegroepeerde chatberichten gebruiken een leesbare standaard max-width. Deployments met brede monitoren kunnen dit overschrijven zonder gebundelde CSS te patchen door `gateway.controlUi.chatMessageMaxWidth` in te stellen:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -269,13 +273,13 @@ Gegroepeerde chatberichten gebruiken een leesbare standaard maximale breedte. Wi
|
||||
}
|
||||
```
|
||||
|
||||
De waarde wordt gevalideerd voordat deze de browser bereikt. Ondersteunde waarden zijn onder andere gewone lengtes en percentages zoals `960px` of `82%`, plus begrensde `min(...)`-, `max(...)`-, `clamp(...)`-, `calc(...)`- en `fit-content(...)`-breedte-expressies.
|
||||
De waarde wordt gevalideerd voordat deze de browser bereikt. Ondersteunde waarden omvatten gewone lengtes en percentages zoals `960px` of `82%`, plus begrensde `min(...)`-, `max(...)`-, `clamp(...)`-, `calc(...)`- en `fit-content(...)`-breedte-expressies.
|
||||
|
||||
## Tailnet-toegang (aanbevolen)
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Geïntegreerde Tailscale Serve (voorkeur)">
|
||||
Houd de Gateway op loopback en laat Tailscale Serve deze proxyen met HTTPS:
|
||||
<Tab title="Integrated Tailscale Serve (preferred)">
|
||||
Houd de Gateway op loopback en laat Tailscale Serve deze via HTTPS proxyen:
|
||||
|
||||
```bash
|
||||
openclaw gateway --tailscale serve
|
||||
@ -285,16 +289,16 @@ De waarde wordt gevalideerd voordat deze de browser bereikt. Ondersteunde waarde
|
||||
|
||||
- `https://<magicdns>/` (of je geconfigureerde `gateway.controlUi.basePath`)
|
||||
|
||||
Standaard kunnen Control UI-/WebSocket Serve-requests authenticeren via Tailscale-identiteitsheaders (`tailscale-user-login`) wanneer `gateway.auth.allowTailscale` `true` is. OpenClaw verifieert de identiteit door het `x-forwarded-for`-adres op te lossen met `tailscale whois` en dit te matchen met de header, en accepteert deze alleen wanneer de request loopback bereikt met Tailscale's `x-forwarded-*`-headers. Voor Control UI-operatorsessies met browserapparaatidentiteit slaat dit geverifieerde Serve-pad ook de device-pairing round trip over; browsers zonder apparaat en node-role-verbindingen volgen nog steeds de normale apparaatcontroles. Stel `gateway.auth.allowTailscale: false` in als je expliciete shared-secret-credentials wilt vereisen, zelfs voor Serve-verkeer. Gebruik dan `gateway.auth.mode: "token"` of `"password"`.
|
||||
Standaard kunnen Control UI-/WebSocket Serve-verzoeken authenticeren via Tailscale-identiteitsheaders (`tailscale-user-login`) wanneer `gateway.auth.allowTailscale` `true` is. OpenClaw verifieert de identiteit door het `x-forwarded-for`-adres op te lossen met `tailscale whois` en dit te matchen met de header, en accepteert deze alleen wanneer het verzoek loopback bereikt met de `x-forwarded-*`-headers van Tailscale. Voor Control UI-operatorsessies met browserapparaatidentiteit slaat dit geverifieerde Serve-pad ook de apparaatkoppelingsronde over; browsers zonder apparaat en node-role-verbindingen volgen nog steeds de normale apparaatcontroles. Stel `gateway.auth.allowTailscale: false` in als je expliciete shared-secret-referenties wilt vereisen, zelfs voor Serve-verkeer. Gebruik dan `gateway.auth.mode: "token"` of `"password"`.
|
||||
|
||||
Voor dat asynchrone Serve-identiteitspad worden mislukte auth-pogingen voor hetzelfde client-IP en dezelfde auth-scope geserialiseerd voordat rate-limit-writes plaatsvinden. Gelijktijdige slechte retries vanuit dezelfde browser kunnen daarom `retry later` op de tweede request tonen in plaats van twee gewone mismatches die parallel racen.
|
||||
Voor dat asynchrone Serve-identiteitspad worden mislukte authenticatiepogingen voor hetzelfde client-IP en dezelfde authenticatiescope geserialiseerd voordat rate-limit-writes plaatsvinden. Gelijktijdige foutieve retries vanuit dezelfde browser kunnen daarom bij het tweede verzoek `retry later` tonen in plaats van twee gewone mismatches die parallel racen.
|
||||
|
||||
<Warning>
|
||||
Tokenloze Serve-auth gaat ervan uit dat de gatewayhost vertrouwd is. Als niet-vertrouwde lokale code op die host kan draaien, vereis dan token-/password-auth.
|
||||
Tokenloze Serve-authenticatie gaat ervan uit dat de gatewayhost vertrouwd is. Als onvertrouwde lokale code op die host kan draaien, vereis dan token-/wachtwoordauthenticatie.
|
||||
</Warning>
|
||||
|
||||
</Tab>
|
||||
<Tab title="Binden aan tailnet + token">
|
||||
<Tab title="Bind to tailnet + token">
|
||||
```bash
|
||||
openclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"
|
||||
```
|
||||
@ -310,12 +314,12 @@ De waarde wordt gevalideerd voordat deze de browser bereikt. Ondersteunde waarde
|
||||
|
||||
## Onveilige HTTP
|
||||
|
||||
Als je het dashboard opent via gewone HTTP (`http://<lan-ip>` of `http://<tailscale-ip>`), draait de browser in een **niet-veilige context** en blokkeert WebCrypto. Standaard **blokkeert** OpenClaw Control UI-verbindingen zonder apparaatidentiteit.
|
||||
Als je het dashboard opent via gewone HTTP (`http://<lan-ip>` of `http://<tailscale-ip>`), draait de browser in een **niet-beveiligde context** en blokkeert WebCrypto. Standaard **blokkeert** OpenClaw Control UI-verbindingen zonder apparaatidentiteit.
|
||||
|
||||
Gedocumenteerde uitzonderingen:
|
||||
|
||||
- localhost-only onveilige HTTP-compatibiliteit met `gateway.controlUi.allowInsecureAuth=true`
|
||||
- succesvolle operator-Control UI-auth via `gateway.auth.mode: "trusted-proxy"`
|
||||
- geslaagde operator-Control UI-authenticatie via `gateway.auth.mode: "trusted-proxy"`
|
||||
- break-glass `gateway.controlUi.dangerouslyDisableDeviceAuth=true`
|
||||
|
||||
**Aanbevolen oplossing:** gebruik HTTPS (Tailscale Serve) of open de UI lokaal:
|
||||
@ -324,7 +328,7 @@ Gedocumenteerde uitzonderingen:
|
||||
- `http://127.0.0.1:18789/` (op de gatewayhost)
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Insecure-auth toggle behavior">
|
||||
<Accordion title="Gedrag van onveilige-authenticatieschakelaar">
|
||||
```json5
|
||||
{
|
||||
gateway: {
|
||||
@ -338,11 +342,11 @@ Gedocumenteerde uitzonderingen:
|
||||
`allowInsecureAuth` is alleen een lokale compatibiliteitsschakelaar:
|
||||
|
||||
- Hiermee kunnen localhost-Control UI-sessies doorgaan zonder apparaatidentiteit in niet-beveiligde HTTP-contexten.
|
||||
- Hiermee worden koppelingscontroles niet omzeild.
|
||||
- Hiermee worden vereisten voor apparaatidentiteit op afstand (niet-localhost) niet versoepeld.
|
||||
- Dit omzeilt geen koppelingscontroles.
|
||||
- Dit versoepelt geen vereisten voor apparaatidentiteit op afstand (niet-localhost).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Break-glass only">
|
||||
<Accordion title="Alleen break-glass">
|
||||
```json5
|
||||
{
|
||||
gateway: {
|
||||
@ -354,56 +358,56 @@ Gedocumenteerde uitzonderingen:
|
||||
```
|
||||
|
||||
<Warning>
|
||||
`dangerouslyDisableDeviceAuth` schakelt apparaatidentiteitscontroles voor de Control UI uit en is een ernstige beveiligingsverlaging. Draai dit snel terug na noodgebruik.
|
||||
`dangerouslyDisableDeviceAuth` schakelt Control UI-controles voor apparaatidentiteit uit en is een ernstige beveiligingsverlaging. Draai dit snel terug na noodgebruik.
|
||||
</Warning>
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Trusted-proxy note">
|
||||
- Succesvolle trusted-proxy-authenticatie kan **operator**-Control UI-sessies toelaten zonder apparaatidentiteit.
|
||||
- Dit geldt **niet** voor Control UI-sessies met noderol.
|
||||
<Accordion title="Opmerking over trusted-proxy">
|
||||
- Geslaagde trusted-proxy-authenticatie kan **operator**-Control UI-sessies toelaten zonder apparaatidentiteit.
|
||||
- Dit geldt **niet** voor Control UI-sessies met node-rol.
|
||||
- Same-host local loopback reverse proxies voldoen nog steeds niet aan trusted-proxy-authenticatie; zie [Trusted proxy auth](/nl/gateway/trusted-proxy-auth).
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
Zie [Tailscale](/nl/gateway/tailscale) voor hulp bij het instellen van HTTPS.
|
||||
Zie [Tailscale](/nl/gateway/tailscale) voor richtlijnen voor HTTPS-configuratie.
|
||||
|
||||
## Contentbeveiligingsbeleid
|
||||
## Content security policy
|
||||
|
||||
De Control UI wordt geleverd met een streng `img-src`-beleid: alleen assets van **dezelfde origin**, `data:`-URL's en lokaal gegenereerde `blob:`-URL's zijn toegestaan. Externe `http(s)`- en protocolrelatieve afbeeldings-URL's worden door de browser geweigerd en leiden niet tot netwerkverzoeken.
|
||||
De Control UI wordt geleverd met een strikt `img-src`-beleid: alleen **same-origin** assets, `data:`-URL's en lokaal gegenereerde `blob:`-URL's zijn toegestaan. Externe `http(s)`- en protocol-relative afbeeldings-URL's worden door de browser geweigerd en veroorzaken geen netwerkverzoeken.
|
||||
|
||||
Wat dit in de praktijk betekent:
|
||||
|
||||
- Avatars en afbeeldingen die via relatieve paden worden aangeboden (bijvoorbeeld `/avatars/<id>`) worden nog steeds weergegeven, inclusief geauthenticeerde avatarroutes die de UI ophaalt en omzet in lokale `blob:`-URL's.
|
||||
- Avatars en afbeeldingen die via relatieve paden worden geleverd (bijvoorbeeld `/avatars/<id>`) worden nog steeds weergegeven, inclusief geauthenticeerde avatarroutes die de UI ophaalt en omzet naar lokale `blob:`-URL's.
|
||||
- Inline `data:image/...`-URL's worden nog steeds weergegeven (handig voor payloads binnen het protocol).
|
||||
- Lokale `blob:`-URL's die door de Control UI zijn gemaakt, worden nog steeds weergegeven.
|
||||
- Externe avatar-URL's die door kanaalmetadata worden uitgegeven, worden door de avatarhelpers van de Control UI verwijderd en vervangen door het ingebouwde logo/de ingebouwde badge, zodat een gecompromitteerd of schadelijk kanaal geen willekeurige externe afbeeldingsverzoeken vanuit de browser van een operator kan afdwingen.
|
||||
- Externe avatar-URL's die door kanaalmetadata worden uitgegeven, worden bij de avatarhelpers van de Control UI verwijderd en vervangen door het ingebouwde logo/de ingebouwde badge, zodat een gecompromitteerd of kwaadaardig kanaal geen willekeurige externe afbeeldingsverzoeken vanuit een operatorbrowser kan afdwingen.
|
||||
|
||||
Je hoeft niets te wijzigen om dit gedrag te krijgen — het staat altijd aan en is niet configureerbaar.
|
||||
|
||||
## Authenticatie voor avatarroutes
|
||||
## Authenticatie voor avatarroute
|
||||
|
||||
Wanneer Gateway-authenticatie is geconfigureerd, vereist het avatarendpoint van de Control UI hetzelfde Gateway-token als de rest van de API:
|
||||
Wanneer gatewayauthenticatie is geconfigureerd, vereist het avatarendpoint van de Control UI hetzelfde gatewaytoken als de rest van de API:
|
||||
|
||||
- `GET /avatar/<agentId>` retourneert de avatarafbeelding alleen aan geauthenticeerde callers. `GET /avatar/<agentId>?meta=1` retourneert de avatarmetadata volgens dezelfde regel.
|
||||
- Niet-geauthenticeerde verzoeken naar een van beide routes worden geweigerd (net als bij de naastliggende assistant-media-route). Dit voorkomt dat de avatarroute agentidentiteit lekt op hosts die verder beschermd zijn.
|
||||
- De Control UI stuurt zelf het Gateway-token door als bearer-header bij het ophalen van avatars en gebruikt geauthenticeerde blob-URL's, zodat de afbeelding nog steeds in dashboards wordt weergegeven.
|
||||
- `GET /avatar/<agentId>` retourneert de avatarafbeelding alleen aan geauthenticeerde aanroepers. `GET /avatar/<agentId>?meta=1` retourneert de avatarmetadata volgens dezelfde regel.
|
||||
- Niet-geauthenticeerde verzoeken naar beide routes worden geweigerd (overeenkomstig de naastliggende assistant-media-route). Dit voorkomt dat de avatarroute agentidentiteit lekt op hosts die verder beschermd zijn.
|
||||
- De Control UI zelf stuurt het gatewaytoken door als bearerheader bij het ophalen van avatars, en gebruikt geauthenticeerde blob-URL's zodat de afbeelding nog steeds in dashboards wordt weergegeven.
|
||||
|
||||
Als je Gateway-authenticatie uitschakelt (niet aanbevolen op gedeelde hosts), wordt de avatarroute ook niet-geauthenticeerd, in lijn met de rest van de Gateway.
|
||||
Als je gatewayauthenticatie uitschakelt (niet aanbevolen op gedeelde hosts), wordt de avatarroute ook niet-geauthenticeerd, in lijn met de rest van de Gateway.
|
||||
|
||||
## Authenticatie voor assistant-media-route
|
||||
|
||||
Wanneer Gateway-authenticatie is geconfigureerd, gebruiken lokale mediavoorvertoningen van de assistent een tweestapsroute:
|
||||
Wanneer gatewayauthenticatie is geconfigureerd, gebruiken lokale mediavoorbeelden van de assistant een tweestapsroute:
|
||||
|
||||
- `GET /__openclaw__/assistant-media?meta=1&source=<path>` vereist de normale operator-authenticatie van de Control UI. De browser verzendt het Gateway-token als bearer-header bij het controleren van beschikbaarheid.
|
||||
- Succesvolle metadatareacties bevatten een kortlevende `mediaTicket` die is beperkt tot dat exacte bronpad.
|
||||
- Door de browser weergegeven URL's voor afbeeldingen, audio, video en documenten gebruiken `mediaTicket=<ticket>` in plaats van het actieve Gateway-token of wachtwoord. Het ticket verloopt snel en kan geen andere bron autoriseren.
|
||||
- `GET /__openclaw__/assistant-media?meta=1&source=<path>` vereist de normale operatorauthenticatie van de Control UI. De browser verzendt het gatewaytoken als bearerheader bij het controleren van beschikbaarheid.
|
||||
- Geslaagde metadataresponses bevatten een kortlevende `mediaTicket` die is beperkt tot dat exacte bronpad.
|
||||
- Door de browser weergegeven afbeeldings-, audio-, video- en document-URL's gebruiken `mediaTicket=<ticket>` in plaats van het actieve gatewaytoken of wachtwoord. Het ticket verloopt snel en kan geen andere bron autoriseren.
|
||||
|
||||
Hierdoor blijft normale mediaweergave compatibel met browser-native media-elementen zonder herbruikbare Gateway-referenties in zichtbare media-URL's te plaatsen.
|
||||
Dit houdt normale mediaweergave compatibel met browser-native media-elementen zonder herbruikbare gatewayreferenties in zichtbare media-URL's te plaatsen.
|
||||
|
||||
## De UI bouwen
|
||||
|
||||
De Gateway serveert statische bestanden uit `dist/control-ui`. Bouw ze met:
|
||||
De Gateway levert statische bestanden vanuit `dist/control-ui`. Bouw ze met:
|
||||
|
||||
```bash
|
||||
pnpm ui:build
|
||||
@ -415,25 +419,25 @@ Optionele absolute basis (wanneer je vaste asset-URL's wilt):
|
||||
OPENCLAW_CONTROL_UI_BASE_PATH=/openclaw/ pnpm ui:build
|
||||
```
|
||||
|
||||
Voor lokale ontwikkeling (afzonderlijke ontwikkelserver):
|
||||
Voor lokale ontwikkeling (aparte devserver):
|
||||
|
||||
```bash
|
||||
pnpm ui:dev
|
||||
```
|
||||
|
||||
Wijs de UI daarna naar je Gateway-WS-URL (bijv. `ws://127.0.0.1:18789`).
|
||||
Wijs de UI vervolgens naar je Gateway-WS-URL (bijv. `ws://127.0.0.1:18789`).
|
||||
|
||||
## Debuggen/testen: ontwikkelserver + externe Gateway
|
||||
## Debuggen/testen: devserver + externe Gateway
|
||||
|
||||
De Control UI bestaat uit statische bestanden; het WebSocket-doel is configureerbaar en kan verschillen van de HTTP-origin. Dit is handig wanneer je de Vite-ontwikkelserver lokaal wilt gebruiken, maar de Gateway elders draait.
|
||||
De Control UI bestaat uit statische bestanden; het WebSocket-doel is configureerbaar en kan verschillen van de HTTP-origin. Dit is handig wanneer je de Vite-devserver lokaal wilt gebruiken, maar de Gateway elders draait.
|
||||
|
||||
<Steps>
|
||||
<Step title="Start the UI dev server">
|
||||
<Step title="Start de UI-devserver">
|
||||
```bash
|
||||
pnpm ui:dev
|
||||
```
|
||||
</Step>
|
||||
<Step title="Open with gatewayUrl">
|
||||
<Step title="Openen met gatewayUrl">
|
||||
```text
|
||||
http://localhost:5173/?gatewayUrl=ws%3A%2F%2F<gateway-host>%3A18789
|
||||
```
|
||||
@ -448,18 +452,18 @@ De Control UI bestaat uit statische bestanden; het WebSocket-doel is configureer
|
||||
</Steps>
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Notes">
|
||||
<Accordion title="Opmerkingen">
|
||||
- `gatewayUrl` wordt na het laden opgeslagen in localStorage en uit de URL verwijderd.
|
||||
- Als je een volledig `ws://`- of `wss://`-endpoint via `gatewayUrl` doorgeeft, URL-encodeer dan de waarde van `gatewayUrl` zodat de browser de querystring correct parseert.
|
||||
- `token` moet waar mogelijk via het URL-fragment (`#token=...`) worden doorgegeven. Fragmenten worden niet naar de server verzonden, wat lekken via verzoeklogs en Referer voorkomt. Verouderde `?token=`-queryparams worden voor compatibiliteit nog één keer geïmporteerd, maar alleen als fallback, en worden direct na bootstrap verwijderd.
|
||||
- `token` moet waar mogelijk via het URL-fragment (`#token=...`) worden doorgegeven. Fragmenten worden niet naar de server verzonden, waardoor lekkage via verzoeklogs en Referer wordt voorkomen. Verouderde `?token=`-queryparameters worden nog steeds eenmaal geïmporteerd voor compatibiliteit, maar alleen als fallback, en worden direct na bootstrap verwijderd.
|
||||
- `password` wordt alleen in het geheugen bewaard.
|
||||
- Wanneer `gatewayUrl` is ingesteld, valt de UI niet terug op configuratie- of omgevingsreferenties. Geef `token` (of `password`) expliciet op. Ontbrekende expliciete referenties zijn een fout.
|
||||
- Wanneer `gatewayUrl` is ingesteld, valt de UI niet terug op config- of omgevingsreferenties. Geef `token` (of `password`) expliciet op. Ontbrekende expliciete referenties zijn een fout.
|
||||
- Gebruik `wss://` wanneer de Gateway achter TLS staat (Tailscale Serve, HTTPS-proxy, enz.).
|
||||
- `gatewayUrl` wordt alleen geaccepteerd in een venster op topniveau (niet ingesloten) om clickjacking te voorkomen.
|
||||
- Niet-local loopback-Control UI-implementaties moeten `gateway.controlUi.allowedOrigins` expliciet instellen (volledige origins). Dit omvat externe ontwikkelopstellingen.
|
||||
- Het opstarten van de Gateway kan lokale origins zoals `http://localhost:<port>` en `http://127.0.0.1:<port>` vullen op basis van de effectieve runtime-bind en poort, maar externe browser-origins hebben nog steeds expliciete vermeldingen nodig.
|
||||
- Gebruik `gateway.controlUi.allowedOrigins: ["*"]` niet behalve voor strikt gecontroleerde lokale tests. Het betekent: sta elke browser-origin toe, niet "match de host die ik gebruik."
|
||||
- `gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true` schakelt fallbackmodus voor Host-header-origin in, maar dit is een gevaarlijke beveiligingsmodus.
|
||||
- Niet-loopback Control UI-implementaties moeten `gateway.controlUi.allowedOrigins` expliciet instellen (volledige origins). Dit omvat externe devopstellingen.
|
||||
- Het opstarten van de Gateway kan lokale origins zoals `http://localhost:<port>` en `http://127.0.0.1:<port>` seeden vanuit de effectieve runtime-bind en poort, maar externe browserorigins hebben nog steeds expliciete vermeldingen nodig.
|
||||
- Gebruik `gateway.controlUi.allowedOrigins: ["*"]` niet, behalve voor strikt gecontroleerd lokaal testen. Het betekent dat elke browserorigin wordt toegestaan, niet "match welke host ik ook gebruik."
|
||||
- `gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true` schakelt Host-header-origin-fallbackmodus in, maar dit is een gevaarlijke beveiligingsmodus.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -480,7 +484,7 @@ Details voor externe toegang instellen: [Externe toegang](/nl/gateway/remote).
|
||||
|
||||
## Gerelateerd
|
||||
|
||||
- [Dashboard](/nl/web/dashboard) — Gateway-dashboard
|
||||
- [Health Checks](/nl/gateway/health) — Gateway-gezondheidsmonitoring
|
||||
- [Dashboard](/nl/web/dashboard) — gatewaydashboard
|
||||
- [Health Checks](/nl/gateway/health) — gezondheidsmonitoring van de gateway
|
||||
- [TUI](/nl/web/tui) — terminalgebruikersinterface
|
||||
- [WebChat](/nl/web/webchat) — browsergebaseerde chatinterface
|
||||
|
||||
Loading…
Reference in New Issue
Block a user