Na żywo: lokalne polecenia testów dymnych
Przed doraźnymi testami na żywo wyeksportuj wymagany klucz dostawcy w środowisku procesu. Bezpieczny test dymny multimediów:voicecall smoke wykonuje próbę na sucho, chyba że podano również --yes; używaj --yes tylko
wtedy, gdy zamierzasz nawiązać rzeczywiste połączenie. W przypadku Twilio, Telnyx i Plivo
pomyślna kontrola gotowości wymaga publicznego adresu URL webhooka — lokalne/prywatne
adresy URL local loopback są odrzucane, ponieważ ci dostawcy nie mogą się z nimi połączyć.
Na żywo: przegląd możliwości węzła Android
- Test:
src/gateway/android-node.capabilities.live.test.ts - Skrypt:
pnpm android:test:integration - Cel: wywołać każde aktualnie udostępniane polecenie podłączonego węzła Android i sprawdzić zachowanie kontraktu poleceń.
- Zakres:
- Wymagana konfiguracja wstępna/ręczna (zestaw nie instaluje, nie uruchamia ani nie paruje aplikacji).
- Walidacja
node.invokeGateway polecenie po poleceniu dla wybranego węzła Android.
- Wymagana konfiguracja wstępna:
- Aplikacja Android jest już połączona i sparowana z Gateway.
- Aplikacja pozostaje na pierwszym planie.
- Przyznano uprawnienia/zgodę na przechwytywanie dla możliwości, które mają przejść test.
- Opcjonalne nadpisania celu:
OPENCLAW_ANDROID_NODE_IDlubOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- Pełne szczegóły konfiguracji Androida: Aplikacja Android
Na żywo: test dymny modeli (klucze profili)
Testy modeli na żywo są podzielone na dwie warstwy, aby izolować awarie:- „Model bezpośredni” informuje, czy dostawca/model w ogóle może odpowiedzieć przy użyciu danego klucza.
- „Test dymny Gateway” informuje, czy pełny potok Gateway+agent działa z tym modelem (sesje, historia, narzędzia, zasady piaskownicy itd.).
src/agents/live-model-filter.ts i
zmieniają się z czasem; jako źródło prawdy traktuj znajdujące się tam tablice, a nie tę
stronę.
MiniMax M3 używa minimax/MiniMax-M3 jako domyślnego odwołania dostawca/model.
Warstwa 1: Bezpośrednie uzupełnianie przez model (bez Gateway)
- Test:
src/agents/models.profiles.live.test.ts - Cel:
- Wyliczyć wykryte modele
- Użyć
getApiKeyForModel, aby wybrać modele, dla których masz dane uwierzytelniające - Uruchomić krótkie uzupełnianie dla każdego modelu (oraz ukierunkowane testy regresji, gdy są potrzebne)
- Jak włączyć:
pnpm test:live(lubOPENCLAW_LIVE_TEST=1, jeśli wywołujesz Vitest bezpośrednio)- Ustaw
OPENCLAW_LIVE_MODELS=modern,smallluball(aliasmodern), aby faktycznie uruchomić ten zestaw; w przeciwnym razie jest pomijany, dzięki czemu samopnpm test:livepozostaje skoncentrowane na teście dymnym Gateway.
- Jak wybierać modele:
OPENCLAW_LIVE_MODELS=modernuruchamia wyselekcjonowaną listę priorytetowych modeli o wysokiej wartości diagnostycznej (zobacz Na żywo: macierz modeli)OPENCLAW_LIVE_MODELS=smalluruchamia wyselekcjonowaną listę priorytetowych małych modeliOPENCLAW_LIVE_MODELS=alljest aliasemmodern- lub
OPENCLAW_LIVE_MODELS="openai/gpt-5.6-luna,anthropic/claude-opus-4-6,..."(lista dozwolonych wartości rozdzielona przecinkami) - Lokalne uruchomienia małych modeli Ollama domyślnie używają
http://127.0.0.1:11434; ustawiajOPENCLAW_LIVE_OLLAMA_BASE_URLtylko dla punktów końcowych w sieci LAN, niestandardowych lub Ollama Cloud. - Przeglądy modern/all i small domyślnie mają limit równy długości odpowiedniej wyselekcjonowanej listy; ustaw
OPENCLAW_LIVE_MAX_MODELS=0, aby wykonać pełny przegląd wybranych profili, lub dodatnią liczbę, aby ustawić niższy limit. - Pełne przeglądy używają
OPENCLAW_LIVE_TEST_TIMEOUT_MSjako limitu czasu całego testu modeli bezpośrednich. Wartość domyślna: 60 minut. - Próby modeli bezpośrednich domyślnie działają z równoległością 20; ustaw
OPENCLAW_LIVE_MODEL_CONCURRENCY, aby ją nadpisać.
- Jak wybierać dostawców:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(lista dozwolonych wartości rozdzielona przecinkami)
- Skąd pochodzą klucze:
- Domyślnie: magazyn profili i wartości rezerwowe ze środowiska
- Ustaw
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, aby wymusić używanie wyłącznie magazynu profili
- Dlaczego to istnieje:
- Oddziela „interfejs API dostawcy jest uszkodzony / klucz jest nieprawidłowy” od „potok agenta Gateway jest uszkodzony”
- Zawiera małe, odizolowane testy regresji (przykład: odtwarzanie rozumowania OpenAI Responses/Codex Responses i przepływy wywołań narzędzi)
Warstwa 2: Gateway + test dymny agenta deweloperskiego (co faktycznie robi „@openclaw”)
- Test:
src/gateway/gateway-models.profiles.live.test.ts - Cel:
- Uruchomić Gateway wewnątrz procesu
- Utworzyć/zmodyfikować sesję
agent:dev:*(nadpisanie modelu dla każdego uruchomienia) - Iterować po modelach z kluczami i sprawdzić:
- „sensowną” odpowiedź (bez narzędzi)
- działanie rzeczywistego wywołania narzędzia (próba odczytu)
- opcjonalne dodatkowe próby narzędzi (próba wykonania+odczytu)
- ciągłość działania ścieżek regresji OpenAI (tylko wywołanie narzędzia -> kontynuacja)
- Szczegóły prób (aby można było szybko wyjaśnić awarie):
- Próba
read: test zapisuje plik z wartością nonce w obszarze roboczym i prosi agenta o użyciereaddo jego odczytania oraz zwrócenie wartości nonce. - Próba
exec+read: test prosi agenta o użycieexecdo zapisania wartości nonce w pliku tymczasowym, a następnie o jej odczytanie za pomocąread. - Próba obrazu: test dołącza wygenerowany plik PNG (kot + losowy kod) i oczekuje, że model zwróci
cat <CODE>. - Odwołanie do implementacji:
src/gateway/gateway-models.profiles.live.test.tsitest/helpers/live-image-probe.ts.
- Próba
- Jak włączyć:
pnpm test:live(lubOPENCLAW_LIVE_TEST=1, jeśli wywołujesz Vitest bezpośrednio)
- Jak wybierać modele:
- Domyślnie: wyselekcjonowana priorytetowa lista o wysokiej wartości diagnostycznej (
modern) OPENCLAW_LIVE_GATEWAY_MODELS=smalluruchamia wyselekcjonowaną listę małych modeli w pełnym potoku Gateway+agentOPENCLAW_LIVE_GATEWAY_MODELS=alljest aliasemmodern- Możesz też ustawić
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(lub listę rozdzieloną przecinkami), aby zawęzić wybór - Przeglądy Gateway modern/all i small domyślnie mają limit równy długości odpowiedniej wyselekcjonowanej listy; ustaw
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0, aby wykonać pełny wybrany przegląd, lub dodatnią liczbę, aby ustawić niższy limit.
- Domyślnie: wyselekcjonowana priorytetowa lista o wysokiej wartości diagnostycznej (
- Jak wybierać dostawców (aby uniknąć „wszystkiego przez OpenRouter”):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(lista dozwolonych wartości rozdzielona przecinkami)
- Próby narzędzi i obrazów są zawsze włączone w tym teście na żywo:
- Próba
read+ próbaexec+read(obciążenie narzędzi) - Próba obrazu jest uruchamiana, gdy model deklaruje obsługę obrazów wejściowych
- Przepływ (ogólnie):
- Test generuje mały plik PNG z napisem „CAT” i losowym kodem (
test/helpers/live-image-probe.ts) - Wysyła go przez
agentjakoattachments: [{ mimeType: "image/png", content: "<base64>" }] - Gateway przetwarza załączniki do
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - Osadzony agent przekazuje multimodalną wiadomość użytkownika do modelu
- Sprawdzenie: odpowiedź zawiera
cati kod (tolerancja OCR: dopuszczalne są drobne błędy)
- Test generuje mały plik PNG z napisem „CAT” i losowym kodem (
- Próba
Na żywo: test dymny backendu CLI (Claude, Gemini lub inne lokalne interfejsy CLI)
- Test:
src/gateway/gateway-cli-backend.live.test.ts - Cel: zweryfikować potok Gateway + agent przy użyciu lokalnego backendu CLI bez modyfikowania domyślnej konfiguracji.
- Domyślne ustawienia testu dymnego specyficzne dla backendu znajdują się w należącej do odpowiedniego Pluginu definicji
cli-backend.ts. - Włączanie:
pnpm test:live(lubOPENCLAW_LIVE_TEST=1, jeśli wywołujesz Vitest bezpośrednio)OPENCLAW_LIVE_CLI_BACKEND=1
- Ustawienia domyślne:
- Domyślny dostawca/model:
claude-cli/claude-sonnet-4-6 - Zachowanie polecenia/argumentów/obrazów pochodzi z metadanych właścicielskiego Pluginu backendu CLI.
- Domyślny dostawca/model:
- Nadpisania (opcjonalne):
OPENCLAW_LIVE_CLI_BACKEND_MODEL="claude-cli/claude-sonnet-4-6"OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/claude"OPENCLAW_LIVE_CLI_BACKEND_ARGS='["-p","--output-format","json"]'OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1, aby wysłać rzeczywisty załącznik graficzny (ścieżki są wstrzykiwane do promptu). Domyślnie wyłączone w procedurach Docker.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image", aby przekazywać ścieżki plików obrazów jako argumenty CLI zamiast wstrzykiwać je do promptu.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(lub"list"), aby kontrolować sposób przekazywania argumentów obrazów, gdy ustawionoIMAGE_ARG.OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1, aby wysłać drugą turę i zweryfikować przepływ wznawiania.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1, aby włączyć próbę ciągłości w tej samej sesji Claude Sonnet -> Opus, gdy wybrany model obsługuje model docelowy przełączenia. Domyślnie wyłączone, również w procedurach Docker.OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1, aby włączyć próbę MCP/pętli narzędzi local loopback. Domyślnie wyłączone w procedurach Docker.
gemini --debug mcp list, aby wykazać,
że zapisany serwer transport: "streamable-http" jest normalizowany do formatu HTTP MCP Gemini
i może połączyć się z lokalnym serwerem MCP używającym strumieniowego HTTP.
Procedura Docker:
- Procedura uruchamiająca Docker znajduje się w
scripts/test-live-cli-backend-docker.sh. - Uruchamia ona test dymny backendu CLI na żywo wewnątrz obrazu Docker repozytorium jako użytkownik
nodebez uprawnień administratora. - Pobiera metadane testu dymnego CLI z właścicielskiego Pluginu, a następnie instaluje odpowiedni pakiet CLI dla systemu Linux (
@anthropic-ai/claude-codelub@google/gemini-cli) w buforowanym prefiksie z prawem zapisu pod adresemOPENCLAW_DOCKER_CLI_TOOLS_DIR(domyślnie:~/.cache/openclaw/docker-cli-tools). codex-clinie jest już dołączonym backendem CLI; zamiast niego używajopenai/*ze środowiskiem uruchomieniowym serwera aplikacji Codex (zobacz Na żywo: test dymny infrastruktury serwera aplikacji Codex).pnpm test:docker:live-cli-backend:claude-subscriptionwymaga przenośnego uwierzytelniania OAuth subskrypcji Claude Code przez plik~/.claude/.credentials.jsonz polemclaudeAiOauth.subscriptionTypealbo zmiennąCLAUDE_CODE_OAUTH_TOKENuzyskaną zclaude setup-token. Najpierw potwierdza bezpośrednie działanieclaude -pw Dockerze, a następnie uruchamia dwie tury backendu CLI Gateway bez zachowywania zmiennych środowiskowych klucza API Anthropic. Ta ścieżka subskrypcyjna domyślnie wyłącza próby MCP/narzędzi i obrazów Claude, ponieważ zużywa limity użycia zalogowanej subskrypcji, a Anthropic może zmieniać sposób rozliczania i ograniczania liczby żądań w Claude Agent SDK /claude -pbez wydania nowej wersji OpenClaw.- Claude i Gemini obsługują ten sam zestaw prób (tura tekstowa, klasyfikacja obrazu, wywołanie narzędzia MCP
cron, ciągłość po przełączeniu modelu) za pomocą powyższych flag, ale żadna z tych prób nie jest uruchamiana domyślnie — włączaj je w razie potrzeby odpowiednimi flagami.
Na żywo: osiągalność serwera proxy APNs przez HTTP/2
- Test:
src/infra/push-apns-http2.live.test.ts - Cel: utworzyć tunel przez lokalny serwer proxy HTTP CONNECT do punktu końcowego środowiska testowego APNs firmy Apple, wysłać żądanie walidacyjne APNs przez HTTP/2 i sprawdzić, czy rzeczywista odpowiedź Apple
403 InvalidProviderTokenwraca ścieżką przez serwer proxy. - Włączanie:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
- Opcjonalny limit czasu:
OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000
Na żywo: test dymny powiązania ACP (/acp spawn ... --bind here)
- Test:
src/gateway/gateway-acp-bind.live.test.ts - Cel: zweryfikowanie rzeczywistego przepływu wiązania konwersacji ACP z aktywnym agentem ACP:
- wysłanie
/acp spawn <agent> --bind here - powiązanie w miejscu syntetycznej konwersacji kanału wiadomości
- wysłanie zwykłej kolejnej wiadomości w tej samej konwersacji
- sprawdzenie, czy kolejna wiadomość trafia do transkrypcji powiązanej sesji ACP
- wysłanie
- Włączenie:
pnpm test:live src/gateway/gateway-acp-bind.live.test.tsOPENCLAW_LIVE_ACP_BIND=1
- Wartości domyślne:
- agenci ACP w Dockerze:
claude,codex,gemini - agent ACP dla bezpośredniego
pnpm test:live ...:claude - kanał syntetyczny: kontekst konwersacji w stylu wiadomości prywatnej Slacka
- zaplecze ACP:
acpx
- agenci ACP w Dockerze:
- Nadpisania:
OPENCLAW_LIVE_ACP_BIND_AGENT=claudeOPENCLAW_LIVE_ACP_BIND_AGENT=codexOPENCLAW_LIVE_ACP_BIND_AGENT=droidOPENCLAW_LIVE_ACP_BIND_AGENT=geminiOPENCLAW_LIVE_ACP_BIND_AGENT=opencodeOPENCLAW_LIVE_ACP_BIND_AGENTS=claude,codex,geminiOPENCLAW_LIVE_ACP_BIND_AGENT_COMMAND='npx -y @agentclientprotocol/claude-agent-acp@<version>'OPENCLAW_LIVE_ACP_BIND_CODEX_MODEL=gpt-5.6-lunaOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL=opencode/kimi-k2.6OPENCLAW_LIVE_ACP_BIND_IMAGE_PROBE=1(lubon/true/yes), aby wymusić włączenie próby obrazu; każda inna wartość wymusza jej wyłączenie. Domyślnie jest uruchamiana dla każdego agenta opróczopencode.OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1OPENCLAW_LIVE_ACP_BIND_PARENT_MODEL=openai/gpt-5.6-luna
- Uwagi:
- Ta ścieżka używa powierzchni
chat.sendGateway z dostępnymi wyłącznie dla administratora syntetycznymi polami trasy źródłowej, dzięki czemu testy mogą dołączać kontekst kanału wiadomości bez pozorowania dostarczenia na zewnątrz. - Gdy
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDnie jest ustawiona, test używa wbudowanego rejestru agentów osadzonego pluginuacpxdla wybranego agenta środowiska testowego ACP. - Tworzenie MCP Cron dla powiązanej sesji jest domyślnie wykonywane na zasadzie najlepszych starań, ponieważ zewnętrzne środowiska testowe ACP mogą anulować wywołania MCP po pomyślnym przejściu weryfikacji powiązania/obrazu; ustaw
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1, aby ta próba Cron po powiązaniu była rygorystyczna.
- Ta ścieżka używa powierzchni
- Skrypt uruchamiający Dockera znajduje się w
scripts/test-live-acp-bind-docker.sh. - Domyślnie uruchamia test dymny wiązania ACP kolejno dla zbiorczych aktywnych agentów CLI:
claude,codex, a następniegemini. - Użyj
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,OPENCLAW_LIVE_ACP_BIND_AGENTS=codex,OPENCLAW_LIVE_ACP_BIND_AGENTS=droid,OPENCLAW_LIVE_ACP_BIND_AGENTS=geminilubOPENCLAW_LIVE_ACP_BIND_AGENTS=opencode, aby zawęzić macierz. - Umieszcza w kontenerze odpowiednie dane uwierzytelniające CLI, a następnie, jeśli jej brakuje, instaluje żądaną aktywną aplikację CLI (
@anthropic-ai/claude-code,@openai/codex, Factory Droid przezhttps://app.factory.ai/cli,@google/gemini-clilubopencode-ai). Samym zapleczem ACP jest osadzony pakietacpx/runtimez oficjalnego pluginuacpx. - Wariant Droid dla Dockera umieszcza
~/.factoryna potrzeby ustawień, przekazujeFACTORY_API_KEYi wymaga tego klucza API, ponieważ lokalnego uwierzytelniania Factory przez OAuth/pęk kluczy nie można przenieść do kontenera. Używa wbudowanego wpisu rejestru ACPXdroid exec --output-format acp. - Wariant OpenCode dla Dockera jest rygorystyczną ścieżką regresyjną dla pojedynczego agenta. Zapisuje tymczasowy model domyślny
OPENCODE_CONFIG_CONTENTzOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(domyślnieopencode/kimi-k2.6). - Bezpośrednie wywołania CLI
acpxstanowią jedynie ręczną/obejściową ścieżkę do porównywania zachowania poza Gateway. Test dymny wiązania ACP w Dockerze korzysta z osadzonego zaplecza środowiska uruchomieniowegoacpxw OpenClaw.
Na żywo: test dymny środowiska testowego serwera aplikacji Codex
- Cel: zweryfikowanie środowiska testowego Codex należącego do pluginu za pomocą standardowej metody Gateway
agent:- załadowanie dołączonego pluginu
codex - wybranie modelu OpenAI za pomocą
/model <ref> --runtime codex - wysłanie pierwszej tury agenta Gateway z żądanym poziomem rozumowania
- wysłanie drugiej tury do tej samej sesji OpenClaw i sprawdzenie, czy wątek serwera aplikacji może zostać wznowiony
- uruchomienie
/codex statusi/codex modelstą samą ścieżką poleceń Gateway - opcjonalne uruchomienie dwóch eskalowanych prób powłoki sprawdzanych przez Guardian: jednego nieszkodliwego polecenia, które powinno zostać zatwierdzone, oraz jednego przesłania fałszywego sekretu, które powinno zostać odrzucone, aby agent poprosił o wyjaśnienie
- załadowanie dołączonego pluginu
- Test:
src/gateway/gateway-codex-harness.live.test.ts - Włączenie:
OPENCLAW_LIVE_CODEX_HARNESS=1 - Bazowy model środowiska testowego:
openai/gpt-5.6-luna - Domyślny wybór przy użyciu nowego klucza API OpenAI:
openai/gpt-5.6 - Domyślny poziom rozumowania:
low - Nadpisanie modelu:
OPENCLAW_LIVE_CODEX_HARNESS_MODEL=openai/<model> - Nadpisanie poziomu rozumowania:
OPENCLAW_LIVE_CODEX_HARNESS_THINKING=<level> - Nadpisanie macierzy:
OPENCLAW_LIVE_CODEX_HARNESS_TARGETS=<model>=<thinking>,... - Tryb uwierzytelniania:
OPENCLAW_LIVE_CODEX_HARNESS_AUTH=codex-auth(domyślny) używa skopiowanego logowania Codex;api-keyużywaOPENAI_API_KEYprzez serwer aplikacji Codex. - Opcjonalna próba obrazu:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - Opcjonalna próba MCP/narzędzia:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - Opcjonalna próba Guardian:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - Test dymny wymusza
agentRuntime.id: "codex"dostawcy/modelu, aby uszkodzone środowisko testowe Codex nie mogło przejść testu przez ciche przełączenie awaryjne na OpenClaw. - Uwierzytelnianie: uwierzytelnianie serwera aplikacji Codex z lokalnego logowania subskrypcyjnego Codex lub
OPENAI_API_KEY, gdyOPENCLAW_LIVE_CODEX_HARNESS_AUTH=api-key. Docker może skopiować~/.codex/auth.jsoni~/.codex/config.tomlna potrzeby uruchomień subskrypcyjnych.
OPENCLAW_LIVE_GATEWAY_MODELS bez ustawienia, rozpoznaje model przez
nowy punkt wyboru wnioskowania podczas wdrażania, sprawdza openai/gpt-5.6, a następnie
uruchamia rzeczywistą turę Gateway z rozpoznanym modelem.
Osadzona macierz OpenClaw dla GPT-5.6:
- Skrypt uruchamiający Dockera znajduje się w
scripts/test-live-codex-harness-docker.sh. - Przekazuje
OPENAI_API_KEY, kopiuje pliki uwierzytelniania CLI Codex, gdy są dostępne, instaluje@openai/codexw zamontowanym zapisywalnym prefiksie npm, umieszcza drzewo źródłowe, a następnie uruchamia wyłącznie test na żywo środowiska testowego Codex. - Docker domyślnie włącza próby obrazu, MCP/narzędzia i Guardian. Ustaw
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0,OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0lubOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0, gdy potrzebujesz węższego uruchomienia diagnostycznego. - Docker używa tej samej jawnej konfiguracji środowiska uruchomieniowego Codex, więc starsze aliasy ani przełączenie awaryjne na OpenClaw nie mogą ukryć regresji środowiska testowego Codex.
- Cele macierzy są uruchamiane kolejno w jednym kontenerze. Skrypt Dockera skaluje domyślny 35-minutowy limit czasu według liczby celów; każdy zewnętrzny limit czasu powłoki lub CI musi dopuszczać taki sam łączny czas. Kanoniczna konfiguracja CI utrzymuje każdy cel GPT-5.6 w osobnym fragmencie.
Zalecane procedury testów na żywo
Wąskie, jawne listy dozwolonych elementów są najszybsze i najmniej podatne na niestabilność:-
Pojedynczy model, bezpośrednio (bez Gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.6-luna" pnpm test:live src/agents/models.profiles.live.test.ts
-
Bezpośredni profil małych modeli:
OPENCLAW_LIVE_MODELS=small pnpm test:live src/agents/models.profiles.live.test.ts
-
Profil małych modeli dla Gateway:
OPENCLAW_LIVE_GATEWAY_MODELS=small pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Test dymny API Ollama Cloud:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_OLLAMA=1 OPENCLAW_LIVE_OLLAMA_BASE_URL=https://ollama.com OPENCLAW_LIVE_OLLAMA_MODEL=glm-5.1:cloud OPENCLAW_LIVE_OLLAMA_WEB_SEARCH=0 pnpm test:live -- extensions/ollama/ollama.live.test.ts
-
Pojedynczy model, test dymny Gateway:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.6-luna" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Wywoływanie narzędzi u kilku dostawców:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.6-luna,anthropic/claude-opus-4-6,google/gemini-3.5-flash,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M3" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Bezpośredni test dymny Z.AI Coding Plan GLM-5.2:
ZAI_CODING_LIVE_TEST=1 pnpm test:live src/agents/zai.live.test.ts
-
Testy skoncentrowane na Google (klucz API Gemini + Antigravity):
- Gemini (klucz API):
OPENCLAW_LIVE_GATEWAY_MODELS="google/gemini-3.5-flash" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts - Antigravity (OAuth):
OPENCLAW_LIVE_GATEWAY_MODELS="google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-pro-high" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
- Gemini (klucz API):
-
Test dymny adaptacyjnego rozumowania Google (
qa manualz prywatnego CLI QA — wymagaOPENCLAW_ENABLE_PRIVATE_QA_CLI=1i kopii roboczej źródeł; zobacz omówienie QA):- Dynamiczna wartość domyślna Gemini 3:
OPENCLAW_ENABLE_PRIVATE_QA_CLI=1 pnpm openclaw qa manual --provider-mode live-frontier --model google/gemini-3.1-pro-preview --alt-model google/gemini-3.1-pro-preview --message '/think adaptive Reply exactly: GEMINI_ADAPTIVE_OK' --timeout-ms 180000 - Dynamiczny budżet Gemini 2.5:
OPENCLAW_ENABLE_PRIVATE_QA_CLI=1 pnpm openclaw qa manual --provider-mode live-frontier --model google/gemini-2.5-flash --alt-model google/gemini-2.5-flash --message '/think adaptive Reply exactly: GEMINI25_ADAPTIVE_OK' --timeout-ms 180000
- Dynamiczna wartość domyślna Gemini 3:
google/...używa API Gemini (klucz API).google-antigravity/...używa mostu OAuth Antigravity (punkt końcowy agenta w stylu Cloud Code Assist).google-gemini-cli/...używa lokalnego CLI Gemini na Twoim komputerze (oddzielne uwierzytelnianie i specyficzne zachowania narzędzi).- API Gemini a CLI Gemini:
- API: OpenClaw wywołuje hostowane przez Google API Gemini przez HTTP (klucz API / uwierzytelnianie profilu); to właśnie większość użytkowników rozumie przez „Gemini”.
- CLI: OpenClaw uruchamia lokalny plik binarny
geminiw powłoce; ma on własne uwierzytelnianie i może zachowywać się inaczej (strumieniowanie/obsługa narzędzi/rozbieżności wersji).
Na żywo: macierz modeli (co obejmujemy)
Testy na żywo są opcjonalne, więc nie istnieje stała „lista modeli CI”.OPENCLAW_LIVE_MODELS=modern / OPENCLAW_LIVE_GATEWAY_MODELS=modern (oraz ich alias all) uruchamiają wyselekcjonowaną listę priorytetową z HIGH_SIGNAL_LIVE_MODEL_PRIORITY w src/agents/live-model-filter.ts, w następującej kolejności priorytetów:
Wyselekcjonowana lista małych modeli (
OPENCLAW_LIVE_MODELS=small / OPENCLAW_LIVE_GATEWAY_MODELS=small) z SMALL_LIVE_MODEL_PRIORITY:
Uwagi dotyczące nowoczesnej listy:
- Dostawcy
codexicodex-clisą wykluczeni z domyślnego nowoczesnego przebiegu (obejmują zachowanie zaplecza CLI/ACP, testowane osobno powyżej). Samopenai/gpt-5.5jest domyślnie kierowany przez środowisko testowe serwera aplikacji Codex; zobacz Test na żywo: test dymny środowiska serwera aplikacji Codex. - Dostawcy
fireworks,google,openrouterixaiuruchamiają w nowoczesnym przebiegu tylko jawnie wyselekcjonowane identyfikatory modeli (bez automatycznego rozszerzania na „każdy model tego dostawcy”). - Uwzględnij co najmniej jeden model obsługujący obrazy (warianty wizyjne rodziny Claude/Gemini/OpenAI itd.) w
OPENCLAW_LIVE_GATEWAY_MODELS, aby wykonać test obrazu.
- Mistral:
mistral/... - Cerebras:
cerebras/...(jeśli masz dostęp) - LM Studio:
lmstudio/...(lokalnie; wywoływanie narzędzi zależy od trybu API)
Agregatory / alternatywne bramy
Jeśli masz włączone klucze, możesz również testować przez:- OpenRouter:
openrouter/...(setki modeli; użyjopenclaw models scan, aby znaleźć modele obsługujące narzędzia i obrazy) - OpenCode:
opencode/...dla Zen orazopencode-go/...dla Go (uwierzytelnianie przezOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
- Wbudowani:
anthropic,cerebras,github-copilot,google,google-antigravity,google-gemini-cli,google-vertex,groq,mistral,openai,openrouter,opencode,opencode-go,xai,zai - Przez
models.providers(niestandardowe punkty końcowe):minimax(chmura/API) oraz dowolne proxy zgodne z OpenAI/Anthropic (LM Studio, vLLM, LiteLLM itd.)
Dane uwierzytelniające (nigdy ich nie zatwierdzaj w repozytorium)
Testy na żywo wykrywają dane uwierzytelniające w taki sam sposób jak CLI. Praktyczne konsekwencje:- Jeśli CLI działa, testy na żywo powinny znaleźć te same klucze.
-
Jeśli test na żywo zgłasza „brak danych uwierzytelniających”, diagnozuj problem tak samo jak w przypadku
openclaw models list/ wyboru modelu. -
Profile uwierzytelniania poszczególnych agentów:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(to właśnie oznaczają „klucze profilu” w testach na żywo) -
Konfiguracja:
~/.openclaw/openclaw.json(lubOPENCLAW_CONFIG_PATH) -
Katalog starszego mechanizmu OAuth:
~/.openclaw/credentials/(jeśli istnieje, jest kopiowany do przygotowanego katalogu domowego testów na żywo, ale nie stanowi głównego magazynu kluczy profilu) -
Lokalne przebiegi na żywo kopiują aktywną konfigurację (z usuniętymi nadpisaniami
agents.*.workspace/agentDir) oraz plikauth-profiles.jsonkażdego agenta — bez pozostałej części katalogu tego agenta, dzięki czemu dane zworkspace/isandboxes/nigdy nie trafiają do przygotowanego katalogu domowego — a także katalog starszego mechanizmucredentials/oraz obsługiwane pliki i katalogi uwierzytelniania zewnętrznych narzędzi CLI (.claude.json,.claude/.credentials.json,.claude/settings*.json,.claude/backups,.codex/auth.json,.codex/config.toml,.gemini,.minimax) do tymczasowego katalogu domowego testu.
OPENCLAW_PROFILE_FILE.
Test Deepgram na żywo (transkrypcja dźwięku)
- Test:
extensions/deepgram/audio.live.test.ts - Włącz:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts
Test planu programistycznego BytePlus na żywo
- Test:
extensions/byteplus/live.test.ts - Włącz:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - Opcjonalne nadpisanie modelu:
BYTEPLUS_CODING_MODEL=ark-code-latest
Test multimediów przepływu pracy ComfyUI na żywo
- Test:
extensions/comfy/comfy.live.test.ts - Włącz:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - Zakres:
- Wykonuje ścieżki obrazu, wideo i
music_generatew dołączonym comfy - Pomija każdą funkcję, jeśli
plugins.entries.comfy.config.<capability>nie jest skonfigurowane - Przydatny po zmianie przesyłania przepływu pracy comfy, odpytywania, pobierania lub rejestracji pluginu
- Wykonuje ścieżki obrazu, wideo i
Test generowania obrazów na żywo
- Test:
test/image-generation.runtime.live.test.ts - Polecenie:
pnpm test:live test/image-generation.runtime.live.test.ts - Środowisko testowe:
pnpm test:live:media image - Zakres:
- Wylicza każdy zarejestrowany plugin dostawcy generowania obrazów
- Przed sprawdzaniem używa już wyeksportowanych zmiennych środowiskowych dostawcy
- Domyślnie używa kluczy API testów na żywo lub ze środowiska przed zapisanymi profilami uwierzytelniania, dzięki czemu nieaktualne klucze testowe w
auth-profiles.jsonnie przesłaniają rzeczywistych danych uwierzytelniających powłoki - Pomija dostawców bez użytecznego uwierzytelniania, profilu lub modelu
- Uruchamia każdego skonfigurowanego dostawcę przez współdzielone środowisko uruchomieniowe generowania obrazów:
<provider>:generate<provider>:edit, gdy dostawca deklaruje obsługę edycji
- Obecnie objęci wbudowani dostawcy:
deepinfrafalgoogleminimaxopenaiopenroutervydraxai
- Opcjonalne zawężenie:
OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="openai,google,openrouter,xai"OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="deepinfra"OPENCLAW_LIVE_IMAGE_GENERATION_MODELS="openai/gpt-image-2,google/gemini-3.1-flash-image-preview,openrouter/google/gemini-3.1-flash-image-preview,xai/grok-imagine-image"OPENCLAW_LIVE_IMAGE_GENERATION_CASES="google:flash-generate,google:pro-edit,openrouter:generate,xai:default-generate,xai:default-edit"
- Opcjonalne zachowanie uwierzytelniania:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, aby wymusić uwierzytelnianie z magazynu profili i ignorować nadpisania dostępne tylko w środowisku
infer po pomyślnym zakończeniu testu dostawcy i środowiska uruchomieniowego na żywo:
Test generowania muzyki na żywo
- Test:
extensions/music-generation-providers.live.test.ts - Włącz:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts - Środowisko testowe:
pnpm test:live:media music - Zakres:
- Wykonuje współdzieloną ścieżkę wbudowanych dostawców generowania muzyki
- Obecnie obejmuje
fal,google,minimaxiopenrouter - Przed sprawdzaniem używa już wyeksportowanych zmiennych środowiskowych dostawcy
- Domyślnie używa kluczy API testów na żywo lub ze środowiska przed zapisanymi profilami uwierzytelniania, dzięki czemu nieaktualne klucze testowe w
auth-profiles.jsonnie przesłaniają rzeczywistych danych uwierzytelniających powłoki - Pomija dostawców bez użytecznego uwierzytelniania, profilu lub modelu
- Uruchamia oba zadeklarowane tryby środowiska uruchomieniowego, gdy są dostępne:
generatez danymi wejściowymi zawierającymi tylko opisedit, gdy dostawca deklarujecapabilities.edit.enabled
comfyma własny, oddzielny plik testów na żywo i nie jest częścią tego współdzielonego przebiegu
- Opcjonalne zawężenie:
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"
- Opcjonalne zachowanie uwierzytelniania:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, aby wymusić uwierzytelnianie z magazynu profili i ignorować nadpisania dostępne tylko w środowisku
Test generowania wideo na żywo
- Test:
extensions/video-generation-providers.live.test.ts - Włączenie:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - Mechanizm testowy:
pnpm test:live:media video - Zakres:
- Testuje wspólną ścieżkę dołączonych dostawców generowania wideo dla
alibaba,byteplus,deepinfra,fal,google,minimax,openai,openrouter,pixverse,qwen,runway,together,vydra,xai - Domyślnie używa bezpiecznej dla wydania ścieżki testu dymnego: jedno żądanie zamiany tekstu na wideo na dostawcę, prompt z homarem i jednosekundowym czasem trwania oraz limit czasu operacji dla każdego dostawcy określony przez
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(domyślnie180000) - Domyślnie pomija FAL, ponieważ opóźnienie kolejki po stronie dostawcy może zdominować czas wydania; przekaż
OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"(lub wyczyść listę pomijanych dostawców), aby uruchomić go jawnie - Przed sondowaniem używa już wyeksportowanych zmiennych środowiskowych dostawcy
- Domyślnie używa kluczy API ze środowiska testów na żywo przed zapisanymi profilami uwierzytelniania, dzięki czemu nieaktualne klucze testowe w
auth-profiles.jsonnie przesłaniają rzeczywistych poświadczeń powłoki - Pomija dostawców bez użytecznego uwierzytelniania, profilu lub modelu
- Domyślnie uruchamia tylko
generate - Ustaw
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1, aby uruchamiać również zadeklarowane tryby przekształcania, gdy są dostępne:imageToVideo, gdy dostawca deklarujecapabilities.imageToVideo.enabled, a wybrany dostawca i model akceptują w ramach wspólnego przebiegu lokalny obraz wejściowy przechowywany w buforzevideoToVideo, gdy dostawca deklarujecapabilities.videoToVideo.enabled, a wybrany dostawca i model akceptują w ramach wspólnego przebiegu lokalne wideo wejściowe przechowywane w buforze
- Dostawca
imageToVideo, który jest obecnie zadeklarowany, ale pomijany we wspólnym przebiegu:vydra(lokalny obraz wejściowy przechowywany w buforze nie jest obsługiwany w tej ścieżce)
- Testy specyficzne dla dostawcy Vydra:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- Ten plik uruchamia zamianę tekstu na wideo przy użyciu
veo3oraz ścieżkę zamiany obrazu na wideo przy użyciukling, która domyślnie korzysta z testowego zdalnego adresu URL obrazu (OPENCLAW_LIVE_VYDRA_KLING_IMAGE_URLumożliwia jego zastąpienie).
- Testy specyficzne dla dostawcy xAI:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_XAI_VIDEO=1 pnpm test:live -- extensions/xai/xai.live.test.ts -t "classic Grok Imagine"- Klasyczny przypadek najpierw generuje kwadratową lokalną pierwszą klatkę PNG, pomija geometrię, żąda jednosekundowego klipu zamiany obrazu na wideo, odpytuje do ukończenia i weryfikuje pobrany bufor.
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_XAI_VIDEO=1 pnpm test:live -- extensions/xai/xai.live.test.ts -t "Grok Imagine Video 1.5"- Przypadek 1.5 generuje lokalną pierwszą klatkę PNG, żąda jednosekundowego klipu zamiany obrazu na wideo w rozdzielczości 1080P, odpytuje do ukończenia i weryfikuje pobrany bufor.
- Obecny zakres testów
videoToVideona żywo:- tylko
runway, gdy wybrany model jest rozpoznawany jakogen4_aleph
- tylko
- Dostawcy
videoToVideo, którzy są obecnie zadeklarowani, ale pomijani we wspólnym przebiegu:alibaba,google,openai,qwen,xai, ponieważ te ścieżki wymagają obecnie zdalnych referencyjnych adresów URLhttp(s)zamiast lokalnych danych wejściowych przechowywanych w buforze
- Testuje wspólną ścieżkę dołączonych dostawców generowania wideo dla
- Opcjonalne zawężenie:
OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="deepinfra,google,openai,runway"OPENCLAW_LIVE_VIDEO_GENERATION_MODELS="google/veo-3.1-fast-generate-preview,openai/sora-2,runway/gen4_aleph"OPENCLAW_LIVE_VIDEO_GENERATION_SKIP_PROVIDERS="", aby uwzględnić każdego dostawcę w domyślnym przebiegu, w tym FALOPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000, aby zmniejszyć limit czasu każdej operacji dostawcy na potrzeby agresywnego testu dymnego
- Opcjonalne zachowanie uwierzytelniania:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, aby wymusić uwierzytelnianie z magazynu profili i ignorować nadpisania dostępne wyłącznie w zmiennych środowiskowych
Mechanizm testów multimediów na żywo
- Polecenie:
pnpm test:live:media - Punkt wejścia:
test/e2e/qa-lab/media/hosted-media-provider-live.ts, który uruchamiapnpm test:live -- <suite-test-file>dla każdego wybranego zestawu, dzięki czemu zachowanie Heartbeat i trybu cichego pozostaje spójne z innymi uruchomieniamipnpm test:live. - Cel:
- Uruchamia współdzielone zestawy testów obrazów, muzyki i wideo na żywo za pośrednictwem jednego punktu wejścia zgodnego z repozytorium
- Automatycznie wczytuje brakujące zmienne środowiskowe dostawców z
~/.profile - Domyślnie automatycznie zawęża każdy zestaw do dostawców, którzy mają obecnie użyteczne dane uwierzytelniające
- Flagi:
--providers <csv>— globalny filtr dostawców;--image-providers/--music-providers/--video-providersograniczają filtr do jednego zestawu--all-providerspomija automatyczne filtrowanie na podstawie uwierzytelniania--allow-emptykończy działanie z kodem0, gdy po filtrowaniu nie pozostają żadni dostawcy możliwi do uruchomienia--quiet/--no-quietsą przekazywane dotest:live
- Przykłady:
pnpm test:live:mediapnpm test:live:media image video --providers openai,google,minimaxpnpm test:live:media video --video-providers openai,runway --all-providerspnpm test:live:media music --quiet
Powiązane
- Testowanie — zestawy testów jednostkowych, integracyjnych, QA i Docker