hidi — агент в кармане
Мост из Telegram в Claude Code: полноценный агент с доступом к диску и терминалу, но под политикой и аудитом.
- Голос или текст с телефона — ответ с разметкой, файлами и живым статусом выполнения
- Каждое действие проходит через политику: что можно молча, что только с подтверждением
- Полный журнал: что сделано, по чьей команде и во сколько обошлось
Задача
Мне нужен был не «чат с ботом», а рабочий агент — тот же, что в терминале, с файлами и командами. Но пускать такого в мир через мессенджер без гейта нельзя: одна неудачная формулировка, и он сделает необратимое.
Как устроено
aiogram и Claude Agent SDK, одна непрерывная сессия, доступ только по списку разрешённых. Авторизация идёт через уже залогиненный CLI, без отдельного API-ключа — сознательное решение, чтобы жить на подписке, а не на поштучной оплате. Проект намеренно начат с пользы, а не с инфраструктуры: systemd и деплой появились только тогда, когда без них стало неудобно.
Что было трудно
Главная находка — ловушка в самом SDK. Функция с названием, которое читается как «универсальный гейт на использование инструмента», таковым не является: часть вызовов проходила мимо проверки. Пока я не перевёл политику на перехватчик перед вызовом инструмента, защита выглядела рабочей и не была ею. Это ровно тот класс ошибки, который не видно по признаку «оно работает».
Чем подтверждено
- Живой сквозной тест до объявления готовности, а не «код компилируется»
- Четыре этапа плана закрыты: развёртывание и служба, политика с подтверждениями и аудитом, разметка с запасным путём, голосовой ввод
- Команды управления сессией прямо из чата: смена модели, режим планирования, продолжение, показ изменений