Карпатый написал пост про Claws — новую категорию персональных AI-агентов. Разобрал OpenClaw, его проблемы с безопасностью, выделил NanoClaw как минималистичную альтернативу. Там была очень важная мысль: агент не просто работает — он расширяет сам себя через текстовые инструкции, без правки кода. А что если сделать похожее самим, с нуля, не ставя ничего чужого? Пошли разбираться.
Если сказать точнее, то код дописывает Claude Code по команде из Telegram. Но ощущается это именно как самодописывание агента — и это важно.
Идея NanoClaw: инструкция вместо кода
Карпатый формулирует суть подхода: «Код — ничто. Смысл — всё».
В NanoClaw есть базовая функциональность — контейнеры, WhatsApp, память, планировщик, около 4000 строк. Но расширяется проект не через код. Хотите поддержку Telegram? Запускаете команду /add-telegram — агент читает инструкцию из обычного текстового файла и дописывает нужное в вашу копию. Никаких конфигов, никаких плагинов — просто описание что нужно сделать.
Здесь важно разделить два уровня, которые в NanoClaw работают вместе:
CLAUDE.md — это память агента и правила поведения. Что он должен помнить, как себя вести, что уточнять перед опасными действиями.
.claude/skills/ — это модульные расширения. Каждый файл — инструкция как добавить новую функцию. Запустил /add-telegram — агент прочитал инструкцию и дописал себя.
Первое влияет на поведение. Второе добавляет возможности.
Репозиторий NanoClaw
Разбор концепции от Simon Willison
Интервью с автором NanoClaw о философии проекта
Почему не поставили NanoClaw
Не потому что плохой проект. Просто ставить незнакомый код на сервер с доступом к файлам и мессенджерам — это осознанное решение, которое требует времени и понимания каждой строчки. У нас его не было.
Поэтому взяли идею и собрали своё: минимальное, понятное от начала до конца. Это не замена NanoClaw — другой подход с другими компромиссами.
Что такое Claude Code — коротко
Claude Code — это Claude, у которого есть руки. Читает файлы на сервере, выполняет команды в терминале, ищет в интернете, редактирует код, делает коммиты в git, подключается по SSH к другим машинам.
Ограничение одно: запускается через терминал. Значит, нужен компьютер. Отправить задачу с телефона — нельзя. Это и захотели починить.
Что получилось
Пишешь задачу в Telegram с телефона — Claude Code выполняет на сервере — присылает результат.
Telegram-бот принимает сообщение и передаёт его в Claude Code. Тот выполняет — результат возвращается в чат. Весь Python-код бота около 80 строк.
Как собирали — с нюансами
Сервер. VPS на Ubuntu 24.04, уже был. Claude Code установили через npm install -g @anthropic-ai/claude-code.
Авторизация — и здесь серая зона. Claude Code авторизуется через OAuth-токен аккаунта (подписка Max) — это не API-ключ из консоли Anthropic, а сессионный токен. Мы скопировали ~/.claude/.credentials.json с локальной машины на сервер. Работает, но Anthropic эту схему явно не описывает как поддерживаемую. Риск, который приняли осознанно для личного инструмента.
Бот. Python, aiogram 3, ~80 строк. Принимает сообщение, вызывает claude -p "текст" через subprocess, возвращает ответ.
Нюанс с root. Флаг --dangerously-skip-permissions не работает под root. Создали пользователя claudebot — Claude Code работает от его имени.
Память через CLAUDE.md. Создали файл в домашней директории пользователя claudebot. Claude Code читает его при каждом запуске — там прописано кто мы, какие проекты, что спрашивать перед опасными операциями. Это первый уровень «инструкции вместо кода»: через CLAUDE.md агент уже меняет поведение и учитывает правила.
Расписание. Cron-скрипт запускает Claude в 9:00 и отправляет утренний дайджест AI-новостей. Это заодно показало что Telegram — не единственный интерфейс: того же Claude можно дёргать и по расписанию.
Что умеет прямо сейчас
- Отвечает на вопросы через Telegram
- Выполняет bash-команды на сервере
- Ищет свежую информацию в интернете
- Читает и редактирует файлы — в том числе свой собственный код
- Работает с git — коммиты, пуши, анализ изменений
- Присылает утренний дайджест по расписанию
- Помнит инструкции и контекст через CLAUDE.md
Из реальных запросов:
- «Что жрёт память на сервере?» — запустит анализ, ответит
- «Добавь в бота команду /status» — сам отредактирует код и предложит перезапуск (в зависимости от правил в CLAUDE.md)
- «Найди свежие новости про AI» — поищет, пришлёт саммари
- «Задеплой проект X» — скопирует, установит зависимости, запустит
Безопасность — и честно про ограничения
Важно понимать: здесь «сам» — это не автономность без ограничений. Агент действует по запросу, в рамках прав пользователя claudebot и правил из CLAUDE.md. Это не песочница уровня контейнеров — осознанный компромисс в пользу простоты и прозрачности.
Что сделали:
- Бот отвечает только одному user ID
- Claude работает от claudebot, не от root — это существенно снижает риски: доступ ограничен правами этого пользователя, а не всей системой. Но это не изоляция: при доступе к shell и сети риск остаётся
- В CLAUDE.md прописаны правила поведения — это soft-guardrails, инструкции для модели, а не технические ACL. Критичные ограничения дублируем на уровне OS: права пользователя, sudoers, firewall
- Явные запреты в правилах: rm -rf, изменение firewall, SSH-конфигов, отправка данных наружу
Понятный — не значит безопасный по умолчанию. Мы сознательно выбрали простоту вместо контейнерной изоляции и компенсируем это ограничениями на уровне системы и правилами в CLAUDE.md.
Что дальше — и при чём здесь идея Карпатого
CLAUDE.md уже работает как первый уровень «инструкции вместо кода». Следующий шаг — вынести расширения в .claude/skills/ и сделать модульные инструкции, которые агент подключает по команде. Тогда /add-что-то будет читать инструкцию и дописывать себя — ровно как в NanoClaw, только поверх нашей более простой базы.
Ещё в планах:
- История диалогов — уже работает базовая версия, в планах расширить
- Доступ к домашнему компу — через Tailscale или reverse SSH, одной фразой деплоить с локалки на сервер
- Мониторинг — диск или память на пределе → агент сам пришлёт алерт
Итого
~80 строк Python, один systemd-сервис, файл с инструкциями — и полноценный ИИ-агент в Telegram, который умеет всё что умеет терминал, плюс думает.
Не замена NanoClaw — другой подход, проще и без контейнерной изоляции. Зато понятный от начала до конца, и он уже умеет дописывать себя по инструкциям.
Подробнее про Claws как явление на русском.