API VEGA

Argus

Сервер MCP, который тестирует приложения как настоящий инженер по тестированию — исследуя пользовательские пути, выявляя несценарные баги и доказывая каждое обнаружение перед его сообщением.

Argus — это сервер MCP. Он добавляет QA в браузере с упором на доказательства к Claude Code, Codex, Cursor или любому MCP-хосту, не занимая идентичность агента хоста или более широкую задачу кодирования. Агент исследует, проверяет устойчивость, регистрирует воспроизводимые баги. Каждый сертифицированный вывод повторно подтверждается из чистой загрузки страницы, прежде чем быть сообщением.

Страница продукта · Быстрый старт · Почему Argus уникален · Сравнение · Инструменты · Бенчмарки


Результат

Дайте ему URL — получите отчет о баге с пометкой, воспроизводил ли Argus его независимо, или он был только наблюдаемым:

Зелёный бейдж — вот в чём суть. Любой может «заявить» баг в LLM. Argus перезагружает страницу с нуля и повторно проверяет симптом, прежде чем пометить VERIFIED — поэтому отчет представляет собой список багов, которым можно доверять, а не список догадок для triage.


Как это работает

flowchart LR
    A(["observe"]) --> B{"looks wrong?"}
    B -->|not sure| C["act: click · type · resize · verify"]
    C --> A
    B -->|bug| D["verify_persistence — reload from a clean state"]
    D -->|symptom repeats| E(["VERIFIED"])
    D -->|symptom gone| F(["dropped — no false positive"])
    E --> G[["report: HTML · JSON · JUnit · SARIF"]]

Агент — интеллект. Argus предоставляет краткие инструкции по QA, набор инструментов с описанием целей (click_what("Login button"), а не click(7)), реестр охвата целей и движок воспроизведения, который превращает «модель считает это багом» в «этот баг реальный, вот доказательство».


Быстрый старт

С установленным uv глобальных пакетов Python не требуется. Установите Chromium один раз:

uvx --from playwright playwright install chromium

Затем подключите Argus к вашему MCP-клиенту.

Claude Code

claude mcp add argus -- uvx --from argus-testing argus-mcp

Codex и настольное приложение ChatGPT

CLI Codex, расширение IDE Codex и настольное приложение ChatGPT используют одну и ту же локальную конфигурацию MCP:

codex mcp add argus -- uvx --from argus-testing argus-mcp

Cursor

Кнопка добавляет Argus в Cursor; запустите команду установки Chromium выше перед первым тестом.

Любой stdio MCP-клиент

{
  "mcpServers": {
    "argus": {
      "command": "uvx",
      "args": ["--from", "argus-testing", "argus-mcp"]
    }
  }
}

По умолчанию профиль core обеспечивает основной рабочий поток веб-тестирования без перегрузки хоста каждым специализированным инструментом. Используйте uvx --from argus-testing argus-mcp --list-tools чтобы проверить выбранный профиль, --tool-profile screen для нативного macOS-тестирования или --tool-profile full для полного набора инструментов. Переменная окружения ARGUS_TOOL_PROFILE передаёт ту же настройку.

Затем просто скажите в сессии агента:

"Проверь мое приложение по адресу http://localhost:3000 — найди реальные баги."

И всё. Агент управляет, Argus держит его в рамках и формирует отчет.

Для ограниченного обзора хост может задать explicit goals, constraints и advisory time_budget_minutes. Argus возвращает полный протокол тестирования один раз и сохраняет открытые цели и найденные страницы для последующих наблюдений. Отметьте цель как in_progress перед её началом; когда coverage_update помечает её как exercised или blocked, Argus требует конкретного объяснения и автоматически связывает URL, действия с редактированными значениями, скриншоты, проверки устойчивости, баги и наблюдения, возникшие в этом окне тестирования. Финальные HTML и JSON-отчеты сохраняют как завершённое, так и незавершённое покрытие, не подразумевая, что неполный проход был исчерпывающим.

Установка через pip

pip install argus-testing
playwright install chromium
claude mcp add argus -- argus-mcp

CLI-режим (нет MCP-хоста — используйте свой собственный LLM)

# Использует планировщик на базе LiteLLM. Установите ключ провайдера (OPENAI_API_KEY, DEEPSEEK_API_KEY, …).
uvx --from argus-testing argus http://localhost:3000 --model deepseek/deepseek-chat

# Более высокая полнота: объединение N независимых проходов (дубликаты устранены, повторяемость сохранена)
uvx --from argus-testing argus http://localhost:3000 --passes 3

Screen-мод (macOS) — тестируйте любые нативные приложения, не только веб

pip install 'argus-testing[mac]'
brew install cliclick          # резервный ввод клавиш / координат
argus-mcp --doctor             # проверить разрешения Screen Recording + Accessibility
claude mcp add argus-screen -- argus-mcp --tool-profile screen

