Testing
Тестування: набори тестів у реальному середовищі
Для швидкого початку, засобів запуску QA, модульних/інтеграційних наборів тестів і сценаріїв Docker див. Тестування. Ця сторінка охоплює живі тести (із мережевою взаємодією): матрицю моделей, бекенди CLI, ACP, медіапровайдери та роботу з обліковими даними.
Живі тести: локальні команди димового тестування
Перед разовими живими перевірками експортуйте потрібний ключ провайдера в середовище процесу.
Безпечний димовий тест медіа:
pnpm openclaw infer tts convert --local --json \ --text "OpenClaw live smoke." \ --output /tmp/openclaw-live-smoke.mp3Безпечний димовий тест готовності голосових викликів:
pnpm openclaw voicecall setup --jsonpnpm openclaw voicecall smoke --to "+15555550123"voicecall smoke виконується в режимі пробного запуску, якщо також не вказано --yes; використовуйте --yes, лише
якщо справді маєте намір здійснити виклик. Для Twilio, Telnyx і Plivo
успішна перевірка готовності потребує загальнодоступної URL-адреси вебхука — локальні/приватні
URL-адреси loopback відхиляються, оскільки ці провайдери не можуть до них підключитися.
Живі тести: повна перевірка можливостей Android-вузла
- Тест:
src/gateway/android-node.capabilities.live.test.ts - Скрипт:
pnpm android:test:integration - Мета: викликати кожну команду, що наразі оголошується підключеним Android-вузлом, і перевірити поведінку контракту команд.
- Обсяг:
- Попередньо налаштоване вручну середовище (набір тестів не встановлює, не запускає й не сполучає застосунок).
- Перевірка через
node.invokeу Gateway кожної команди для вибраного Android-вузла.
- Обов’язкове попереднє налаштування:
- Застосунок 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. - Повні перевірки modern/all і small за замовчуванням обмежено довжиною відповідного підібраного списку; установіть
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: тест записує файл із nonce у робочому просторі та просить агента прочитати його й повторити nonce у відповіді. - Перевірка
exec+read: тест просить агента за допомогоюexecзаписати nonce у тимчасовий файл, а потім прочитати його через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 для modern/all і small за замовчуванням обмежено довжиною відповідного підібраного списку; установіть
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) - Надсилає його через
agentуattachments: [{ 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.tsPlugin-власника. - Увімкнення:
pnpm test:live(абоOPENCLAW_LIVE_TEST=1, якщо викликаєте Vitest безпосередньо)OPENCLAW_LIVE_CLI_BACKEND=1
- Стандартні значення:
- Стандартний провайдер/модель:
claude-cli/claude-sonnet-4-6 - Поведінка команд/аргументів/зображень визначається метаданими Plugin-власника бекенда 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/loopback інструментів. За замовчуванням вимкнено в рецептах 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
і може підключитися до локального MCP-сервера з потоковим HTTP.
Рецепт 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без прав root. - Він отримує метадані димового тестування CLI з Plugin-власника, а потім установлює відповідний пакет 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, надіслати запит перевірки APNs HTTP/2 і переконатися, що справжня відповідь 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
- Примітки:
- Цей канал перевірки використовує поверхню
chat.sendGateway із доступними лише адміністраторам синтетичними полями початкового маршруту, щоб тести могли додавати контекст каналу повідомлень, не імітуючи зовнішнє доставлення. - Якщо
OPENCLAW_LIVE_ACP_BIND_AGENT_COMMANDне задано, тест використовує вбудований реєстр агентів вбудованого pluginacpxдля вибраного агента тестового середовища ACP. - Створення MCP для Cron прив’язаного сеансу типово виконується за принципом максимально можливого результату, оскільки зовнішні тестові середовища ACP можуть скасовувати виклики MCP після успішної перевірки прив’язування або зображення; задайте
OPENCLAW_LIVE_ACP_BIND_REQUIRE_CRON=1, щоб зробити цю перевірку Cron після прив’язування суворою.
- Цей канал перевірки використовує поверхню
Приклад:
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з офіційного pluginacpx. - Варіант 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, яким володіє plugin, через звичайний метод Gateway
agent:- завантажити вбудований plugin
codex - вибрати модель OpenAI через
/model <ref> --runtime codex - надіслати перший хід агента Gateway із потрібним рівнем міркування
- надіслати другий хід до того самого сеансу OpenClaw і переконатися, що потік сервера застосунку можна продовжити
- виконати
/codex statusі/codex modelsчерез той самий шлях команд Gateway - за потреби виконати дві перевірені Guardian перевірки команд оболонки з підвищеними правами: одну безпечну команду, яку слід схвалити, і одне надсилання фальшивого секрету, яке слід відхилити, щоб агент запросив підтвердження
- завантажити вбудований plugin
- Тест:
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, копіює файли автентифікації CLI Codex за їх наявності, встановлює@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із приватного CLI контролю якості — потребуєOPENCLAW_ENABLE_PRIVATE_QA_CLI=1і робочої копії вихідного коду; див. огляд контролю якості):- Динамічне типове значення 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/...використовує локальний CLI Gemini на вашому комп’ютері (окрема автентифікація та особливості інструментів).- API Gemini порівняно з CLI Gemini:
- 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.
Перевірка Deepgram Live (транскрибування аудіо)
- Перевірка:
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, опитуванні стану, завантаженнях або реєстрації Plugin
- Перевіряє вбудовані шляхи comfy для зображень, відео та
Перевірка Live генерування зображень
- Перевірка:
test/image-generation.runtime.live.test.ts - Команда:
pnpm test:live test/image-generation.runtime.live.test.ts - Тестове середовище:
pnpm test:live:media image - Обсяг:
- Перераховує всі зареєстровані Plugin постачальників генерування зображень
- Перед перевіркою використовує вже експортовані змінні середовища постачальника
- За замовчуванням надає ключам 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, що постачається, додайте базову перевірку infer після успішного
проходження перевірки Live постачальника/середовища виконання:
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 "Minimal flat test image: one blue square on a white background, no text." \ --output ./openclaw-infer-image-smoke.png \ --jsonЦе охоплює розбір аргументів CLI, визначення конфігурації/агента за замовчуванням, активацію вбудованого Plugin, спільне середовище виконання генерування зображень і запит до постачальника Live. Очікується, що залежності Plugin будуть наявні до завантаження середовища виконання.
Перевірка 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-набори тестів