[Go to site: main page, start]

Skip to main content

Command Palette

Search for a command to run...

Облачные агенты

Bugbot

Bugbot выполняет ревью pull request и выявляет баги, уязвимости и проблемы с качеством кода.

Настройте Bugbot в разделе автоматизации.

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

Bugbot анализирует диффы PR и оставляет комментарии с объяснениями и предложениями по исправлению. Он запускается автоматически при каждом обновлении PR или вручную.

  • Выполняет автоматические ревью при каждом обновлении PR
  • Ручной запуск: оставьте комментарий cursor review или bugbot run в любом PR
  • Использует существующие комментарии PR как контекст: читает связанные комментарии PR (верхнего уровня и встроенные), чтобы не дублировать предложения и учитывать предыдущие отзывы
  • Ссылки Fix in Cursor открывают задачи прямо в Cursor
  • Ссылки Fix in Web открывают задачи прямо в cursor.com/agents

Настройка

Подключите репозитории через дашборд Cursor, чтобы начать использовать Bugbot.

После подключения откройте Bugbot в разделе «Автоматизации», чтобы включить его для нужных репозиториев.

Статусы CI-проверок

Bugbot публикует статус для каждого запуска ревью. На GitHub он отображается как проверка с названием Cursor Bugbot. На Bitbucket — как статус сборки с ключом cursor-bugbot. На Azure DevOps — как статус с контекстом cursor-bugbot/review. Возможны следующие результаты:

  • success: Bugbot не обнаружил проблем, и не осталось неразрешённых комментариев Bugbot из предыдущих запусков.
  • neutral: Bugbot обнаружил проблемы, запуск был отменён из-за более нового коммита или Bugbot столкнулся с внутренней ошибкой. Это результат по умолчанию, когда Bugbot сообщает о результатах.
  • failure: Bugbot обнаружил проблемы, а проверка настроена на сбой при наличии неразрешённых проблем.

Если вы используете защиту веток, сделайте проверку или статус сборки Bugbot обязательными, чтобы Bugbot запускался перед слиянием. Требование только статуса не блокирует слияния при наличии результатов, поскольку для них по умолчанию используется neutral. Если для вашей организации доступен режим сбоя при наличии неразрешённых проблем, включите его, чтобы неразрешённые результаты приводили к статусу сбоя. Bugbot не выдаёт результат skipped.

Когда включён Bugbot Autofix, GitHub также может отображать отдельную проверку Cursor Bugbot Autofix. Эта проверка использует только success или neutral.

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

Аналитика

Откройте Bugbot в разделе «Автоматизация», чтобы просмотреть активность и результаты ревью.

API

Enterprise-команды могут использовать Bugbot API для запуска ревью и получения аналитики по каждому ревью. Создайте API-ключ в Cursor Dashboard → API Keys и настройте базовую аутентификацию.

Запуск ревью

POST/bugbot/review

Поставьте ревью Bugbot в очередь для pull request или merge request. Ответ возвращается после постановки ревью в очередь; само ревью выполняется асинхронно.

Требуется API-ключ с областью действия admin:*. Для конечной точки действует ограничение: 30 запросов в минуту на команду.

Установите dryRun в true, чтобы запустить полный конвейер анализа без публикации комментариев к ревью, inline-комментариев, проверок и других побочных эффектов в SCM. Ревью в режиме dry-run всё равно сохраняют замечания и тарифицируются как обычные ревью. Получить их можно через GET /analytics/team/bugbot-reviews. Для dry-run запросов также действует ограничение: 10 запросов в минуту на команду.

Тело запроса

prUrl строка (обязательно)

Полный URL pull request в GitHub или merge request в GitLab.

dryRun логическое значение (необязательно)

При значении true запускает анализ и сохраняет замечания, ничего не публикуя в SCM-провайдере. По умолчанию: false.
curl --request POST \  --url https://api.cursor.com/bugbot/review \  -u YOUR_API_KEY: \  --header 'Content-Type: application/json' \  --data '{    "prUrl": "https://github.com/your-org/your-repo/pull/42"  }'
curl --request POST \  --url https://api.cursor.com/bugbot/review \  -u YOUR_API_KEY: \  --header 'Content-Type: application/json' \  --data '{    "prUrl": "https://github.com/your-org/your-repo/pull/42",    "dryRun": true  }'

