brightdata-gatekeeper
brightdata-gatekeeper
Проверка на основе доказательств для самовосстановления Bright Data Scraper Studio.
Bright Data чинит сломанные скрейперы. Но он не решает, правильно ли исправление. Это решает Gatekeeper: он обнаруживает поломку, создаёт бриф на восстановление, затем сверяет предложенное исправление со строками, записанными, пока скрейпер был здоров, и отклоняет его, если они расходятся.
Видео выход | |
Цель мутаций | |
Пошаговое руководство | |
Демо-видео | video/out/gatekeeper-demo.mp4 — 83 с, сгенерировано из HTML, а не запись с экрана |
Какой пробел это закрывает
В документации самого CLI Bright Data это сказано прямым текстом:
Детектор — это вы. CLI никогда не решает сам, что скрейпер сломан, — вы смотрите на результат и решаете. […] Расплывчатые промпты дают расплывчатые исправления.
scraper heal переписывает шаблон коллектора и останавливается у гейта подтверждения. approve фиксирует результат. --auto-approve пропускает вопрос. Ответ никто не проверяет.
Что есть у Bright Data | Что добавляет Gatekeeper |
| Детектор — обнаруживает поломки, которые всё ещё возвращают HTTP 200 |
| Генератор брифа — типизированный список полей с диагнозом |
гейт, | Ревьюер — сверяет превью с эталонными строками |
run → validate → diagnose → brief → heal → verify → approve or reject → re-briefУ этого цикла нет другой точки входа. Python SDK Bright Data охватывает trigger/poll/fetch для Scraper Studio, но не heal или approve; его MCP-сервер с 69 инструментами вообще не содержит инструментов Scraper Studio. Gatekeeper поставляет MCP-сервер, поэтому агент может управлять циклом.
Related MCP server: scraper-health-mcp
Результат, который имеет значение
На живом коллекторе с намеренно сломанной страницей heal от Bright Data восстановил четыре поля корректно и молча уронил пятое в null. units объявлено необязательным, поэтому все проверки схем, типов и диапазонов прошли — ноль выявленных поломок.
--auto-approve would : APPROVE preview passes every field check
gatekeeper decided : REJECT 2/2 golden rows disagree
units: expected '118500', preview has 'null'--auto-approve зафиксировал бы скрейпер, который молча перестал собирать значения units. Причина отклонения попала в следующий бриф, повторная попытка сошлась с эталоном по каждой сравниваемой строке, и исправление было проверено на свежем боевом запуске.
Quick start
uv sync --all-extras
npm install -g @brightdata/cli # Node >= 20
cp .env.example .env # add BRIGHTDATA_API_KEY
gatekeeper doctor # check the setup
gatekeeper spec add specs/mutant-recalls.json
gatekeeper status # survey every collector
gatekeeper check <collector_id> # detect
gatekeeper golden <collector_id> # record known-good rows
gatekeeper heal <collector_id> # run the loop
gatekeeper history <collector_id> # why a fix was committed or rejected
gatekeeper serve # dashboard on :8000В роли MCP-сервера, чтобы агент мог вести цикл:
claude mcp add gatekeeper -- gatekeeper mcppreview_heal_brief показывает промпт, который будет отправлен, не расходуя задачу AI-Flow.
Правила цикла
Никогда не доверяй коду возврата. Запуск с кодом 200 и пустыми полями — именно тот сбой, который важен.
Никогда не лечи блок.
blockedиdead_page— тревожный сигнал, но не изменение вёрстки.Никогда не подтверждай без доказательств. Нет эталонных строк — значит воздержаться, а не подтвердить.
Проверяй после фиксации. Превью — обещание, боевой запуск — доказательство.
Коллекторы
Четыре управляемых коллектора, три из них — реальные сайты, ни один не входит в 1743 готовых скрейпера Bright Data — gatekeeper coverage <url> проверяет это, а не просто утверждает.
Коллектор | Цель | Строкец | Примечание |
| recalls.rycerz.es | 8 | Ломается по требованию; пять макетов, одинаковые значения |
| biorxiv.org | 950 | Стабильная личность, поэтому эталонные строки к переживают изменения |
| news.ycombinator.com | 59 | Вложенный output, уплощённый через |
| lobste.rs | 125 | Пришёл уже сломанным: 114 строк, все поля отсутствуют |
Подробности, включая проблему создания эталонных строк с нуля: docs/SITES.md.
Структура
src/gatekeeper/
detector/ rules, baselines, engine — decides a scraper broke
brief/ diagnosis → typed heal prompt
approver/ judges a preview against golden rows
brightdata/ bdata CLI wrapper, envelopes, coverage check
controller the closed loop
mcp agent-callable tools
api, static the dashboard
mutant/ the mutation target, deployed as a WorkerТесты
$ pytest -q
138 passedБез сети и без кредитов: CLI bdata подменяется заглушкой на границе подпроцесса, а цикл гоняется на скриптовом клиенте, поэтому вся машина состояний — включая сценарий «отклонить и сойтись заново» — проверяется автономном.
Примечания
Развёртывание и публикация панели без учётных данных: docs/DEPLOY.md. Чего живой API научил нас сверх документации: docs/FINDINGS.md.
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Preflight QA for AI-agent deliverables with structured verdicts and repair guidance.
Browser-backed QA with evidence and fix-ready reports for coding agents.
Human-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
Synthetic checks, nightly regression replay and model-drift alerts for AI agents
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables agents to resolve data incidents by preparing remediation, inspecting verification results, and staging for human approval, while integrating with DataHub for evidence.5Apache 2.0
- FlicenseNot gradedqualityBmaintenanceEnables autonomous self-healing scraper fleet management for Bright Data Scraper Studio, with health checking, anomaly detection, and automated AI-driven scraper repair and approval.-

QualityMax QA MCPofficial
AlicenseAqualityAmaintenanceEnables coding agents to independently verify web changes by scanning pages, inspecting UI structure, generating Playwright reproductions, and executing tests with structured QA evidence.459 npm3MIT- AlicenseAqualityCmaintenanceEnables AI coding agents to diagnose and repair Python Selenium UI automation using real evidence from live DOM and test runs, with enforced safety boundaries and verifiable fixes.2MIT