сайт в бете
нашли баг? напишите
левин. записаться
весь блог

Своё реле для агента: как Claude Code отвечает мне в чате вместо Telegram

Поднял домашнее реле в Docker, закрыл его по членству и подключил Claude Code как участника чата через ACP-мост по CLI-подписке. Рассказываю, что заработало к 15 августа и где я застрял.

Л
Проект Левин
автор

Почему я ушёл от бота в мессенджере

Бот для агента в Telegram собирается за вечер, и первое время это выглядит как победа. Потом начинаешь замечать детали. Токен бота живёт на чужом сервере. Вся переписка с агентом хранится там же. Агент отвечает через API-ключ, который тарифицируется отдельно от подписки, хотя подписка у меня уже оплачена.

Мне хотелось другого расклада: переписка на моей машине, агент работает по той же подписке Claude Code, которой я пользуюсь в терминале. Поэтому я взял Buzz от block, поднял своё реле и стал разбираться.

Что реально работает на 15 августа

Всё живёт в приватном репозитории ragastar/buzz-lab, задача ведётся как issue #1, дневник — прямо в сообщениях коммитов. Состояние на сегодня:

  • Чекаут block/buzz подтянут до 69107dc3b, вровень с origin/main. Upstream живой: 104 коммита за неделю.
  • Реле поднято в Docker, проект buzz-prod, адрес ws://127.0.0.1:3000, контейнер healthy.
  • Конфиг лежит в relay/.env и добавлен в .gitignore.
  • Режим закрытый: BUZZ_REQUIRE_RELAY_MEMBERSHIP=true, BUZZ_ALLOW_NIP_OA_AUTH=true. Посторонний не подключится, даже зная адрес.
  • Сообщество создано на хосте 127.0.0.1:3000, десктоп и мост установлены.

Четыре коммита за один день, и три из них — про починку. Это честная пропорция для такой задачи.

Агент подключается по подписке

Самая интересная часть — как в чат попадает Claude Code. Он подключён как обычный участник через ACP-мост, который дёргает CLI. Мост говорит с реле по вебсокету, агент отвечает в сообщество своим ключом.

Практический смысл простой: агент в чате перестаёт быть отдельной строкой расходов. Он использует ту же подписку, что и мой терминал, с тем же харнессом, теми же навыками и тем же контекстом проекта. Бот на API-ключе — это чистый лист на каждый запрос. Здесь у меня в чате сидит ровно тот агент, которого я настраивал месяцами.

Три места, где я застрял

Docker Desktop не стартовал. Диагностика вывела на осиротевший сокет userAnalyticsOtlpHttp.sock. Лечится переименованием папки %LOCALAPPDATA%\Docker\run — Docker пересоздаёт её при следующем запуске. Час жизни на проблему, которая к Buzz отношения не имеет.

404 при подключении агента к реле. Мост стучался и получал в ответ пустоту. Починено отдельным коммитом, и это типичная история для закрытого режима: реле честно отвечает отказом, когда клиент ещё не в списке членов сообщества.

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

Ради чего всё это затевалось

Цель у пилота дальше, чем «агент в чате». Я хочу проверить сценарий, где каждый участник приводит своего агента со своим харнессом и своей базой знаний. Друг подключается к тому же закрытому сообществу и приводит собственного. Дальше два человека и два агента работают в одном пространстве, и никто не отдаёт свои наработки в общее облако.

Это принципиально другая механика, чем групповой чат с одним общим ботом. Мой агент знает мои проекты. Его агент знает его проекты. Общее у нас — только канал связи, который лежит у меня в Docker.

Кому стоит повторять

Если нужно просто получать уведомления от агента в телефон — берите Telegram-бота, за вечер соберёте. Своё реле имеет смысл, когда совпадает хотя бы два пункта:

  • переписка с агентом содержит то, что не должно уезжать наружу;
  • хочется задействовать подписку вместо API-ключей;
  • планируется работа в несколько человек, где у каждого свой агент.

Честное предупреждение: это стройка. Buzz активно развивается, за неделю сотня коммитов, документация догоняет код. Половина времени уходит на инфраструктурную возню вроде сокета Docker. Я держу весь путь в репозитории и коммичу даже провалы, потому что через месяц забуду, чем лечился тот 404.

Следующий шаг — пригласить друга и посмотреть, как два агента уживаются на одном реле. Отпишусь, когда проверю руками.

теги #claude code#docker#реле#acp#buzz#самохостинг
разберём вашу задачу

Автоматизация для бизнеса

Вторая сторона исследования: собираю под бизнес ИИ-агентов и автоматизации, которые работают и с клиентами, и с командой. Система остаётся у вас в работе и под вашим управлением.

подробнее и записаться цена по запросу

один разговор — и поймём, чем я могу помочь.

В эпоху ИИ человеку нужен человек. Сяду рядом и доведу до результата — встреча длится столько, сколько нужно. Без скрипта продаж и пакетов «за 999 000 ₽». Если пойму, что помочь не смогу, — скажу сразу.