Hermes локально через Ollama — без расходов на API

совет
У десктопа есть путь в один клик

В десктопном приложении Hermes раздел Settings → Providers → Local Models сам поставит и настроит локальный сервер llama.cpp: скачает модели, подберёт раскладку по памяти и размер контекста. Подробности — в разделе Локальные модели. Это же руководство — про ручную настройку: конкретно Ollama, работу в первую очередь из CLI или сервер, который вы хотите держать под своим контролем.

Проблема

Облачные LLM-API берут деньги за токены. Тяжёлая сессия с кодом может обойтись в $5–20. Для личных проектов, обучения или работы с чувствительными данными это накапливается — и каждый разговор уходит к третьей стороне.

Что даёт это руководство

Вы настроите Hermes Agent, работающий целиком на вашем железе, используя Ollama как бэкенд модели. Никаких API-ключей, никаких подписок, никаких данных за пределами машины. Hermes при этом работает точно так же, как с OpenRouter или Anthropic — терминальные команды, редактирование файлов, браузер, делегирование — просто модель крутится локально.

В результате у вас будет:

  • Ollama, раздающий одну или несколько открытых моделей
  • Hermes, подключённый к Ollama как к кастомному эндпоинту
  • Рабочий локальный агент, умеющий редактировать файлы, запускать команды и просматривать веб
  • Опционально: Telegram- или Discord-бот, работающий целиком на вашем железе

Что потребуется

КомпонентМинимумРекомендуется
RAM8 ГБ (для моделей 3B)32+ ГБ (для моделей 27B и выше)
Хранилище5 ГБ свободно30+ ГБ (для нескольких моделей)
CPU4 ядра8+ ядер (AMD EPYC, Ryzen, Intel Xeon)
GPUНе обязателенNVIDIA GPU с 8+ ГБ VRAM заметно ускоряет работу
совет
CPU-only работает, но медленнее

Ollama запускается и без GPU. Модель 9B на современном 8-ядерном CPU даёт ~10 токенов/с. Модель 31B на CPU медленнее (~2–5 токенов/с) — каждый ответ занимает 30–120 секунд, но работает. GPU кардинально улучшает ситуацию. Для CPU-only сетапов увеличьте таймаут API через переменную окружения (это не ключ config.yaml):

# ~/.hermes/.env
HERMES_API_TIMEOUT=1800   # 30 минут — с запасом для медленных локальных моделей

Шаг 1: Установка Ollama

curl -fsSL https://ollama.com/install.sh | sh

Проверяем, что всё запустилось:

ollama --version
curl http://localhost:11434/api/tags   # Должен вернуть {"models":[]}

Шаг 2: Скачать модель

Выбирайте под своё железо:

МодельРазмер на дискеНужно RAMВызов инструментовЛучше всего для
gemma4:31b~20 ГБ24+ ГБДаЛучшее качество — уверенный вызов инструментов и умозаключение
gemma2:27b~16 ГБ20+ ГБНетДиалоговые задачи, без вызова инструментов
gemma2:9b~5 ГБ8+ ГБНетБыстрый чат, Q&A — инструменты вызывать не может
llama3.2:3b~2 ГБ4+ ГБНетТолько лёгкие быстрые ответы
внимание
Вызов инструментов имеет значение

Hermes — это агентский ассистент: он редактирует файлы, запускает команды и просматривает веб через вызовы инструментов. Модели без поддержки tool call умеют только разговаривать — действий совершать не могут. Для полноценной работы с Hermes нужна модель с поддержкой инструментов (например, gemma4:31b).

Скачиваем выбранную модель:

ollama pull gemma4:31b
инфо
Несколько моделей

Можно скачать несколько моделей и переключаться между ними прямо в Hermes командой /model. Ollama загружает активную модель в память по запросу и автоматически выгружает простаивающие.

Проверяем, что модель работает:

curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemma4:31b",
    "messages": [{"role": "user", "content": "Say hello"}],
    "max_tokens": 50
  }'

Должен вернуться JSON с ответом модели.

Шаг 3: Настройка Hermes

Запустите мастер настройки Hermes:

hermes setup

При выборе провайдера выберите Custom Endpoint и введите:

  • Base URL: http://localhost:11434/v1
  • API Key: оставьте пустым или введите no-key (Ollama ключ не требует)
  • Model: gemma4:31b (или любую скачанную модель)

Либо отредактируйте ~/.hermes/config.yaml напрямую:

model:
  default: "gemma4:31b"
  provider: "custom"
  base_url: "http://localhost:11434/v1"

Шаг 4: Начало работы

hermes