Ответ:

{  "outcome": "success",  "message": "Bugbot review queued",  "request_id": "6e0d261c-86a2-4383-89f0-9162c1c10662",  "dry_run": false}

В ответе на dry-run используется "message": "Bugbot dry-run review queued" и "dry_run": true.

Сохраните request_id, чтобы найти завершённое ревью в конечной точке аналитики.

Если Bugbot не может провести ревью pull request, конечная точка возвращает 400 Bad Request с указанием причины:

{  "outcome": "error",  "message": "Bugbot is disabled for this repository"}

Аналитика ревью

GET/analytics/team/bugbot-reviews

Возвращает по одному элементу для каждого завершённого ревью Bugbot: проверенный коммит, количество найденных проблем, списанную стоимость и данные об устранении каждой проблемы.

Включает опубликованные и dry-run ревью. Опубликованные проблемы определяются по comment_id и resolution_status. Для проблем из dry-run вместо этого возвращаются title, description и locations, так как в SCM ничего не публикуется.

Требуется API-ключ с областью действия read:*.

Параметры запроса

startDate string (необязательный)

Начало периода аналитики. По умолчанию — 7 дней назад. См. Форматы дат.

endDate string (необязательный)

Конец периода аналитики. По умолчанию — сейчас. См. Форматы дат.

repo string (необязательный)

Фильтр репозитория в формате host/owner/repo. Протокол и суффикс .git необязательны.

prNumber number (необязательный)

Номер pull request или merge request.

page number (необязательный)

Номер страницы для пагинации. По умолчанию — 1.

pageSize number (необязательный)

Количество ревью на странице. По умолчанию — 100, максимум — 250.

dryRun boolean (необязательный)

Фильтровать только dry-run (true) или опубликованные (false) ревью.
curl --get https://api.cursor.com/analytics/team/bugbot-reviews \  -u YOUR_API_KEY: \  --data-urlencode 'startDate=2026-06-01' \  --data-urlencode 'endDate=2026-06-29' \  --data-urlencode 'repo=github.com/your-org/your-repo' \  --data-urlencode 'prNumber=42' \  --data-urlencode 'page=1' \  --data-urlencode 'pageSize=100'
curl --get https://api.cursor.com/analytics/team/bugbot-reviews \  -u YOUR_API_KEY: \  --data-urlencode 'dryRun=true' \  --data-urlencode 'repo=github.com/your-org/your-repo' \  --data-urlencode 'prNumber=42'

Ответ (опубликованный отзыв):

{  "data": [    {      "request_id": "6e0d261c-86a2-4383-89f0-9162c1c10662",      "timestamp": "2026-06-29T19:42:18.000Z",      "repo": "github.com/your-org/your-repo",      "repo_node_id": "R_kgDOABCDEF",      "pr_number": 42,      "commit_sha": "9f3c2a1b7d8e4f5061728394a5b6c7d8e9f0a1b2",      "bugs_found": 2,      "cost_cents": 42.5,      "dry_run": false,      "publication_status": "posted",      "bugs": [        {          "comment_id": "2147483999",          "resolution_status": "resolved",          "severity": "high"        },        {          "comment_id": "2147484000",          "resolution_status": "unresolved",          "severity": "medium"        }      ]    }  ],  "pagination": {    "page": 1,    "pageSize": 100,    "totalItems": 1,    "totalPages": 1,    "hasNextPage": false,    "hasPreviousPage": false  },  "params": {    "metric": "bugbot-reviews",    "teamId": 12345,    "startDate": "2026-06-01",    "endDate": "2026-06-29",    "repo": "github.com/your-org/your-repo",    "prNumber": 42,    "page": 1,    "pageSize": 100  }}

Ответ (ревью в режиме dry-run):

