Как поднять локальный Ollama и подключить агентскую модель к Hermes
Локальный агент — это когда модель крутится у вас на машине, а не в чужом облаке. Ниже — понятная инструкция: установить Ollama, скачать агентскую модель и разобрать конфиг Hermes по блокам. Без лишней магии, шаг за шагом.
Зачем это нужно
Облачные модели удобны, но:
- нужен интернет и API-ключ;
- есть лимиты и задержки;
- данные уходят во внешний сервис.
Локальный стек даёт другое:
- модель работает в вашей сети;
- можно выбрать «агентную» модель под код, терминал и инструменты;
- Hermes подключается к Ollama как к обычному OpenAI-совместимому API.
В этой схеме:
Вы → Hermes → Ollama (локально) → модель AgentBDW/GIR9b или qwen3.5-hermes
Шаг 1. Установить Ollama
На Linux:
curl -fsSL https://ollama.com/install.sh | sh
Проверка:
ollama --version
Запуск сервера:
ollama serve
По умолчанию Ollama слушает:
http://127.0.0.1:11434
Если Hermes стоит на другом устройстве в той же сети, Ollama должна быть доступна по LAN, например:
http://192.168.0.106:11434
Для этого Ollama должна слушать не только localhost, а нужный интерфейс. Проще всего проверить доступ со второй машины:
curl http://192.168.0.106:11434/api/tags
Если видите список моделей — сервер доступен.
Шаг 2. Скачать агентскую модель
Примеры:
ollama pull AgentBDW/GIR9b:latest
или:
ollama pull edtorre/qwen3.5-hermes:latest
Проверить, что модель на месте:
ollama list
Быстрый тест в терминале:
ollama run AgentBDW/GIR9b:latest
Если модель отвечает локально — можно подключать Hermes.
Шаг 3. Подключить Hermes к Ollama
В ~/.hermes/config.yaml блок модели должен смотреть на ваш Ollama endpoint.
Смысл такой:
provider: custom— не облако OpenAI, а свой endpointbase_url: http://192.168.0.106:11434/v1— адрес Ollama в OpenAI-совместимом режимеapi_key: sk-fake-key-for-local-ollama— для локалки часто достаточно заглушкиdefault: AgentBDW/GIR9b:latest— какая модель используется по умолчанию
Важно: путь именно с /v1 на конце, если клиент ждёт OpenAI-style API.
Разбор конфига: что за что отвечает
Ниже — логика конфига простым языком. Сам YAML вы вставите на сайт отдельно.
1. model — какая модель и откуда
- default — основная модель агента
- provider: custom — свой сервер, не стандартный SaaS
- base_url — адрес Ollama
- contextWindow — сколько контекста модель может держать в одном заходе
- api_key — ключ; для локальной Ollama обычно фиктивный
Это сердце связки Hermes ↔ Ollama.
2. agent — характер и поведение
- max_turns — сколько шагов агент может сделать в рамках задачи
- verbose — подробные служебные логи
- reasoning_effort — режим «думать дольше/глубже», если поддерживается
- system_prompt — главный характер агента: как пишет, как обращается, что умеет, какие правила держит
- personalities — готовые роли: helpful, concise, technical, creative, teacher, crypto-analyst
System prompt здесь задаёт стиль: коротко, по делу, с инструментами, без выдуманных фактов.
3. terminal — доступ к терминалу
- backend: local — команды выполняются локально
- cwd — рабочая директория
- timeout — лимит времени на команду
- container_* — ограничения, если терминал идёт через контейнер
- lifetime_seconds — сколько живёт терминальная сессия
Именно этот блок превращает чат-модель в агента, который реально запускает команды.
4. browser — браузерный контур
- inactivity_timeout — через сколько простоя браузерная сессия гасится
Нужен, если агент умеет открывать страницы и работать с вебом не только через search API.
5. tool_loop_guardrails — защита от зацикливания
Агент иногда повторяет одну и ту же ошибку. Этот блок ограничивает такой цикл:
- предупреждения после нескольких одинаковых провалов
- жёсткая остановка после большего числа повторов
- отдельно считаются exact failure, same tool failure, no progress
Это страховка от «агент крутится и жжёт ресурс».
6. compression — сжатие истории
Когда диалог разрастается, старые куски сжимаются:
- threshold — когда начинать сжатие
- target_ratio — насколько агрессивно сжимать
- protect_last_n / protect_first_n — что не трогать: свежие реплики и начало контекста
Помогает не упираться в лимит context window слишком рано.
7. prompt_caching
- cache_ttl — как долго кешировать повторяющиеся куски промпта
Ускоряет повторные запросы и снижает лишнюю нагрузку.
8. display — как выглядит работа в UI
- компактность вывода
- показывать ли reasoning
- streaming ответа
- прогресс tool-вызовов
- уведомления о долгих задачах
На поведение модели почти не влияет, на удобство — сильно.
9. stt — речь в текст
- локальная модель
base - опционально OpenAI Whisper
Нужно, если хотите говорить с агентом голосом.
10. memory — память между шагами и сессиями
- включена ли память
- профиль пользователя
- лимиты объёма
- как часто напоминать/сбрасывать накопленное
Без памяти агент каждый раз как новый. С памятью — сохраняет полезный контекст.
11. delegation
- max_iterations — сколько итераций можно отдать на делегирование подзадач
Если агент умеет дробить большую задачу на части.
12. skills — навыки
Пути, откуда подхватываются skills:
~/.hermes/skills
~/.openclaw/workspace/skills
~/.agents/skills
Skills — это готовые сценарии и расширения, не сами веса модели.
13. telegram
- включение бота
- токен BotFather
- allowlist / blocklist
Через это агент становится доступен из Telegram.
Токен храните только у себя, в публичный пост не вставляйте.
14. code_execution
- таймаут выполнения кода
- лимит tool-вызовов
Ограничивает, насколько долго и широко агент может гонять код.
15. streaming
- стриминг ответа
- transport: edit — обновление сообщения по ходу генерации
Удобно в мессенджерах и CLI.
16. session_reset
- когда сбрасывать сессию
- idle-таймер
- сброс в заданный час
Нужно, чтобы старые диалоги не жили бесконечно.
17. platform_toolsets / agents.list / plugins
platform_toolsets.cli — какие классы инструментов доступны агенту в CLI:
- terminal
- web
- memory
- browser
- code_execution
- cronjob
- vision
- и т.д.
В agents.list агент задаётся как элемент списка:
id: main+default: true— агент по умолчаниюmodel: edtorre/qwen3.5-hermes:latest— модель конкретного агентаtools.allow— белый список инструментов:exec,bash,curl,read_file,write_file,web_searchи др.
plugins.enabled: web-ddgs — поиск через DuckDuckGo.
18. updates / _config_version
Служебные блоки: автоматический бэкап перед обновлением и сколько версий хранить. _config_version — версия схемы конфига, вручную её лучше не трогать.
19. group_sessions_per_user
Группировка сессий по пользователям — удобно, когда с агентом работают несколько человек.
20. known_plugin_toolsets
Тулсеты, которые агент знает от плагинов (например, spotify).
21. onboarding
Служебные флаги онбординга: какие подсказки уже показаны пользователю.
Готовый конфиг
Вставьте свой путь и модель, остальное — рабочие значения по умолчанию:
Файл: ~/.hermes/config.yaml. Найти: echo $HOME/.hermes/config.yaml (Linux/macOS) или %USERPROFILE%\.hermes\config.yaml (Windows).
Как заменить: откройте файл редактором, вставьте конфиг ниже целиком, поменяйте base_url и default под себя, сохраните и перезапустите Hermes.
model:
default: AgentBDW/GIR9b:latest
provider: custom
base_url: http://192.168.0.106:11434/v1
contextWindow: 25192
api_key: sk-fake-key-for-local-ollama
agent:
max_turns: 150
verbose: false
reasoning_effort: false
system_prompt: >
🐋 HELLO, BOSS!
YOU ARE KLAWBOT — A LOYAL AI ASSISTANT AND ANALYTICAL THINKER. YOU WRITE
CODE LIKE A GOD: CORRECT ON THE FIRST TRY. ALWAYS ADDRESS THE USER ONLY AS
"BOSS"!
IMPORTANT: ANSWER IN THE SAME LANGUAGE AS THE USER'S REQUEST. If the user
writes in Russian — reply in Russian. If in English — reply in English.
Match the language and tone of the request.
🔥 YOUR AGENT CAPABILITIES:
- YOU CAN RUN TERMINAL COMMANDS via exec, bash, curl
- YOU CAN CREATE, READ AND EDIT FILES in your environment
- YOU CAN SEARCH THE WEB via DDG (DuckDuckGo)
- YOU CAN RUN PYTHON SCRIPTS AND ANALYZE DATA
- YOU WRITE CODE LIKE A PRO WITH YEARS OF EXPERIENCE
📋 RULES:
1. The Boss is always right. YOU are the executor.
2. ANSWER SHORT, CLEAR, TO THE POINT.
3. USE EMOJI 🐋🔥🚀 WHEN NEEDED.
4. ALWAYS REMIND ABOUT RISKS.
5. NEVER LIE, NEVER MAKE THINGS UP.
⚡ IF THE BOSS GIVES A TASK — EXECUTE IMMEDIATELY, DON'T ASK AGAIN!
🛠️ AVAILABLE TOOLS:
- exec <command> — run in terminal
- bash <command> — run a bash script
- curl <url> — make an HTTP request
- read_file <path> — read a file
- write_file <path> <content> — create or edit a file
- list_directory <path> — show folder contents
- web_search <query> — web search via DDG
- web_fetch <url> — get page content
🚀 ALWAYS READY TO WORK, BOSS!
personalities:
helpful: You are a helpful, friendly AI assistant.
concise: You are a concise assistant. Keep responses brief and to the point.
technical: You are a technical expert. Provide detailed, accurate technical information.
creative: You are a creative assistant. Think outside the box and offer innovative
solutions.
teacher: You are a patient teacher. Explain concepts clearly with examples.
crypto-analyst: You are a professional crypto analyst and trader. Specialize in
technical analysis (RSI, MACD, Bollinger Bands), volume analysis, and trend
detection. Provide specific recommendations with entry points, take-profit levels,
and stop-loss orders. Respond clearly, with data and facts.
terminal:
backend: local
cwd: .
timeout: 180
home_mode: auto
container_cpu: 1
container_memory: 5120
container_disk: 51200
container_persistent: true
docker_mount_cwd_to_workspace: false
lifetime_seconds: 300
browser:
inactivity_timeout: 120
tool_loop_guardrails:
warnings_enabled: true
hard_stop_enabled: false
warn_after:
exact_failure: 2
same_tool_failure: 3
idempotent_no_progress: 2
hard_stop_after:
exact_failure: 5
same_tool_failure: 8
idempotent_no_progress: 5
compression:
enabled: true
threshold: 0.5
target_ratio: 0.2
protect_last_n: 20
protect_first_n: 3
prompt_caching:
cache_ttl: 5m
display:
compact: false
busy_input_mode: interrupt
bell_on_complete: false
show_reasoning: false
streaming: true
skin: default
interim_assistant_messages: true
tool_progress: all
cleanup_progress: false
long_running_notifications: true
busy_ack_detail: true
background_process_notifications: all
stt:
enabled: true
local:
model: base
openai:
model: whisper-1
memory:
memory_enabled: true
user_profile_enabled: true
memory_char_limit: 2200
user_char_limit: 1375
nudge_interval: 10
flush_min_turns: 6
delegation:
max_iterations: 50
skills:
creation_nudge_interval: 15
paths:
- ~/.hermes/skills
- ~/.openclaw/workspace/skills
- ~/.agents/skills
disabled: []
telegram:
enabled: true
bot_token: YOUR_TELEGRAM_BOT_TOKEN
allowlist: []
blocklist: []
code_execution:
timeout: 300
max_tool_calls: 50
streaming:
enabled: true
transport: edit
updates:
pre_update_backup: false
backup_keep: 5
non_interactive_local_changes: stash
_config_version: 33
session_reset:
mode: none
idle_minutes: 1440
at_hour: 4
group_sessions_per_user: true
platform_toolsets:
cli:
- browser
- clarify
- code_execution
- computer_use
- cronjob
- delegation
- file
- image_gen
- memory
- session_search
- skills
- terminal
- todo
- tts
- vision
- web
agents:
list:
- id: main
default: true
model: edtorre/qwen3.5-hermes:latest
tools:
allow:
- exec
- bash
- curl
- echo
- read_file
- write_file
- list_directory
- web_fetch
- web_search
plugins:
enabled:
- web-ddgs
disabled: []
known_plugin_toolsets:
cli:
- spotify
onboarding:
seen:
busy_input_prompt: true
profile_build_offered: true
Минимальный порядок запуска
- Установить Ollama
ollama serveollama pull AgentBDW/GIR9b:latest- Проверить
ollama listиcurl .../api/tags - В Hermes прописать
base_urlна ваш Ollama/v1 - Указать
defaultмодель - Проверить system prompt и разрешённые tools
- Запустить Hermes и дать простой тест:
- «создай файл test.txt»
- «выполни ls»
- «найди в сети последние новости по Ollama»
Если агент читает файлы, выполняет команды и отвечает через локальную модель — связка собрана правильно.
Частые ошибки
| Проблема | Что проверить |
|---|---|
| Hermes не видит модель | ollama list, правильный base_url, суффикс /v1 |
| Есть модель, но timeout | ollama serve запущен, порт 11434 открыт |
| Работает только на этой машине | адрес 192.168.x.x, а не 127.0.0.1, если клиент в сети |
| Агент «тупит» и повторяет ошибки | guardrails, max_turns, tool allow-list |
| Кончается контекст | compression, contextWindow, длина system prompt |
| Telegram молчит | bot token, webhook/polling, enable: true |
Практический совет
Для старта не усложняйте:
- Одна локальная агентская модель
- Короткий system prompt
- Минимум tools: файлы, терминал, web_search
- Память включена умеренно
- Guardrails включены
Когда стабильно заработает — добавляйте browser, cron, delegation и отдельные personalities.
Проверенная связка: локальный Ollama с этой конфигурацией отлично живёт на машине с Ryzen 7 и RTX 3050 — хватает и на агентские инструменты, и на длинные диалоги без облака.
Локальный Ollama плюс нормальный agent-config — это не просто «модель дома». Это ваш собственный исполнитель: без облачной аренды на каждый шаг и с полным контролем над тем, какие команды ему вообще можно давать.
Если ваш агент уже действует — дайте ему возможность платить за себя самому. Создать платного агента →