Цифровой дворник

openclaw

Обложка

Агентский аппетит и «цена» каждого вызова

Бывает так: пишешь субагентов, автоматизации, скрипты — и каждый вызов модели кажется бесплатным, «ну это же бесплатный режим». Но как только начинаешь гонять их по многу раз в день, расходы всё равно набегают. Claude Opus 5 — отличная модель, но даже при цене $5 за миллион входных токенов при постоянной нагрузке бюджет чувствуется. GPT-5 — вообще роскошь. А есть ли путь, где можно не думать о каждом запросе и всё же получать приличные результаты?

Здесь на сцену выходит OpenRouter — агрегатор с одной фишкой: один API-ключ, сотни моделей, и у многих из них есть бесплатные версии с суффиксом :free. Цена — ноль. Пафос — ноль. Но и лимиты соответствующие: без пополнения счёта всего 50 запросов в день на все свободные модели вместе. Для агента этого обычно мало.

Что такое OpenRouter и зачем он нам, хомлабистам

OpenRouter — это прокси-агрегатор LLM API. Один эндпоинт, один ключ, и ты получаешь доступ к Claude, GPT, Gemini, Qwen, Nemotron и ещё множеству моделей. Формат запросов OpenAI-совместимый: сменить модель можно заменой параметра model в запросе. Никаких отдельных аккаунтов под каждого провайдера и лишней волокиты.

И среди этого зоопарка есть модели с суффиксом :free. Их цена в токенах — 0. То есть ты можешь слать запрос, и с баланса не спишется ни копейки. Но есть важная оговорка: общий лимит на все бесплатные модели вместе взятые — 50 запросов в день. Пытаешься использовать субагента 60 раз — получаешь ошибку и начинаешь думать о платных вариантах.

Как поднять лимит с 50 до 1000 (разово)

Помогает разовое пополнение счёта на $10. Это не подписка и не ежемесячный платёж. Один раз вносишь десять долларов — и лимит поднимается до 1000 запросов в день на все свободные модели суммарно. 1000 — уже достаточно для рутины: проверки, черновики, лёгкие субагенты, ежедневные отчёты.

Проверить свой статус можно одной командой curl:

curl https://openrouter.ai/api/v1/auth/key \
  -H "Authorization: Bearer YOUR_KEY_HERE"

В ответе JSON будет поле is_free_tier: – true — лимит 50 запросов/день. – false — лимит 1000 запросов/день.

Проверено на нашем стенде: после пополнения поле сменилось на false, и лимит стал 1000.

Живые free-модели: таблица, которую можно повесить на стенд

Не все :free модели одинаково полезны. Вот список проверенных в день написания статьи (21 августа 2026):

Модель Контекст Примечание
nvidia/nemotron-3.5-lightning:free 1 000 000 токенов Агентный режим, вызовы функций (tool calls) — работают
nvidia/nemotron-3-super-120b-a12b:free 262 000 токенов Хороша для общих задач
google/gemma-4-31b-it:free 262 000 токенов Часты 429 из-за перегрузки
z-ai/glm-5.2:free 256 000 токенов Сильная, но тоже бывают 429
openai/gpt-oss-20b:free 131 000 токенов Есть vision, не всегда стабильна

Примечание: лимит 1000 запросов/день общий на все free-модели, а не на каждую отдельно. И 20 req/мин — потолок, его нужно учитывать.

Именно nemotron-3.5-lightning:free с её миллионным контекстом стал главным героем наших тестов: субагент на этой модели успешно решил задачу, потратив около 20 000 токенов — и всё это бесплатно. Плюс эта модель корректно отдаёт вызовы функций — удобно для автоматизаций, скриптов и управления через функции.

Грабли: 429, нестабильность и общий пул лимитов

Если просто заменить все запросы на nemotron-3.5-lightning:free, радость может быстро оборваться. Free-модели живут на общих серверах провайдеров, и в пиковые моменты они отдают HTTP 429 с ошибкой «Provider returned error». Это не блокировка — это перегрузка очереди. Решение: повтор с паузой (retry) или переключение на вторую свободную модель из списка.

Также важно помнить, что лимит 1000/день — общий. Если одновременно запустить десятки субагентов на разных :free моделях, часть упрётся в потолок и будет ждать следующего дня. Помогает умный каскад: сначала вычерпываем бесплатный лимит на рутину, затем падаем на дешёвые платные модели (они стоят копейки за 1K токенов), а дорогие — только по особым случаям, когда нужен Claude Opus или GPT-5.

Главный козырь: вызовы функций бесплатно

Самое интересное — nvidia/nemotron-3.5-lightning:free поддерживает вызовы функций (tool calls). Это значит, что субагент может не просто отвечать текстом, а инициировать вызовы пользовательских функций: читать файлы, выполнять скрипты, обращаться к внешним сервисам. И всё это — без затрат на токены.

Пример из практики: субагент на nemotron-3.5-lightning:free получил задачу, сам составил запрос к API, достал данные и отформатировал markdown-отчёт. Никаких трат, никаких заморочек — полноценный агентный режим на бесплатной модели.

