Перейти к основному содержанию
qa-channel — это встроенный синтетический транспорт сообщений для автоматизированного QA OpenClaw. Это не production-канал - он существует, чтобы проверять ту же границу channel plugin, которую используют реальные транспорты, сохраняя состояние детерминированным и полностью доступным для проверки.

Что он делает

  • Грамматика целей класса Slack:
    • dm:<user>
    • channel:<room>
    • group:<room>
    • thread:<room>/<thread>
  • Общие беседы channel: и group: показываются агентам как обращения в группах/каналах, поэтому они проверяют ту же политику маршрутизации видимых ответов и инструментов сообщений, которая используется Discord, Slack, Telegram и похожими транспортами.
  • Синтетическая шина на базе HTTP для внедрения входящих сообщений, захвата исходящих транскриптов, создания веток, реакций, правок, удалений и действий поиска/чтения.
  • Запускаемый на стороне хоста раннер самопроверки, который записывает Markdown-отчет в .artifacts/qa-e2e/.

Конфигурация

{
  "channels": {
    "qa-channel": {
      "baseUrl": "http://127.0.0.1:43123",
      "botUserId": "openclaw",
      "botDisplayName": "OpenClaw QA",
      "allowFrom": ["*"],
      "pollTimeoutMs": 1000
    }
  }
}
Ключи учетной записи:
  • enabled - главный переключатель для этой учетной записи.
  • name - необязательная отображаемая метка.
  • baseUrl - URL синтетической шины.
  • botUserId - идентификатор пользователя бота в стиле Matrix, используемый в грамматике целей.
  • botDisplayName - отображаемое имя для исходящих сообщений.
  • pollTimeoutMs - окно ожидания long-poll. Целое число от 100 до 30000.
  • allowFrom - список разрешенных отправителей (идентификаторы пользователей или "*"). Личные сообщения и политика разрешенных групп используют эти синтетические идентификаторы отправителей.
  • groupPolicy - политика общих комнат: "open" (по умолчанию), "allowlist" или "disabled".
  • groupAllowFrom - необязательный список разрешенных отправителей для общих комнат. Если он не указан при "allowlist", QA Channel использует запасной вариант allowFrom.
  • groups.<room>.requireMention - требовать упоминание бота перед ответом в конкретной группе/комнате канала. groups."*" задает значение по умолчанию.
  • defaultTo - запасная цель, если ни одна не указана.
  • actions.messages / actions.reactions / actions.search / actions.threads - управление доступом к инструментам по действиям.
Ключи для нескольких учетных записей на верхнем уровне:
  • accounts - запись именованных переопределений для отдельных учетных записей, сгруппированных по идентификатору учетной записи.
  • defaultAccount - предпочитаемый идентификатор учетной записи, когда настроено несколько.

Раннеры

Самопроверка на стороне хоста (записывает Markdown-отчет в .artifacts/qa-e2e/):
pnpm qa:e2e
Она проходит через qa-lab, запускает QA-шину из репозитория, загружает встроенный срез runtime qa-channel и выполняет детерминированную самопроверку. Полный набор сценариев на базе репозитория:
pnpm openclaw qa suite
Запускает сценарии параллельно в lane QA gateway. См. обзор QA для сценариев, профилей и режимов провайдеров. QA-сайт на базе Docker (gateway + UI отладчика QA Lab в одном стеке):
pnpm qa:lab:up
Собирает QA-сайт, запускает стек gateway + QA Lab на базе Docker и выводит URL QA Lab. После этого можно выбирать сценарии, выбирать lane модели, запускать отдельные прогоны и наблюдать результаты в реальном времени. Отладчик QA Lab отделен от поставляемого бандла Control UI.

Связанное