# Goose работает на расширениях. Добавьте то, что знает ваш репозиторий.

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

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).

Goose выполняет работу через расширения, и каждое расширение — это MCP-сервер. Maguyva — то самое, что индексирует вашу кодовую базу, поэтому Goose спрашивает, где что лежит, а не перебирает каталоги.

> .goosehints — для того, как работать. Maguyva — для того, что код говорит сейчас.

## Что нужно знать о Goose

Четыре факта именно о Goose.

### config.yaml

Расширения задаются в `extensions` в `~/.config/goose/config.yaml`. Команда `goose configure` → Add Extension пишет такую же запись за вас.

### Удалённое расширение

Maguyva — расширение `streamable_http`, так что Goose сам подключается к эндпоинту: никаких локальных процессов, никакого Node.js. URL указывается в `uri`, а не в `url`.

### headers

Goose отправляет карту `headers` с каждым запросом, поэтому ключ указывается в заголовке `Authorization`. Goose также может подставить его из переменной окружения, перечисленной в `env_keys`.

### available_tools

Расширение может открывать только часть своих инструментов: перечислите нужные в `available_tools` или оставьте поле пустым, чтобы получить все.

## Подсказки Goose — это рабочее соглашение. Используйте их.

```text
# .goosehints
- Используй pnpm, а не npm.
- Запускай интеграционные тесты, прежде чем считать изменение готовым.
```

По умолчанию Goose загружает `AGENTS.md` и `.goosehints`: глобальные подсказки из `~/.config/goose/.goosehints`, подсказки проекта из репозитория и вложенные файлы, когда работает в подпапках. Для подсказок нужно расширение Developer. Им место для:

- Выбора инструментов и команд.
- Соглашений, которым должен следовать Goose.
- Того, где лежит документация.

Подсказки описывают проект. На вопрос “что от этого зависит?” они не отвечают.

## Где подсказок и оболочки уже не хватает

Три пробела, которые Goose закрывает командами оболочки, файл за файлом.

### // список каталогов — это не карта

В незнакомом репозитории Goose ориентируется по спискам каталогов и чтению файлов. Каждое такое действие тратит контекст ещё до начала задачи.

### // grep находит строки, а не вызывающих

Текстовый поиск не отличает настоящий вызов от комментария, мока или метода с тем же именем.

### // подсказки отстают

Файл подсказок, написанный в прошлом квартале, описывает структуру прошлого квартала. Goose всё равно ему следует.

## Maguyva как расширение Goose

Одна запись в extensions даёт Goose:

- **11 инструментов для вашего проиндексированного репозитория**: семантический, структурный (AST), графовый и текстовый поиск, а также поиск символов, зависимые и получение файлов.
- **Ответы с путями к файлам и номерами строк**: по более чем 285 языкам.
- **Инструменты только для чтения**: Инструменты Maguyva обращаются к индексу. Ни один из них не меняет ваши файлы.

> Подсказки говорят Goose, *как работать*.
> Maguyva даёт Goose *карту кода*.

## Два рабочих процесса

Сначала карта, потом пусть Goose работает.

### 01. Проследить баг до источника

```text
goose> почему некоторые выгрузки заканчиваются с нулём строк?

semantic_search("export job empty result")
  src/export/runner.ts:118   flushBatch()
  src/export/filters.ts:40   applyTenantFilter()

→ Goose читает два файла, а не весь пакет export.
[exit 0]
```

Ранжированные результаты сужают поиск ещё до того, как Goose откроет оболочку.

### 02. Проверить зависимых перед рефакторингом

```text
goose> раздели класс Notifier на email и SMS

dependency_search("Notifier", dependents)
  11 ссылок в 5 пакетах

→ План покрывает все одиннадцать до первой правки.
[exit 0]
```

Goose получает полный список зависимых одним вызовом, а не цепочкой grep.

## Настройка в Goose

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

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

Выберите тот, который вы уже знаете, чтобы оценить ответы.

### 02. Добавьте Maguyva в extensions в config.yaml

`~/.config/goose/config.yaml`

```yaml
extensions:
  maguyva:
    name: maguyva
    type: streamable_http
    uri: https://maguyva.tools/mcp
    enabled: true
    headers:
      Authorization: Bearer mgv_xxxx
    timeout: 300

```

### 03. Замените заглушку и начните сессию

Замените `mgv_xxxx` своим API-ключом, запустите `goose session` и задайте вопрос, ответ на который вы уже знаете. YAML чувствителен к отступам: пробелы, а не табы.

В [документации Goose по расширениям](https://goose-docs.ai/docs/getting-started/using-extensions/) описаны удалённые расширения, тайм-ауты и фильтры инструментов.

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

Подключите Goose через MCP и задайте вопрос, который можно проверить.
