Claude отключил мне OpenClaw. Штош… я написал замену TG+Claude Max по oAuth
Вчера Anthropic решил, что OpenClaw больше не может подключаться к Claude Code через Telegram. Мой рабочий сетап, которым я пользовался каждый день, просто перестал работать. Можно было расстроиться (что я и сделал вначале), но потом таки сел и написал замену.
Называется TeleClaude. Опенсорс, MIT-лицензия, self-hosted, работает на вашей машине, использует вашу подписку Claude. Никаких промежуточных сервисов и дополнительных оплат.
Репозиторий: github.com/devladpopov/teleclaude
Контекст: зачем вообще Claude Code в Telegram
Я управляю несколькими проектами одновременно. Для каждого нужен свой контекст: файлы, история решений, зависимости, инфраструктура. Claude Code умеет работать с файловой системой напрямую, но переключаться между проектами в терминале неудобно.
Решение, которое я использовал последние несколько месяцев: Telegram-супергруппа с топиками (один топик на проект). Пишешь в топик “Бэкенд”, Claude отвечает с полным доступом к файлам этого проекта. Пишешь в “Лендинг” — работает с лендингом. Пишешь в “DevOps” — поднимает контейнеры и правит конфиги. Всё через один чат, без переключения окон.
Telegram-супергруппа (режим форума)
│
├── Топик "Backend API" → Claude Code → ~/Projects/backend-api/
├── Топик "Лендинг" → Claude Code → ~/Projects/landing/
├── Топик "DevOps" → Claude Code → ~/Projects/devops/
└── Топик "Новая фича" → автоматически создает директорию проекта
Раньше это работало через OpenClaw, теперь Anthropic закрыл ему доступ. TeleClaude делает то же самое, но локально.
Архитектура
TeleClaude — это TypeScript-приложение на Bun, которое слушает Telegram Bot API через Grammy и маршрутизирует сообщения из топиков в изолированные процессы Claude Code CLI.
┌──────────────────┐
│ Telegram Bot API │
└────────┬─────────┘
│
┌────────▼─────────────────────────┐
│ Router (grammy) │
│ ├── Маршрутизация по топикам │
│ ├── Обработка команд │
│ ├── Инъекция контекста памяти │
│ ├── Компрессия контекста │
│ ├── Менеджер памяти (дедуп) │
│ ├── Фабрика проектов (шаблоны) │
│ └── Whisper-клиент (опц.) │
└────────┬─────────────────────────┘
│
┌────────▼─────────────────────────┐
│ Менеджер процессов │
│ ├── Спавн процесса на сообщение │
│ ├── Передача через stdin │
│ ├── Непрерывность сессий │
│ ├── TTL и очистка │
│ └── Лимиты параллелизма │
└────────┬─────────────────────────┘
│
┌────────▼─────────────────────────┐
│ Claude Code CLI │
│ Один процесс на топик │
│ Изолированная рабочая директория │
│ Полный доступ к файлам │
└──────────────────────────────────┘
Ключевой момент: TeleClaude не использует Anthropic API напрямую. Он запускает процессы Claude Code CLI, которые авторизованы через OAuth — точно так же, как вы используете Claude Code в терминале. Если вы залогинены в Claude Code — TeleClaude просто работает. Подписка Max, Pro или Team — без разницы, дополнительных расходов нет.
Система памяти
Самое интересное в проекте — трёхуровневая файловая память. Каждый топик-проект получает такую структуру:
project/
├── SOUL.md # Личность бота: стиль общения, правила, ограничения
├── main-memory.md # Общий контекст всех проектов (симлинк на единый файл)
├── topic-memory.md # Память конкретного топика (обновляется Claude автоматически)
├── CLAUDE.md # Инструкции проекта для Claude Code
└── memory/
├── people/ # Люди и контакты
├── services/ # Документация инфраструктуры
├── shared/ # Кросс-проектные данные└── projects/ # Контекст конкретных проектов
SOUL.md задаёт личность. Язык общения, тон, правила форматирования, принципы принятия решений. Этот файл один на всех — бот ведёт себя одинаково в любом топике.
main-memory.md — общая база знаний. Индекс проектов, контакты, ссылки на ресурсы, серверы, ключи. Это симлинк: один файл доступен из каждого проекта. Когда Claude узнаёт что-то важное в одном топике, это становится доступно во всех остальных.
topic-memory.md — память конкретного проекта. Решения, архитектурные выборы, статус задач, хронология. Claude обновляет этот файл сам по мере работы. При сбросе сессии или перезапуске весь контекст сохраняется.
На практике это означает следующее: вы можете закрыть ноутбук, уехать в отпуск, вернуться через неделю, написать в топик “где мы остановились?” — и получить осмысленный ответ с полным контекстом.
Автоматическое создание проектов
Когда кто-то создаёт новый топик в супергруппе, бот подхватывает его автоматически: создаёт директорию проекта из шаблона, линкует SOUL.md и main-memory.md, готовит topic-memory.md. Следующее сообщение в этот топик уже обрабатывается Claude Code с полным контекстом.
Шаблоны лежат в templates/ и настраиваются: можно определить стартовую структуру, инструкции по умолчанию, начальный контент памяти.
Компрессия контекста
Claude Code имеет ограничение на размер контекста. При длинных диалогах контекст переполняется. TeleClaude решает это автоматической компрессией: когда контекст приближается к лимиту, бот сохраняет ключевые решения и факты в файлы памяти, а затем сбрасывает сессию. Новая сессия стартует с полным контекстом из файлов.
Компрессию можно вызвать и вручную командой /compact.
Полный список возможностей
|
Функция |
Описание |
|---|---|
|
Маршрутизация по топикам |
Каждый топик = изолированный процесс Claude Code со своей рабочей директорией |
|
Постоянная память |
Три уровня: личность + общая база + по проекту |
|
Автосоздание проектов |
Новые топики автоматически получают директорию из шаблонов |
|
Голосовые сообщения |
Транскрипция через локальный Whisper ASR |
|
Стриминг ответов |
Индикатор “печатает” и обновление сообщения по мере генерации |
|
Переключение моделей |
Opus, Sonnet, Haiku или локальные модели через Claude Code |
|
Непрерывность сессий |
Флаг |
|
Управление процессами |
Настраиваемый TTL, лимиты параллельных процессов, очистка простаивающих |
|
Дедупликация памяти |
Периодическая кросс-файловая очистка дублирующейся информации |
Установка и запуск
Требования:
-
Bun 1.0+
-
Claude Code CLI (установлен и авторизован через OAuth)
-
Любая подписка Claude (Max, Pro, Team)
-
Telegram-бот от @BotFather
-
Telegram-супергруппа с включенными топиками
git clone https://github.com/devladpopov/teleclaude.git
cd teleclaude
bun install
Настройка:
cp .env.example .env
cp config/settings.example.json config/settings.json
cp config/topics.example.json config/topics.json
cp templates/SOUL.example.md templates/SOUL.md
cp templates/main-memory.example.md templates/main-memory.md
В .env прописываете токен Telegram-бота. В settings.json — свой Telegram user ID и параметры процессов:
{
"telegram": {
"allowedUsers": [123456789]
},
"processes": {
"ttlMinutes": 30,
"maxConcurrent": 5,
"claudePath": "claude"
},
"compaction": { "enabled": true },
"memory": { "enabled": true, "deduplication": true },
"whisper": { "enabled": false }
}
Запуск:
bun run start
Добавляете бота в супергруппу, даёте права администратора. Пишете в любой топик. Работает.
Команды бота
|
Команда |
Описание |
|---|---|
|
|
Список всех команд |
|
|
Активные процессы, TTL, статус функций |
|
|
Таймаут простоя (1–1440 минут) |
|
|
Переименовать топик (обновляет маппинг проекта) |
|
|
Сброс сессии с сохраненной памятью |
|
|
Остановить процесс Claude Code текущего топика |
|
|
Статистика файлов памяти и текущей сессии |
Сравнение с OpenClaw
|
|
TeleClaude |
OpenClaw |
|---|---|---|
|
Хостинг |
Self-hosted (ваша машина) |
Облачный сервис |
|
AI-бэкенд |
Claude Code CLI (полный доступ к файлам) |
Через API |
|
Авторизация |
OAuth (ваша подписка) |
Управляемая |
|
Стоимость |
Бесплатно с любой подпиской Claude |
Отдельная подписка |
|
Модели |
Opus / Sonnet / Haiku + локальные |
Зависит от провайдера |
|
Память |
Файловая, постоянная, кросс-проектная |
Встроенная |
|
Кастомизация |
Полный контроль |
Ограниченная |
Что поменялось для меня
Ничего — и это самое прекрасное в текущем сетапе! Та же самая супергруппа, те же топики, те же проекты. Раньше в группе сидел бот, который ходил через OpenClaw к Claude Code. Теперь сидит новый бот, который ходит к Claude Code напрямую. Я написал миграцию, чтобы новый бот подхватил всю историю и контексты старого. Единственное, что раньше для генерации изображений я использовал подписку Gemini и OpenClaw автоматически на нее переключался в некоторых сценариях. Мое решение пока так не умеет, однако умеет автоматически переключаться на локальный Whisper, например, для распознавания голосовых в чате.
Репозиторий: github.com/devladpopov/teleclaude. Есть README на русском, баги и фичреквесты — через Issues.
PS: подписывайтесь на мой телеграм-канал попов в ии, там рассказываю про реальные кейсы использования нейронок в бизнесе.
Автор: StudyQA