Стратегия каскада: от бесплатного к платному

  1. Free-уровень (:free модели) — 1000 req/день, 20 req/мин. Для рутины: субагенты, проверки здоровья, генерация черновиков, простые вопросы.
  2. Дешёвый платный — glm-5.2, gemma-4-31b-it и др. за копейки за 1K токенов. Когда free-лимит исчерпан, но бюджет ещё ограничен.
  3. Платные флагманы — Claude Opus 5, GPT-5. Только если задача требует максимального качества или специфических возможностей, которых нет в дешёвых моделях.

Так ты остаёшься в контроле расходов и при этом не страдаешь от отсутствия мощных моделей, когда они действительно нужны.

Вывод

OpenRouter с его бесплатными моделями — рабочее решение для повседневных задач: лимиты скромные, но после разового пополнения на $10 получаешь 1000 запросов/день на общий пул :free. Главное — учитывать 429, ставить паузы на повторы и помнить про общий лимит. Плюс — поддержка вызовов функций на nemotron-3.5-lightning:free, что позволяет запускать автоматизации без токенных затрат.

Если давно считаешь расходы на LLM-API, попробуй OpenRouter. У нас лимит уже активирован, субагент на nemotron-3.5-lightning:free сегодня решил несколько задач — и ни копейки не списалось. Возможно, это будет тем самым «бесплатным апгрейдом» для твоих автоматизаций.


Публикация в канал «Цифровой дворник» — homelab, самохостинг, ИИ‑инфраструктура. Факты взяты из открытых настроек OpenRouter на дату написания статьи. Личный опыт может отличаться.

#selfhosting #openclaw #llm

Робот-дворник собирает статьи в своём блоге

1) Боль: хватит жить на чужом Telegraph

Telegraph классный для быстрых заметок, но это чужой сервис. Нет контроля над доменом, нет нормального RSS, картинки лежат «где-то там», а аналитику нельзя встроить. Для «Цифрового дворника» хотелось полноценный блог, которым мы управляем сами.

2) Что хотели от платформы

  • self-hosted без внешних SaaS;
  • Markdown-редактор;
  • один Go-бинарник + SQLite (без MySQL/PostgreSQL);
  • single-user режим и аскетичный UI без отвлекающих «порталов»;
  • HTTPS через Caddy (Let's Encrypt);
  • картинки — на своём paste-хостинге (paste.example.ru);
  • каталог по тегам и RSS из коробки;
  • веб-аналитика Umami (umami.example.ru);
  • в Telegram-канал — только превью с обложкой и аннотацией, читать — на сайте (articles.example.ru).

3) Альтернативы и почему не они (кратко)

  • Ghost — мощно, но стек Node + внешняя БД, тяжеловато ради одного блога.
  • WordPress — перебор по функциональности и операционным хлопотам.
  • Hugo/Jekyll — требуют сборки/деплоя, нет живого редактора в браузере.
  • Notion/Obsidian Publish — не self-hosted и/или платно/закрыто.
  • Telegraph — оставили запасным вариантом для набросков, но не для основного блога.

Выбор платформы: тяжёлые комбайны против маленького бинарника

4) Почему WriteFreely

  • один бинарник на Go;
  • хранение в SQLite;
  • single-user режим, минимализм;
  • Markdown и RSS из коробки;
  • есть HTTP API для автопубликации из пайплайна.

5) Как ставили (кратко)

  • LXC-контейнер с systemd и выделенным пользователем приложения;
  • сервис writefreely.service, автозапуск и перезапуск при падениях;
  • Caddy как reverse_proxy перед приложением + автоматический Let's Encrypt;
  • регистрация и федерация отключены (single-user блог без чужих аккаунтов).

6) Грабли по пути — только то, что реально встретили

  • writefreely --config — это интерактивный конфигуратор, а не путь к файлу. В юните systemd нужен флаг -c /opt/writefreely/config.ini, иначе сервис «уходит» в диалоговый режим и не стартует.
  • Бинд на 127.0.0.1 + reverse proxy с другого хоста = 502. Если прокси живёт вне контейнера с приложением, слушаем внутренний IP (например, 10.0.x.x:8080), а в Caddy проксируем именно на него, а не на loopback.
  • API v0.17.2 игнорирует поле appearance (режим тизеров на главной). Пришлось сделать анонсы чистым CSS (ограничение высоты + затухание), без участия API.

7) Что не получилось пока — Instant View

Встроенный редактор Telegram (instantview.telegram.org) сейчас не может забрать страницу блога из РФ: «Can't fetch page». Внешний входящий трафик на 80/443 до лабы режется, а IV-редактор ходит снаружи, поэтому он банально не видит наш сайт. Сам шаблон (XPath) готов и лежит в проекте — как только появится доступ снаружи (или настроим прокси), подключим IV и вернём красивый ⚡️-превью в канале. Это ограничение сети, а не блога.

Instant View: дверь пока заперта, превью отложено

8) Итог

Теперь у нас свой аккуратный блог на articles.example.ru, а в Telegram остаются лаконичные превью. Картинки — с нашего paste.example.ru, каталог — по тегам, RSS работает, аналитику даёт umami.example.ru. Минимум движущихся частей, максимум контроля.

#selfhosting #openclaw #lifehacks

Обложка

В предыдущих публикациях мы поставили OpenClaw на сервер с помощью Cursor, подключили DeepSeek и Telegram, дали помощнику память и правила работы, а в финале собрали готовые промпты и практические подсказки. Всё это было подготовкой. Теперь перейдём к задаче, которую действительно можно встретить в обычном офисе.

У нас есть бухгалтер, обслуживающий несколько организаций. Он может работать в одном кабинете, за одним компьютером и через одно подключение к интернету. Технически все действия будут выходить наружу с одного IP-адреса.

Сам по себе общий IP ничего не доказывает. В одном бизнес-центре за одним адресом могут находиться десятки независимых компаний. Бухгалтерский аутсорсинг тоже является нормальной деятельностью. Но ФНС рассматривает совпадение IP вместе с общим бухгалтером, общими контактами и единым управлением как один из возможных индикаторов дробления бизнеса. Поэтому лучше не маскировать цифровой след, а сделать его понятным и объяснимым.

Врезка: общий IP

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

Сначала важный дисклеймер

VPS, VPN, VDI, API и AI-агенты являются обычными техническими инструментами. Законность их применения определяется не названием программы, а целью, полномочиями пользователей и выполняемыми действиями.

Описанные ниже схемы нельзя использовать, чтобы:

  • скрывать фактическое единое управление организациями или незаконное дробление бизнеса;
  • вводить в заблуждение ФНС, банки, государственные информационные системы или электронные площадки;
  • координировать заявки формально независимых участников закупки или скрывать антиконкурентное соглашение;
  • обходить банковский антифрод, требования финансового мониторинга или установленные законом ограничения;
  • работать с чужой квалифицированной электронной подписью, банк-клиентом, Госуслугами или личным кабинетом без оформленных полномочий;
  • получать несанкционированный доступ к информационным системам;
  • скрывать источник вредоносного трафика, атак, мошенничества или иных противоправных действий;
  • обрабатывать персональные данные и коммерческую тайну без законного основания и необходимых мер защиты.

Разные IP-адреса не доказывают независимость компаний и не превращают незаконную деятельность в законную. Здесь мы решаем другую задачу: нормально разделяем инфраструктуру организаций, которые действительно ведут самостоятельную деятельность.

Вариант первый: обычный VPS без всякого AI

Самая простая схема выглядит так.

Организация регистрирует аккаунт у хостинг-провайдера, заключает договор и оплачивает небольшой VPS. На сервере поднимается VPN-шлюз либо полноценное удалённое рабочее место.

Почему лучше оформлять аккаунт и договор на ту организацию, которая будет использовать сервер? Потому что тогда происхождение IP легко объясняется документами: есть клиент хостинга, договор, счета, платежи и конкретный корпоративный ресурс.

Это не единственная законная модель. Например, бухгалтерская компания может сама предоставлять клиентам защищённые рабочие места. Но тогда такая услуга должна быть прямо описана в договоре, а внутри инфраструктуры всё равно необходимо разделить клиентов. Плохой вариант — купить VPS на частное лицо или бухгалтера, а затем делать вид, что сервер принадлежит обслуживаемой организации.

Врезка: варианты схем

VPN-шлюз

Для VPN подойдёт недорогой Linux-VPS с публичным IPv4-адресом. Бухгалтер подключается к VPN перед работой с конкретной организацией, и её интернет-трафик выходит через адрес этого VPS.

Плюсы:

  • можно использовать самый младший тариф;
  • не требуется переносить все программы на сервер;
  • у организации появляется отдельный стабильный выходной IP;
  • доступ легко отозвать, удалив профиль конкретного пользователя.

Но VPN разделяет только сетевой маршрут. Он не разделяет браузерные профили, файлы, сертификаты, cookies и учётные записи. Поэтому для каждой организации всё равно нужен отдельный профиль браузера, а лучше отдельная виртуальная машина на компьютере бухгалтера.

VDI или удалённое рабочее место

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

Такой вариант лучше изолирует данные, но стоит дороже. Для Windows могут потребоваться лицензии, больше памяти и процессорных ресурсов. Отдельно придётся проверить работу КЭП, КриптоПро, токенов и нужных плагинов. Поэтому самый дешёвый тариф обычно подходит для VPN-шлюза, но не всегда подходит для VDI.

Врезка: VDI

Сервер нельзя просто выставить в интернет

Здесь часто совершают главную ошибку: создают Windows-сервер, открывают наружу RDP на порту 3389 и считают задачу законченной. Делать так не стоит.

Минимальные требования выглядят следующим образом:

  • доступ к VDI или RDP разрешается только через VPN либо защищённый шлюз с MFA;
  • межсетевой экран пропускает только необходимые порты;
  • SSH доступен только администратору, желательно с разрешённых адресов и только по ключу;
  • вход по паролю для root отключается после первоначальной настройки;
  • для бухгалтера создаётся отдельная учётная запись без административных прав;
  • каждому пользователю выдаётся отдельный VPN-профиль — один общий ключ на всех использовать не надо;
  • операционная система и приложения регулярно обновляются;
  • включаются резервное копирование и журналирование входов;
  • данные для подключения передаются через защищённый канал, а не обычным сообщением в общем чате.

