
Введение
Вы установили Ollama, скачали мощную модель, запустили несколько запросов в терминале — всё заработало. Ответы чёткие, задержка минимальная, всё на вашем собственном железе, никаких API-ключей и облачных сервисов. Затем вы закрыли терминал и ушли — и ИИ пропал. Этот пробел заполняет OpenClaw. Это персональный ИИ-ассистент, работающий на вашем оборудовании и постоянно остающийся на связи, соединяя локальные модели Ollama с привычными мессенджерами: WhatsApp, Telegram, Slack, Discord, iMessage.
OpenClaw создал Peter Steinberger, известный разработчик под macOS, релиз состоялся в конце 2025 года под названием Clawdbot. Проект набрал более 60 000 звёзд на GitHub за несколько недель. С появлением Ollama 0.17 всё сводится к одной команде.
В этой статье — полный путь от нуля до работающего приватного исследовательского ассистента в Telegram: настройка длины контекста, подключение канала, включение веб-поиска и развёртывание в Docker.
Что такое OpenClaw и как это работает
Прежде чем запускать команды, полезно понять, что происходит внутри, потому что архитектура объясняет несколько решений, которые вы примете при настройке.
Всё проходит через единый фоновый процесс — Шлюз (Gateway). Он работает постоянно, держит открытыми соединения с мессенджерами и координирует ИИ-агента. Когда вы отправляете сообщение из WhatsApp или Telegram, последовательность такова: текст приходит по протоколу платформы (WhatsApp использует Baileys, Telegram — Bot API), попадает в Шлюз, тот направляет его модели через локальное API Ollama и возвращает ответ тем же каналом. Вы видите ответ в мессенджере. На устройстве пользователя ничего больше не происходит.
Эта трёхуровневая архитектура отличает OpenClaw от простого чат-бота в терминале:
- Уровень сообщений — канал, через который вы отправляете сообщения: телефон, десктопный клиент Telegram, рабочее пространство Slack. Вам не обязательно находиться у машины с запущенной Ollama, достаточно подключения к сервису.
- Демон Шлюза — координационный слой. Он работает постоянно, даже когда вы не активны, держит соединения и управляет многошаговыми задачами агента. Именно это делает OpenClaw полезным, а не просто интерактивным: задачи, требующие нескольких вызовов инструментов, могут выполняться в фоне и выдавать результаты по готовности.
- Уровень модели — Ollama. Это может быть полностью локальная модель на вашем GPU или облачная, маршрутизируемая через облачный сервис Ollama. Шлюзу без разницы, он общается с API Ollama в любом случае.

Стоит упомянуть историю названий: ранее проект назывался Moltbot, а до того — Clawdbot. Переименование в OpenClaw произошло в начале 2026 года. Все старые псевдонимы команд по-прежнему работают: ollama launch clawdbot всё ещё функционирует, так что ничего не сломается, если они сохранены в скриптах или документации.
Системные требования и предварительные условия
Требование к контекстному окну в 64k токенов определяет всё остальное при выборе аппаратного обеспечения и модели, поэтому важно понять его до выбора модели.
Ollama по умолчанию устанавливает длину контекста в зависимости от доступной VRAM: для менее 24 ГБ — 4k контекста, для 24–48 ГБ — 32k, для 48 ГБ и более — 256k. На большинстве потребительских устройств по умолчанию получается 4k, чего недостаточно для агента, выполняющего многошаговые задачи. Вам потребуется явно задать контекст, о чём пойдёт речь в следующем разделе.
Аппаратные требования:
| Характеристика | Минимум | Рекомендация |
|---|---|---|
| ОС | macOS 12+, Linux, Windows (WSL) | macOS 14+, Ubuntu 22.04+ |
| ОЗУ | 16 ГБ | 32 ГБ |
| Видеопамять (локальная модель) | 25 ГБ (для qwen3-coder или glm-4.7-flash) | 48 ГБ+ |
| Видеопамять (облачная модель) | Не требуется, работает на облаке Ollama | GPU опционально |
| Диск | 5 ГБ (OpenClaw + зависимости) | 30 ГБ+ при загрузке локальных моделей |
Требования к ПО:
- Ollama версии 0.17 или новее; именно в ней появилась
ollama launch. Проверьте версию командойollama --versionи при необходимости скачайте с ollama.com/download. - Node.js версии 18 или новее, поскольку OpenClaw устанавливается через npm. Ollama обнаруживает и предлагает установку автоматически, но лучше установить заранее. Скачать можно с nodejs.org.
- Учётная запись Ollama требуется для облачных моделей и веб-поиска на локальных моделях. Зарегистрируйтесь на ollama.com и войдите командой:
ollama signinРекомендации по моделям:
| Модель | Тип | VRAM | Лучше всего для |
|---|---|---|---|
| kimi-k2.5:cloud | Облачная | Нет | Мультимодальные рассуждения и субагенты |
| qwen3.5:cloud | Облачная | Нет | Рассуждения, кодинг, зрение |
| minimax-m2.7:cloud | Облачная | Нет | Быстрые задачи продуктивности |
| glm-5.1:cloud | Облачная | Нет | Рассуждения и генерация кода |
| qwen3-coder | Локальная | ~25 ГБ | Задачи кодирования, полная конфиденциальность |
| gemma4 | Локальная | ~16 ГБ | Локальные рассуждения |
Облачные модели автоматически имеют полную длину контекста и поддержку веб-поиска без дополнительной настройки. Для большинства начинающих лучшим выбором является kimi-k2.5:cloud — он бесплатен для старта, хорошо справляется с агентными задачами и не требует видеопамяти.
Установка одной командой через ollama launch
С Ollama 0.17+ вам не нужно вручную устанавливать OpenClaw, настраивать Шлюз или управлять пакетами npm. Ollama выполняет всю начальную загрузку.
Откройте терминал и выполните:
ollama launch openclawИли сразу с указанием конкретной модели, минуя селектор:
ollama launch openclaw --model kimi-k2.5:cloudДалее Ollama автоматически выполняет пять шагов в следующем порядке:
- Проверка установки: если OpenClaw ещё не установлен, Ollama обнаруживает это и предлагает установить через npm. Подтверждаете — и установка происходит без прямого взаимодействия с npm.
- Предупреждение безопасности: прежде всего OpenClaw показывает предупреждение: агент способен читать файлы и выполнять действия на машине, если включены инструменты. Это не формальность. Агент с доступом к файлам, получив вредоносную инструкцию, может нанести реальный ущерб. Прочтите внимательно. Запускайте OpenClaw в изолированной среде, если не уверены, к чему он может получить доступ. Подробнее в документации по безопасности OpenClaw.
- Выбор модели: появляется список рекомендованных моделей. Выберите одну или нажмите Enter, чтобы использовать модель, заданную через
--model. Селектор показывает как облачные, так и локальные модели с пометками о контексте. - Начальная настройка: Ollama конфигурирует провайдера, устанавливает демон Шлюза, назначает выбранную модель основной и, если выбрана облачная модель, автоматически включает встроенный веб-поиск Ollama.
- Запуск Шлюза: Шлюз запускается в фоне. Открывается терминальный интерфейс (TUI) OpenClaw, и можно сразу начинать общение.
Если нужно только изменить конфигурацию без запуска Шлюза и TUI:
# Перенастройка без запуска агента
ollama launch openclaw --configЕсли Шлюз уже работает, при выполнении этой команды он автоматически перезапустится, чтобы применить новые настройки. Ручной перезапуск не требуется.
Настройка длины контекста для агентных нагрузок
Этот шаг пропускают большинство руководств, и он — самая частая причина, по которой OpenClaw не справляется с реальными задачами.
В официальной документации указан минимум 64k токенов, но важно понимать, что значит «минимум». Агент, выполняющий многошаговое исследование (веб-поиск → чтение страницы → извлечение информации → обобщение → ответ), накапливает контекст на каждом шагу. 64k достаточно для нескольких ходов с вызовами инструментов. Для длительных бесед или задач с множеством вызовов нужно больше запаса. Облачные модели автоматически устанавливаются на максимальную длину контекста и не нуждаются в настройке.
Для локальных моделей задайте длину контекста перед запуском:
# Способ 1: Переменная окружения (задаётся перед запуском Ollama)
OLLAMA_CONTEXT_LENGTH=64000 ollama serve
# Для длительных задач на машине с достаточной видеопамятью используйте больше
OLLAMA_CONTEXT_LENGTH=131072 ollama serve
# Способ 2: Через приложение Ollama
# Откройте настройки Ollama → Context Length → передвиньте ползунок на 64000 или вышеПроверьте, что контекст действительно применён и модель не выгружается на CPU:
ollama psИщите вывод вроде:
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder:latest a4f2cc91b3e1 28.1 GB 100% GPU 65536 5 minutes from nowДва ключевых момента: PROCESSOR должен показывать 100% GPU. Если видно разделение типа 40% GPU / 60% CPU, модель выгружается на процессор, и производительность резко упадёт. CONTEXT должно быть 65536 или выше. Если показывает 4096, переменная окружения не сработала. Убедитесь, что вы запустили ollama serve в том же сеансе оболочки, где задали переменную.
Если 64k не помещаются в видеопамять, используйте облачную модель, а не жертвуйте контекстом. Агенту контекст нужнее, чем локальный инференс.
Подключение канала мессенджера
Когда Шлюз запущен, подключите платформу сообщений командой:
openclaw configure --section channelsОткроется интерактивный селектор с вариантами WhatsApp, Telegram, Slack, Discord и iMessage. Шаги настройки различаются. Telegram — самая простая отправная точка для разработчиков. Не требует привязки номера телефона и использует настоящий токен бота, а не эмулирует личный аккаунт.
Настройка Telegram
Шаг 1: Создайте бота через BotFather
Откройте Telegram и найдите @BotFather. Отправьте /newbot, выберите имя (отображаемое) и юзернейм (должен заканчиваться на bot, например, my_openclaw_bot). BotFather выдаст токен вида:
1234567890:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxСкопируйте токен. Повторно он показан не будет. При утере можно сгенерировать новый командой /token.
Шаг 2: Вставьте токен в OpenClaw
В меню openclaw configure --section channels выберите Telegram и вставьте токен по запросу.
Шаг 3: Выберите «Завершить» для сохранения
После настройки выберите «Завершить» в конфигураторе. Это обязательно. Выход без выбора «Завершить» сбросит конфигурацию.
Шаг 4: Найдите бота в Telegram и начните диалог
Найдите своего бота по юзернейму в Telegram. Отправьте /start. Шлюз обработает первое подключение, и бот начнёт отвечать.
Для WhatsApp используется протокол Baileys: нужно отсканировать QR-код в TUI OpenClaw, чтобы привязать ваш аккаунт. Это работает, но привязывается ваш личный WhatsApp, а не создаётся отдельный бот. Учитывайте это перед настройкой.
Для Slack и Discord потребуется создать приложение в панели разработчика соответствующей платформы и указать токен бота и идентификаторы каналов. Конфигуратор OpenClaw проведёт через необходимые поля.
Реальный проект: приватный исследовательский ассистент в Telegram
Пришло время собрать всё воедино. Итоговый проект — приватный Telegram-бот, который:
- Отвечает на вопросы с помощью локальной или облачной модели
- Ищет в интернете актуальную информацию через встроенный веб-поиск Ollama
- Загружает и пересказывает документы и ссылки, которые ему отправляют
- Выполняет многошаговые исследовательские задачи, не покидая ваше устройство (при использовании локальной модели)
Как только Telegram-канал подключён и Шлюз запущен, всё это работает без дополнительного кода. OpenClaw самостоятельно поддерживает цикл агента. Опыт же формируется сделанными настройками.
Включение веб-поиска
Если вы запустили облачную модель, плагин веб-поиска устанавливается автоматически. Убедиться, что он активен, можно, задав вопрос, требующий свежих данных: «Что анонсировала Anthropic на этой неделе?» Правильно настроенный бот выполнит поиск и вернёт ответ со ссылками. Без веб-поиска ответ будет основан на обучающих данных или признанием незнания.
Для локальных моделей сначала выполните ollama signin, затем:
openclaw configure --section webЭто включит встроенного провайдера web_search от Ollama, использующего вашу учётную запись для маршрутизации поисковых запросов через API Ollama.
Как выглядит многошаговая задача в TUI
Отправьте боту в Telegram:
Найди три наиболее цитируемые статьи об внимании в трансформерах, опубликованные в 2025 году, и сделай краткий пересказ каждой.В терминале OpenClaw на вашей машине вы увидите лог вызовов инструментов агента. Примерно так:
[tool] web_search: "наиболее цитируемые статьи внимание трансформеры 2025"
[tool] web_fetch: https://arxiv.org/...
[tool] web_fetch: https://paperswithcode.com/...
[reasoning] Определены три статьи: ...
[response] Отправка в Telegram...Задача завершится в Telegram форматированным сообщением с названиями статей, количеством цитирований и краткими содержаниями. Обычно это занимает 20–40 секунд в зависимости от модели и скорости соединения.
В этом и заключается главная ценность: многошаговые агентные задачи, которые потребовали бы браузера, нескольких поисков и ручного синтеза, делегируются одним сообщением с телефона, а результат приходит готовым, пока вы заняты другим.
Подход через Python-скрипт: прямой вызов API веб-поиска
Если нужно строить на этой базе программно — скажем, планировать ежедневные исследовательские сводки или направлять результаты в базу данных — можно обращаться к API веб-поиска Ollama напрямую из Python, используя те же учётные данные, что и OpenClaw:
# research_agent.py
# Минимальный исследовательский агент, использующий веб-поиск и чат-API Ollama.
# Требования:
# pip install ollama
# ollama signin (выполнить один раз в терминале)
# ollama pull qwen3.5:cloud (или любая модель с поддержкой инструментов)
#
# Запуск:
# python research_agent.py "Каковы последние достижения в области локальных LLM?"
import sys
from ollama import chat, web_search, web_fetch
# ── Реестр инструментов ─────────────────────────────────────────────────────────────
# Сопоставляем названия инструментов с реальными функциями для обработки вызовов модели.
AVAILABLE_TOOLS = {
"web_search": web_search,
"web_fetch": web_fetch,
}
def run_research_agent(query: str, model: str = "qwen3.5:cloud") -> str:
"""
Многоходовой исследовательский агент, использующий веб-поиск и загрузку страниц
для ответа на вопросы с актуальной информацией.
Аргументы:
query: Исследовательский вопрос
model: Модель Ollama. Рекомендуются облачные модели для контекста 64k+.
Возвращает:
Итоговый синтезированный ответ агента.
"""
messages = [
{
"role": "system",
"content": (
"Ты — исследовательский ассистент. Отвечая на вопросы, требующие"
"актуальной информации, используй инструмент web_search для поиска,"
"затем web_fetch для чтения наиболее перспективных страниц перед ответом."
"Всегда указывай источники в финальном ответе."
),
},
{
"role": "user",
"content": query,
},
]
print(f"Запрос: {query}\nМодель: {model}\n{'-' * 60}")
# ── Агентный цикл ──────────────────────────────────────────────────────────
# Цикл продолжается, пока модель делает вызовы инструментов.
# Как только модель прекращает вызовы и пишет финальный ответ, прерываемся.
while True:
response = chat(
model=model,
messages=messages,
tools=[web_search, web_fetch], # Передаём функции — Ollama извлечёт схему
think=True, # Включаем цепочку рассуждений перед решениями
)
# Показываем след размышлений, если есть (think=True)
if response.message.thinking:
print(f"[thinking] {response.message.thinking[:200]}...")
# Добавляем ответ модели в историю
messages.append(response.message)
# Если модель сделала вызовы инструментов, выполняем каждый и внедряем результаты
if response.message.tool_calls:
for tool_call in response.message.tool_calls:
tool_name = tool_call.function.name
tool_fn = AVAILABLE_TOOLS.get(tool_name)
if not tool_fn:
# Инструмент не найден — сообщаем модели, чтобы она скорректировалась
print(f"[tool] {tool_name}: НЕ НАЙДЕН")
messages.append({
"role": "tool",
"content": f"Инструмент '{tool_name}' недоступен.",
"tool_name": tool_name,
})
continue
args = tool_call.function.arguments
print(f"[tool] {tool_name}({args})")
result = tool_fn(**args)
result_str = str(result)
print(f"[result] {result_str[:150]}...")
# Обрезаем результаты инструментов для соблюдения бюджета контекста.
# При контексте 64k ~8000 символов на результат — безопасный предел
# для многошаговых задач с несколькими вызовами.
messages.append({
"role": "tool",
"content": result_str[:8000],
"tool_name": tool_name,
})
else:
# Больше нет вызовов — модель дала окончательный ответ
final_answer = response.message.content
print(f"\n{'-' * 60}\nОтвет:\n{final_answer}")
return final_answer
# ── Точка входа ───────────────────────────────────────────────────────────────
if __name__ == "__main__":
query = sys.argv[1] if len(sys.argv) > 1 else "Каковы последние достижения в области локальных LLM?"
run_research_agent(query)Предварительные требования:
pip install ollama
ollama signin
ollama pull qwen3.5:cloudКак запустить:
python research_agent.py "Какие три наиболее цитируемые статьи об внимании в трансформерах вышли в 2025 году?"Ожидаемый вывод:
Запрос: Какие три наиболее цитируемые статьи об внимании в трансформерах вышли в 2025 году?
Модель: qwen3.5:cloud
────────────────────────────────────────────────────────────
[thinking] Пользователь хочет конкретные статьи за 2025 год. Нужно найти недавние публикации...
[tool] web_search({'query': 'most cited transformer attention papers 2025', 'max_results': 5})
[result] results=[WebSearchResult(content='...'), ...]...
[tool] web_fetch({'url': 'https://paperswithcode.com/...'})
[result] title='Papers With Code - Transformer Attention...'...
────────────────────────────────────────────────────────────
Ответ:
Вот три высокоцитируемые статьи об внимании в трансформерах за 2025 год:
1. **[Название статьи]** — [Краткое содержание]. Цитирований: 847 (на июнь 2026 г.). Источник: arxiv.org/...
2. **[Название статьи]** — [Краткое содержание]. Цитирований: 623. Источник: paperswithcode.com/...
3. **[Название статьи]** — [Краткое содержание]. Цитирований: 511. Источник: semanticscholar.org/...Обрезка результатов инструментов до 8 000 символов — самая важная практическая деталь в этом скрипте. Без неё длинная веб-страница, загруженная за один вызов, может занять 20–40 тысяч токенов контекстного бюджета и не оставить места для последующих вызовов и финального синтеза. Обрезайте безжалостно и полагайтесь на способность модели работать с самой релевантной частью.
Неинтерактивное и автономное развёртывание
Для продакшен-использования, круглосуточной работы или запуска в Docker интерактивный TUI мешает. Флаг --yes убирает его полностью:
ollama launch openclaw --model kimi-k2.5:cloud --yesФлаг --yes автоматически скачивает модель, пропускает все интерактивные селекторы и сразу запускает Шлюз. Он требует явного указания --model, иначе не сможет определить модель.
Dockerfile для автономного сервера OpenClaw:
# Dockerfile
# Запускает Ollama + OpenClaw как автономную службу агента.
# Сборка: docker build -t openclaw-agent .
# Запуск: docker run -d --gpus all --env-file .env openclaw-agent
#
# Требования к сборочной машине:
# - Docker с nvidia-container-toolkit (для проброса GPU)
# - Файл .env с OLLAMA_API_KEY и учётными данными каналов
FROM ubuntu:22.04
# ── Системные зависимости ────────────────────────────────────────────────────────
# Стандартный репозиторий apt в Ubuntu 22.04 поставляет Node.js 12.x,
# что не удовлетворяет требованию OpenClaw к Node.js 18+, поэтому Node.js 18
# устанавливается из NodeSource.
RUN apt-get update && apt-get install -y curl \
&& curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# ── Установка Ollama ─────────────────────────────────────────────────────────────
RUN curl -fsSL https://ollama.com/install.sh | sh
# ── Установка OpenClaw через npm ───────────────────────────────────────────────────
# Устанавливаем глобально, чтобы бинарник openclaw был в PATH
RUN npm install -g openclaw
# ── Установка длины контекста для агентных нагрузок ─────────────────────────────────────
# 64000 — минимум. Увеличьте, если видеопамять позволяет.
ENV OLLAMA_CONTEXT_LENGTH=64000
# ── Стартовый скрипт ─────────────────────────────────────────────────────────────
# 1. Запускает сервер Ollama в фоне
# 2. Ждёт его готовности
# 3. Запускает OpenClaw без интерактива с указанной облачной моделью
COPY start.sh /start.sh
RUN chmod +x /start.sh
EXPOSE 11434
CMD ["/start.sh"]
# start.sh — работает вместе с Dockerfile выше
#!/bin/bash
set -e
# Запуск сервера Ollama в фоне
ollama serve &
OLLAMA_PID=$!
# Ожидание, пока API Ollama не начнёт отвечать (до 30 секунд)
echo "Ожидание запуска Ollama..."
for i in $(seq 1 30); do
if curl -s http://localhost:11434/api/tags > /dev/null 2>&1; then
echo "Ollama готов."
break
fi
sleep 1
done
# Запуск OpenClaw в автономном режиме — --yes пропускает все интерактивные запросы
# OLLAMA_MODEL должен быть задан в .env-файле или через флаг -e docker run
ollama launch openclaw \
--model "${OLLAMA_MODEL:-kimi-k2.5:cloud}" \
--yes
# Оставляем контейнер живым и следим за логами OpenClaw
wait $OLLAMA_PIDСборка и запуск:
# Создайте файл .env с вашими учётными данными
cat > .env << EOF
OLLAMA_MODEL=kimi-k2.5:cloud
OLLAMA_API_KEY=ваш_ключ_api_ollama
EOF
# Соберите образ
docker build -t openclaw-agent .
# Запустите с пробросом GPU (требуется nvidia-container-toolkit)
docker run -d \
--gpus all \
--env-file .env \
--name openclaw \
openclaw-agent
# Смотрите логи
docker logs -f openclawДля локальных моделей без проброса GPU уберите --gpus all и убедитесь, что OLLAMA_MODEL указывает на облачную модель. Флаг GPU нужен только для локальных моделей, требующих видеопамяти.
Остановка и перезапуск Шлюза:
# Корректная остановка Шлюза (используйте эту команду вместо принудительного завершения процесса)
openclaw gateway stop
# Шлюз автоматически перезапустится при следующем вызове ollama launch
ollama launch openclaw --model kimi-k2.5:cloud --yesОстановка Шлюза и частые проблемы
Корректно остановите Шлюз, когда это необходимо:
openclaw gateway stopCtrl+C в TUI работает для интерактивного сеанса, но может оставить демон Шлюза запущенным. Используйте gateway stop, чтобы гарантированно завершить процесс.
Распространённые проблемы:
- Если сообщения не обрабатываются, проверьте, работает ли Шлюз:
# Проверка, жив ли процесс openclaw gateway
pgrep -la openclaw- Если агент даёт устаревшие ответы, несмотря на настроенный веб-поиск, проверьте вход в учётную запись Ollama:
ollama signin- Если в логах TUI появляется ошибка
context length exceeded, контекстное окно слишком мало для задачи. УвеличьтеOLLAMA_CONTEXT_LENGTHи перезапуститеollama serveперед перезапуском OpenClaw. - Если модель частично выгружается на CPU (видно по выводу
ollama psс разделением процентов), либо уменьшите длину контекста, либо переключитесь на модель поменьше, либо используйте облачную модель. Работа на CPU будет заметно замедлять многошаговые задачи.
Заключение
OpenClaw и Ollama вместе устраняют разрыв между «ИИ, работающим в терминале» и «ИИ, доступным где угодно». Шлюз работает в фоне, мессенджер становится интерфейсом, а весь стек разворачивается одной командой.
Практическая ценность проявляется быстро: многошаговые исследовательские задачи, которые обычно отнимают 20 минут ручной работы, выполняются в фоне, пока вы заняты другим, и доставляются в виде форматированного сообщения на телефон. Файловые задачи, управление календарём и обработка почты активно развиваются, а библиотека навыков OpenClaw пополняется вместе с ростом сообщества, создающего интеграции на основе архитектуры Шлюза.
Для тех, кто заботится о приватности данных, путь с локальной моделью прост: производительная модель, 25 ГБ видеопамяти и одна настройка контекста дают полностью приватного агента без облачных зависимостей. Для тех, кто хочет максимально простого старта — облачная модель в одной команде.
Оба пути ведут к одному: ИИ-ассистенту, который отвечает на сообщения, проводит исследования и работает на инфраструктуре, которую вы контролируете.