# Cursor редактирует файл. Maguyva видит репозиторий.

Canonical source: https://maguyva.ai/ru/for-cursor

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Cursor — это редактор. В монорепозитории агенту всё равно нужна карта того, какой файл имеет значение. Maguyva индексирует вашу кодовую базу и предоставляет этот контекст через MCP (семантика, AST, граф и текст), так что запрос «где происходит аутентификация» возвращает реальный поток аутентификации, а не семь тестовых заглушек.

> Cursor редактирует то, на что вы указали. Maguyva подсказывает агенту, на какой файл указать.

## Что делает каждый слой

Четыре элемента. У каждого своя роль.

### Cursor

Где вы на самом деле пишете код.

### @-упоминания + закрепления

Ручной контекст работает — пока репозиторий не станет большим.

### Maguyva

Автоматически полученные сведения о кодовой базе через MCP.

### За пространство, не за пользователя

За каждого агента не взимается отдельная плата. [Смотреть тарифы](https://maguyva.ai/ru/pricing)

## Cursor — это редактор. Используйте его.

Проблема не в IDE. Автодополнение по Tab, редактирование с ИИ, правки по нескольким файлам и `.cursor/rules` в Cursor превосходны, и вы уже используете их для:

- Встроенных подсказок и редактирования с ИИ в открытом файле.
- Правок по нескольким файлам, когда изменение локально.
- `.cursor/rules` для соглашений репозитория и стилистических ограничений.
- `@`-упоминаний, чтобы подтянуть конкретный файл в контекст.

Продолжайте делать это. Никуда это не денется.

Но в настоящем монорепозитории (TypeScript с зависимостями между рабочими пространствами, сервисы на Python, смешанные пакеты) контекст агента ломается в тот момент, когда нужный файл ещё не попал в ваше поле зрения.

## Ручные обходные пути, которые вы уже пробовали, — и где они ломаются

Четыре ручных приёма и то, как они ломаются. Слева — то, что вы делаете сегодня. Справа — где это даёт сбой.

### // закрепите файлы

Вы `@`-упоминаете три файла, которые кажутся важными. Cursor аккуратно редактирует внутри них.

### // закрепление — это догадка

Закрепление работает, когда вы уже знаете, какие файлы задействованы. Весь смысл инструментов контекста — показать файлы, о которых вы даже не догадывались, что их нужно закрепить.

### // вставьте фрагменты

Вы вставляете 200 строк из другого пакета в чат, чтобы дать агенту достаточно контекста.

### // вставленный код устаревает

Фрагмент, который вы вставили в 9 утра, не отражает ребейз, который коллега влил в 11. Агент редактирует код, опираясь на призрачную версию пакета.

### // напишите документ с контекстом

Вы пишете файл `.cursor/rules` или markdown с архитектурой. Сегодня он верен.

### // документация устаревает быстрее кода

Всё, что вы пишете вручную, со временем расходится с реальностью. Источник истины — код. Документ, объясняющий слой очередей, верен неделю, а потом неверен навсегда.

### // держите файлы правил

Вы добавляете `.cursor/rules` для именования, линтера, команд сборки. Отлично работает для поведения.

### // правила ≠ индекс

`.cursor/rules` — правильное место для “всегда запускай pnpm tsc -b перед коммитом”. Но это не индекс с возможностью запроса по каждому символу, файлу и месту вызова в вашем монорепозитории.

## Maguyva — это слой снизу

Это не замена Cursor. Слой контекста репозитория, который подключается через поддержку MCP в Cursor.

- **Семантика + AST + граф + текст**: поиск по смыслу, структуре, зависимости или буквальному тексту. Каждое совпадение возвращает путь к файлу и номер строки.
- **Между пакетами по умолчанию**: места вызова и импортирующие модули по всем пакетам монорепозитория, а не только по тому, что сейчас открыт.
- **С учётом веток**: Maguyva видит ту версию кода, которую редактирует Cursor.
- **Дополняет, а не конкурирует**: `.cursor/rules` продолжает делать своё дело. `@`-упоминания — своё. Maguyva закрывает пробел, который они не закрывают.

> Cursor редактирует файл, на который вы указали.
> Maguyva подсказывает агенту, *на какой файл указать.*

## Три сценария работы с монорепозиторием

Между пакетами, между языками. Обоснованно — на основе реального графа вызовов, а не grep'а Cursor.

### 01. Найдите поток аутентификации во всех пакетах, ничего не закрепляя

```text
cursor> где в этом монорепозитории происходит аутентификация?

graph::query("authentication flow")
  packages/web/src/auth/session.ts:42       middleware
  packages/api/src/auth/jwt.ts:88           проверка токена
  packages/shared/src/auth/types.ts:12      AuthContext
  packages/admin/src/auth/admin-only.ts:31  проверка RBAC

→ 4 точки входа в 4 пакетах, отсортированы по плотности мест вызова.
[exit 0]
```

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

### 02. Найдите настоящую реализацию, а не тестовую заглушку

```text
cursor> как normalizePhoneNumber обрабатывает E.164?

semantic::query("normalize phone E.164")
  packages/shared/util/phone.ts:88     normalizePhoneNumber()  ← реальная реализация
  packages/api/test/phone.spec.ts:14   jest.mock(...)          ← заглушка
[exit 0]
```

Имена лгут. Моки заслоняют настоящий код. Maguyva ранжирует настоящую реализацию выше тестового мока, в каждом пакете.

### 03. Проверьте радиус влияния перед рефакторингом

```text
cursor> что вызывает QueueDispatcher.publish во всём монорепозитории?

graph::callers(QueueDispatcher.publish)
  3 в packages/billing/*
  1 в packages/audit/*
  1 в packages/notifications/*
  1 в services/python-worker/*  ← межъязыковой вызов через gRPC-заглушку
[exit 0]
```

Между пакетами и, если у вас полиглотный репозиторий, между языками — места вызова всплывают прямо в выводе. Дифф опирается на реальные импортирующие модули, а не на результаты grep, выполненного Cursor.

## Настройка с Cursor

Три шага. Тариф Free: 3 репозитория, До 50 тыс. проиндексированных строк, без банковской карты.

### 01. Проиндексируйте репозиторий на maguyva.ai

Выберите монорепозиторий, где нехватка контекста ощущается острее всего.

### 02. Добавьте Maguyva как MCP-сервер в настройках Cursor

`~/.cursor/mcp.json`

```json
{
  "mcpServers": {
    "maguyva": {
      "url": "https://maguyva.tools/mcp",
      "headers": {
        "Authorization": "Bearer ${env:MAGUYVA_API_KEY}"
      }
    }
  }
}
```

### 03. Задайте один вопрос, ответ на который вы уже знаете

Не начинайте сразу со всей компании. Начните с одного репозитория и одного проверяемого вопроса — например, «что вызывает `formatInvoice` в разных пакетах?»

## Проиндексируйте один репозиторий, который вы уже знаете.

Проверьте один вопрос, ответ на который можно перепроверить.