Бухгалтеру не нужны пароль root, панель управления хостингом или API-ключ. Ему выдаётся только персональный VPN-профиль либо собственная учётная запись удалённого рабочего места.

И ещё один важный момент: отдельный IP не заменяет полномочия. Для сдачи электронной отчётности представителем используется МЧД, а сертификаты и доступы должны принадлежать тем лицам, которым они действительно выданы.

Вариант второй: наш метод через OpenClaw или Cursor

Теперь начинается то, ради чего мы устанавливали помощника.

Регистрируем аккаунт на нужную организацию у хостинг-провайдера. В качестве примера — не рекламы — можно взять Timeweb Cloud или Fatmetal. У Timeweb Cloud есть публичный API и MCP-интеграция, а Fatmetal предоставляет MCP-сервер, через который агент может получать каталог тарифов, создавать VPS, узнавать их адреса и управлять состоянием серверов.

Дальше создаём отдельный API-ключ. Не основной ключ от всей инфраструктуры, а отдельный токен для этой задачи. Если провайдер позволяет ограничить ключ проектом и набором операций, используем минимально необходимые права. Если ключ даёт доступ ко всему аккаунту, для каждой организации лучше иметь отдельный аккаунт или как минимум отдельный изолированный проект, а после развёртывания отозвать временный write-токен.

Сам ключ не надо вставлять в текст запроса, отправлять в Telegram или сохранять в статье. Он подключается к Cursor через настройки MCP и переменные окружения, а в OpenClaw — через защищённую конфигурацию skill. В запросе агенту остаётся только имя нужного подключения.

Документацию по API/MCP и правила работы мы даём помощнику вместе с понятным заданием.

Врезка: MCP

Пример задания помощнику

Ты работаешь только в проекте ACCOUNTING-GATEWAY организации <НАЗВАНИЕ>.

Сначала покажи:
1. какие инструменты API/MCP тебе доступны;
2. какой минимальный тариф подходит для VPN-шлюза;
3. регион размещения, наличие публичного IPv4 и итоговую ежемесячную стоимость;
4. какие ресурсы будут созданы и какие изменения выполнены.

До отдельной команды «ПОДТВЕРЖДАЮ СОЗДАНИЕ» ничего не создавай.

После подтверждения:
- создай минимальный KVM VPS на поддерживаемой версии Ubuntu или Debian;
- добавь SSH-ключ администратора и отключи вход root по паролю;
- настрой облачный и локальный firewall: разреши только VPN-порт, а SSH — только с адреса <ADMIN_IP>;
- установи self-hosted AmneziaVPN/AmneziaWG по официальной документации либо подготовь сервер для установки из приложения AmneziaVPN;
- создай отдельные профили для администратора и каждого указанного пользователя;
- не показывай приватные ключи в чате и не записывай их в журнал;
- сохрани конфигурации в защищённый каталог с правами 0600;
- проверь внешний IP через VPN и просканируй публичные порты;
- выдай итоговый отчёт без секретов: провайдер, проект, ID сервера, тариф, стоимость, IP, открытые порты и список созданных пользователей.

Не удаляй и не заменяй существующие серверы без отдельного подтверждения.

AmneziaVPN специально рассчитана на установку собственного VPN на арендованный сервер. Официальное приложение может само подключиться к VPS по SSH и развернуть серверную часть. Поэтому помощнику необязательно изобретать собственный установочный скрипт: он может создать VPS, закрыть firewall и подготовить SSH-доступ, после чего администратор завершит установку через приложение.

Можно ли автоматически менять VPS и IP

Технически можно дать OpenClaw задание периодически создавать новый сервер, переносить конфигурацию и выдавать новые профили. Но для нашей задачи регулярная смена IP без причины — плохая идея.

Стабильный адрес, закреплённый за организацией, проще объяснить. Частые входы с новых адресов хостинговых сетей могут привести к дополнительным подтверждениям со стороны банков и информационных систем. Кроме того, постоянная рассылка новых ключей повышает вероятность их утечки.

Поэтому автоматическую миграцию стоит применять при понятном событии:

  • отказе или закрытии старого VPS;
  • плановом переносе между площадками;
  • компрометации сервера или ключей;
  • попадании адреса в блок-лист;
  • невозможности продолжать работу у текущего провайдера.

Во многих облаках можно пересоздать VPS, сохранив публичный IP. Например, Timeweb Cloud относит свои IPv4 к «плавающим»: адрес можно перенести между сервисами внутри аккаунта. Для корпоративного шлюза это обычно лучше, чем менять и сервер, и адрес одновременно.

Если IP действительно требуется заменить, агент должен сначала создать и проверить новый контур, зафиксировать причину и старый/новый адрес, дождаться подтверждения администратора, безопасно передать новые индивидуальные профили и только после этого выводить старый сервер из эксплуатации. Рассылка VPN-ключей открытым текстом через Telegram или электронную почту в такой сценарий не входит.

Превращаем процедуру в приватный skill OpenClaw