{  "data": [    {      "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",      "timestamp": "2026-06-29T20:15:03.000Z",      "repo": "github.com/your-org/your-repo",      "repo_node_id": "R_kgDOABCDEF",      "pr_number": 42,      "commit_sha": "9f3c2a1b7d8e4f5061728394a5b6c7d8e9f0a1b2",      "bugs_found": 1,      "cost_cents": null,      "dry_run": true,      "publication_status": "dry_run",      "bugs": [        {          "comment_id": null,          "resolution_status": null,          "severity": "medium",          "title": "Unbounded retry loop",          "description": "retry() recurses without a ceiling.",          "locations": [            { "file": "src/net.ts", "start_line": 5, "end_line": 9 }          ]        }      ]    }  ],  "pagination": {    "page": 1,    "pageSize": 100,    "totalItems": 1,    "totalPages": 1,    "hasNextPage": false,    "hasPreviousPage": false  },  "params": {    "metric": "bugbot-reviews",    "teamId": 12345,    "startDate": "2026-06-01",    "endDate": "2026-06-29",    "repo": "github.com/your-org/your-repo",    "prNumber": 42,    "dryRun": true,    "page": 1,    "pageSize": 100  }}

repo_node_id, pr_number, commit_sha, cost_cents, bugs[].comment_id, bugs[].resolution_status и bugs[].severity могут иметь значение null, если данные недоступны. cost_cents имеет значение null, если ревью не оплачивается отдельно. При ревью в режиме dry-run поля bugs[].title, bugs[].description и bugs[].locations содержат информацию о найденной проблеме. Для результатов dry-run значения comment_id и resolution_status равны null, поскольку в SCM ничего не публикуется.

Запуск и получение результатов ревью

  1. Вызовите POST /bugbot/review, передав URL pull request. Укажите "dryRun": true, чтобы выполнить анализ без публикации в SCM.
  2. Сохраните возвращённый request_id.
  3. Опрашивайте GET /analytics/team/bugbot-reviews, фильтруя по repo и prNumber. Если вы запускали ревью в режиме dry-run, используйте dryRun=true.
  4. Найдите элемент, у которого request_id совпадает с request_id из ответа на запуск.

После постановки ревью в очередь аналитика может стать доступна с небольшой задержкой.

Инкрементальные ревью

По умолчанию Bugbot при каждом push проверяет полный дифф pull request. Включите Инкрементальное ревью в Bugbot автоматизация, чтобы проверять только изменения, внесённые после предыдущего ревью Bugbot.

Уровни усилий

Уровни усилий определяют, сколько времени Bugbot уделяет анализу во время ревью. При более высоких уровнях усилий Bugbot может находить больше багов, но ревью могут занимать больше времени и расходовать больше лимита использования.

Выберите один из следующих уровней усилий:

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

Правила

Настраивайте ревью с помощью правил команды, правил репозитория и файлов .cursor/BUGBOT.md в проекте.

Правила команды

Администраторы команды могут создавать правила в Bugbot автоматизация, которые применяются ко всем репозиториям команды. Эти правила доступны во всех включённых репозиториях, что упрощает соблюдение стандартов организации.

Ограничения правил

При включении в ревью каждое правило сокращается до 30 000 символов. Общий объём правил, включаемых Bugbot в ревью, ограничен 100 000 символов. Если вы превысите это ограничение, некоторые правила могут быть пропущены. Обязательные правила команды имеют приоритет над необязательными.

Какие правила использовались в ревью

Оставьте комментарий bugbot run verbose=true или cursor review verbose=true в pull request. Bugbot опубликует таблицу со всеми правилами, включёнными в этот запуск, и отметит сокращённые или пропущенные.

Правила репозитория

Правила проекта

Создайте файлы .cursor/BUGBOT.md, чтобы добавить контекст проекта для ревью. Bugbot всегда учитывает корневой файл .cursor/BUGBOT.md и все дополнительные файлы, найденные при обходе вверх от изменённых файлов.

project/  .cursor/BUGBOT.md          # Всегда учитывается (правила для всего проекта)  backend/    .cursor/BUGBOT.md        # Учитывается при ревью файлов бэкенда    api/      .cursor/BUGBOT.md      # Учитывается при ревью файлов API  frontend/    .cursor/BUGBOT.md        # Учитывается при ревью файлов фронтенда

