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

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

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

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

https://hermes-agent.nousresearch.com/docs/api/model-catalog.json

Публикуется при каждом merge в main через существующий GitHub Pages pipeline 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": "recommended", "metadata": {}},
{"id": "openai/gpt-5.4", "description": ""}
]
},
"nous": {
"metadata": {},
"models": [
{"id": "anthropic/claude-opus-4.7"},
{"id": "moonshotai/kimi-k2.6"}
]
}
}
}

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

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

Поведение при получении| Когда | Что происходит |

Заголовок раздела «Поведение при получении| Когда | Что происходит |»

|---|---| | /model или hermes model | Выполняется получение, если дисковый кэш устарел, иначе используется кэш | | Дисковый кэш актуален (< TTL) | Сетевого запроса нет | | Сбой сети при наличии кэша | Тихий откат к кэшу, одна строка в логе | | Сбой сети, кэша нет | Тихий откат к snapshot в репозитории | | Manifest не проходит валидацию схемы | Считается недоступным |

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

model_catalog:
enabled: true
url: https://hermes-agent.nousresearch.com/docs/api/model-catalog.json
ttl_hours: 24
providers: {}

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

URL переопределения для каждого провайдера

Заголовок раздела «URL переопределения для каждого провайдера»

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

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

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

Сопровождающие:

Окно терминала
# Re-generate from the in-repo hardcoded lists (keeps manifest in sync after
# editing OPENROUTER_MODELS or _PROVIDER_MODELS["nous"] in hermes_cli/models.py).
python scripts/build_model_catalog.py

Затем отправьте PR с получившимся изменением в website/static/api/model-catalog.json для main. Сайт документации автоматически разворачивается при слиянии, и новый manifest становится доступен в течение нескольких минут.

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