Тестирование
В OpenClaw есть три набора тестов Vitest (модульные/интеграционные, e2e, live) и небольшой набор Docker-раннеров. Этот документ — руководство «как мы тестируем»:
- Что покрывает каждый набор (и что он намеренно не покрывает)
- Какие команды запускать для распространённых рабочих процессов (локально, перед пушем, отладка)
- Как live-тесты обнаруживают учётные данные и выбирают модели/провайдеры
- Как добавлять регрессионные тесты для проблем с реальными моделями/провайдерами
Быстрый старт
В большинстве случаев:
- Полная проверка (ожидается перед пушем):
pnpm build && pnpm check && pnpm test
Когда вы касаетесь тестов или хотите дополнительной уверенности:
- Проверка покрытия:
pnpm test:coverage - Набор E2E:
pnpm test:e2e
При отладке реальных провайдеров/моделей (требуются реальные учётные данные):
- Набор live (модели + проверки инструмента/образа шлюза):
pnpm test:live
Совет: когда нужен только один падающий кейс, предпочтительнее сузить live-тесты с помощью переменных окружения allowlist, описанных ниже.
Наборы тестов (что где запускается)
Думайте о наборах как о «возрастающей реалистичности» (и возрастающей хрупкости/стоимости):
Модульные / интеграционные (по умолчанию)
- Команда:
pnpm test - Конфиг:
scripts/test-parallel.mjs(запускаетvitest.unit.config.ts,vitest.extensions.config.ts,vitest.gateway.config.ts) - Файлы:
src/**/*.test.ts,extensions/**/*.test.ts - Область:
- Чистые модульные тесты
- In-process интеграционные тесты (аутентификация шлюза, маршрутизация, инструменты, парсинг, конфигурация)
- Детерминированные регрессии для известных багов
- Ожидания:
- Запускается в CI
- Не требуются реальные ключи
- Должны быть быстрыми и стабильными
- Примечание о пуле:
- OpenClaw использует Vitest
vmForksна Node 22/23 для более быстрого разделения модульных тестов. - На Node 24+ OpenClaw автоматически откатывается к обычным
forks, чтобы избежать ошибок линковки Node VM (ERR_VM_MODULE_LINK_FAILURE/module is already linked). - Переопределите вручную с помощью
OPENCLAW_TEST_VM_FORKS=0(принудительноforks) илиOPENCLAW_TEST_VM_FORKS=1(принудительноvmForks).
- OpenClaw использует Vitest
E2E (smoke-тест шлюза)
- Команда:
pnpm test:e2e - Конфиг:
vitest.e2e.config.ts - Файлы:
src/**/*.e2e.test.ts - Параметры выполнения по умолчанию:
- Использует Vitest
vmForksдля более быстрого запуска файлов. - Использует адаптивных воркеров (CI: 2-4, локально: 4-8).
- Запускается в тихом режиме по умолчанию для снижения накладных расходов на ввод-вывод в консоли.
- Использует Vitest
- Полезные переопределения:
OPENCLAW_E2E_WORKERS=<n>для принудительного задания количества воркеров (ограничено 16).OPENCLAW_E2E_VERBOSE=1для повторного включения подробного вывода в консоль.
- Область:
- Сквозное поведение шлюза с несколькими экземплярами
- Поверхности WebSocket/HTTP, сопряжение узлов и более тяжёлые сетевые взаимодействия
- Ожидания:
- Запускается в CI (когда включено в пайплайне)
- Не требуются реальные ключи
- Больше подвижных частей, чем в модульных тестах (может быть медленнее)
Live (реальные провайдеры + реальные модели)
- Команда:
pnpm test:live - Конфиг:
vitest.live.config.ts - Файлы:
src/**/*.live.test.ts - По умолчанию: включено командой
pnpm test:live(устанавливаетOPENCLAW_LIVE_TEST=1) - Область:
- «Работает ли этот провайдер/модель сегодня с реальными учётными данными?»
- Отлавливает изменения формата провайдера, особенности tool-calling, проблемы аутентификации и поведение rate limit
- Ожидания:
- По замыслу нестабильны в CI (реальные сети, реальные политики провайдеров, квоты, сбои)
- Стоят денег / используют лимиты запросов
- Предпочтительнее запускать суженные подмножества, а не «всё»
- Live-запуски будут загружать
~/.profile, чтобы подхватить отсутствующие API-ключи
- Ротация API-ключей (специфичная для провайдера): установите
*_API_KEYSв формате с запятой/точкой с запятой или*_API_KEY_1,*_API_KEY_2(например,OPENAI_API_KEYS,ANTHROPIC_API_KEYS,GEMINI_API_KEYS) или переопределение для конкретного live-теста черезOPENCLAW_LIVE_*_KEY; тесты повторяются при ответах с rate limit.
Какой набор мне запускать?
Используйте эту таблицу решений:
- Редактирование логики/тестов: запустите
pnpm test(иpnpm test:coverage, если много изменили) - Касаетесь сетевого взаимодействия шлюза / протокола WS / сопряжения: добавьте
pnpm test:e2e - Отладка «мой бот не работает» / специфичных для провайдера сбоев / tool calling: запустите суженный
pnpm test:live
Live: проверка возможностей Android-узла
- Тест:
src/gateway/android-node.capabilities.live.test.ts - Скрипт:
pnpm android:test:integration - Цель: вызвать каждую команду, рекламируемую в данный момент подключённым Android-узлом и проверить поведение контракта команды.
- Область:
- Предварительно настроенная/ручная подготовка (набор не устанавливает/не запускает/не сопрягает приложение).
- Построчная валидация
node.invokeшлюза для выбранного Android-узла.
- Необходимая предварительная настройка:
- Android-приложение уже подключено + сопряжено со шлюзом.
- Приложение остаётся на переднем плане.
- Разрешения/согласие на захват предоставлены для возможностей, которые должны проходить.
- Опциональные переопределения цели:
OPENCLAW_ANDROID_NODE_IDилиOPENCLAW_ANDROID_NODE_NAME.OPENCLAW_ANDROID_GATEWAY_URL/OPENCLAW_ANDROID_GATEWAY_TOKEN/OPENCLAW_ANDROID_GATEWAY_PASSWORD.
- Подробности полной настройки Android: Android App
Live: smoke-тест моделей (ключи профиля)
Live-тесты разделены на два слоя, чтобы изолировать сбои:
- «Прямая модель» говорит нам, что провайдер/модель вообще могут ответить с данным ключом.
- «Smoke-тест шлюза» говорит нам, что полный пайплайн шлюза+агента работает для этой модели (сессии, история, инструменты, политика песочницы и т.д.).
Слой 1: Прямое завершение модели (без шлюза)
- Тест:
src/agents/models.profiles.live.test.ts - Цель:
- Перечислить обнаруженные модели
- Использовать
getApiKeyForModelдля выбора моделей, для которых есть учётные данные - Запустить небольшое завершение для каждой модели (и целевые регрессии, где нужно)
- Как включить:
pnpm test:live(илиOPENCLAW_LIVE_TEST=1при прямом вызове Vitest)
- Установите
OPENCLAW_LIVE_MODELS=modern(илиall, алиас для modern), чтобы фактически запустить этот набор; иначе он пропускается, чтобыpnpm test:liveоставался сфокусированным на smoke-тесте шлюза - Как выбрать модели:
OPENCLAW_LIVE_MODELS=modernдля запуска современного allowlist (Opus/Sonnet/Haiku 4.5, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.5, Grok 4)OPENCLAW_LIVE_MODELS=all— это алиас для современного allowlist- или
OPENCLAW_LIVE_MODELS="openai/gpt-5.2,anthropic/claude-opus-4-6,..."(allowlist через запятую)
- Как выбрать провайдеров:
OPENCLAW_LIVE_PROVIDERS="google,google-antigravity,google-gemini-cli"(allowlist через запятую)
- Откуда берутся ключи:
- По умолчанию: хранилище профилей и резервные env-переменные
- Установите
OPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1, чтобы принудительно использовать только хранилище профилей
- Зачем это нужно:
- Отделяет «API провайдера сломан / ключ невалиден» от «пайплайн агента шлюза сломан»
- Содержит небольшие изолированные регрессии (пример: воспроизведение рассуждений OpenAI Responses/Codex Responses + потоки tool-call)
Слой 2: Smoke-тест шлюза + dev-агента (что фактически делает «@openclaw»)
- Тест:
src/gateway/gateway-models.profiles.live.test.ts - Цель:
- Запустить in-process шлюз
- Создать/обновить сессию
agent:dev:*(переопределение модели на запуск) - Перебрать модели с ключами и проверить:
- «Осмысленный» ответ (без инструментов)
- Работает реальный вызов инструмента (read probe)
- Опциональные дополнительные проверки инструментов (exec+read probe)
- Регрессионные пути OpenAI (tool-call-only → follow-up) продолжают работать
- Детали проверок (чтобы можно было быстро объяснить сбои):
readprobe: тест записывает nonce-файл в рабочее пространство и просит агентапрочитатьего и вернуть nonce.exec+readprobe: тест просит агентавыполнитьзапись nonce во временный файл, затемпрочитатьего обратно.- image probe: тест прикрепляет сгенерированный PNG (кот + рандомизированный код) и ожидает, что модель вернёт
cat <КОД>. - Ссылка на реализацию:
src/gateway/gateway-models.profiles.live.test.tsиsrc/gateway/live-image-probe.ts.
- Как включить:
pnpm test:live(илиOPENCLAW_LIVE_TEST=1при прямом вызове Vitest)
- Как выбрать модели:
- По умолчанию: современный allowlist (Opus/Sonnet/Haiku 4.5, GPT-5.x + Codex, Gemini 3, GLM 4.7, MiniMax M2.5, Grok 4)
OPENCLAW_LIVE_GATEWAY_MODELS=all— это алиас для современного allowlist- Или установите
OPENCLAW_LIVE_GATEWAY_MODELS="provider/model"(или список через запятую) для сужения
- Как выбрать провайдеров (избежать «OpenRouter всё»):
OPENCLAW_LIVE_GATEWAY_PROVIDERS="google,google-antigravity,google-gemini-cli,openai,anthropic,zai,minimax"(allowlist через запятую)
- Проверки инструментов и изображений всегда включены в этом live-тесте:
readprobe +exec+readprobe (нагрузка на инструменты)- image probe запускается, когда модель заявляет о поддержке ввода изображений
- Поток (высокоуровнево):
- Тест генерирует крошечный PNG с «CAT» + случайным кодом (
src/gateway/live-image-probe.ts) - Отправляет его через
agentattachments: [{ mimeType: "image/png", content: "<base64>" }] - Шлюз парсит вложения в
images[](src/gateway/server-methods/agent.ts+src/gateway/chat-attachments.ts) - Встроенный агент пересылает мультимодальное пользовательское сообщение модели
- Проверка: ответ содержит
cat+ код (допуск OCR: допускаются мелкие ошибки)
- Тест генерирует крошечный PNG с «CAT» + случайным кодом (
Совет: чтобы увидеть, что можно протестировать на вашей машине (и точные provider/model id), выполните:
openclaw models list
openclaw models list --json
Live: smoke-тест setup-token Anthropic
- Тест:
src/agents/anthropic.setup-token.live.test.ts - Цель: проверить, что setup-token Claude Code CLI (или вставленный setup-token профиля) может завершить промпт Anthropic.
- Включить:
pnpm test:live(илиOPENCLAW_LIVE_TEST=1при прямом вызове Vitest)OPENCLAW_LIVE_SETUP_TOKEN=1
- Источники токена (выберите один):
- Профиль:
OPENCLAW_LIVE_SETUP_TOKEN_PROFILE=anthropic:setup-token-test - Сырой токен:
OPENCLAW_LIVE_SETUP_TOKEN_VALUE=sk-ant-oat01-...
- Профиль:
- Переопределение модели (опционально):
OPENCLAW_LIVE_SETUP_TOKEN_MODEL=anthropic/claude-opus-4-6
Пример настройки:
openclaw models auth paste-token --provider anthropic --profile-id anthropic:setup-token-test
OPENCLAW_LIVE_SETUP_TOKEN=1 OPENCLAW_LIVE_SETUP_TOKEN_PROFILE=anthropic:setup-token-test pnpm test:live src/agents/anthropic.setup-token.live.test.ts
Live: smoke-тест CLI-бэкенда (Claude Code CLI или другие локальные CLI)
- Тест:
src/gateway/gateway-cli-backend.live.test.ts - Цель: проверить пайплайн Шлюз + агент, используя локальный CLI-бэкенд, не затрагивая вашу конфигурацию по умолчанию.
- Включить:
pnpm test:live(илиOPENCLAW_LIVE_TEST=1при прямом вызове Vitest)OPENCLAW_LIVE_CLI_BACKEND=1
- Значения по умолчанию:
- Модель:
claude-cli/claude-sonnet-4-6 - Команда:
claude - Аргументы:
["-p","--output-format","json","--permission-mode","bypassPermissions"]
- Модель:
- Переопределения (опционально):
OPENCLAW_LIVE_CLI_BACKEND_MODEL="claude-cli/claude-opus-4-6"OPENCLAW_LIVE_CLI_BACKEND_MODEL="codex-cli/gpt-5.4"OPENCLAW_LIVE_CLI_BACKEND_COMMAND="/full/path/to/claude"OPENCLAW_LIVE_CLI_BACKEND_ARGS='["-p","--output-format","json","--permission-mode","bypassPermissions"]'OPENCLAW_LIVE_CLI_BACKEND_CLEAR_ENV='["ANTHROPIC_API_KEY","ANTHROPIC_API_KEY_OLD"]'OPENCLAW_LIVE_CLI_BACKEND_IMAGE_PROBE=1для отправки реального вложения изображения (пути внедряются в промпт).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_DISABLE_MCP_CONFIG=0чтобы оставить конфигурацию MCP Claude Code CLI включённой (по умолчанию отключает конфигурацию MCP с помощью временного пустого файла).
Пример:
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
Рекомендуемые live-рецепты
Узкие, явные allowlist'ы самые быстрые и наименее хрупкие:
- Одна модель, прямая (без шлюза):
OPENCLAW_LIVE_MODELS="openai/gpt-5.2" pnpm test:live src/agents/models.profiles.live.test.ts
- Одна модель, smoke-тест шлюза:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
- Tool calling для нескольких провайдеров:
OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2,anthropic/claude-opus-4-6,google/gemini-3-flash-preview,zai/glm-4.7,minimax/minimax-m2.5" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
- Фокус на Google (Gemini API key + Antigravity):
- Gemini (API key):
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 (API key):
Примечания:
google/...использует Gemini API (API key).google-antigravity/...использует мост Antigravity OAuth (агентская конечная точка в стиле Cloud Code Assist).google-gemini-cli/...использует локальный Gemini CLI на вашей машине (отдельная аутентификация + особенности инструментов).- Gemini API vs Gemini CLI:
- API: OpenClaw вызывает размещённый Gemini API Google по HTTP (API key / аутентификация профиля); это то, что большинство пользователей подразумевает под «Gemini».
- CLI: OpenClaw запускает локальный бинарник
gemini; у него своя аутентификация и может вести себя иначе (поддержка стриминга/инструментов/расхождение версий).
Live: матрица моделей (что мы покрываем)
Нет фиксированного «списка моделей для CI» (live — опциональный), но это рекомендуемые модели для регулярного покрытия на машине разработчика с ключами.
Современный smoke-набор (tool calling + изображения)
Это «распространённые модели», которые мы ожидаем держать в рабочем состоянии:
- OpenAI (не-Codex):
openai/gpt-5.2(опционально:openai/gpt-5.1) - OpenAI Codex:
openai-codex/gpt-5.4 - Anthropic:
anthropic/claude-opus-4-6(илиanthropic/claude-sonnet-4-5) - Google (Gemini API):
google/gemini-3-pro-previewиgoogle/gemini-3-flash-preview(избегайте старых моделей Gemini 2.x) - Google (Antigravity):
google-antigravity/claude-opus-4-6-thinkingиgoogle-antigravity/gemini-3-flash - Z.AI (GLM):
zai/glm-4.7 - MiniMax:
minimax/minimax-m2.5
Запустите smoke-тест шлюза с инструментами + изображениями: OPENCLAW_LIVE_GATEWAY_MODELS="openai/gpt-5.2,openai-codex/gpt-5.4,anthropic/claude-opus-4-6,google/gemini-3-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.5" pnpm test:live src/gateway/gateway-models.profiles.live.test.ts
Базовый уровень: tool calling (Read + опционально Exec)
Выберите хотя бы одну на семейство провайдеров:
- OpenAI:
openai/gpt-5.2(илиopenai/gpt-5-mini) - Anthropic:
anthropic/claude-opus-4-6(илиanthropic/claude-sonnet-4-5) - Google:
google/gemini-3-flash-preview(илиgoogle/gemini-3-pro-preview) - Z.AI (GLM):
zai/glm-4.7 - MiniMax:
minimax/minimax-m2.5
Опциональное дополнительное покрытие (желательно иметь):
- xAI:
xai/grok-4(или последняя доступная) - Mistral:
mistral/… (выберите одну модель с поддержкой «tools», которая у вас включена) - Cerebras:
cerebras/… (если есть доступ) - LM Studio:
lmstudio/… (локальная; tool calling зависит от режима API)
Vision: отправка изображений (вложение → мультимодальное сообщение)
Включите хотя бы одну модель с поддержкой изображений в OPENCLAW_LIVE_GATEWAY_MODELS (Claude/Gemini/OpenAI vision-capable варианты и т.д.), чтобы проверить image probe.
Агрегаторы / альтернативные шлюзы
Если у вас включены ключи, мы также поддерживаем тестирование через:
- OpenRouter:
openrouter/...(сотни моделей; используйтеopenclaw models scan, чтобы найти кандидатов с поддержкой инструментов+изображений) - OpenCode Zen:
opencode/...(аутентификация черезOPENCODE_API_KEY/OPENCODE_ZEN_API_KEY)
Больше провайдеров, которых можно включить в live-матрицу (если есть учётные данные/конфигурация):
- Встроенные:
openai,openai-codex,anthropic,google,google-vertex,google-antigravity,google-gemini-cli,zai,openrouter,opencode,xai,groq,cerebras,mistral,github-copilot - Через
models.providers(пользовательские конечные точки):minimax(облако/API), плюс любой OpenAI/Anthropic-совместимый прокси (LM Studio, vLLM, LiteLLM и т.д.)
Совет: не пытайтесь жёстко прописать «все модели» в документации. Авторитетный список — это то, что возвращает discoverModels(...) на вашей машине + какие ключи доступны.
Учётные данные (никогда не коммитить)
Live-тесты обнаруживают учётные данные так же, как это делает CLI. Практические следствия:
- Если CLI работает, live-тесты должны найти те же ключи.
- Если live-тест говорит «нет учётных данных», отлаживайте так же, как отлаживали бы
openclaw models list/ выбор модели. - Хранилище профилей:
~/.openclaw/credentials/(предпочтительно; что означает «ключи профиля» в тестах) - Конфиг:
~/.openclaw/openclaw.json(илиOPENCLAW_CONFIG_PATH)
Если вы хотите полагаться на env-ключи (например, экспортированные в вашем ~/.profile), запускайте локальные тесты после source ~/.profile или используйте Docker-раннеры ниже (они могут монтировать ~/.profile в контейнер).
Deepgram live (аудио транскрипция)
- Тест:
src/media-understanding/providers/deepgram/audio.live.test.ts - Включить:
DEEPGRAM_API_KEY=... DEEPGRAM_LIVE_TEST=1 pnpm test:live src/media-understanding/providers/deepgram/audio.live.test.ts
BytePlus coding plan live
- Тест:
src/agents/byteplus.live.test.ts - Включить:
BYTEPLUS_API_KEY=... BYTEPLUS_LIVE_TEST=1 pnpm test:live src/agents/byteplus.live.test.ts - Опциональное переопределение модели:
BYTEPLUS_CODING_MODEL=ark-code-latest
Docker-раннеры (опциональные проверки «работает в Linux»)
Они запускают pnpm test:live внутри Docker-образа репозитория, монтируя вашу локальную директорию конфигурации и рабочее пространство (и загружая ~/.profile, если смонтирован):
- Прямые модели:
pnpm test:docker:live-models(скрипт:scripts/test-live-models-docker.sh) - Шлюз + dev-агент:
pnpm test:docker:live-gateway(скрипт:scripts/test-live-gateway-models-docker.sh) - Мастер онбординга (TTY, полное создание каркаса):
pnpm test:docker:onboard(скрипт:scripts/e2e/onboard-docker.sh) - Сетевое взаимодействие шлюза (два контейнера, WS auth + health):
pnpm test:docker:gateway-network(скрипт:scripts/e2e/gateway-network-docker.sh) - Плагины (загрузка пользовательских расширений + smoke-тест реестра):
pnpm test:docker:plugins(скрипт:scripts/e2e/plugins-docker.sh)
Ручной smoke-тест простого языка ACP (не CI):
bun scripts/dev/discord-acp-plain-language-smoke.ts --channel <discord-channel-id> ...- Сохраните этот скрипт для рабочих процессов регрессии/отладки. Он может снова понадобиться для валидации маршрутизации тредов ACP, поэтому не удаляйте его.
Полезные переменные окружения:
OPENCLAW_CONFIG_DIR=...(по умолчанию:~/.openclaw) монтируется в/home/node/.openclawOPENCLAW_WORKSPACE_DIR=...(по умолчанию:~/.openclaw/workspace) монтируется в/home/node/.openclaw/workspaceOPENCLAW_PROFILE_FILE=...(по умолчанию:~/.profile) монтируется в/home/node/.profileи загружается перед запуском тестовOPENCLAW_LIVE_GATEWAY_MODELS=.../OPENCLAW_LIVE_MODELS=...для сужения запускаOPENCLAW_LIVE_REQUIRE_PROFILE_KEYS=1чтобы гарантировать, что учётные данные берутся из хранилища профилей (не из env)
Проверка документации
Запускайте проверки документации после правок: pnpm docs:list.
Офлайн-регрессии (безопасные для CI)
Это «реальные пайплайновые» регрессии без реальных провайдеров:
- Tool calling шлюза (mock OpenAI, реальный шлюз + цикл агента):
src/gateway/gateway.test.ts(кейс: «запускает mock OpenAI tool call сквозным образом через цикл агента шлюза») - Мастер шлюза (WS
wizard.start/wizard.next, запись конфига + принудительная аутентификация):src/gateway/gateway.test.ts(кейс: «запускает мастер по ws и записывает конфиг токена аутентификации»)
Оценки надёжности агента (навыки)
У нас уже есть несколько безопасных для CI тестов, которые ведут себя как «оценки надёжности агента»:
- Mock tool-calling через реальный шлюз + цикл агента (
src/gateway/gateway.test.ts). - Сквозные потоки мастера, которые проверяют подключение сессий и эффекты конфигурации (
src/gateway/gateway.test.ts).
Что всё ещё отсутствует для навыков (см. Skills):
- Принятие решений: когда навыки перечислены в промпте, выбирает ли агент правильный навык (или избегает нерелевантных)?
- Соответствие: читает ли агент
SKILL.mdперед использованием и следует ли требуемым шагам/аргументам? - Контракты рабочих процессов: многопользовательские сценарии, которые проверяют порядок инструментов, перенос истории сессий и границы песочницы.
Будущие оценки должны оставаться в первую очередь детерминированными:
- Запускатель сценариев, использующий mock-провайдеры для проверки вызовов инструментов + порядка, чтения файлов навыков и подключения сессий.
- Небольшой набор сценариев, сфокусированных на навыках (использование vs избегание, контроль, внедрение промпта).
- Опциональные live-оценки (опциональные, управляемые env) только после того, как безопасный для CI набор будет на месте.
Добавление регрессий (руководство)
Когда вы исправляете проблему провайдера/модели, обнаруженную в live:
- Добавьте безопасную для CI регрессию, если возможно (mock/stub провайдера, или захватите точное преобразование формы запроса)
- Если она по своей природе только live (rate limits, политики аутентификации), оставьте live-тест узким и опциональным через env-переменные
- Предпочитайте нацеливаться на наименьший слой