Та же описательная настройка инструментов, но цель — любое приложение, находящееся на переднем плане в macOS — Notes, Cursor, Safari, ваша текущая фича. Нет headless Chrome, нет скриптов Playwright. Argus видит то, что видит пользователь, через дерево Accessibility.


Почему Argus отличается

Существующие инструменты тестирования тестируют то, что вы запрограммировали. Playwright и Cypress выполняют ваши утверждения. Argus обнаруживает баги, о которых вы не подумали тестировать — и делает то, что один LLM не может надёжно сделать: доказывает их.

ArgusPlaywright MCPChrome DevTools MCPbrowser-use
Автономное обнаружение неизвестных баговДаНет (драйвер)Нет (отладчик)Частично (задачно-ограничено)
Независимая верификация каждого выводаДа (receipt)НетНетНет (оценка LLM)
Богатый багаж доказательств баговДаНетНетЧастично
Черный ящик (без доступа к репо/коду)ДаДаДаДа
Нулевой риск регрессионного CIДаЧастичноНетЧастично

Это не «худшие» инструменты — это другая работа. Playwright MCP даёт агента в руки, Chrome DevTools MCP — глубокий просмотр сети/памяти/производительности Argus-у—этого нет. Argus — слой, который определяет, что является багом, и доказывает это. Используйте их вместе.


Бенчмарки

$ python -m argus.bench --target all

  buggytasks    22 / 22  = 100 %   ·  механические баги (консольные ошибки, фиктивное удаление, обход аутентификации…)
  darkshop      12 / 12  = 100 %   ·  баги на взгляд человека (фиктивная редкость, «лежачие» уведомления и т. п.)
  ──────────────────────────────────────────────────────────────────────
  total         34 / 34  = 100 %   ·  воспроизводимо из git clone двумя командами

34 / 34 — это потолок возможностей — то, что реально находимо через поверхность инструмента, измеряемое детерминированными скриптами. Оно сознательно отделено от того, как часто конкретная модель LLM помнит использовать инструменты хорошо, что ниже будет опубликовано откровенно.

Истинная память реальных LLM — честная цифра (и почему мы показываем разброс) python -m argus.bench.agent_runner ставит в роли водителя реальную модель и оценивает recall по трём попыткам. Что мы узнали в ходе тестирования:

  • Истинный recall заметно ниже потолка 34/34. Живой драйвер находит лишь часть багов из затащенной совокупности за проход — потолок показывает, что можно найти, а модель — что реально найдётся.

  • Большой разброс — не судите модели по нескольким запускам. Recall по попыткам сильно варьируется; мы публикуем разброс, а не одну «геройскую» цифру.

  • Бенч-мод сыграл в Argus саму собой — crash record_bug на строковом аргументе, пропадание находок, пропуски резольвера на распространённых словоформах. Инструмент-тестовый инструмент протестирован.

  • Прецизионность сохраняется независимо от драйвера. В каждом испытании воспроизводение сохраняло нулевые ложные сертификации — слабая модель найдёт меньше багов, но те, что помечены VERIFIED, остаются реальными.

Что за фикстуры заливаются BuggyTasks (:5555) — 22 механических бага в тестовом приложении: консольные ошибки, мёртвые ссылки, фиктивное удаление (интерфейс пишет «удалено!», но данные сохраняются после обновления), обход аутентификации, NaN-даты, off-by-one, гонки. Уровень, где «скриптовый E2E мог бы найти их».

DarkShop (:5556) — 12 багов, видимых глазу человека, в хорошо выглядящем магазине: встроенная «Only 3 left!» нехватка товара, бейджи -50%, где цена продажи равна оригиналу, баннер «free shipping over $50», противоречащий фиксированной стоимостью в $5 на этапе оплаты, инвертированная визуальная иерархия, изменение состояния между страницами, переработанные названия в навигации. Статический анализ почти ничего не ловит — эти баги требуют агента, который читает страницу и Reasoning.

python test-site/app.py           # BuggyTasks  :5555
python human-eye-fixture/app.py   # DarkShop    :5556
python -m argus.bench --target all

Поверхность инструментов

argus-mcp стартует с сфокусированного профиля core. Ниже описаны все открытые инструменты. Подсчёт также доступен напрямую через установленный сервер:

uvx --from argus-testing argus-mcp --list-tools
uvx --from argus-testing argus-mcp --tool-profile screen --list-tools
uvx --from argus-testing argus-mcp --tool-profile full --list-tools
ПрофильПубличные инструментыПредназначение
core30Основной рабочий процесс веб-QA; по умолчанию.
screen14Фокусированное native macOS тестирование через Accessibility и скриншоты.
full77Всё в core и screen, плюс специалисты по браузеру, состоянию, сети, координациям и обходам.