Готово. Теперь у вас полностью локальный агент. Попробуйте:

You: List all Python files in this directory and count the lines of code in each

You: Read the README.md and summarize what this project does

You: Create a Python script that fetches the weather for Ho Chi Minh City

Hermes использует инструменты терминала, файловые операции и вашу локальную модель — без каких-либо облачных вызовов.

Шаг 5: Выбор модели под задачу

Не каждая задача требует самой большой модели. Практическое руководство:

ЗадачаРекомендуемая модельПочему
Редактирование файлов, код, команды терминалаgemma4:31bЕдинственная модель с надёжным вызовом инструментов
Быстрые вопросы (инструменты не нужны)gemma2:9bБыстрые ответы для диалоговых задач
Лёгкий чатllama3.2:3bСамая быстрая, но очень ограниченная
заметка

Для полноценной агентской работы (редактирование файлов, команды, браузер) gemma4:31b — лучший локальный вариант с поддержкой вызова инструментов. Следите за библиотекой моделей Ollama — поддержка tool call у новых моделей расширяется быстро.

Переключаться между моделями можно прямо в сессии:

/model gemma2:9b

Шаг 6: Оптимизация скорости

Увеличить контекстное окно Ollama

По умолчанию Ollama использует контекст в 2048 токенов. Hermes для агентской работы с инструментами требует минимум 64 000 токенов:

# Создаём Modelfile с увеличенным контекстом
cat > ~/.hermes/cache/scratch/Modelfile << 'EOF'
FROM gemma4:31b
PARAMETER num_ctx 64000
EOF

ollama create gemma4-64k -f ~/.hermes/cache/scratch/Modelfile

Затем обновите конфиг Hermes, указав gemma4-64k в качестве имени модели.

Держать модель загруженной

По умолчанию Ollama выгружает модели после 5 минут простоя. Для постоянно работающего шлюза-бота держите модель загруженной:

# Keep-alive на 24 часа
curl http://localhost:11434/api/generate \
  -d '{"model": "gemma4:31b", "keep_alive": "24h"}'

Или задайте глобально в окружении Ollama:

# /etc/systemd/system/ollama.service.d/override.conf
[Service]
Environment="OLLAMA_KEEP_ALIVE=24h"

GPU offloading (если доступен)

При наличии NVIDIA GPU Ollama автоматически выгружает слои на него. Проверить:

ollama ps   # Показывает, какая модель загружена и сколько слоёв на GPU

Для модели 31B на GPU с 12 ГБ получится частичная выгрузка (~40 слоёв на GPU, остальные на CPU) — и это всё равно даёт заметное ускорение.

Шаг 7: Запуск как шлюз-бот (опционально)

Когда Hermes работает локально в CLI, его можно выставить как Telegram- или Discord-бот — всё равно целиком на вашем железе.

Telegram

  1. Создайте бота через @BotFather и получите токен
  2. Добавьте в ~/.hermes/config.yaml:
model:
  default: "gemma4:31b"
  provider: "custom"
  base_url: "http://localhost:11434/v1"

platforms:
  telegram:
    enabled: true
    token: "YOUR_TELEGRAM_BOT_TOKEN"
  1. Запустите шлюз:
hermes gateway

Теперь пишите боту в Telegram — он отвечает через вашу локальную модель.

Discord

  1. Создайте Discord-приложение на discord.com/developers
  2. Добавьте в конфиг:
platforms:
  discord:
    enabled: true
    token: "YOUR_DISCORD_BOT_TOKEN"
  1. Запуск: hermes gateway

Шаг 8: Настройка фолбэков (опционально)

Локальные модели могут не справляться со сложными задачами. Настройте облачный фолбэк, который срабатывает только при неудаче локальной модели:

model:
  default: "gemma4:31b"
  provider: "custom"
  base_url: "http://localhost:11434/v1"

fallback_providers:
  - provider: openrouter
    model: anthropic/claude-sonnet-4

Так 90% использования бесплатно (локально), а платный API подключается только для сложных задач.

Решение проблем

«provider ‘ollama’ has no endpoint configured»

hermes chat --provider ollama (или vllm) останавливается с этой ошибкой, когда эндпоинт для этого псевдонима не задан нигде — ни providers.ollama.base_url, ни model.base_url. Hermes отказывается отправлять запрос, вместо того чтобы откатиться на OpenRouter с облачным ключом (OPENROUTER_API_KEY / OPENAI_API_KEY), который случайно оказался задан. Добавьте эндпоинт:

providers:
  ollama:
    base_url: "http://localhost:11434/v1"

«Connection refused» при запуске

Ollama не запущен. Запустите:

sudo systemctl start ollama
# или
ollama serve

Медленные ответы

  • Проверьте соотношение размера модели и RAM: если модели не хватает RAM, она уходит в своп на диск. Возьмите модель поменьше или добавьте RAM.
  • Проверьте ollama ps: если GPU-слоёв нет — всё работает на CPU. Для CPU-only сетапов это норма.
  • Уменьшите контекст: большие разговоры замедляют вывод. Используйте /compress регулярно или задайте меньший порог сжатия в конфиге.

Медленный первый ответ (prefill)

При каждом обращении к API Hermes отправляет фиксированную нагрузку — системный промпт плюс схемы инструментов для всех включённых инструментов — ещё до содержимого вашего разговора. На CPU-only или слабых по VRAM установках обработка этого промпта (фаза prefill) занимает большую часть первого хода: модель может молчать несколько минут, пока разбирает промпт, а затем генерировать текст с обычной скоростью. Это ожидаемое поведение, а не зависание. Руководство по локальным LLM на Mac описывает тот же эффект — во время prefill на больших контекстах локальные модели могут не выдавать вывод несколько минут, пока обрабатывают промпт — и Hermes автоматически повышает таймаут чтения потока с 120 до 1800 секунд для локальных эндпоинтов (HERMES_STREAM_READ_TIMEOUT).

Что помогает:

  • Держите модель загруженной — Ollama выгружает неактивные модели через 5 минут, добавляя полную перезагрузку перед следующим prefill. Задайте OLLAMA_KEEP_ALIVE=24h (см. Шаг 6).
  • Увеличьте таймаут API — задайте HERMES_API_TIMEOUT=1800 в ~/.hermes/.env (см. Что потребуется).
  • Измерьте и сократите фиксированный промпт — запустите hermes prompt-size, чтобы увидеть разбивку по байтам для системного промпта и схем инструментов, затем отключите неиспользуемые наборы инструментов через hermes tools и удалите ненужные навыки через hermes skills.
  • Используйте GPU offloading — даже частичная выгрузка на GPU даёт заметный прирост скорости (см. Шаг 6).

Модель игнорирует вызовы инструментов

Модели без поддержки tool call выдают обычный текст вместо структурированных вызовов функций. Решения:

  • Возьмите модель с поддержкой tool call — из перечисленных выше моделей только gemma4:31b вызывает инструменты надёжно.
  • У Hermes есть авторемонт — он обнаруживает некорректные tool call и пытается исправить их автоматически.
  • Настройте фолбэк — если локальная модель трижды подряд даёт сбой, Hermes переключается на облачного провайдера.

Если модель выводит в ответе сырой JSON вроде {"name": "web_search", ...} вместо того, чтобы реально вызвать инструмент, — обычно дело в сервере, а не в модели: вызов инструментов не включён или формат tool call не парсится. Таблицу решений по серверам смотрите в разделе Вызовы инструментов появляются как текст вместо выполнения (llama.cpp требует --jinja, vLLM требует --enable-auto-tool-choice --tool-call-parser hermes и так далее).

Ошибки контекстного окна

Контекст Ollama по умолчанию (2048 токенов) слишком мал для агентской работы. Смотрите Шаг 6, как его увеличить.

Сравнение стоимости

Сколько экономит локальный запуск по сравнению с облачными API — на примере типичной сессии с кодом (~100K токенов на входе, ~20K на выходе):

ПровайдерСтоимость сессииВ месяц (ежедневно)
Anthropic Claude Sonnet~$0,80~$24
OpenRouter (GPT-4o)~$0,60~$18
Ollama (локально)$0,00$0,00

Ваши расходы — только электроэнергия: примерно $0,01–0,05 за сессию в зависимости от железа.

Что хорошо работает локально

  • Редактирование файлов и генерация кода — модели 9B и выше справляются хорошо
  • Команды терминала — Hermes оборачивает команду, запускает и читает вывод независимо от модели
  • Браузер — инструмент браузера делает загрузку; модель только интерпретирует результаты
  • Cron-задачи и отложенные задания — работают идентично облачным сетапам
  • Мультиплатформенный шлюз — Telegram, Discord, Slack работают с локальными моделями

Что лучше в облаке

  • Сложные многошаговые рассуждения — модели 70B+ или облачные вроде Claude Opus заметно лучше
  • Длинные контексты — облачные модели предлагают 100K–1M токенов; локальные рантаймы часто работают ниже минимума Hermes в 64K без дополнительной настройки
  • Скорость на длинных ответах — облачный инференс быстрее CPU-only для длинной генерации

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

перевод и редактура:

обновлено

⌕ ESC