Live: przegląd możliwości Android Node
- Test:
src/gateway/android-node.capabilities.live.test.ts - Skrypt:
pnpm android:test:integration - Cel: wywołać każde polecenie aktualnie ogłaszane przez podłączony Android Node i potwierdzić zachowanie kontraktu poleceń.
- Zakres:
- Konfiguracja wstępna/ręczna (zestaw nie instaluje/nie uruchamia/nie paruje aplikacji).
- Walidacja
node.invokeGateway polecenie po poleceniu dla wybranego Android Node.
- Wymagana konfiguracja wstępna:
- Aplikacja Android jest już połączona z gateway i sparowana.
- Aplikacja jest utrzymywana na pierwszym planie.
- Uprawnienia/zgoda na przechwytywanie są przyznane 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: Android App
Live: smoke modeli (klucze profilów)
Testy live są podzielone na dwie warstwy, aby można było izolować awarie:- „Direct model” mówi nam, czy dostawca/model w ogóle potrafi odpowiedzieć przy użyciu danego klucza.
- „Gateway smoke” mówi nam, czy pełny potok gateway+agent działa dla tego modelu (sesje, historia, narzędzia, polityka sandboxa itd.).
Warstwa 1: bezpośrednie zakończenie modelu (bez gateway)
- Test:
src/agents/models.profiles.live.test.ts - Cel:
- Wyliczyć wykryte modele
- Użyć
getApiKeyForModel, aby wybrać modele, do których masz poświadczenia - Uruchomić małe zakończenie dla każdego modelu (oraz ukierunkowane regresje tam, gdzie to potrzebne)
- Jak włączyć:
pnpm test:live(lubOPENCLAW_LIVE_TEST=1, jeśli wywołujesz Vitest bezpośrednio)
- Ustaw
OPENCLAW_LIVE_MODELS=modern(luball, alias dla modern), aby rzeczywiście uruchomić ten zestaw; w przeciwnym razie zostanie pominięty, aby utrzymać fokuspnpm test:livena gateway smoke - Jak wybierać modele:
OPENCLAW_LIVE_MODELS=modern, aby uruchomić nowoczesną listę dozwolonych (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, GLM 4.7, MiniMax M2.7, Grok 4)OPENCLAW_LIVE_MODELS=alljest aliasem dla nowoczesnej listy dozwolonych- albo
OPENCLAW_LIVE_MODELS="openai/gpt-5.2,openai-codex/gpt-5.2,anthropic/claude-opus-4-6,..."(lista dozwolonych rozdzielana przecinkami) - Przebiegi modern/all domyślnie używają kuratorowanego limitu o wysokim sygnale; ustaw
OPENCLAW_LIVE_MAX_MODELS=0dla pełnego przebiegu modern albo dodatnią liczbę dla mniejszego limitu. - Pełne przebiegi używają
OPENCLAW_LIVE_TEST_TIMEOUT_MSjako limitu czasu dla całego testu direct-model. Domyślnie: 60 minut. - Sondy direct-model działają domyślnie z równoległością 20; ustaw
OPENCLAW_LIVE_MODEL_CONCURRENCY, aby to nadpisać.
- Jak wybierać dostawców:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(lista dozwolonych rozdzielana przecinkami)
- Skąd pochodzą klucze:
- Domyślnie: magazyn profili i fallbacki env
- Ustaw
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, aby wymusić tylko magazyn profili
- Dlaczego to istnieje:
- Oddziela „API dostawcy jest zepsute / klucz jest nieprawidłowy” od „potok agenta gateway jest zepsuty”
- Zawiera małe, odizolowane regresje (na przykład odtwarzanie reasoning OpenAI Responses/Codex Responses + przepływy wywołań narzędzi)
Warstwa 2: Gateway + smoke agenta dev (to, co faktycznie robi „@openclaw”)
- Test:
src/gateway/gateway-models.profiles.live.test.ts - Cel:
- Uruchomić in-process gateway
- Utworzyć/załatać sesję
agent:dev:*(nadpisanie modelu per uruchomienie) - Iterować po modelach-z-kluczami i potwierdzić:
- „sensowną” odpowiedź (bez narzędzi)
- że działa rzeczywiste wywołanie narzędzia (sonda odczytu)
- opcjonalne dodatkowe sondy narzędzi (sonda exec+read)
- że ścieżki regresji OpenAI (tylko tool-call → follow-up) nadal działają
- Szczegóły sond (aby można było szybko wyjaśniać awarie):
- Sonda
read: test zapisuje plik nonce w obszarze roboczym i prosi agenta o jegoreadoraz odesłanie nonce. - Sonda
exec+read: test prosi agenta o zapisanie nonce do pliku tymczasowego przezexec, a następnie odczytanie go przezread. - Sonda obrazu: test dołącza wygenerowany PNG (kot + losowy kod) i oczekuje, że model zwróci
cat <CODE>. - Referencja implementacji:
src/gateway/gateway-models.profiles.live.test.tsorazsrc/gateway/live-image-probe.ts.
- Sonda
- Jak włączyć:
pnpm test:live(lubOPENCLAW_LIVE_TEST=1, jeśli wywołujesz Vitest bezpośrednio)
- Jak wybierać modele:
- Domyślnie: nowoczesna lista dozwolonych (Opus/Sonnet 4.6+, GPT-5.2 + Codex, Gemini 3, GLM 4.7, MiniMax M2.7, Grok 4)
OPENCLAW_LIVE_GATEWAY_MODELS=alljest aliasem dla nowoczesnej listy dozwolonych- Albo ustaw
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(lub listę rozdzielaną przecinkami), aby zawęzić - Przebiegi gateway modern/all domyślnie używają kuratorowanego limitu o wysokim sygnale; ustaw
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0dla pełnego przebiegu modern albo dodatnią liczbę dla mniejszego limitu.
- Jak wybierać dostawców (unikaj „OpenRouter everything”):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(lista dozwolonych rozdzielana przecinkami)
- Sondy narzędzi i obrazu są zawsze włączone w tym teście live:
- sonda
read+ sondaexec+read(stres test dla narzędzi) - sonda obrazu działa, gdy model deklaruje obsługę wejścia obrazu
- Przepływ (wysoki poziom):
- Test generuje mały PNG z napisem „CAT” + losowy kod (
src/gateway/live-image-probe.ts) - Wysyła go przez
agentattachments: [{ mimeType: "image/png", content: "<base64>" }] - Gateway parsuje załączniki do
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - Osadzony agent przekazuje wiadomość użytkownika multimodalną do modelu
- Asercja: odpowiedź zawiera
cat+ kod (tolerancja OCR: drobne błędy są dozwolone)
- Test generuje mały PNG z napisem „CAT” + losowy kod (
- sonda
provider/model), uruchom:
Live: smoke backendu CLI (Claude, Codex, Gemini lub inne lokalne CLI)
- Test:
src/gateway/gateway-cli-backend.live.test.ts - Cel: zweryfikować potok Gateway + agent przy użyciu lokalnego backendu CLI, bez naruszania domyślnej konfiguracji.
- Domyślne ustawienia smoke specyficzne dla backendu znajdują się w definicji
cli-backend.tsnależącej do odpowiedniego rozszerzenia. - Włączanie:
pnpm test:live(lubOPENCLAW_LIVE_TEST=1, jeśli wywołujesz Vitest bezpośrednio)OPENCLAW_LIVE_CLI_BACKEND=1
- Domyślne:
- Domyślny dostawca/model:
claude-cli/claude-sonnet-4-6 - Zachowanie command/args/image pochodzi z metadanych Pluginu backendu CLI będącego właścicielem.
- Domyślny dostawca/model:
- Nadpisania (opcjonalne):
OPENCLAW_LIVE_CLI_BACKEND_MODEL="codex-cli/gpt-5.2"OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/codex"OPENCLAW_LIVE_CLI_BACKEND_ARGS='["exec","--json","--color","never","--sandbox","read-only","--skip-git-repo-check"]'OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1, aby wysłać rzeczywisty załącznik obrazu (ścieżki są wstrzykiwane do promptu).OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image", aby przekazywać ścieżki plików obrazów jako argumenty CLI zamiast wstrzykiwania 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 wznowienia.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=0, aby wyłączyć domyślną sondę ciągłości tej samej sesji Claude Sonnet -> Opus (ustaw1, aby wymusić jej włączenie, gdy wybrany model obsługuje cel przełączenia).
- Runner Docker znajduje się w
scripts/test-live-cli-backend-docker.sh. - Uruchamia test smoke live CLI-backend wewnątrz obrazu Docker repo jako użytkownik nie-root
node. - Rozwiązuje metadane smoke CLI z rozszerzenia będącego właścicielem, a następnie instaluje pasujący pakiet Linux CLI (
@anthropic-ai/claude-code,@openai/codexlub@google/gemini-cli) do buforowanego zapisywalnego prefiksu podOPENCLAW_DOCKER_CLI_TOOLS_DIR(domyślnie:~/.cache/openclaw/docker-cli-tools). pnpm test:docker:live-cli-backend:claude-subscriptionwymaga przenośnego OAuth subskrypcji Claude Code przez~/.claude/.credentials.jsonzclaudeAiOauth.subscriptionTypealboCLAUDE_CODE_OAUTH_TOKENzclaude setup-token. Najpierw potwierdza bezpośrednieclaude -pw Dockerze, a następnie uruchamia dwie tury Gateway CLI-backend bez zachowywania zmiennych env klucza API Anthropic. Ta ścieżka subskrypcji domyślnie wyłącza sondy Claude MCP/tool i image, ponieważ Claude obecnie kieruje użycie aplikacji firm trzecich przez dodatkowe rozliczanie użycia zamiast przez zwykłe limity planu subskrypcji.- Test smoke live CLI-backend wykonuje teraz ten sam przepływ end-to-end dla Claude, Codex i Gemini: tura tekstowa, tura klasyfikacji obrazu, a następnie wywołanie narzędzia MCP
cronzweryfikowane przez gateway CLI. - Domyślny smoke Claude dodatkowo łata sesję z Sonnet do Opus i weryfikuje, że wznowiona sesja nadal pamięta wcześniejszą notatkę.
Live: smoke powiązania ACP (/acp spawn ... --bind here)
- Test:
src/gateway/gateway-acp-bind.live.test.ts - Cel: zweryfikować rzeczywisty przepływ powiązania konwersacji ACP z aktywnym agentem ACP:
- wysłać
/acp spawn <agent> --bind here - powiązać syntetyczną konwersację message-channel na miejscu
- wysłać zwykły follow-up w tej samej konwersacji
- zweryfikować, że follow-up trafia do transkryptu powiązanej sesji ACP
- wysłać
- Włączanie:
pnpm test:live src/gateway/gateway-acp-bind.live.test.tsOPENCLAW_LIVE_ACP_BIND=1
- Domyślne:
- Agenci ACP w Dockerze:
claude,codex,gemini - Agent ACP dla bezpośredniego
pnpm test:live ...:claude - Syntetyczny kanał: kontekst konwersacji w stylu Slack DM
- Backend ACP:
acpx
- Agenci ACP w Dockerze:
- Nadpisania:
OPENCLAW_LIVE_ACP_BIND_AGENT=claudeOPENCLAW_LIVE_ACP_BIND_AGENT=codexOPENCLAW_LIVE_ACP_BIND_AGENT=geminiOPENCLAW_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.2OPENCLAW_LIVE_ACP_BIND_PARENT_MODEL=openai/gpt-5.2
- Uwagi:
- Ta ścieżka używa powierzchni gateway
chat.sendz polami admin-only synthetic originating-route, dzięki czemu testy mogą dołączać kontekst message-channel bez udawania dostarczania na zewnątrz. - Gdy
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDjest nieustawione, test używa wbudowanego rejestru agentów Pluginuacpxdla wybranego agenta harness ACP.
- Ta ścieżka używa powierzchni gateway
- Runner Docker znajduje się w
scripts/test-live-acp-bind-docker.sh. - Domyślnie uruchamia smoke powiązania ACP kolejno dla wszystkich obsługiwanych aktywnych agentów CLI:
claude,codex, potemgemini. - Użyj
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,OPENCLAW_LIVE_ACP_BIND_AGENTS=codexlubOPENCLAW_LIVE_ACP_BIND_AGENTS=gemini, aby zawęzić macierz. - Ładuje
~/.profile, przygotowuje odpowiedni materiał uwierzytelniania CLI do kontenera, instalujeacpxdo zapisywalnego prefiksu npm, a następnie instaluje żądane aktywne CLI (@anthropic-ai/claude-code,@openai/codexlub@google/gemini-cli), jeśli go brakuje. - Wewnątrz Dockera runner ustawia
OPENCLAW_LIVE_ACP_BIND_ACPX_COMMAND=$HOME/.npm-global/bin/acpx, aby acpx zachowywał zmienne env dostawcy ze wczytanego profilu dostępne dla podrzędnego harness CLI.
Live: smoke harnessu app-server Codex
- Cel: zweryfikować należący do Pluginu harness Codex przez zwykłą metodę gateway
agent:- załadować dołączony Plugin
codex - wybrać
OPENCLAW_AGENT_RUNTIME=codex - wysłać pierwszą turę agenta gateway do
openai/gpt-5.2z wymuszonym harness Codex - wysłać drugą turę do tej samej sesji OpenClaw i zweryfikować, że wątek app-server może zostać wznowiony
- uruchomić
/codex statusi/codex modelsprzez tę samą ścieżkę poleceń gateway - opcjonalnie uruchomić dwie sondy powłoki z eskalacją poddane przeglądowi Guardian: jedno nieszkodliwe polecenie, które powinno zostać zatwierdzone, oraz jedno fałszywe wysłanie sekretu, które powinno zostać odrzucone, tak aby agent poprosił o potwierdzenie
- załadować dołączony Plugin
- Test:
src/gateway/gateway-codex-harness.live.test.ts - Włączanie:
OPENCLAW_LIVE_CODEX_HARNESS=1 - Model domyślny:
openai/gpt-5.2 - Opcjonalna sonda obrazu:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - Opcjonalna sonda MCP/narzędzi:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - Opcjonalna sonda Guardian:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - Ten smoke ustawia
OPENCLAW_AGENT_HARNESS_FALLBACK=none, aby uszkodzony harness Codex nie mógł przejść testu przez ciche przejście awaryjne do PI. - Uwierzytelnianie: uwierzytelnianie app-server Codex z lokalnego logowania subskrypcji Codex. Testy smoke w Dockerze
mogą również przekazać
OPENAI_API_KEYdla sond nie-Codex, gdy ma to zastosowanie, plus opcjonalnie skopiowane~/.codex/auth.jsoni~/.codex/config.toml.
- Runner Docker znajduje się w
scripts/test-live-codex-harness-docker.sh. - Ładuje zamontowany
~/.profile, przekazujeOPENAI_API_KEY, kopiuje pliki uwierzytelniania CLI Codex, jeśli są obecne, instaluje@openai/codexdo zapisywalnego zamontowanego prefiksu npm, przygotowuje drzewo źródłowe, a następnie uruchamia tylko test live harnessu Codex. - Docker domyślnie włącza sondy obrazu, MCP/narzędzi i Guardian. Ustaw
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0alboOPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0alboOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0, gdy potrzebujesz węższego przebiegu debugowania. - Docker eksportuje też
OPENCLAW_AGENT_HARNESS_FALLBACK=none, zgodnie z konfiguracją testu live, aby starsze aliasy lub fallback do PI nie mogły ukryć regresji harnessu Codex.
Zalecane recepty live
Wąskie, jawne listy dozwolonych są najszybsze i najmniej podatne na błędy:-
Pojedynczy model, bezpośrednio (bez gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.2" pnpm test:live src/agents/models.profiles.live.test.ts
-
Pojedynczy model, gateway smoke:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Wywoływanie narzędzi dla kilku dostawców:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2,openai-codex/gpt-5.2,anthropic/claude-opus-4-6,google/gemini-3-flash-preview,zai/glm-4.7,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Skupienie na Google (klucz API Gemini + Antigravity):
- Gemini (klucz API):
OPENCLAW_LIVE_GATEWAY_MODELS="google/gemini-3-flash-preview" 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):
google/...używa Gemini API (klucz API).google-antigravity/...używa mostu OAuth Antigravity (endpoint agenta w stylu Cloud Code Assist).google-gemini-cli/...używa lokalnego Gemini CLI na Twojej maszynie (oddzielne uwierzytelnianie + niuanse narzędzi).- Gemini API vs Gemini CLI:
- API: OpenClaw wywołuje hostowane Gemini API Google przez HTTP (klucz API / uwierzytelnianie profilu); to właśnie większość użytkowników ma na myśli, mówiąc „Gemini”.
- CLI: OpenClaw wywołuje lokalny binarny plik
gemini; ma własne uwierzytelnianie i może zachowywać się inaczej (obsługa strumieniowania/narzędzi/rozjazd wersji).
Live: macierz modeli (co obejmujemy)
Nie ma stałej „listy modeli CI” (live jest opcjonalne), ale poniżej znajdują się zalecane modele do regularnego sprawdzania na maszynie deweloperskiej z kluczami.Nowoczesny zestaw smoke (wywoływanie narzędzi + obraz)
To jest przebieg „typowych modeli”, który powinien pozostać sprawny:- OpenAI (nie-Codex):
openai/gpt-5.2 - OpenAI Codex OAuth:
openai-codex/gpt-5.2 - Anthropic:
anthropic/claude-opus-4-6(lubanthropic/claude-sonnet-4-6) - Google (Gemini API):
google/gemini-3.1-pro-previewigoogle/gemini-3-flash-preview(unikaj starszych modeli Gemini 2.x) - Google (Antigravity):
google-antigravity/claude-opus-4-6-thinkingigoogle-antigravity/gemini-3-flash - Z.AI (GLM):
zai/glm-4.7 - MiniMax:
minimax/MiniMax-M2.7
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2,openai-codex/gpt-5.2,anthropic/claude-opus-4-6,google/gemini-3.1-pro-preview,google/gemini-3-flash-preview,google-antigravity/claude-opus-4-6-thinking,google-antigravity/gemini-3-flash,zai/glm-4.7,minimax/MiniMax-M2.7" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
Baza: wywoływanie narzędzi (Read + opcjonalnie Exec)
Wybierz co najmniej jeden model z każdej rodziny dostawców:- OpenAI:
openai/gpt-5.2 - Anthropic:
anthropic/claude-opus-4-6(lubanthropic/claude-sonnet-4-6) - Google:
google/gemini-3-flash-preview(lubgoogle/gemini-3.1-pro-preview) - Z.AI (GLM):
zai/glm-4.7 - MiniMax:
minimax/MiniMax-M2.7
- xAI:
xai/grok-4(lub najnowszy dostępny) - Mistral:
mistral/… (wybierz jeden model „tools” obsługujący narzędzia, który masz włączony) - Cerebras:
cerebras/… (jeśli masz dostęp) - LM Studio:
lmstudio/… (lokalnie; wywoływanie narzędzi zależy od trybu API)
Vision: wysyłanie obrazu (załącznik → wiadomość multimodalna)
Uwzględnij co najmniej jeden model obsługujący obrazy wOPENCLAW_LIVE_GATEWAY_MODELS (Claude/Gemini/warianty OpenAI obsługujące vision itd.), aby wykonać sondę obrazu.
Agregatory / alternatywne gateway
Jeśli masz włączone klucze, obsługujemy także testowanie przez:- OpenRouter:
openrouter/...(setki modeli; użyjopenclaw models scan, aby znaleźć kandydatów obsługujących narzędzia+obrazy) - OpenCode:
opencode/...dla Zen orazopencode-go/...dla Go (uwierzytelnianie przezOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
- Wbudowani:
openai,openai-codex,anthropic,google,google-vertex,google-antigravity,google-gemini-cli,zai,openrouter,opencode,opencode-go,xai,groq,cerebras,mistral,github-copilot - Przez
models.providers(niestandardowe endpointy):minimax(cloud/API) oraz dowolne proxy zgodne z OpenAI/Anthropic (LM Studio, vLLM, LiteLLM itd.)
discoverModels(...) na Twojej maszynie + wszystkie dostępne klucze.
Poświadczenia (nigdy nie zapisuj do repozytorium)
Testy live wykrywają poświadczenia tak samo jak CLI. Praktyczne konsekwencje:- Jeśli działa CLI, testy live powinny znaleźć te same klucze.
-
Jeśli test live mówi „no creds”, debuguj to tak samo, jak debugowałbyś
openclaw models list/ wybór modelu. -
Profile uwierzytelniania per agent:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(to właśnie oznaczają „profile keys” w testach live) -
Konfiguracja:
~/.openclaw/openclaw.json(lubOPENCLAW_CONFIG_PATH) -
Starszy katalog stanu:
~/.openclaw/credentials/(kopiowany do przygotowanego katalogu domowego live, jeśli istnieje, ale nie jest to główny magazyn kluczy profilu) -
Lokalne uruchomienia live domyślnie kopiują aktywną konfigurację, pliki
auth-profiles.jsonper agent, starszy katalogcredentials/oraz obsługiwane zewnętrzne katalogi uwierzytelniania CLI do tymczasowego katalogu domowego testu; przygotowane katalogi domowe live pomijająworkspace/isandboxes/, a nadpisania ścieżekagents.*.workspace/agentDirsą usuwane, aby sondy nie dotykały Twojego rzeczywistego obszaru roboczego hosta.
~/.profile), uruchamiaj lokalne testy po source ~/.profile albo użyj poniższych runnerów Docker (mogą montować ~/.profile do kontenera).
Live Deepgram (transkrypcja audio)
- Test:
extensions/deepgram/audio.live.test.ts - Włączanie:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts
Live BytePlus coding plan
- Test:
extensions/byteplus/live.test.ts - Włączanie:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - Opcjonalne nadpisanie modelu:
BYTEPLUS_CODING_MODEL=ark-code-latest
Live multimediów workflow ComfyUI
- Test:
extensions/comfy/comfy.live.test.ts - Włączanie:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - Zakres:
- Wykonuje dołączone ścieżki comfy image, video i
music_generate - Pomija każdą możliwość, chyba że skonfigurowano
models.providers.comfy.<capability> - Przydatne po zmianach w przesyłaniu workflow comfy, odpytywaniu, pobieraniu lub rejestracji Pluginu
- Wykonuje dołączone ścieżki comfy image, video i
Live generowania obrazów
- Test:
test/image-generation.runtime.live.test.ts - Polecenie:
pnpm test:live test/image-generation.runtime.live.test.ts - Harness:
pnpm test:live:media image - Zakres:
- Wylicza każdy zarejestrowany Plugin dostawcy generowania obrazów
- Ładuje brakujące zmienne env dostawcy z Twojej powłoki logowania (
~/.profile) przed sondowaniem - Domyślnie używa aktywnych/env kluczy API przed zapisanymi profilami uwierzytelniania, aby przestarzałe klucze testowe w
auth-profiles.jsonnie maskowały rzeczywistych poświadczeń powłoki - Pomija dostawców bez użytecznego uwierzytelniania/profilu/modelu
- Uruchamia standardowe warianty generowania obrazów przez współdzieloną możliwość runtime:
google:flash-generategoogle:pro-generategoogle:pro-editopenai:default-generate
- Obecnie objęci dołączeni dostawcy:
falgoogleminimaxopenaiopenroutervydraxai
- Opcjonalne zawężenie:
OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS="openai,google,openrouter,xai"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 tylko-env
Live generowania muzyki
- Test:
extensions/music-generation-providers.live.test.ts - Włączanie:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts - Harness:
pnpm test:live:media music - Zakres:
- Wykonuje współdzieloną dołączoną ścieżkę dostawcy generowania muzyki
- Obecnie obejmuje Google i MiniMax
- Ładuje zmienne env dostawcy z Twojej powłoki logowania (
~/.profile) przed sondowaniem - Domyślnie używa aktywnych/env kluczy API przed zapisanymi profilami uwierzytelniania, aby przestarzałe klucze testowe w
auth-profiles.jsonnie maskowały rzeczywistych poświadczeń powłoki - Pomija dostawców bez użytecznego uwierzytelniania/profilu/modelu
- Uruchamia oba zadeklarowane tryby runtime, gdy są dostępne:
generatez wejściem opartym wyłącznie na promptcieedit, gdy dostawca deklarujecapabilities.edit.enabled
- Obecne pokrycie współdzielonej ścieżki:
google:generate,editminimax:generatecomfy: osobny plik live Comfy, nie ten współdzielony przebieg
- Opcjonalne zawężenie:
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.5+"
- Opcjonalne zachowanie uwierzytelniania:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, aby wymusić uwierzytelnianie z magazynu profili i ignorować nadpisania tylko-env
Live generowania wideo
- Test:
extensions/video-generation-providers.live.test.ts - Włączanie:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - Harness:
pnpm test:live:media video - Zakres:
- Wykonuje współdzieloną dołączoną ścieżkę dostawcy generowania wideo
- Domyślnie używa bezpiecznej dla wydań ścieżki smoke: dostawcy inni niż FAL, jedno żądanie text-to-video na dostawcę, jednosekundowy prompt z homarem oraz limit operacji per dostawca z
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ż
--video-providers fallubOPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal", aby uruchomić go jawnie - Ładuje zmienne env dostawcy z Twojej powłoki logowania (
~/.profile) przed sondowaniem - Domyślnie używa aktywnych/env kluczy API przed zapisanymi profilami uwierzytelniania, aby przestarzałe klucze testowe w
auth-profiles.jsonnie maskowały rzeczywistych poświadczeń powłoki - Pomija dostawców bez użytecznego uwierzytelniania/profilu/modelu
- Domyślnie uruchamia tylko
generate - Ustaw
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1, aby uruchamiać również zadeklarowane tryby transformacji, gdy są dostępne:imageToVideo, gdy dostawca deklarujecapabilities.imageToVideo.enabled, a wybrany dostawca/model akceptuje lokalne wejście obrazu oparte na buforze we współdzielonym przebieguvideoToVideo, gdy dostawca deklarujecapabilities.videoToVideo.enabled, a wybrany dostawca/model akceptuje lokalne wejście wideo oparte na buforze we współdzielonym przebiegu
- Obecni dostawcy
imageToVideozadeklarowani, ale pomijani we współdzielonym przebiegu:vydra, ponieważ dołączonyveo3jest tylko tekstowy, a dołączonyklingwymaga zdalnego URL obrazu
- Pokrycie 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
veo3text-to-video oraz ścieżkękling, która domyślnie używa fixture zdalnego URL obrazu
- Bieżące pokrycie live
videoToVideo:- tylko
runway, gdy wybrany model torunway/gen4_aleph
- tylko
- Obecni dostawcy
videoToVideozadeklarowani, ale pomijani we współdzielonym przebiegu:alibaba,qwen,xai, ponieważ te ścieżki obecnie wymagają zdalnych referencyjnych URL-ihttp(s)/ MP4google, ponieważ bieżąca współdzielona ścieżka Gemini/Veo używa lokalnego wejścia opartego na buforze, a ta ścieżka nie jest akceptowana we współdzielonym przebieguopenai, ponieważ bieżąca współdzielona ścieżka nie gwarantuje dostępu do video inpaint/remix specyficznego dla organizacji
- Opcjonalne zawężenie:
OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="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 operacji dla każdego dostawcy przy agresywnym przebiegu smoke
- Opcjonalne zachowanie uwierzytelniania:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, aby wymusić uwierzytelnianie z magazynu profili i ignorować nadpisania tylko-env
Harness live multimediów
- Polecenie:
pnpm test:live:media - Cel:
- Uruchamia współdzielone zestawy live obrazów, muzyki i wideo przez jeden natywny dla repo punkt wejścia
- Automatycznie ładuje brakujące zmienne env dostawcy z
~/.profile - Domyślnie automatycznie zawęża każdy zestaw do dostawców, którzy obecnie mają użyteczne uwierzytelnianie
- Ponownie używa
scripts/test-live.mjs, dzięki czemu zachowanie heartbeat i quiet mode pozostaje spójne
- 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
- Testing — zestawy unit, integration, QA i Docker