Профиль Core — 30 инструментов

ИнструментыНазначение
start_sessionЗапуск исследовательского, визуального или регрессионного обзора браузера; может принять цели, ограничения и time_budget_minutes; возвращает одноразовый протокол и начальное наблюдение.
observeВозвращает URL, заголовок, интерактивные элементы по описанию, счётчики, видимую обратную связь, ARIA-дерево и состояние окна просмотра.
coverage_updateОткрыть окно доказательств цели с in_progress, затем пометить как exercised или blocked; конечные состояния требуют объяснения и автоматически связывают доказательства сессии.
click_whatНажать на элемент, максимально соответствующий естественно-языковому описанию; при неоднозначности возвращает кандидатов вместо догадки.
type_into · select_intoРазрешить поле по описанию, затем набрать текст или выбрать опцию.
hover_what · press_keyТестировать наведения и клавиатурные взаимодействия по целям с описанием.
resize · emulate_deviceТестировать точки прелома адаптивности или повторно открыть страницу под реальные мобильные настройки.
upload_fileПрикреплять один или несколько локальных файлов к соответствующему input.
navigate · go_back · scroll_downПеремещаться напрямую, возвращаться по истории браузера или открывать контент ниже прокрутки.
inspect_element · check_layoutИзучать вычисляемые стили, ARIA и разметку, а также сигналы переполнения, обрезки, мелких целей и наложений.
screenshot · screenshot_diffЗахватывать доказательства в виде скриншота экрана, всей страницы или элемента и выводить пиксель-диапазон.
get_errorsОчистить связанные ошибки консоли и HTTP 4xx/5xx, зарегистрированные со времени предыдущего чтения.
capsule_save · capsule_restoreСохранять и восстанавливать именованное аутентифицированное или за Seed-состояние браузера, с опциональной проверкой живости.
verify_persistenceПринудительно перезагрузить и проверить наличие целевого текста; «Saved!» на тосте не доказательство, это — это.
test_action · test_formВыполнить описание-ориентированное действие или отправку формы и вернуть изменение состояния в одном раунде.
check_links · check_performanceПроверить внутренние ссылки текущей страницы и предоставить исходные показатели производительности браузера без автоматической сертификации общих выводов аудита.
regression_checkПовторно проверить зафиксированные находки для текущего origin без необходимости повторной стадии обнаружения.
record_bug · record_observationЗафиксировать воспроизводимый дефект с доказательствами и receipts, или сохранить качественный обзор отдельно от сертифицированных багов.
end_sessionЗавершить активную сессию и вывести отчёты HTML, JSON, JUnit и SARIF.

Отчёты сохраняют оригинальные скриншоты как доказательство и по умолчанию пишут компактные превью WebP в report-assets/, вместо того чтобы встраивать каждый полный PNG в HTML. Установите ARGUS_PORTABLE_REPORT=1, если важнее получить один самодостаточный HTML-файл, чем размер. Вывод JSON включает полные reproduction receipts, контракт покрытия и его структурированные ссылки на доказательства, ограничения, режим обзора, счётчики вызовов инструментов и записанных шагов, метаданные скриншотов и качественные наблюдения. Итоги по тестам JUnit совпадают с выпущенными узлами <failure>.

Screen-профиль — 14 инструментов

ИнструментыНазначение
start_screen_sessionПривязаться к переднему плану или к именованному macOS-приложению после проверки разрешений Screen Recording и Accessibility.
screen_observeВернуть переднее приложение, заголовок окна, ограниченное AX-дерево, координаты экрана и новый скриншот.
screen_click_what · screen_type_into · screen_press_keyРазрешать через AX-дерево и действовать через нативный accessibility, с запасным вариантом cliclick.
screen_wait_for_stableЖдать, пока целевое окно остаётся визуально стабильным в заданном пороге.
screen_launch · screen_quit · screen_is_runningУправлять и проверять приложение по локальному имени, идентификатору пакета или абсолютному пути.
screen_screenshot_regionЗахватить точную прямоугольную область экрана для детализированного визуального доказательства.
screen_session_statusСообщать о прошедшем времени, оставшемся бюджете сессии, количестве действий и пути к файлу прерывания.
record_bug · record_observation · end_sessionИспользовать общие средства доказательств, отчетности и завершения в режиме screen.

Безопасность: ограничение по времени вызова, лимит сессии в 30 минут, файл паники ~/.argus/abort, который останавливает все последующие действия, и автоматическая цепочка скриншотов до/после каждого действия.

Полный профиль — 77 инструментов Полный профиль включает все инструменты core и screen, плюс 36 специальных инструментов. Используйте, когда рабочий процесс действительно нуждается в низкоуровневом состоянии, инъекции ошибок, контроле нескольких вкладок, координатах или обходах.