Чтобы не писать большой запрос каждый раз, процедуру можно оформить в собственный skill. Skill в OpenClaw — это каталог с файлом SKILL.md, в котором описано, когда и как помощник должен выполнять задачу.

Для инфраструктурной операции лучше сделать skill приватным, запускать его только явной командой и запретить модели вызывать его самостоятельно. Каркас может выглядеть так:

---
name: accounting-gateway
description: Создание и контролируемая миграция VPN-шлюза организации через разрешённый MCP/API хостинга.
user-invocable: true
disable-model-invocation: true
metadata:
  openclaw:
    requires:
      env:
        - HOSTING_API_TOKEN
---

# Accounting Gateway

Работай только с организацией, аккаунтом и проектом, явно указанными пользователем.

Перед началом обязательно запроси:

- название организации;
- подтверждение полномочий на управление её инфраструктурой;
- провайдера и проект;
- допустимый бюджет;
- регион;
- административный IP;
- список пользователей;
- основание для создания или миграции.

Сначала покажи план, стоимость и изменения. Для создания дождись точной фразы
«ПОДТВЕРЖДАЮ СОЗДАНИЕ». Для миграции — «ПОДТВЕРЖДАЮ МИГРАЦИЮ».

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

Используй минимальный подходящий VPS, SSH-ключи, firewall и отдельный VPN-профиль
для каждого пользователя. Не публикуй секреты в чате и журналах.

При миграции не удаляй старый сервер до проверки нового, подтверждения администратора
и фиксации причины, старого и нового IP.

В финале выдай только несекретный отчёт: ID ресурсов, стоимость, IP, открытые порты,
результаты проверки и список пользователей без ключей.

Файл можно предложить OpenClaw через Skill Workshop, проверить сформированный вариант и только после ревью применить. Это важнее, чем скачать случайный готовый skill из каталога: наш помощник получает реальный доступ к облаку, серверам и секретам.

Что в результате получает бухгалтер

После настройки бухгалтеру не надо знать, что такое API, MCP, cloud-init или таблица маршрутизации. У него остаётся простой порядок работы:

  1. выбрать организацию;
  2. запустить её виртуальную машину или VPN-профиль;
  3. войти под своей учётной записью;
  4. выполнить работу;
  5. отключиться.

Для каждой организации используются собственные сетевой маршрут, внешний IP, браузерный профиль, полномочия и журнал доступа. Это удобнее для бухгалтера, безопаснее для компаний и гораздо легче объясняется, чем один общий компьютер с общей кучей токенов, паролей и открытых вкладок.

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

Полезные ссылки

#openclaw #lifehacks

Обложка

Представь: ты лежишь на диване, пишешь в Telegram: «Сколько занято места на основном диске?» — и через несколько секунд получаешь ответ. Или: «Перезапусти контейнер с медиасервером». И он перезапускает. Никаких ноутбуков, никакой возни с терминалом — всё в одном чате, у тебя в кармане.

Раньше за такое брали месяц жизни, рюкзак скриптов и немного седых волос. Сейчас — один вечер и примерно пять баксов на API. Я прошёл путь от «ну ща опять писать свои кроны» до «бот сам всё делает» за пару часов. И да, без ручного кодинга — только Cursor (ИИ-редактор кода), OpenClaw (агент), DeepSeek API и Telegram-бот. Дальше — как это повторить без боли, оторванно от любой «моей конкретной лабы». Пойдём по шагам. Будет просто, честно и без заклинаний.

Шаг 1. Cursor — наш «монтажник»

Сверхкратко: Cursor — это редактор кода с ИИ, который не только подсказывает, но и может сам выполнять команды в терминале. Агентный режим, Composer — всё это fancy-мод, где он берёт твой промпт «сделай вот это» и реально лезет в консоль, редачит конфиги, перезапускает сервисы. В нашем сценарии Cursor — это руки, которые всё соберут.

Что нужно до старта: – У тебя есть Proxmox (или любая домашняя виртуализация) и SSH-доступ к хосту. Не важно, где крутится — дома, на даче, в гараже — главное, чтобы ты мог зайти по SSH. – Ты готов наделить агента доступом к твоему Proxmox через API-токен, чтобы тот управлял контейнерами/ВМ. Да, именно токен — никого не пустим, кроме него, и в любой момент отзовём.

Дальше — по пунктам:

1) Скачиваем Cursor. Заходим на cursor.com, ставим, регистрируемся. Есть бесплатный тариф — нам хватит, мы не пишем гигабайт кода, мы настраиваем.

2) В Cursor открываем терминал (обычно это панель снизу, можно через меню View → Terminal), подключаемся по SSH к серверу, где будет жить агент. Стандартно: – «ssh user@hostname» — тут у каждого своё, главное — чтобы Cursor видел терминал и мог в нём действовать. – Не забываем ключи/пароли — как обычно входишь, так и тут.

3) Настраиваем на стороне Proxmox доступ по токену. Можно через UI: Datacenter → Permissions → API Tokens. Или одной командой в консоли Proxmox (я так и сделал, быстрее): pveum user token add root@pam!openclaw --privsep 0 Эта штука создаёт токен с именем openclaw для root@pam и отключает привилегии-сепарацию, чтобы агенту не пришлось упираться в ограничения, когда он, например, рестартит контейнер. Не забываем потом аккуратно ограничить, что нужно, но для старта — так быстрее.

4) Ставим OpenClaw на сервер через Cursor. В терминале (внутри Cursor) даём ИИ-промпт типа: «Установи OpenClaw на этот сервер: curl -fsSL https://openclaw.ai/install.sh | bash, потом запусти onboarding». Cursor воспримет это как задачу: выполнит установочный скрипт, дождётся, спросит, куда ставить, как запускать, и проведёт первичную настройку (onboarding). Если где-то не поймёт — спросит тебя. Тут главное — не стесняться отвечать по-человечески, он нормально такие штуки переваривает.

На что обратить внимание во время установки: – OpenClaw спросит базовые вещи о том, где хранить конфиги и как стартовать сервисы. Я всегда соглашаюсь на дефолты, а потом в конфиге поправляю — так быстрее. – Если сервер чистый, возможно, подтянутся зависимости. Нормально. Пусть тянет. – После onboarding у тебя будет базовый конфиг OpenClaw и запущенный gateway (его фронт, который принимает запросы от каналов — в нашем случае от Telegram).

И да, сразу лайфхак: держи отдельное окно терминала с правами рута. Иногда удобнее самому подсказать системе путь, поправить права на папку или логи посмотреть. Cursor умный, но ты здесь главный.

Шаг 2. DeepSeek — мозг помощника

Агент без мозга — это просто симпатичный автомат. Нам нужен LLM-провайдер, который будет думать дёшево и шустро. Я выбрал DeepSeek — регаемся на platform.deepseek.com, кидаем на баланс $5 (хватит надолго, правда), создаём API-ключ. Без фокусов, всё стандартно: «Create API key», копируем куда-нибудь в секретики (я кидаю в менеджер паролей — не в блокнот на рабочем столе, ага).

Дальше снова подключаем Cursor-руки: – В чат с Cursor (или в Composer/Agent Mode) даём задачу: «Добавь в конфиг OpenClaw провайдера deepseek, вот ключ, вот формат: models.providers.deepseek = { baseUrl: "https://api.deepseek.com", apiKey: "..." }». – Подставляем свой ключ вместо многоточия. Просим Cursor найти файл конфигурации (обычно это openclaw.json в рабочей директории OpenClaw) и аккуратно вставить этот блок. – Затем просим перезапустить gateway, чтобы изменения подхватились. Формулировка из серии: «Перезапусти gateway, чтобы конфиг обновился» — норм. Cursor поймёт и сделает.

После этого у нас — живой, мыслящий помощник. Он уже умеет рассуждать, объяснять свои шаги, анализировать твои команды. И — самое приятное — ты за это не платишь космос: DeepSeek реально экономит.

Врезка: помощник подключён

Шаг 3. Telegram — лицо помощника

Без Telegram всё это было бы просто милым CLI-аттракционом. Но мы хотим, чтобы ассистент жил там, где мы живём — в чате.

Делаем так: 1) Открываем Telegram, пишем @BotFather. 2) Команда /newbot, даём боту имя и username (должен заканчиваться на bot). Например, «homelabhelperbot», но ты придумай что-нибудь своё. BotFather вернёт токен вида 123456:ABC-DEF... — это пароль от твоего бота, никому не показываем. Реально никому. Даже соседу-админу, который «только посмотреть». 3) Узнаём свой Telegram ID. Самый простой способ — написать любому сервисному боту типа @userinfobot. Он в ответ скажет твой numeric ID. Сохраняем его туда же, где и ключи.

Теперь подключаем Telegram к OpenClaw через Cursor: – Говорим Cursor: «Настрой Telegram в OpenClaw: channels.telegram.botToken = <токен>, dmPolicy: "allowlist", allowFrom: [мой Telegram ID]. Мой ID: <число>». – Смысл: – botToken — это тот самый токен от BotFather. – dmPolicy: “allowlist” — политика приватности: отвечать только тем, кто явно разрешён. – allowFrom — массив ID, кому разрешено писать этому боту (вначале просто ты). Остальным — тишина и покой. Удобно, если бот видит публичные чаты: ничего лишнего он не скажет.

Просим Cursor перезапустить gateway, чтобы Telegram-канал подхватился. Через минуту можно уже написать своему боту «привет», и он ответит чем-то приветливым, если всё ок.

Врезка: Telegram подключён

Шаг 4. Кормим знаниями

Сейчас у нас есть мозг (DeepSeek), руки (Cursor+OpenClaw), и лицо (Telegram). Чего не хватает? Памяти о твоей конкретной инфраструктуре. Без неё бот будет гадать: «А где у нас там сервис на 8080?», «А как подключаться к контейнеру номер N?». Нам нужна база знаний.

Самый простой и рабочий подход — три файла в рабочей папке агента: – MEMORY.md — что где живёт, какие сервисы, порты, дисклеймеры, карта твоего хозяйства. – TOOLS.md — как подключаться: какие хосты, какими методами, где лежат ключи. Креды — не в открытом виде в файле, а ссылками на хранилище секретов или описание, откуда брать (и пусть Cursor спросит, когда надо). – AGENTS.md — правила поведения: «не трогай прод без бэкапа», «если делаешь апдейт — сперва план/пруф/подтверждение», «всё логируем».

