Перейти к содержимому

Для пользователей Windsurf

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

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

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

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

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

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

// редактор

Windsurf

Где вы и Cascade на самом деле работаете.

// ручной контекст

@-упоминания + .windsurfrules

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

// кодовая база

Maguyva

Автоматические факты о кодовой базе через MCP.

// кто платит

Рабочие пространства, а не места

Агенты не платят за места. Смотреть тарифы

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

Проблема не в IDE. Cascade, автодополнение по табу, правки по нескольким файлам и .windsurfrules превосходны, и вы уже используете их для:

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

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

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

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

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

// the fix

// упомяните файлы

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

// where it breaks

// упоминание — это догадка

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

// the fix

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

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

// where it breaks

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

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

// the fix

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

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

// where it breaks

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

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

// the fix

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

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

// where it breaks

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

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

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

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

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

Cascade редактирует файл, на который вы указали.

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

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

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

// workflow 01

Найдите поток авторизации во всех пакетах, ничего не упоминая

cascade> где в этом монорепозитории происходит авторизация?

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]

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

// workflow 02

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

cascade> как 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 ранжирует настоящую реализацию выше тестового мока, в каждом пакете.

// workflow 03

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

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

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

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

Настройка с Windsurf

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

  1. // step 01

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

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

  2. // step 02

    Добавьте Maguyva как MCP-сервер в Windsurf

    // ~/.codeium/windsurf/mcp_config.json
    {
      "mcpServers": {
        "maguyva": {
          "serverUrl": "https://maguyva.tools/mcp",
          "headers": {
            "Authorization": "Bearer <your-key>"
          }
        }
      }
    }
  3. // step 03

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

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