Дополнительные инструментыНазначение
paste_into · right_clickВыполнить реальный клипборд-вставку или открыть контекстное меню цели.
emulate_mediaЭмулировать темную/светлую тему и предпочтения с минимизированным движением.
click_at · type_at · hover_at · drag_at · drag_whatРаботать с холстами/WebGL, раскрытием наведения и перетаскиванием по координатам или по описанию.
drop_fileПеретащить реальный файл в соответствующую зону.drop.
set_dialog_handlerВ очереди подготовить ответ на следующий JavaScript-диалог (accept/dismiss/prompt).
eval_jsВыполнять произвольный JavaScript в контексте страницы. Работает при включённом параметре --unsafe на сервере.
network_requests · network_requestПросмотреть ограниченный лог запросов или детализировать один соответствующий запрос.
network_mock · network_unmock · network_clear_mocks · network_clear_logВставлять готовые HTTP-ответы и независимо сбрасывать активные моки или перехваченный трафик.
cookies_get · cookies_set · cookies_clearПросматривать, задавать или очищать cookies контекста браузера.
storage_get · storage_set · storage_remove · storage_clearПросматривать и изменять page-local localStorage или sessionStorage.
tabs_list · tabs_switch · tabs_closeУправлять OAuth, платежами и другими попапами или мульти-вкладками.
wait_for_text · wait_for_requestЖдать появления конкретного видимого текста или соответствующего исходящего трафика с ограничением по времени.
get_downloadsПросматривать файлы, загруженные во время сессии, их пути и размеры.
crawl_siteПробежать ограниченные внутренние страницы и собрать события браузера, результаты ссылок и доказательства производительности.
screen_click_at · screen_hover_at · screen_drag · screen_keys · screen_type_atИспользовать абсолютные координаты экрана и многоклавишные последовательности, когда нативное AX-дерево не даёт полезного элемента.

Чтобы открыть eval_js как рабочий инструмент, а не отключённую заглушку безопасности:

uvx --from argus-testing argus-mcp --tool-profile full --unsafe

Локальная безопасность и приватность

Argus работает на вашем устройстве и не отправляет телеметрию в сервис Argus. Отчёты и скриншоты сохраняются по умолчанию в ./argus-reports; ваш MCP-хост и его настроенный провайдер моделей всё равно могут получать результаты инструментов, включённые в диалог. Browser-действия и нативные macOS-контроли могут вызывать реальные побочные эффекты, поэтому по возможности используйте тестовые учётные записи и данные.

Прочтите полное положение о конфиденциальности и политику безопасности перед использованием Argus против чувствительных систем.


Философия

Доверяйте агенту, а не симулируйте интеллект Argus предполагает водителя уровня Opus. Статические правила, которые пытаются «быть» интеллектуальным слоем, добавляют обслуживание и ложные срабатывания и отвлекают от того, что агент реально видел. Поэтому detector.py минимален: он фиксирует только те два канала, которые агент буквально не может увидеть (поток консольных событий и HTTP-слой). «Это тост вводит в заблуждение? У визуальной иерархии есть ошибки? Этот счёт неверен?» — агент читает observe() и принимает решение.

Руководство по обзору; не перегружайте хост-задачу Глобальная инструкция намеренно короткая, чтобы не повторять длинный QA-промпт в каждом описании инструмента MCP. start_session возвращает полный протокол доказательств, целей, ограничений и бюджета единожды; наблюдения затем показывают только компактный живой реестр покрытия. Argus остаётся возможностью внутри текущей задачи пользователя: он не заменяет реализацию, не подменяет идентичность хоста и не даёт полномочий на необратимые внешние действия.

Описание по ключевым характеристикам, а не по индексу click_what("Login button"), а не click(7). Элементы по индексу — ненадёжная абстракция даже внутри одного observe. Умелый агент описывает то, чем он является, и разрешение сопоставляет это с нужным элементом — отказываясь промахнуться из-за неоднозначности, а не угадывая.


Структура проекта

argus/
├── mcp_server.py     # поверхность инструментов + инструкции по ролям + reproduction-receipt engine
├── browser.py        # Back-end Playwright: извлечение DOM/ARIA, capsule/replay
├── resolver.py       # description → element (web + screen)
├── reporter.py       # HTML + JSON + JUnit + SARIF
├── detector.py       # захват консоли + сети (только)
├── cli.py            # argus (explore) + argus-regression
├── bench/            # детерминированный потолок + реальная recall от LLM
└── screen/           # macOS AX-бэкенд, разрешения, безопасность
test-site/            # BuggyTasks  (22 механических бага)
human-eye-fixture/    # DarkShop    (12 багов "на глаз")

MIT licensed · Страница продукта · Руководство по установке агента · Конфиденциальность · Безопасность · Разработано Yichen Wu