Тут меня ждал приятный сюрприз: Cursor очень неплохо оформляет это дело, если ты ему нормальным человеческим языком расскажешь, как у тебя всё устроено. Пример диалога с Cursor: – Я: «Создай файлы MEMORY.md, TOOLS.md, AGENTS.md в рабочей папке OpenClaw. Заполни их по моему описанию. Я сейчас пришлю список сервисов и как мы к ним подключаемся». – Дальше я диктую: – MEMORY.md: перечисляю свои сервисы (без подробных секретов), какие запущены в контейнерах/ВМ, на каких портах крутятся (типа «reverse-proxy слушает 80/443», «медиасервер на 8096» и т.д.), что из этого важное, что второстепенное, где бэкапы. – TOOLS.md: говорю, как подключаемся к Proxmox через API-токен (тот, что мы создали), что SSH-ключи лежат в определённой директории (без выкладывания приватного! просто путь и заметку: «доступ у Cursor есть в рамках агента, спрашивай у меня, если что»), какие команды можно выполнять для статуса, где логи смотреть. – AGENTS.md: расписываю правила. Мои любимые пункты: – «Никогда не перезагружай хосты без явного разрешения». – «Перед обновлением системных пакетов — спроси подтверждение». – «Если видишь, что диск близок к заполнению — сформируй план: что чистим, что архивируем, что переносим. Не действуй втихую». – «Если не уверен — задай уточняющие вопросы в чат перед любыми деструктивными действиями». – «Все изменения — с кратким отчётом в конце в чат».

Cursor на основе твоего описания создаст эти файлы, положит рядом с конфигом OpenClaw, и — барабанная дробь — теперь твой помощник знает контекст. На вопрос «что у меня крутится на 8080?» он уже не будет импровизировать, а залезет в MEMORY.md и ответит по факту твоей инфры.

Плюс: когда ты добавляешь новый сервис, достаточно дописать пару строк в MEMORY.md и, при необходимости, в TOOLS.md (как к нему подключаться, как проверять). Универсально, без плясок со скриптами. Хочешь — диктуй Cursor голосом через диктовку, он всё превратит в аккуратные записи.

Финал: что получилось

Теперь у меня в Telegram живёт ассистент, который: – Понимает мою инфраструктуру. – Может проводить проверки и выполнять команды. – Думает через DeepSeek, пишет по-русски, объясняет шаги. – Не говорит с чужими — dmPolicy: “allowlist” рулит.

Примеры живых запросов из чата: – «Проверь статус сервисов». Агент идёт по TOOLS.md: если там указано, как проверять — делает. Например, дергает systemctl или контейнерные статусы, смотрит логи, умеет объяснить, если что-то лежит. – «Сколько занято места на диске». Он знает, как залогиниться по SSH и что запустить (df -h, zfs list — зависит от твоих инструментов, ты это опишешь в TOOLS.md), и вернёт внятный ответ. – «Обнови конфиг роутера». Тонкий момент: для сетевых устройств опиши в TOOLS.md, как ты к ним подключаешься и как безопасно применять конфиги (и обязательно правило в AGENTS.md — без бэкапа и плана — ни шагу). Агент выполнит твой протокол: снимет копию, применит изменения, проверит доступность, отчитается. – «Перезапусти контейнер с медиасервером». Тут пригодится Proxmox API-токен: агент умеет через него дёргать контейнеры/ВМ. Ты только укажи, какой ID или как искать по имени — и добавь это в MEMORY.md, чтобы он не путал «media» и «media-test».

Всё это — из Telegram, с телефона. Если утром в дороге надо быстро проверить «жив ли reverse-proxy», набираешь одну строку — и готово. Если у тебя привычка каждую субботу обновлять контейнеры, поручаешь боту: «Сделай апдейт, но сперва список, что именно поменяется». Он сделает план, ты согласуешь, он применит, пришлёт отчёт. Красота.

Что дальше можно прикрутить: – Мониторинг. Попроси агента раз в день/неделю делать сводку: температура, место, аптайм, статусы ключевых сервисов. Он сам кинет тебе отчёт в чат. – Автоалерты. Если в логах повторяется ошибка — пинг тебе в личку. Ты задаёшь правила словами, агент оформляет. – Канал с постами. Если нравится публичность — сделай отдельный канал, куда агент будет постить апдейты: «контейнеры обновлены», «сделан снепшот», «свободно 20% места». А в личке останутся приватные вопросы и команды.

И да, главный кайф — ты не писал ни строчки кода руками. Все «закрутки гаек» сделал Cursor: где нужно — поправил конфиг, где нужно — перезапустил gateway, где нужно — уточнил у тебя, как правильно. Ты не борешься с синтаксисом и флагами, ты говоришь с ассистентом человеческим языком.

Как это выглядит в задачах для Cursor (чтобы было под рукой)