Изученные правила

В разделе правил репозитория Bugbot включите обучение для организаций и репозиториев.

Правила автоматически создаются на основе активности вашей команды в GitHub для этого репозитория или вручную на основе истории репозитория.

Вы также можете обучать Bugbot новым правилам прямо в комментариях, оставив @cursor remember [fact] в любом PR. Bugbot сохранит факт как изученное правило и будет применять его в будущих ревью.

По мере того как Cursor узнаёт больше об активности вашей команды, он автоматически включает или отключает правила.

ПолеОписание
НазваниеКраткое название правила.
Содержимое правилаИнструкции, которым должен следовать Bugbot (например, требования к стилю, пути или ожидания по ревью).
Область действия путейНеобязательные glob-шаблоны, например src/components/**. Оставьте пустым, чтобы применить правило ко всему репозиторию.

Ручные правила

В разделе правил репозитория Bugbot можно создавать ручные правила для отдельных репозиториев.

ПолеОписание
НазваниеКраткое название правила.
Содержимое правилаИнструкции для Bugbot (например, требования к стилю, пути или ожидания по ревью).
Пути действияНеобязательные glob-шаблоны, например src/components/**. Оставьте поле пустым, чтобы применить правило ко всему репозиторию.

Аналитика правил

Аналитика правила Bugbot показывает его эффективность на реальных PR:

МетрикаЗначение
Найденные задачиКоличество результатов, о которых сообщил Bugbot и к которым относится это правило.
Проверенные PRКоличество pull request, в которых были обнаружены эти результаты.
Принятые задачиКоличество результатов, принятых вашей командой.
Доля принятыхПроцент принятых результатов.

Примеры

Если какой-либо изменённый файл содержит строковый шаблон /\beval\s*\(|\bexec\s*\(/i, то:- Добавьте блокирующий Bug с заголовком "Опасное динамическое выполнение" и текстом:  "Обнаружено использование eval/exec. Замените их безопасными альтернативами или обоснуйте использование подробным комментарием и тестами."- Назначьте Bug автору PR.- Добавьте метку "security".

Если PR изменяет файлы зависимостей (package.json, pnpm-lock.yaml, yarn.lock, requirements.txt, go.mod, Cargo.toml), то:- Запустите встроенное сканирование лицензий.- Если у какой-либо новой или обновлённой зависимости лицензия входит в {GPL-2.0, GPL-3.0, AGPL-3.0}, то:  - Добавьте блокирующий Bug с заголовком "Обнаружена недопустимая лицензия"  - Укажите в тексте Bug названия, версии и лицензии проблемных пакетов  - Добавьте метки "compliance" и "security"

Для файлов, соответствующих **/*.{js,jsx,ts,tsx}, в React-проектах:Если изменённый файл содержит /componentWillMount\s*\(/, то:- Добавьте блокирующий Bug с заголовком "Устаревший метод жизненного цикла React"- Текст: "Замените componentWillMount на constructor или useEffect. См. документацию React."- Предложите фрагмент autofix, переносящий побочные эффекты в useEffect.

Если PR изменяет файлы в {server/**, api/**, backend/**} и нет изменений в {**/*.test.*, **/__tests__/**, tests/**}, то:- Добавьте блокирующий Bug с заголовком "Отсутствуют тесты для изменений бэкенда"- Текст: "Этот PR изменяет код бэкенда, но не включает соответствующих тестов. Добавьте или обновите тесты."- Добавьте метку "quality"

Если какой-либо изменённый файл содержит /(?:^|\s)(TODO|FIXME)(?:\s*:|\s+)/, то:- Добавьте неблокирующий Bug с заголовком "Найден комментарий TODO/FIXME"- Текст: "Замените TODO/FIXME на ссылку на отслеживаемую задачу, например `TODO(#1234): ...`, или удалите его."- Если TODO уже содержит ссылку на задачу, соответствующую шаблону /#\d+|[A-Z]+-\d+/, автоматически отметьте Bug как решённый.

Запуск в Agent

Используйте навыки /review-bugbot или /review, чтобы запустить Bugbot из Agent перед отправкой кода.

Какой дифф проверяется: По умолчанию /review-bugbot проверяет все изменения в вашей ветке относительно base-ветки, включая закоммиченные и незакоммиченные. Если нужна более точечная обратная связь, попросите его проверить только незакоммиченные изменения.

С какой веткой сравнивается: /review-bugbot сравнивает изменения с base-веткой по умолчанию. Если ваша base-ветка отличается от ветки по умолчанию (например, main), укажите Agent, с какой веткой сравнивать, или позвольте ему определить это по контексту.

Синхронизация с pull request

Ревью /review-bugbot синхронизируются с Bugbot в подключённой системе управления исходным кодом (GitHub, GitLab или Bitbucket).

/review-bugbot сохраняет patch ID проверенного диффа. Когда Bugbot в вашей системе управления исходным кодом обнаруживает дифф с тем же patch ID, он пропускает ревью и оставляет комментарий о том, что этот дифф уже был проверен.

Распространённый сценарий: запустите /review-bugbot, затем откройте pull request с тем же диффом — Bugbot распознает его и пропустит удалённое ревью PR.

Автоисправление

Bugbot Autofix автоматически запускает Cloud Agent, чтобы исправлять баги, обнаруженные в ходе ревью PR.

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

Когда Bugbot находит баги во время ревью PR, он может автоматически:

  1. Запустить Cloud Agent для анализа и исправления обнаруженных проблем
  2. Отправить исправления в существующую или новую ветку (в зависимости от настроек)
  3. Опубликовать комментарий в исходном PR с результатами

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

Настройте поведение Autofix в Bugbot автоматизация.

Требования

Для Autofix необходимо:

  • включить тарификацию использования по запросу
  • включить хранение данных (недоступно в устаревшем режиме конфиденциальности)

Оплата

Autofix использует кредиты Cloud Agent; стоимость рассчитывается по тарифам вашего плана. Оплата Cloud Agent осуществляется в соответствии с вашим текущим тарифным планом.

Поддержка MCP

Bugbot интегрирован с вашими MCP‑серверами, поэтому ваши ИИ-инструменты могут взаимодействовать с Bugbot напрямую. Используйте MCP‑сервер, чтобы добавить инструменты, которые помогут направлять процесс ревью Bugbot.

Для начала:

  1. Ознакомьтесь с документацией MCP, чтобы настроить MCP‑сервер.
  2. Добавьте инструменты в Bugbot в автоматизация.

Admin API конфигурации

Администраторы команд могут использовать Admin API Bugbot для управления репозиториями и контроля доступа пользователей к Bugbot. С его помощью можно автоматизировать управление репозиториями, включать Bugbot в нескольких репозиториях и интегрировать автопровижининг пользователей с внутренними инструментами.

Аутентификация

Для всех конечных точек требуется Admin API Key команды, передаваемый в виде Bearer-токена:

Authorization: Bearer $API_KEY

Чтобы создать API-ключ:

  1. Перейдите в раздел API Keys в дашборде Cursor
  2. Нажмите New API Key
  3. Сохраните API-ключ

Для всех конечных точек действует ограничение: 60 запросов в минуту на команду.

Включение и отключение репозиториев

Используйте конечную точку /bugbot/repo/update, чтобы включить или отключить Bugbot для репозитория:

curl -X POST https://api.cursor.com/bugbot/repo/update \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "repoUrl": "https://github.com/your-org/your-repo",    "enabled": true,    "manualTriggerOnly": false  }'

Параметры:

  • repoUrl (string, обязательный): Полный URL репозитория
  • enabled (boolean, обязательный): true — включить Bugbot, false — отключить
  • manualTriggerOnly (boolean, необязательный): Если установлено значение true, Bugbot не будет автоматически запускаться при обновлении PR в этом репозитории. Ручной запуск, например с помощью комментария cursor review или bugbot run, по-прежнему доступен.

Список репозиториев

Используйте конечную точку /bugbot/repos, чтобы получить список всех репозиториев и их настройки Bugbot для вашей команды:

curl https://api.cursor.com/bugbot/repos \  -H "Authorization: Bearer $API_KEY"

Ответ содержит статус включения, параметр «только вручную» и временные метки для каждого репозитория.

Управление доступом пользователей

Используйте конечную точку /bugbot/user/update, чтобы определить, какие пользователи GitHub, GitLab или Bitbucket могут использовать лицензии Bugbot вашей команды. Предприятия используют его для интеграции управления доступом к Bugbot с внутренними инструментами запроса доступа.

Предварительные требования

Перед вызовом этой конечной точки включите режим allowlist или blocklist в настройках Bugbot для вашей команды:

  • Режим allowlist («Только...»): Bugbot могут использовать только пользователи из списка
  • Режим blocklist («Все, кроме...»): Bugbot могут использовать все пользователи, кроме указанных в списке

Если ни один из режимов не включён, API возвращает ошибку.

Добавление и удаление пользователя

curl -X POST https://api.cursor.com/bugbot/user/update \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{    "username": "octocat",    "allow": true  }'

Параметры:

  • username (string, обязательно): Имя пользователя GitHub, GitLab или Bitbucket (без учёта регистра)
  • allow (boolean, обязательно): Предоставлять или отзывать доступ

Поведение allow зависит от активного режима:

Режимallow: trueallow: false
AllowlistДобавляет пользователя в список (может использовать Bugbot)Удаляет пользователя из списка (не может использовать Bugbot)
BlocklistУдаляет пользователя из blocklist (может использовать Bugbot)Добавляет пользователя в blocklist (не может использовать Bugbot)

Ответ:

{  "outcome": "success",  "message": "Updated team-level allowlist for @octocat",  "updatedTeamSettings": true,  "updatedInstallations": 0}

Пример: управление доступом пользователей через внутренний инструмент

Подключите этот API к внутреннему порталу запросов на доступ. Когда сотрудник запрашивает доступ к Bugbot, портал вызывает API, чтобы предоставить ему доступ. Когда сотрудник увольняется или лишается доступа, портал вызывает API, чтобы отозвать его.

Предоставление доступа:

curl -X POST https://api.cursor.com/bugbot/user/update \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{"username": "employee-scm-username", "allow": true}'

Отозвать доступ:

curl -X POST https://api.cursor.com/bugbot/user/update \  -H "Authorization: Bearer $API_KEY" \  -H "Content-Type: application/json" \  -d '{"username": "employee-scm-username", "allow": false}'

Цены

В Bugbot действует оплата по мере использования.

Оплата

Устранение неполадок

Если Bugbot не работает:

  1. Включите подробный режим, добавив комментарий cursor review verbose=true или bugbot run verbose=true, чтобы получить подробные логи, список загруженных правил Bugbot и идентификатор запроса
  2. Проверьте права доступа, чтобы убедиться, что у Bugbot есть доступ к репозиторию
  3. Проверьте установку, чтобы убедиться, что интеграция с вашим провайдером репозиториев установлена и включена

При сообщении о проблеме укажите идентификатор запроса из подробного режима.

Часто задаваемые вопросы

Да. Bugbot читает комментарии верхнего уровня и встроенные комментарии к pull request от подключённых провайдеров и использует их как контекст при ревью. Это помогает избежать повторных предложений и позволяет Bugbot учитывать предыдущие отзывы ревьюеров.

Оставьте в pull request комментарий bugbot run verbose=true или cursor review verbose=true. Bugbot опубликует таблицу со всеми правилами, включёнными в этот запуск, и отметит обрезанные или пропущенные. Если правило отсутствует или обрезано, см. Ограничения правил.

Да. Bugbot соответствует тем же требованиям конфиденциальности, что и Cursor, и обрабатывает данные так же, как другие запросы Cursor.

После использования всего включённого объёма Bugbot дополнительные ревью Bugbot оплачиваются за счёт on-demand spend.

См. руководства по настройке и сетевым настройкам на страницах соответствующих интеграций: