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

Каталог моделей

VibeOS получает списки моделей для OpenRouter и Nous Portal из JSON-манифеста, размещённого вместе с сайтом документации. Это позволяет разработчикам обновлять списки моделей без выпуска новой версии агента.

Если манифест недоступен (офлайн, блокировка сети, сбой хостинга), VibeOS бесшумно переключается на локальную копию, встроенную в репозиторий CLI. Манифест никогда не ломает выбор моделей — в худшем случае вы увидите список, встроенный в вашу установленную версию.

URL текущего манифеста​

https://vibeos.com.ru/handbook/api/model-catalog.json

Публикуется production-деплоем сайта при выпуске релиза или ручным запуском deploy-site.yml, если каталог нужно обновить вне релиза. Источник истины находится в репозитории по пути website/static/api/model-catalog.json.

Схема​

{
"version": 1,
"updated_at": "2026-04-25T22:00:00Z",
"metadata": {},
"providers": {
"openrouter": {
"metadata": {},
"models": [
{"id": "moonshotai/kimi-k2.6", "description": "рекомендуемая", "metadata": {}},
{"id": "openai/gpt-5.4", "description": ""}
]
},
"nous": {
"metadata": {},
"models": [
{"id": "anthropic/claude-opus-4.7"},
{"id": "moonshotai/kimi-k2.6"}
]
}
}
}

Примечания к полям:

  • version — целочисленная версия схемы. Будущие схемы будут увеличивать это значение; VibeOS отклоняет манифесты с непонятными версиями и переключается на жёстко заданную копию.
  • metadata — свободный словарь на уровне манифеста, провайдера и модели. Любые ключи. VibeOS игнорирует неизвестные поля, поэтому вы можете добавлять аннотации (например, "tier": "paid", "tags": [...]) без согласования изменения схемы.
  • description — только для OpenRouter. Определяет текст бейджа в списке моделей («рекомендуемая», «бесплатная» или пусто). Nous Portal не использует это поле — ограничение бесплатного уровня определяется динамически через API цен портала.
  • Цены и длина контекста НЕ входят в манифест. Они получаются из живых API провайдеров (эндпоинты /v1/models, models.dev) во время запроса.

Поведение при загрузке​

СитуацияЧто происходит
/model или vibeos modelЗагружается, если дисковый кеш устарел, иначе используется кеш
Дисковый кеш свежий (< TTL)Без сетевого запроса
Сетевая ошибка с кешемБесшумное переключение на кеш, одна строка в логе
Сетевая ошибка без кешаБесшумное переключение на встроенную копию
Манифест не проходит валидацию схемыСчитается недоступным

Расположение кеша: ~/.vibeos/cache/model_catalog.json.

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

model_catalog:
enabled: true
url: https://vibeos.com.ru/handbook/api/model-catalog.json
ttl_hours: 1
providers: {}

Установите enabled: false, чтобы полностью отключить удалённую загрузку и всегда использовать встроенную копию.

Переопределение URL для отдельных провайдеров​

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

model_catalog:
providers:
openrouter:
url: https://example.com/my-openrouter-curation.json

Переопределяющий манифест должен содержать только те блоки провайдеров, которые нужны. Остальные провайдеры продолжат использовать основной URL.

Обновление манифеста​

Для разработчиков:

# Перегенерировать из встроенных списков (синхронизирует манифест после
# редактирования OPENROUTER_MODELS или _PROVIDER_MODELS["nous"] в vibeos_cli/models.py).
python scripts/build_model_catalog.py

Затем отправьте изменения в website/static/api/model-catalog.json в ветку main. Опубликуйте каталог со следующим релизом или вручную запустите deploy-site.yml, если он должен стать доступен раньше.

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