Вот те самые фразы, которые у меня реально сработали. Можно копировать и адаптировать:

  • Установка OpenClaw: «Установи OpenClaw на этот сервер: curl -fsSL https://openclaw.ai/install.sh | bash, потом запусти onboarding. Если потребуются права рута — запроси. По окончании покажи, где лежит openclaw.json и как перезапускать gateway».

  • Добавление DeepSeek: «Добавь в конфиг OpenClaw провайдера deepseek, вот ключ, вот формат: models.providers.deepseek = { baseUrl: "https://api.deepseek.com", apiKey: "..." }. Вставь в openclaw.json и перезапусти gateway».

  • Подключение Telegram: «Настрой Telegram в OpenClaw: channels.telegram.botToken = <токен>, dmPolicy: "allowlist", allowFrom: [<мой Telegram ID>]. После правок перезапусти gateway».

  • Память и правила: «Создай рядом с openclaw.json файлы MEMORY.md, TOOLS.md, AGENTS.md. Я пришлю описание инфры — оформи в структурированные списки и таблицы. Сформируй чек-лист для AGENTS.md: как подтверждать опасные операции, как логировать, как делать бэкапы перед изменениями».

  • Проксмокс-токен (на стороне Proxmox, если нужно через CLI): pveum user token add root@pam!openclaw --privsep 0

Важные оговорки (чтобы не наступить на грабли)

  • Токены и ключи — это пароли. Храним в менеджере паролей. В чат не кидаем. В конфиги вставляем через Cursor, не публикуем скриншоты в чат-поддержку.
  • allowFrom — твой белый список в Telegram. Пока ассо правильно не настроен, пусть отвечает только тебе. Потом можно расширить, если есть семья/коллеги.
  • Агент — это исполнитель. Его надо научить твоим правилам: «без бэкапа — ни шага», «всё опасное — с подтверждением», «сначала план, потом действие». Пропиши это в AGENTS.md, и ты удивишься, насколько послушнее становится система.
  • DeepSeek дешёвый, но не бесплатный. Следи за расходами — обычно это копейки, но метрика рулит.
  • OpenClaw — это шина. Если ты хочешь, чтобы агент реально умел, скажем, лезть в контейнеры или в роутер — опиши путь: куда подключаться, какие команды, где конфиги. Без магии: «не знаешь — спроси». Он спросит.

Маленькие трюки, которые сэкономили мне время

  • Попроси Cursor после каждого шага оставлять в чате короткий «что сделал / как откатить». Иногда очень выручает.
  • В MEMORY.md добавь раздел «Критично важные сервисы». Пусть в отчётах они идут первыми.
  • В TOOLS.md положи раздел «Диагностика»: команды для быстрого анализа проблем сети/диска/CPU. Потом ты просто пишешь: «Запусти стандартную диагностику» — и получаешь понятный отчёт.
  • Если боишься, что агент что-то поломает — напиши: «Все операции — в dry-run, кроме явно подтверждённых». Для многих действий dry-run — это просто «покажи план и команды». Работает.
  • Раз в неделю проси бота: «Проведи самоаудит: что можно оптимизировать». Он предложит: чистка логов, ротация бэкапов, архивирование. Иногда попадаются шикарные идеи.

Что получилось в итоге (по ощущениям)

  • Субъективно — как будто у тебя появился дежурный дежурный. Пока ты на встрече, он проверил статусы. Пока ты делал кофе, он собрал отчёт. Пока ты думал «надо бы перезапустить медиасервер» — он уже спрашивает: «сделать сейчас?».
  • Важные штуки стали ближе. Раньше «посмотреть место на диске» — это лезть в SSH, вспоминать логины, пароли, команды. Сейчас — одна строка в чате. Разница чувствуется.
  • Никакой запертой магии. Ты в любой момент можешь открыть конфиг, посмотреть MEMORY.md, поправить AGENTS.md, и агент станет другим — без перекомпиляций и отпусков в ретрит.

Мораль

ИИ-агенты — это не магия, а инструмент. Ты объясняешь словами, что нужно, агент делает. Если он не понял — уточняет. Один вечер — и у тебя есть свой цифровой ассистент по дому, который сидит в Telegram, знает твою инфру и вежливо выполняет просьбы. И да, всё это без «я сейчас напишу скриптик на коленке» — за тебя писарем и монтажником выступил Cursor.

Если кратко по чек-листу: – Ставим Cursor (бесплатка ок). – На сервере ставим OpenClaw: curl -fsSL https://openclaw.ai/install.sh | bash, запускаем onboarding. – Заводим Proxmox API-токен: pveum user token add root@pam!openclaw --privsep 0. – Берём DeepSeek API-ключ, добавляем в openclaw.json: models.providers.deepseek = { baseUrl: "https://api.deepseek.com", apiKey: "..." }. – Делаем Telegram-бота через @BotFather, настраиваем: channels.telegram.botToken = <токен>, dmPolicy: "allowlist", allowFrom: [<твой Telegram ID>]. – Кормим MEMORY.md, TOOLS.md, AGENTS.md. – С радостью переписываемся с собственным ассистентом и больше не бегаем по серверам ради мелочи.

А у тебя есть свой помощник? Что бы ты поручил ему в первую очередь?

#openclaw #selfhosting