# Goose

Источник: https://docs.aicentos.com/ru/clients/goose

Language: ru

> Использование aicentos в Goose — объявление кастомного OpenAI-совместимого провайдера

Goose — опенсорсный кодинг-агент от Block, который может указывать на OpenAI-совместимый эндпоинт двумя способами: переиспользовать встроенного провайдера `openai`, переопределив host, либо объявить отдельного кастомного провайдера. Рекомендуется второй вариант: данные эндпоинта собраны в одном месте, и удобно держать несколько конфигураций одновременно.

## Подготовка

Сначала создайте на странице «API Key» в консоли отдельный ключ для Goose (рекомендуемое имя `goose` — так проще отслеживать расход):

* Консоль: [https://aicentos.com](https://aicentos.com)
* Создание ключа: [https://aicentos.com/keys](https://aicentos.com/keys)
* Пополнение при нехватке баланса: [https://aicentos.com/wallet](https://aicentos.com/wallet)

## Конфигурация для заполнения

| Поле                       | Значение                                         |
| -------------------------- | ------------------------------------------------ |
| Файл кастомного провайдера | `~/.config/goose/custom_providers/aicentos.json` |
| engine                     | `openai`                                         |
| base\_url                  | `https://aicentos.com/v1/chat/completions`       |
| api\_key\_env              | `AICENTOS_API_KEY`                               |
| Модель                     | имя модели из «витрины моделей» в консоли        |

## Шаги настройки

### 1. Задайте переменную окружения для API Key

```bash
export AICENTOS_API_KEY="sk-ваш-API-ключ"
```

Для постоянного действия добавьте её в `~/.zshrc` или `~/.bashrc`. **Не пишите ключ в config.yaml** — официальная документация прямо рекомендует переменные окружения или системное хранилище ключей.

### 2. Объявите кастомного провайдера

Создайте `~/.config/goose/custom_providers/aicentos.json` (в Windows — `%APPDATA%\Block\goose\config\custom_providers\`):

```json
{
  "name": "aicentos",
  "engine": "openai",
  "display_name": "aicentos",
  "description": "Модели, подключённые через aicentos",
  "api_key_env": "AICENTOS_API_KEY",
  "base_url": "https://aicentos.com/v1/chat/completions",
  "models": [
    {
      "name": "gpt-4o",
      "context_limit": 128000
    }
  ],
  "supports_streaming": true,
  "dynamic_models": true
}
```

Обязательные поля: `name`, `engine`, `display_name`, `base_url`, `models`; `engine` принимает `openai` / `anthropic` / `ollama`.

Имена моделей — по «витрине моделей» в консоли, см. [Поддерживаемые модели](https://docs.aicentos.com/ru/billing/models-list).

### 3. Задайте по умолчанию в config.yaml

Отредактируйте `~/.config/goose/config.yaml`:

```yaml
GOOSE_PROVIDER: aicentos
GOOSE_MODEL: gpt-4o
```

При запуске Goose сканирует каталог `custom_providers/` и регистрирует провайдеров автоматически; позже можно переключаться и в графическом интерфейсе.

## Проверка

Сначала проверьте в неинтерактивной сессии:

```bash
goose run -t "Ответь одним предложением: сколько будет 1+1"
```

Если ответ возвращается нормально, подключение выполнено.

## Примечания

* **В `base_url` указывайте полный путь** (здесь — с `/v1/chat/completions`): это отличается от привычки большинства клиентов. Если нужно явно задать путь, в новых версиях есть поле `base_path`, у которого приоритет выше разбора URL.
* **Переменные окружения имеют приоритет над config.yaml**. Если в shell уже экспортирован `OPENAI_HOST`, он молча перекроет конфигурацию из файла; при диагностике сначала выполните `env | grep -i openai`.
* Goose нормально стартует, только если провайдер выбран. Если конфигурация записана в `config.yaml`, но `goose configure` ни разу не выполнялся, может появиться `No provider configured` — это частое недопонимание: параметры конфигурации в формате YAML, а не `.env`.
* При `dynamic_models: true` Goose обращается к эндпоинту `/v1/models` за списком моделей; если нужно показывать только заданные модели, удалите это поле или поставьте `false`.
* Есть и более простой вариант — переиспользовать встроенного провайдера: в config.yaml задайте `GOOSE_PROVIDER: openai`, а эндпоинт соберите из `OPENAI_HOST` и `OPENAI_BASE_PATH`. Так проще, но связь с переменными окружения сильнее и легко напороться на описанную выше проблему перекрытия.
* Порядок диагностики: совпадает ли имя провайдера с именем JSON-файла полностью → содержит ли `base_url` полный путь → видны ли переменные окружения → хватает ли баланса.

## Полезные ссылки

* Документация по кастомным провайдерам: [https://block.github.io/goose/docs/api/providers/custom](https://block.github.io/goose/docs/api/providers/custom)