Testing
Тестирование: тестовые наборы в реальной среде
Для быстрого старта, средств запуска QA, модульных/интеграционных наборов тестов и сценариев Docker см. Тестирование. На этой странице описаны живые тесты (с обращением к сети): матрица моделей, серверные части CLI, ACP, поставщики мультимедиа и обработка учетных данных.
Живые тесты: локальные команды быстрой проверки
Перед разовыми живыми проверками экспортируйте необходимый ключ поставщика в окружение процесса.
Безопасная быстрая проверка мультимедиа:
pnpm openclaw infer tts convert --local --json \ --text "Живая быстрая проверка OpenClaw." \ --output /tmp/openclaw-live-smoke.mp3Безопасная быстрая проверка готовности голосовых вызовов:
pnpm openclaw voicecall setup --jsonpnpm openclaw voicecall smoke --to "+15555550123"voicecall smoke выполняется в тестовом режиме, если также не указан --yes; используйте --yes только
если намерены совершить реальный вызов. Для Twilio, Telnyx и Plivo
успешная проверка готовности требует общедоступного URL-адреса Webhook — локальные/частные
URL-адреса обратной петли отклоняются, поскольку эти поставщики не могут к ним подключиться.
Живые тесты: проверка возможностей Android Node
- Тест:
src/gateway/android-node.capabilities.live.test.ts - Скрипт:
pnpm android:test:integration - Цель: вызвать каждую команду, объявленную в настоящее время подключенным Android Node, и проверить поведение контракта команд.
- Область:
- Предварительная/ручная настройка (набор тестов не устанавливает, не запускает и не сопрягает приложение).
- Покомандная проверка gateway
node.invokeдля выбранного Android Node.
- Необходимая предварительная настройка:
- Приложение Android уже подключено и сопряжено с gateway.
- Приложение остается на переднем плане.
- Предоставлены разрешения/согласие на захват для возможностей, которые должны пройти проверку.
- Необязательные переопределения целевого объекта:
OPENCLAW_ANDROID_NODE_IDилиOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- Полные сведения о настройке Android: Приложение Android
Живые тесты: быстрая проверка моделей (ключи профилей)
Живые тесты моделей разделены на два уровня, чтобы изолировать сбои:
- «Прямая модель» показывает, способен ли поставщик/модель вообще ответить с указанным ключом.
- «Быстрая проверка Gateway» показывает, работает ли для этой модели полный конвейер Gateway и агента (сеансы, история, инструменты, политика песочницы и т. д.).
Приведенные ниже подготовленные списки моделей находятся в src/agents/live-model-filter.ts и
со временем изменяются; источником истины следует считать массивы в этом файле, а не эту
страницу.
MiniMax M3 по умолчанию использует minimax/MiniMax-M3 в качестве ссылки на поставщика/модель.
Уровень 1: прямое завершение модели (без Gateway)
- Тест:
src/agents/models.profiles.live.test.ts - Цель:
- Перечислить обнаруженные модели
- Использовать
getApiKeyForModelдля выбора моделей, к которым у вас есть учетные данные - Выполнить небольшое завершение для каждой модели (и целевые регрессионные проверки, где необходимо)
- Как включить:
pnpm test:live(илиOPENCLAW_LIVE_TEST=1при непосредственном вызове Vitest)- Укажите
OPENCLAW_LIVE_MODELS=modern,smallилиall(псевдоним дляmodern), чтобы фактически запустить этот набор; иначе он будет пропущен, поэтому сам по себеpnpm test:liveостается ориентированным на быструю проверку Gateway.
- Как выбрать модели:
OPENCLAW_LIVE_MODELS=modernзапускает подготовленный приоритетный список наиболее показательных моделей (см. Живые тесты: матрица моделей)OPENCLAW_LIVE_MODELS=smallзапускает подготовленный приоритетный список малых моделейOPENCLAW_LIVE_MODELS=allявляется псевдонимом дляmodern- или
OPENCLAW_LIVE_MODELS="openai/gpt-5.6-luna,anthropic/claude-opus-4-6,..."(список разрешений через запятую) - Для локальных запусков малых моделей Ollama по умолчанию используется
http://127.0.0.1:11434; задавайтеOPENCLAW_LIVE_OLLAMA_BASE_URLтолько для локальной сети, пользовательских конечных точек или конечных точек Ollama Cloud. - Для современных/всех моделей и малых моделей ограничение по умолчанию равно длине соответствующего подготовленного списка; задайте
OPENCLAW_LIVE_MAX_MODELS=0для исчерпывающей проверки выбранного профиля или положительное число для меньшего ограничения. - Для исчерпывающих проверок
OPENCLAW_LIVE_TEST_TIMEOUT_MSопределяет время ожидания всего теста прямых моделей. По умолчанию: 60 минут. - По умолчанию проверки прямых моделей выполняются с параллелизмом 20; задайте
OPENCLAW_LIVE_MODEL_CONCURRENCY, чтобы переопределить это значение.
- Как выбрать поставщиков:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(список разрешений через запятую)
- Откуда берутся ключи:
- По умолчанию: хранилище профилей и резервные значения из окружения
- Задайте
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, чтобы разрешить использование только хранилища профилей
- Зачем это нужно:
- Отделяет ситуацию «API поставщика не работает / ключ недействителен» от ситуации «конвейер агента Gateway не работает»
- Содержит небольшие изолированные регрессионные проверки (пример: воспроизведение рассуждений OpenAI Responses/Codex Responses и потоки вызова инструментов)
Уровень 2: быстрая проверка Gateway и агента разработки (что на самом деле делает «@openclaw»)
- Тест:
src/gateway/gateway-models.profiles.live.test.ts - Цель:
- Запустить внутрипроцессный Gateway
- Создать/изменить сеанс
agent:dev:*(переопределение модели для каждого запуска) - Перебрать модели с ключами и проверить:
- «содержательный» ответ (без инструментов)
- работоспособность реального вызова инструмента (проверка чтения)
- необязательные дополнительные проверки инструментов (проверка выполнения и чтения)
- регрессионные пути OpenAI (только вызов инструмента -> последующий запрос) продолжают работать
- Сведения о проверках (чтобы можно было быстро объяснить сбои):
- Проверка
read: тест записывает файл с одноразовым значением в рабочую область и просит агента выполнить для негоread, а затем вернуть это значение. - Проверка
exec+read: тест просит агента выполнитьexecдля записи одноразового значения во временный файл, а затем выполнитьreadдля его обратного чтения. - Проверка изображения: тест прикрепляет сгенерированный PNG (кот + случайный код) и ожидает, что модель вернет
cat <CODE>. - Справочная реализация:
src/gateway/gateway-models.profiles.live.test.tsиtest/helpers/live-image-probe.ts.
- Проверка
- Как включить:
pnpm test:live(илиOPENCLAW_LIVE_TEST=1при непосредственном вызове Vitest)
- Как выбрать модели:
- По умолчанию: подготовленный приоритетный список наиболее показательных моделей (
modern) OPENCLAW_LIVE_GATEWAY_MODELS=smallзапускает подготовленный список малых моделей через полный конвейер Gateway и агентаOPENCLAW_LIVE_GATEWAY_MODELS=allявляется псевдонимом дляmodern- Или задайте
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(либо список через запятую), чтобы сузить выбор - Для проверок современных/всех и малых моделей через Gateway ограничение по умолчанию равно длине соответствующего подготовленного списка; задайте
OPENCLAW_LIVE_GATEWAY_MAX_MODELS=0для исчерпывающей выбранной проверки или положительное число для меньшего ограничения.
- По умолчанию: подготовленный приоритетный список наиболее показательных моделей (
- Как выбрать поставщиков (избегая «всего через OpenRouter»):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(список разрешений через запятую)
- Проверки инструментов и изображений всегда включены в этом живом тесте:
- Проверка
readи проверкаexec+read(нагрузка на инструменты) - проверка изображения выполняется, когда модель объявляет поддержку ввода изображений
- Поток (в общих чертах):
- Тест создает небольшой PNG с надписью «CAT» и случайным кодом (
test/helpers/live-image-probe.ts) - Отправляет его через
agentattachments: [{ mimeType: "image/png", content: "<base64>" }] - Gateway преобразует вложения в
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - Встроенный агент пересылает модели мультимодальное сообщение пользователя
- Проверка: ответ содержит
catи код (допуск OCR: разрешены незначительные ошибки)
- Тест создает небольшой PNG с надписью «CAT» и случайным кодом (
- Проверка
Живые тесты: быстрая проверка серверной части CLI (Claude, Gemini или другие локальные CLI)
- Тест:
src/gateway/gateway-cli-backend.live.test.ts - Цель: проверить конвейер Gateway и агента с помощью локальной серверной части CLI, не затрагивая конфигурацию по умолчанию.
- Значения быстрой проверки по умолчанию для конкретных серверных частей находятся в определении
cli-backend.tsсоответствующего плагина-владельца. - Включение:
pnpm test:live(илиOPENCLAW_LIVE_TEST=1при непосредственном вызове Vitest)OPENCLAW_LIVE_CLI_BACKEND=1
- Значения по умолчанию:
- Поставщик/модель по умолчанию:
claude-cli/claude-sonnet-4-6 - Поведение команд, аргументов и изображений определяется метаданными соответствующего плагина серверной части CLI.
- Поставщик/модель по умолчанию:
- Переопределения (необязательно):
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для отправки реального вложения-изображения (пути внедряются в запрос). По умолчанию отключено в рецептах Docker.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_ARG="--image"для передачи путей к файлам изображений как аргументов CLI вместо внедрения в запрос.OPENCLAW_LIVE_CLI_BACKEND_IMAGE_MODE="repeat"(или"list") для управления передачей аргументов изображений, когда заданIMAGE_ARG.OPENCLAW_LIVE_CLI_BACKEND_RESUME_PROBE=1для отправки второго запроса и проверки потока возобновления.OPENCLAW_LIVE_CLI_BACKEND_MODEL_SWITCH_PROBE=1для включения проверки непрерывности Claude Sonnet -> Opus в рамках одного сеанса, когда выбранная модель поддерживает целевой объект переключения. По умолчанию отключено, в том числе в рецептах Docker.OPENCLAW_LIVE_CLI_BACKEND_MCP_PROBE=1для включения проверки замкнутого цикла MCP/инструментов. По умолчанию отключено в рецептах Docker.
Пример:
OPENCLAW_LIVE_CLI_BACKEND=1 \ OPENCLAW_LIVE_CLI_BACKEND_MODEL="claude-cli/claude-sonnet-4-6" \ pnpm test:live src/gateway/gateway-cli-backend.live.test.tsБыстрая и недорогая проверка конфигурации Gemini MCP:
OPENCLAW_LIVE_TEST=1 \ pnpm test:live src/agents/cli-runner/bundle-mcp.gemini.live.test.tsОна не просит Gemini сгенерировать ответ. Она записывает те же системные
настройки, которые OpenClaw передает Gemini, а затем запускает gemini --debug mcp list, чтобы подтвердить,
что сохраненный сервер transport: "streamable-http" нормализуется в HTTP-формат MCP
Gemini и может подключиться к локальному потоковому HTTP-серверу MCP.
Рецепт Docker:
pnpm test:docker:live-cli-backendРецепты Docker для отдельных поставщиков:
pnpm test:docker:live-cli-backend:claudepnpm test:docker:live-cli-backend:claude-subscriptionpnpm test:docker:live-cli-backend:geminiПримечания:
- Средство запуска Docker находится в
scripts/test-live-cli-backend-docker.sh. - Оно выполняет живую быструю проверку серверной части CLI внутри Docker-образа репозитория от имени непривилегированного пользователя
node. - Оно получает метаданные быстрой проверки CLI из соответствующего плагина-владельца, а затем устанавливает подходящий пакет CLI для Linux (
@anthropic-ai/claude-codeили@google/gemini-cli) в кэшируемый доступный для записи префикс по адресуOPENCLAW_DOCKER_CLI_TOOLS_DIR(по умолчанию:~/.cache/openclaw/docker-cli-tools). codex-cliбольше не является встроенной серверной частью CLI; вместо нее используйтеopenai/*со средой выполнения сервера приложений Codex (см. Живые тесты: быстрая проверка стенда сервера приложений Codex).pnpm test:docker:live-cli-backend:claude-subscriptionтребует переносимой авторизации OAuth по подписке Claude Code через~/.claude/.credentials.jsonсclaudeAiOauth.subscriptionTypeлибо черезCLAUDE_CODE_OAUTH_TOKENизclaude setup-token. Сначала выполняется прямая проверкаclaude -pв Docker, затем два запроса к серверной части CLI через Gateway без сохранения переменных окружения с ключом API Anthropic. В этой ветке подписки проверки MCP/инструментов и изображений Claude по умолчанию отключены, поскольку они расходуют лимиты использования авторизованной подписки, а Anthropic может изменить порядок тарификации и ограничения частоты запросов Claude Agent SDK /claude -pбез выпуска новой версии OpenClaw.- Claude и Gemini поддерживают одинаковый набор проверок (текстовый запрос, классификация изображений, вызов инструмента MCP
cron, непрерывность при переключении модели) через указанные выше флаги, но ни одна из этих проверок не выполняется по умолчанию — включайте каждую необходимую проверку соответствующим флагом.
Живые тесты: доступность прокси APNs по HTTP/2
- Тест:
src/infra/push-apns-http2.live.test.ts - Цель: создать туннель через локальный HTTP-прокси CONNECT к конечной точке песочницы APNs Apple, отправить проверочный HTTP/2-запрос APNs и убедиться, что реальный ответ Apple
403 InvalidProviderTokenвозвращается через прокси. - Включение:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_APNS_REACHABILITY=1 pnpm test:live src/infra/push-apns-http2.live.test.ts
- Необязательный тайм-аут:
OPENCLAW_LIVE_APNS_TIMEOUT_MS=30000
Интерактивная проверка: быстрый тест привязки ACP (/acp spawn ... --bind here)
- Тест:
src/gateway/gateway-acp-bind.live.test.ts - Цель: проверить реальный поток привязки беседы ACP с действующим агентом ACP:
- отправить
/acp spawn <agent> --bind here - привязать синтетическую беседу канала сообщений на месте
- отправить обычное последующее сообщение в той же беседе
- убедиться, что последующее сообщение попало в протокол привязанного сеанса ACP
- отправить
- Включение:
pnpm test:live src/gateway/gateway-acp-bind.live.test.tsOPENCLAW_LIVE_ACP_BIND=1
- Значения по умолчанию:
- Агенты ACP в Docker:
claude,codex,gemini - Агент ACP для прямого
pnpm test:live ...:claude - Синтетический канал: контекст беседы в стиле личных сообщений Slack
- Бэкенд ACP:
acpx
- Агенты ACP в Docker:
- Переопределения:
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(илиon/true/yes), чтобы принудительно включить проверку изображения; любое другое значение принудительно отключает её. По умолчанию выполняется для каждого агента, кромеopencode.OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1OPENCLAW_LIVE_ACP_BIND_PARENT_MODEL=openai/gpt-5.6-luna
- Примечания:
- Этот сценарий использует поверхность Gateway
chat.sendс доступными только администраторам синтетическими полями исходного маршрута, чтобы тесты могли присоединять контекст канала сообщений, не имитируя внешнюю доставку. - Если
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDне задана, тест использует встроенный реестр агентов плагинаacpxдля выбранного агента тестового стенда ACP. - Создание Cron MCP для привязанного сеанса по умолчанию выполняется без гарантии успеха, поскольку внешние тестовые стенды ACP могут отменять вызовы MCP после успешной проверки привязки и изображения; задайте
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1, чтобы сделать эту проверку Cron после привязки строгой.
- Этот сценарий использует поверхность Gateway
Пример:
OPENCLAW_LIVE_ACP_BIND=1 \ OPENCLAW_LIVE_ACP_BIND_AGENT=claude \ pnpm test:live src/gateway/gateway-acp-bind.live.test.tsКоманда для Docker:
pnpm test:docker:live-acp-bindКоманды Docker для отдельных агентов:
pnpm test:docker:live-acp-bind:claudepnpm test:docker:live-acp-bind:codexpnpm test:docker:live-acp-bind:droidpnpm test:docker:live-acp-bind:geminipnpm test:docker:live-acp-bind:opencodeПримечания по Docker:
- Средство запуска Docker находится в
scripts/test-live-acp-bind-docker.sh. - По умолчанию оно последовательно запускает быстрый тест привязки ACP для совокупности действующих агентов CLI:
claude,codex, затемgemini. - Используйте
OPENCLAW_LIVE_ACP_BIND_AGENTS=claude,OPENCLAW_LIVE_ACP_BIND_AGENTS=codex,OPENCLAW_LIVE_ACP_BIND_AGENTS=droid,OPENCLAW_LIVE_ACP_BIND_AGENTS=geminiилиOPENCLAW_LIVE_ACP_BIND_AGENTS=opencode, чтобы сузить матрицу. - Оно помещает соответствующие аутентификационные данные CLI в контейнер, а затем при отсутствии устанавливает запрошенный действующий CLI (
@anthropic-ai/claude-code,@openai/codex, Factory Droid черезhttps://app.factory.ai/cli,@google/gemini-cliилиopencode-ai). Сам бэкенд ACP — это встроенный пакетacpx/runtimeиз официального плагинаacpx. - Вариант Docker для Droid помещает
~/.factoryдля настроек, передаётFACTORY_API_KEYи требует этот ключ API, поскольку локальную аутентификацию Factory через OAuth или связку ключей невозможно перенести в контейнер. Он использует встроенную запись реестра ACPXdroid exec --output-format acp. - Вариант Docker для OpenCode — строгий регрессионный сценарий с одним агентом. Он записывает временную модель по умолчанию
OPENCODE_CONFIG_CONTENTизOPENCLAW_LIVE_ACP_BIND_OPENCODE_MODEL(по умолчаниюopencode/kimi-k2.6). - Прямые вызовы CLI
acpxпредназначены только для ручного использования или обходного пути при сравнении поведения вне Gateway. Быстрый тест привязки ACP в Docker проверяет встроенный бэкенд среды выполненияacpxOpenClaw.
Интерактивная проверка: быстрый тест стенда сервера приложений Codex
- Цель: проверить принадлежащий плагину тестовый стенд Codex через обычный метод Gateway
agent:- загрузить встроенный плагин
codex - выбрать модель OpenAI через
/model <ref> --runtime codex - отправить первый ход агента через Gateway с запрошенным уровнем рассуждений
- отправить второй ход в тот же сеанс OpenClaw и убедиться, что поток сервера приложений можно возобновить
- запустить
/codex statusи/codex modelsчерез тот же путь команд Gateway - при необходимости выполнить две проверенные Guardian команды оболочки с повышенными правами: одну безопасную команду, которая должна быть одобрена, и одну попытку отправки фиктивного секрета, которая должна быть отклонена, чтобы агент запросил подтверждение
- загрузить встроенный плагин
- Тест:
src/gateway/gateway-codex-harness.live.test.ts - Включение:
OPENCLAW_LIVE_CODEX_HARNESS=1 - Базовая модель тестового стенда:
openai/gpt-5.6-luna - Выбор по умолчанию для нового ключа API OpenAI:
openai/gpt-5.6 - Рассуждения по умолчанию:
low - Переопределение модели:
OPENCLAW_LIVE_CODEX_HARNESS_MODEL=openai/<model> - Переопределение рассуждений:
OPENCLAW_LIVE_CODEX_HARNESS_THINKING=<level> - Переопределение матрицы:
OPENCLAW_LIVE_CODEX_HARNESS_TARGETS=<model>=<thinking>,... - Режим аутентификации:
OPENCLAW_LIVE_CODEX_HARNESS_AUTH=codex-auth(по умолчанию) использует скопированные данные входа Codex;api-keyиспользуетOPENAI_API_KEYчерез сервер приложений Codex. - Необязательная проверка изображения:
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 - Необязательная проверка MCP/инструмента:
OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 - Необязательная проверка Guardian:
OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 - Быстрый тест принудительно задаёт поставщика и модель
agentRuntime.id: "codex", чтобы неисправный тестовый стенд Codex не мог пройти проверку за счёт незаметного отката к OpenClaw. - Аутентификация: аутентификация сервера приложений Codex из локального входа в подписку Codex или
OPENAI_API_KEY, когдаOPENCLAW_LIVE_CODEX_HARNESS_AUTH=api-key. Для запусков с подпиской Docker может скопировать~/.codex/auth.jsonи~/.codex/config.toml.
Команда для локального запуска:
OPENCLAW_LIVE_CODEX_HARNESS=1 \ OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=1 \ OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=1 \ OPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=1 \ OPENCLAW_LIVE_CODEX_HARNESS_MODEL=openai/gpt-5.6-luna \ pnpm test:live -- src/gateway/gateway-codex-harness.live.test.tsКоманда для Docker:
pnpm test:docker:live-codex-harnessМатрица GPT-5.6 для нативного Codex:
OPENCLAW_LIVE_CODEX_HARNESS_AUTH=api-key \ OPENCLAW_LIVE_CODEX_HARNESS_TARGETS='openai/gpt-5.6-sol=ultra,openai/gpt-5.6-terra=ultra,openai/gpt-5.6-luna=max' \ pnpm test:docker:live-codex-harnessЗначение по умолчанию для нового ключа API OpenAI:
OPENCLAW_LIVE_GATEWAY_OPENAI_API_DEFAULT=1 \ OPENCLAW_LIVE_GATEWAY_PROVIDERS=openai \ OPENCLAW_LIVE_GATEWAY_THINKING=off \ pnpm test:live -- src/gateway/gateway-models.profiles.live.test.tsПри этой проверке OPENCLAW_LIVE_GATEWAY_MODELS остаётся незаданной, модель определяется через
новый механизм выбора вывода при первоначальной настройке, проверяется openai/gpt-5.6, после чего
выполняется реальный ход через Gateway с определённой моделью.
Матрица GPT-5.6 для встроенного OpenClaw:
OPENCLAW_LIVE_GATEWAY_THINKING=ultra \ OPENCLAW_LIVE_GATEWAY_PROVIDERS=openai \ OPENCLAW_LIVE_GATEWAY_MODELS='openai/gpt-5.6-sol,openai/gpt-5.6-terra,openai/gpt-5.6-luna' \ pnpm test:live -- src/gateway/gateway-models.profiles.live.test.tsПримечания по Docker:
- Средство запуска Docker находится в
scripts/test-live-codex-harness-docker.sh. - Оно передаёт
OPENAI_API_KEY, копирует файлы аутентификации Codex CLI при их наличии, устанавливает@openai/codexв доступный для записи подключённый префикс npm, помещает дерево исходного кода, а затем запускает только интерактивный тест стенда Codex. - Docker по умолчанию включает проверки изображения, MCP/инструмента и Guardian. Задайте
OPENCLAW_LIVE_CODEX_HARNESS_IMAGE_PROBE=0,OPENCLAW_LIVE_CODEX_HARNESS_MCP_PROBE=0илиOPENCLAW_LIVE_CODEX_HARNESS_GUARDIAN_PROBE=0, если требуется более узкий отладочный запуск. - Docker использует ту же явно заданную конфигурацию среды выполнения Codex, поэтому устаревшие псевдонимы или откат к OpenClaw не могут скрыть регрессию тестового стенда Codex.
- Целевые элементы матрицы выполняются последовательно в одном контейнере. Скрипт Docker масштабирует стандартный 35-минутный тайм-аут по числу целевых элементов; любой внешний тайм-аут оболочки или CI должен допускать такое же общее время. Канонический CI размещает каждый целевой элемент GPT-5.6 в отдельном сегменте.
Рекомендуемые команды для интерактивной проверки
Узкие, явно заданные списки разрешённых элементов работают быстрее всего и наименее подвержены нестабильности:
-
Одна модель, напрямую (без Gateway):
OPENCLAW_LIVE_MODELS="openai/gpt-5.6-luna" pnpm test:live src/agents/models.profiles.live.test.ts
-
Прямой профиль малой модели:
OPENCLAW_LIVE_MODELS=small pnpm test:live src/agents/models.profiles.live.test.ts
-
Профиль малой модели через Gateway:
OPENCLAW_LIVE_GATEWAY_MODELS=small pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Быстрый тест 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
-
Одна модель, быстрый тест Gateway:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.6-luna" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
-
Вызов инструментов у нескольких поставщиков:
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
-
Прямой быстрый тест GLM-5.2 в Z.AI Coding Plan:
ZAI_CODING_LIVE_TEST=1 pnpm test:live src/agents/zai.live.test.ts
-
Проверки Google (ключ API Gemini и Antigravity):
- Gemini (ключ 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 (ключ API):
-
Быстрый тест адаптивных рассуждений Google (
qa manualиз закрытого QA CLI — требуютсяOPENCLAW_ENABLE_PRIVATE_QA_CLI=1и рабочая копия исходного кода; см. обзор QA):- Динамическое значение по умолчанию 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 - Динамический бюджет 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
- Динамическое значение по умолчанию Gemini 3:
Примечания:
google/...использует API Gemini (ключ API).google-antigravity/...использует мост OAuth Antigravity (конечную точку агента в стиле Cloud Code Assist).google-gemini-cli/...использует локальный Gemini CLI на вашем компьютере (отдельная аутентификация и особенности инструментов).- API Gemini и Gemini CLI:
- API: OpenClaw вызывает размещённый у Google API Gemini по HTTP (ключ API или аутентификация профиля); именно это большинство пользователей подразумевает под «Gemini».
- CLI: OpenClaw запускает локальный двоичный файл
geminiчерез оболочку; у него собственная аутентификация, и его поведение может отличаться (потоковая передача, поддержка инструментов и расхождение версий).
Интерактивная проверка: матрица моделей (что охватывается)
Интерактивная проверка включается по запросу, поэтому фиксированного «списка моделей CI» нет. OPENCLAW_LIVE_MODELS=modern / OPENCLAW_LIVE_GATEWAY_MODELS=modern (и их псевдоним all) запускают отобранный приоритетный список из HIGH_SIGNAL_LIVE_MODEL_PRIORITY в src/agents/live-model-filter.ts в следующем порядке приоритета:
| Провайдер/модель | Примечания |
|---|---|
anthropic/claude-opus-4-8 |
|
anthropic/claude-sonnet-5 |
|
anthropic/claude-sonnet-4-6 |
|
anthropic/claude-opus-4-7 |
|
google/gemini-3.1-pro-preview |
Gemini API |
google/gemini-3.5-flash |
Gemini API |
cohere/command-a-plus-05-2026 |
|
moonshot/kimi-k2.7-code |
|
anthropic/claude-opus-4-6 |
|
deepseek/deepseek-v4-flash |
|
deepseek/deepseek-v4-pro |
|
minimax/MiniMax-M3 |
|
openai/gpt-5.5 |
|
openrouter/openai/gpt-5.2-chat |
|
openrouter/minimax/minimax-m2.7 |
|
opencode-go/glm-5 |
|
openrouter/ai21/jamba-large-1.7 |
|
xai/grok-4.5 |
|
xai/grok-4.20-0309-reasoning |
|
zai/glm-5.1 |
|
fireworks/accounts/fireworks/models/glm-5p1 |
|
minimax-portal/minimax-m3 |
Подобранный список малых моделей (OPENCLAW_LIVE_MODELS=small / OPENCLAW_LIVE_GATEWAY_MODELS=small) из SMALL_LIVE_MODEL_PRIORITY:
| Провайдер/модель |
|---|
lmstudio/qwen/qwen3.5-9b |
vllm/qwen/qwen3-8b |
sglang/qwen/qwen3-8b |
ollama/gemma3:4b |
openrouter/qwen/qwen3.5-9b |
openrouter/z-ai/glm-5.1 |
openrouter/z-ai/glm-5 |
zai/glm-5.1 |
Примечания к современному списку:
- Провайдеры
codexиcodex-cliисключены из стандартного прогона современных моделей (они охватывают поведение бэкенда CLI/ACP, которое тестируется отдельно выше). Самopenai/gpt-5.5по умолчанию маршрутизируется через тестовую обвязку сервера приложений Codex; см. Live: быстрый тест тестовой обвязки сервера приложений Codex. fireworks,google,openrouterиxaiв прогоне современных моделей запускают только явно подобранные идентификаторы моделей (без автоматического расширения до «всех моделей этого провайдера»).- Включите в
OPENCLAW_LIVE_GATEWAY_MODELSхотя бы одну модель с поддержкой изображений (варианты Claude/Gemini/семейства OpenAI с компьютерным зрением и т. п.), чтобы выполнить проверку изображений.
Запустите быстрый тест Gateway с инструментами и изображением на вручную подобранном наборе разных провайдеров:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.6-luna,anthropic/claude-opus-4-6,google/gemini-3.1-pro-preview,google/gemini-3.5-flash,google-antigravity/claude-opus-4-6-thinking,deepseek/deepseek-v4-flash,zai/glm-5.1,minimax/MiniMax-M3" pnpm test:live src/gateway/gateway-models.profiles.live.test.tsНеобязательное дополнительное покрытие за пределами подобранных списков (желательно выбрать включённую у вас модель с поддержкой инструментов):
- Mistral:
mistral/... - Cerebras:
cerebras/...(если у вас есть доступ) - LM Studio:
lmstudio/...(локально; вызов инструментов зависит от режима API)
Агрегаторы / альтернативные шлюзы
Если у вас настроены ключи, также можно протестировать через:
- OpenRouter:
openrouter/...(сотни моделей; используйтеopenclaw models scan, чтобы найти варианты с поддержкой инструментов и изображений) - OpenCode:
opencode/...для Zen иopencode-go/...для Go (аутентификация черезOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
Другие провайдеры, которые можно включить в матрицу live-тестов (при наличии учётных данных/конфигурации):
- Встроенные:
anthropic,cerebras,github-copilot,google,google-antigravity,google-gemini-cli,google-vertex,groq,mistral,openai,openrouter,opencode,opencode-go,xai,zai - Через
models.providers(пользовательские конечные точки):minimax(облако/API), а также любой прокси, совместимый с OpenAI/Anthropic (LM Studio, vLLM, LiteLLM и т. п.)
Учётные данные (никогда не добавляйте в коммиты)
Live-тесты обнаруживают учётные данные так же, как CLI. Практические следствия:
-
Если CLI работает, live-тесты должны найти те же ключи.
-
Если live-тест сообщает «нет учётных данных», выполняйте отладку так же, как при отладке
openclaw models list/ выбора модели. -
Профили аутентификации для отдельных агентов:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json(именно это означает «ключи профилей» в live-тестах) -
Конфигурация:
~/.openclaw/openclaw.json(илиOPENCLAW_CONFIG_PATH) -
Каталог устаревшего OAuth:
~/.openclaw/credentials/(при наличии копируется в подготовленный домашний каталог live-тестов, но не является основным хранилищем ключей профилей) -
Локальные live-запуски копируют активную конфигурацию (исключая переопределения
agents.*.workspace/agentDir) и файлauth-profiles.jsonкаждого агента, но не остальные данные из каталога агента, поэтому данныеworkspace/иsandboxes/никогда не попадают в подготовленный домашний каталог; кроме того, во временный домашний каталог для тестирования копируются устаревший каталогcredentials/и поддерживаемые файлы/каталоги аутентификации внешних CLI (.claude.json,.claude/.credentials.json,.claude/settings*.json,.claude/backups,.codex/auth.json,.codex/config.toml,.gemini,.minimax).
Если вы хотите использовать ключи из переменных окружения, экспортируйте их перед локальными тестами или используйте
приведённые ниже средства запуска Docker с явно заданным OPENCLAW_PROFILE_FILE.
Live-тест Deepgram (транскрибирование аудио)
- Тест:
extensions/deepgram/audio.live.test.ts - Включение:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live extensions/deepgram/audio.live.test.ts
Live-тест плана программирования BytePlus
- Тест:
extensions/byteplus/live.test.ts - Включение:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live extensions/byteplus/live.test.ts - Необязательное переопределение модели:
BYTEPLUS_CODING_MODEL=ark-code-latest
Live-тест медиафайлов рабочего процесса ComfyUI
- Тест:
extensions/comfy/comfy.live.test.ts - Включение:
OPENCLAW_LIVE_TEST=1 COMFY_LIVE_TEST=1 pnpm test:live -- extensions/comfy/comfy.live.test.ts - Область:
- Проверяет встроенные пути comfy для изображений, видео и
music_generate - Пропускает каждую возможность, если не настроен
plugins.entries.comfy.config.<capability> - Полезен после изменения отправки рабочих процессов comfy, опроса состояния, загрузок или регистрации плагинов
- Проверяет встроенные пути comfy для изображений, видео и
Live-тест генерации изображений
- Тест:
test/image-generation.runtime.live.test.ts - Команда:
pnpm test:live test/image-generation.runtime.live.test.ts - Тестовая обвязка:
pnpm test:live:media image - Область:
- Перечисляет все зарегистрированные плагины провайдеров генерации изображений
- Перед проверкой использует уже экспортированные переменные окружения провайдера
- По умолчанию предпочитает ключи API из live-конфигурации/окружения сохранённым профилям аутентификации, поэтому устаревшие тестовые ключи в
auth-profiles.jsonне скрывают реальные учётные данные оболочки - Пропускает провайдеров без пригодной аутентификации, профиля или модели
- Запускает каждого настроенного провайдера через общую среду выполнения генерации изображений:
<provider>:generate<provider>:edit, если провайдер заявляет поддержку редактирования
- Охватываемые в настоящее время встроенные провайдеры:
deepinfrafalgoogleminimaxopenaiopenroutervydraxai
- Необязательное сужение области:
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"
- Необязательное поведение аутентификации:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, чтобы принудительно использовать аутентификацию из хранилища профилей и игнорировать переопределения, заданные только через окружение
Для поставляемого пути CLI после успешного прохождения live-теста провайдера/среды выполнения
добавьте быстрый тест infer:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_INFER_CLI_TEST=1 pnpm test:live -- test/image-generation.infer-cli.live.test.tsopenclaw infer image providers --jsonopenclaw infer image generate \ --model google/gemini-3.1-flash-image-preview \ --prompt "Минималистичное плоское тестовое изображение: один синий квадрат на белом фоне, без текста." \ --output ./openclaw-infer-image-smoke.png \ --jsonЭто охватывает разбор аргументов CLI, разрешение конфигурации/агента по умолчанию, активацию встроенного плагина, общую среду выполнения генерации изображений и live-запрос к провайдеру. Ожидается, что зависимости плагина присутствуют до загрузки среды выполнения.
Live-тест генерации музыки
- Тест:
extensions/music-generation-providers.live.test.ts - Включение:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/music-generation-providers.live.test.ts - Тестовая обвязка:
pnpm test:live:media music - Область:
- Проверяет общий путь встроенного провайдера генерации музыки
- В настоящее время охватывает
fal,google,minimaxиopenrouter - Перед проверкой использует уже экспортированные переменные окружения провайдера
- По умолчанию предпочитает ключи API из live-конфигурации/окружения сохранённым профилям аутентификации, поэтому устаревшие тестовые ключи в
auth-profiles.jsonне скрывают реальные учётные данные оболочки - Пропускает провайдеров без пригодной аутентификации, профиля или модели
- Запускает оба заявленных режима среды выполнения, когда они доступны:
generateс входными данными только в виде запросаedit, если провайдер заявляетcapabilities.edit.enabled
- Для
comfyпредусмотрен отдельный файл live-теста, он не входит в этот общий прогон
- Необязательное сужение области:
OPENCLAW_LIVE_MUSIC_GENERATION_PROVIDERS="google,minimax"OPENCLAW_LIVE_MUSIC_GENERATION_MODELS="google/lyria-3-clip-preview,minimax/music-2.6"
- Необязательное поведение аутентификации:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, чтобы принудительно использовать аутентификацию из хранилища профилей и игнорировать переопределения, заданные только через окружение
Live-тест генерации видео
- Тест:
extensions/video-generation-providers.live.test.ts - Включение:
OPENCLAW_LIVE_TEST=1 pnpm test:live -- extensions/video-generation-providers.live.test.ts - Среда тестирования:
pnpm test:live:media video - Область:
- Проверяет общий путь встроенного провайдера генерации видео для
alibaba,byteplus,deepinfra,fal,google,minimax,openai,openrouter,pixverse,qwen,runway,together,vydra,xai - По умолчанию использует безопасный для выпуска путь дымового тестирования: один запрос преобразования текста в видео на провайдера, секундный промпт с лобстером и ограничение количества операций для каждого провайдера из
OPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS(по умолчанию180000) - По умолчанию пропускает FAL, поскольку задержка очереди на стороне провайдера может занять большую часть времени выпуска; передайте
OPENCLAW_LIVE_VIDEO_GENERATION_PROVIDERS="fal"(или очистите список пропуска), чтобы запустить его явно - Перед проверкой использует уже экспортированные переменные окружения провайдера
- По умолчанию отдает приоритет действующим ключам API из переменных окружения перед сохраненными профилями аутентификации, чтобы устаревшие тестовые ключи в
auth-profiles.jsonне скрывали реальные учетные данные оболочки - Пропускает провайдеров без пригодных данных аутентификации, профиля или модели
- По умолчанию запускает только
generate - Задайте
OPENCLAW_LIVE_VIDEO_GENERATION_FULL_MODES=1, чтобы также запускать заявленные режимы преобразования, когда они доступны:imageToVideo, когда провайдер заявляетcapabilities.imageToVideo.enabled, а выбранные провайдер и модель принимают в общем прогоне локальное изображение из буфераvideoToVideo, когда провайдер заявляетcapabilities.videoToVideo.enabled, а выбранные провайдер и модель принимают в общем прогоне локальное видео из буфера
- Текущий заявленный, но пропускаемый провайдер
imageToVideoв общем прогоне:vydra(локальный ввод изображения из буфера не поддерживается в этом сценарии)
- Покрытие, специфичное для провайдера Vydra:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_VYDRA_VIDEO=1 pnpm test:live -- extensions/vydra/vydra.live.test.ts- Этот файл запускает
veo3для преобразования текста в видео, а также сценарийklingдля преобразования изображения в видео, который по умолчанию использует фикстуру с удаленным URL изображения (OPENCLAW_LIVE_VYDRA_KLING_IMAGE_URLдля переопределения).
- Покрытие, специфичное для провайдера xAI:
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_XAI_VIDEO=1 pnpm test:live -- extensions/xai/xai.live.test.ts -t "classic Grok Imagine"- Классический сценарий сначала создает квадратный локальный первый кадр в формате PNG, не задает геометрию, запрашивает секундный клип преобразования изображения в видео, опрашивает состояние до завершения и проверяет загруженный буфер.
OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_XAI_VIDEO=1 pnpm test:live -- extensions/xai/xai.live.test.ts -t "Grok Imagine Video 1.5"- Сценарий 1.5 создает локальный первый кадр в формате PNG, запрашивает секундный клип преобразования изображения в видео с разрешением 1080P, опрашивает состояние до завершения и проверяет загруженный буфер.
- Текущее тестовое покрытие
videoToVideoс реальным сервисом:runwayтолько когда выбранная модель разрешается вgen4_aleph
- Текущие заявленные, но пропускаемые провайдеры
videoToVideoв общем прогоне:alibaba,google,openai,qwen,xai, поскольку этим путям сейчас требуются удаленные URL-адреса ссылокhttp(s), а не локальный ввод из буфера
- Проверяет общий путь встроенного провайдера генерации видео для
- Необязательное сужение:
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="", чтобы включить в прогон по умолчанию всех провайдеров, включая FALOPENCLAW_LIVE_VIDEO_GENERATION_TIMEOUT_MS=60000, чтобы уменьшить ограничение количества операций каждого провайдера для интенсивного дымового тестирования
- Необязательное поведение аутентификации:
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, чтобы принудительно использовать аутентификацию из хранилища профилей и игнорировать переопределения, заданные только через переменные окружения
Среда тестирования с реальными медиасервисами
- Команда:
pnpm test:live:media - Точка входа:
test/e2e/qa-lab/media/hosted-media-provider-live.ts, которая запускаетpnpm test:live -- <suite-test-file>для каждого выбранного набора, чтобы поведение Heartbeat и тихого режима оставалось согласованным с другими запускамиpnpm test:live. - Назначение:
- Запускает общие наборы тестов изображений, музыки и видео с реальными сервисами через единую нативную для репозитория точку входа
- Автоматически загружает отсутствующие переменные окружения провайдера из
~/.profile - По умолчанию автоматически ограничивает каждый набор провайдерами, для которых сейчас доступны пригодные данные аутентификации
- Флаги:
--providers <csv>— глобальный фильтр провайдеров;--image-providers/--music-providers/--video-providersограничивают фильтр одним набором--all-providersотключает автоматическую фильтрацию по данным аутентификации--allow-emptyзавершает работу с кодом0, если после фильтрации не остается доступных для запуска провайдеров--quiet/--no-quietпередаются вtest:live
- Примеры:
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
Связанные материалы
- Тестирование — модульные, интеграционные, QA- и Docker-наборы тестов