Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- Volledige testkit (suites, live, Docker): Testen
-
pnpm test:force: Beëindigt elk achtergebleven Gateway-proces dat de standaardcontrolepoort bezet houdt, en draait daarna de volledige Vitest-suite met een geïsoleerde Gateway-poort zodat servertests niet botsen met een draaiende instantie. Gebruik dit wanneer een eerdere Gateway-run poort 18789 bezet heeft achtergelaten. -
pnpm test:coverage: Draait de unitsuite met V8-coverage (viavitest.unit.config.ts). Dit is een coverage-gate voor geladen bestanden, niet whole-repo all-file coverage. Drempels zijn 70% voor regels/functies/statements en 55% voor branches. Omdatcoverage.allfalse is, meet de gate bestanden die door de unit-coveragesuite zijn geladen in plaats van elk split-lane bronbestand als ongedekt te behandelen. -
pnpm test:coverage:changed: Draait unit-coverage alleen voor bestanden die sindsorigin/mainzijn gewijzigd. -
pnpm test:changed: goedkope slimme gewijzigde-test-run. Deze draait precieze targets uit directe testbewerkingen, naastgelegen*.test.ts-bestanden, expliciete bronmappings en de lokale importgraaf. Brede/configuratie-/pakketwijzigingen worden overgeslagen tenzij ze naar precieze tests mappen. -
OPENCLAW_TEST_CHANGED_BROAD=1 pnpm test:changed: expliciete brede gewijzigde-test-run. Gebruik dit wanneer een wijziging in testharnas/configuratie/pakket moet terugvallen op Vitest’s bredere gewijzigde-testgedrag. -
pnpm changed:lanes: toont de architecturale lanes die worden geactiveerd door de diff tegenorigin/main. -
pnpm check:changed: draait de slimme gewijzigde-check-gate voor de diff tegenorigin/main. Deze draait typecheck-, lint- en guard-commando’s voor de getroffen architecturale lanes, maar draait geen Vitest-tests. Gebruikpnpm test:changedof explicietpnpm test <target>voor testbewijs. -
pnpm test: routeert expliciete bestands-/directorytargets via gescopete Vitest-lanes. Niet-getargete runs gebruiken vaste shardgroepen en breiden uit naar leaf-configs voor lokale parallelle uitvoering; de extensiegroep breidt altijd uit naar de per-extensie shardconfigs in plaats van één enorm root-projectproces. -
Testwrapper-runs eindigen met een korte
[test] passed|failed|skipped ... in ...-samenvatting. Vitest’s eigen duurregel blijft het detail per shard. -
Gedeelde OpenClaw-teststatus: gebruik
src/test-utils/openclaw-test-state.tsvanuit Vitest wanneer een test een geïsoleerdeHOME,OPENCLAW_STATE_DIR,OPENCLAW_CONFIG_PATH, configuratiefixture, workspace, agentdirectory of auth-profielstore nodig heeft. -
Process E2E-helpers: gebruik
test/helpers/openclaw-test-instance.tswanneer een Vitest E2E-test op procesniveau een draaiende Gateway, CLI-env, logvastlegging en opschoning op één plek nodig heeft. -
Docker/Bash E2E-helpers: lanes die
scripts/lib/docker-e2e-image.shsourcen, kunnendocker_e2e_test_state_shell_b64 <label> <scenario>aan de container doorgeven en dit decoderen metscripts/lib/openclaw-e2e-instance.sh; multi-home-scripts kunnendocker_e2e_test_state_function_b64doorgeven enopenclaw_test_state_create <label> <scenario>in elke flow aanroepen. Lower-level callers kunnenscripts/lib/openclaw-test-state.mjs shell --label <name> --scenario <name>gebruiken voor een shellsnippet in de container, ofnode scripts/lib/openclaw-test-state.mjs -- create --label <name> --scenario <name> --env-file <path> --jsonvoor een sourcebaar host-env-bestand. De--vóórcreatevoorkomt dat nieuwere Node-runtimes--env-fileals een Node-flag behandelen. Docker/Bash-lanes die een Gateway starten, kunnenscripts/lib/openclaw-e2e-instance.shbinnen de container sourcen voor entrypoint-resolutie, mock-OpenAI-startup, Gateway-foreground/background-start, readiness-probes, state-env-export, logdumps en procesopschoning. -
Full-, extensie- en include-pattern-shard-runs werken lokale timingdata bij in
.artifacts/vitest-shard-timings.json; latere whole-config-runs gebruiken die timings om langzame en snelle shards te balanceren. Include-pattern-CI-shards voegen de shardnaam toe aan de timingsleutel, waardoor gefilterde shardtimings zichtbaar blijven zonder whole-config timingdata te vervangen. StelOPENCLAW_TEST_PROJECTS_TIMINGS=0in om het lokale timingartefact te negeren. -
Geselecteerde
plugin-sdk- encommands-testbestanden routeren nu via dedicated lichte lanes die alleentest/setup.tsbehouden, terwijl runtime-zware cases op hun bestaande lanes blijven. -
Bronbestanden met naastgelegen tests mappen naar die naastgelegen test voordat ze terugvallen op bredere directoryglobs. Helperbewerkingen onder
src/channels/plugins/contracts/test-helpers,src/plugin-sdk/test-helpersensrc/plugins/contractsgebruiken een lokale importgraaf om importerende tests te draaien in plaats van elke shard breed te draaien wanneer het afhankelijkheidspad precies is. -
auto-replysplitst nu ook in drie dedicated configs (core,top-level,reply) zodat het reply-harnas de lichtere top-level status-/token-/helpertests niet domineert. -
De basis-Vitest-config gebruikt nu standaard
pool: "threads"enisolate: false, met de gedeelde niet-geïsoleerde runner ingeschakeld in de repo-configs. -
pnpm test:channelsdraaitvitest.channels.config.ts. -
pnpm test:extensionsenpnpm test extensionsdraaien alle extensie-/pluginshards. Zware kanaalplugins, de browserplugin en OpenAI draaien als dedicated shards; andere plugingroepen blijven gebatcht. Gebruikpnpm test extensions/<id>voor één gebundelde plugin-lane. -
pnpm test:perf:imports: schakelt Vitest import-duration- en import-breakdown-rapportage in, terwijl nog steeds gescopete lane-routering wordt gebruikt voor expliciete bestands-/directorytargets. -
pnpm test:perf:imports:changed: dezelfde importprofilering, maar alleen voor bestanden die sindsorigin/mainzijn gewijzigd. -
pnpm test:perf:changed:bench -- --ref <git-ref>benchmarkt het gerouteerde changed-mode-pad tegen de native root-project-run voor dezelfde gecommitte git-diff. -
pnpm test:perf:changed:bench -- --worktreebenchmarkt de huidige changeset in de worktree zonder eerst te committen. -
pnpm test:perf:profile:main: schrijft een CPU-profiel voor de Vitest-mainthread (.artifacts/vitest-main-profile). -
pnpm test:perf:profile:runner: schrijft CPU- en heap-profielen voor de unitrunner (.artifacts/vitest-runner-profile). -
pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json: draait elke full-suite Vitest leaf-config serieel en schrijft gegroepeerde duurdata plus per-config JSON-/logartefacten. De Test Performance Agent gebruikt dit als baseline voordat hij slow-test-fixes probeert. -
pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifacts/test-perf/after-agent.json: vergelijkt gegroepeerde rapporten na een performancegerichte wijziging. -
Gateway-integratie: opt-in via
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testofpnpm test:gateway. -
pnpm test:e2e: Draait Gateway end-to-end smoketests (multi-instance WS/HTTP/node-pairing). Gebruikt standaardthreads+isolate: falsemet adaptieve workers invitest.e2e.config.ts; stem af metOPENCLAW_E2E_WORKERS=<n>en stelOPENCLAW_E2E_VERBOSE=1in voor uitgebreide logs. -
pnpm test:live: Draait live providertests (minimax/zai). Vereist API-sleutels enLIVE=1(of provider-specifieke*_LIVE_TEST=1) om niet over te slaan. -
pnpm test:docker:all: Bouwt de gedeelde live-testimage, verpakt OpenClaw één keer als een npm-tarball, bouwt/hergebruikt een kale Node/Git-runnerimage plus een functionele image die die tarball installeert in/app, en draait daarna Docker-smokelanes metOPENCLAW_SKIP_DOCKER_BUILD=1via een gewogen scheduler. De kale image (OPENCLAW_DOCKER_E2E_BARE_IMAGE) wordt gebruikt voor installer-/update-/plugin-afhankelijkheidslanes; die lanes mounten de vooraf gebouwde tarball in plaats van gekopieerde repobronnen te gebruiken. De functionele image (OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE) wordt gebruikt voor normale built-app-functionaliteitslanes.scripts/package-openclaw-for-docker.mjsis de enige lokale/CI-packagepacker en valideert de tarball plusdist/postinstall-inventory.jsonvoordat Docker deze consumeert. Docker-lanedefinities staan inscripts/lib/docker-e2e-scenarios.mjs; plannerlogica staat inscripts/lib/docker-e2e-plan.mjs;scripts/test-docker-all.mjsvoert het geselecteerde plan uit.node scripts/test-docker-all.mjs --plan-jsonemit het door de scheduler beheerde CI-plan voor geselecteerde lanes, imagekinds, package-/live-imagebehoeften, statusscenario’s en credentialcontroles zonder Docker te bouwen of te draaien.OPENCLAW_DOCKER_ALL_PARALLELISM=<n>beheert processlots en staat standaard op 10;OPENCLAW_DOCKER_ALL_TAIL_PARALLELISM=<n>beheert de providergevoelige tailpool en staat standaard op 10. Zware lane-caps staan standaard opOPENCLAW_DOCKER_ALL_LIVE_LIMIT=9,OPENCLAW_DOCKER_ALL_NPM_LIMIT=10enOPENCLAW_DOCKER_ALL_SERVICE_LIMIT=7; providercaps staan standaard op één zware lane per provider viaOPENCLAW_DOCKER_ALL_LIVE_CLAUDE_LIMIT=4,OPENCLAW_DOCKER_ALL_LIVE_CODEX_LIMIT=4enOPENCLAW_DOCKER_ALL_LIVE_GEMINI_LIMIT=4. GebruikOPENCLAW_DOCKER_ALL_WEIGHT_LIMITofOPENCLAW_DOCKER_ALL_DOCKER_LIMITvoor grotere hosts. Als één lane de effectieve gewichts- of resourcecap op een host met lage paralleliteit overschrijdt, kan deze nog steeds vanuit een lege pool starten en alleen draaien totdat capaciteit wordt vrijgegeven. Lanestarts worden standaard met 2 seconden gespreid om create-storms in de lokale Docker-daemon te vermijden; overschrijf dit metOPENCLAW_DOCKER_ALL_START_STAGGER_MS=<ms>. De runner voert standaard een Docker-preflight uit, ruimt verouderde OpenClaw E2E-containers op, emit elke 30 seconden actieve-lane-status, deelt provider-CLI-toolcaches tussen compatibele lanes, probeert tijdelijke live-providerfouten standaard één keer opnieuw (OPENCLAW_DOCKER_ALL_LIVE_RETRIES=<n>) en slaat lanetimings op in.artifacts/docker-tests/lane-timings.jsonvoor longest-first-volgorde bij latere runs. GebruikOPENCLAW_DOCKER_ALL_DRY_RUN=1om het lanemanifest af te drukken zonder Docker te draaien,OPENCLAW_DOCKER_ALL_STATUS_INTERVAL_MS=<ms>om statusuitvoer af te stemmen, ofOPENCLAW_DOCKER_ALL_TIMINGS=0om timinghergebruik uit te schakelen. GebruikOPENCLAW_DOCKER_ALL_LIVE_MODE=skipvoor alleen deterministische/lokale lanes ofOPENCLAW_DOCKER_ALL_LIVE_MODE=onlyvoor alleen live-providerlanes; package-aliassen zijnpnpm test:docker:local:allenpnpm test:docker:live:all. Live-only-modus voegt main- en tail-live-lanes samen in één longest-first-pool zodat providerbuckets Claude-, Codex- en Gemini-werk samen kunnen inpakken. De runner stopt met het schedulen van nieuwe gepoolde lanes na de eerste fout tenzijOPENCLAW_DOCKER_ALL_FAIL_FAST=0is ingesteld, en elke lane heeft een fallback-time-out van 120 minuten die overschrijfbaar is metOPENCLAW_DOCKER_ALL_LANE_TIMEOUT_MS; geselecteerde live-/taillanes gebruiken strakkere caps per lane. CLI-backend-Docker-setupcommando’s hebben hun eigen time-out viaOPENCLAW_LIVE_CLI_BACKEND_SETUP_TIMEOUT_SECONDS(standaard 180). Per-lane logs,summary.json,failures.jsonen fasetimings worden geschreven onder.artifacts/docker-tests/<run-id>/; gebruikpnpm test:docker:timings <summary.json>om langzame lanes te inspecteren enpnpm test:docker:rerun <run-id|summary.json|failures.json>om goedkope getargete rerun-commando’s af te drukken. -
pnpm test:docker:browser-cdp-snapshot: Bouwt een Chromium-backed source E2E-container, start raw CDP plus een geïsoleerde Gateway, draaitbrowser doctor --deepen verifieert dat CDP-rolsnapshots link-URL’s, cursor-gepromote clickables, iframe-refs en framemetadata bevatten. -
CLI-backend live-Docker-probes kunnen als gefocuste lanes worden gedraaid, bijvoorbeeld
pnpm test:docker:live-cli-backend:codex,pnpm test:docker:live-cli-backend:codex:resumeofpnpm test:docker:live-cli-backend:codex:mcp. Claude en Gemini hebben overeenkomstige:resume- en:mcp-aliassen. -
pnpm test:docker:openwebui: Start gedockeriseerde OpenClaw + Open WebUI, meldt aan via Open WebUI, controleert/api/modelsen draait daarna een echte proxied chat via/api/chat/completions. Vereist een bruikbare live modelsleutel (bijvoorbeeld OpenAI in~/.profile), haalt een externe Open WebUI-image op en wordt niet verwacht CI-stabiel te zijn zoals de normale unit-/e2e-suites. -
pnpm test:docker:mcp-channels: Start een geseede Gateway-container en een tweede clientcontainer dieopenclaw mcp servespawnt, en verifieert daarna gerouteerde gespreksontdekking, transcriptreads, bijlagemetadata, gedrag van live event queue, outbound send-routering en Claude-achtige kanaal- en permissienotificaties via de echte stdio-bridge. De Claude-notificatieassertie leest de raw stdio MCP-frames direct, zodat de smoke weerspiegelt wat de bridge daadwerkelijk emit.
Lokale PR-gate
Voor lokale PR-land-/gatecontroles, voer uit:pnpm check:changedpnpm checkpnpm check:test-typespnpm buildpnpm testpnpm check:docs
pnpm test op een zwaar belaste host flaket, voer het dan een keer opnieuw uit voordat je het als een regressie behandelt, en isoleer daarna met pnpm test <path/to/test>. Gebruik voor hosts met beperkte geheugenruimte:
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
Model-latentiebenchmark (lokale sleutels)
Script:scripts/bench-model.ts
Gebruik:
source ~/.profile && pnpm tsx scripts/bench-model.ts --runs 10- Optionele env:
MINIMAX_API_KEY,MINIMAX_BASE_URL,MINIMAX_MODEL,ANTHROPIC_API_KEY - Standaardprompt: “Antwoord met één woord: ok. Geen interpunctie of extra tekst.”
- minimax-mediaan 1279 ms (min. 1114, max. 2431)
- opus-mediaan 2454 ms (min. 1224, max. 3170)
CLI-opstartbenchmark
Script:scripts/bench-cli-startup.ts
Gebruik:
pnpm test:startup:benchpnpm test:startup:bench:smokepnpm test:startup:bench:savepnpm test:startup:bench:updatepnpm test:startup:bench:checkpnpm tsx scripts/bench-cli-startup.tspnpm tsx scripts/bench-cli-startup.ts --runs 12pnpm tsx scripts/bench-cli-startup.ts --preset realpnpm tsx scripts/bench-cli-startup.ts --preset real --case status --case gatewayStatus --runs 3pnpm tsx scripts/bench-cli-startup.ts --preset real --case tasksJson --case tasksListJson --case tasksAuditJson --runs 3pnpm tsx scripts/bench-cli-startup.ts --entry openclaw.mjs --entry-secondary dist/entry.js --preset allpnpm tsx scripts/bench-cli-startup.ts --preset all --output .artifacts/cli-startup-bench-all.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --case gatewayStatusJson --output .artifacts/cli-startup-bench-smoke.jsonpnpm tsx scripts/bench-cli-startup.ts --preset real --cpu-prof-dir .artifacts/cli-cpupnpm tsx scripts/bench-cli-startup.ts --json
startup:--version,--help,health,health --json,status --json,statusreal:health,status,status --json,sessions,sessions --json,tasks --json,tasks list --json,tasks audit --json,agents list --json,gateway status,gateway status --json,gateway health --json,config get gateway.portall: beide presets
sampleCount, gemiddelde, p50, p95, min/max, exit-code-/signaalverdeling en max RSS-samenvattingen voor elke opdracht. Optioneel schrijft --cpu-prof-dir / --heap-prof-dir V8-profielen per uitvoering, zodat timing en profielvastlegging dezelfde harness gebruiken.
Conventies voor opgeslagen uitvoer:
pnpm test:startup:bench:smokeschrijft het gerichte smoke-artefact naar.artifacts/cli-startup-bench-smoke.jsonpnpm test:startup:bench:saveschrijft het volledige suite-artefact naar.artifacts/cli-startup-bench-all.jsonmetruns=5enwarmup=1pnpm test:startup:bench:updatevernieuwt de ingecheckte baselinefixture optest/fixtures/cli-startup-bench.jsonmetruns=5enwarmup=1
test/fixtures/cli-startup-bench.json- Vernieuw met
pnpm test:startup:bench:update - Vergelijk huidige resultaten met de fixture met
pnpm test:startup:bench:check
Onboarding E2E (Docker)
Docker is optioneel; dit is alleen nodig voor gecontaineriseerde onboarding-smoketests. Volledige cold-startflow in een schone Linux-container:openclaw health uit.