> Go Батя

Секретарь штаба или как я перестал всё держать в голове

#llm #агенты #llmagent #openclaw #self-hosted #автоматизация

Недавно я писал, что не управляю людьми, — и это осознанная позиция. Но штаб у меня теперь всё-таки есть. Только бойцы в нём не люди: не спят, не болеют и не просят премию. Я зову его Секретарь штаба, и это мой персональный агент.

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

Голова — плохая база данных

Где-то после сорока замечаешь: количество мелочей, которые «надо не забыть», растёт быстрее, чем желание их помнить. Записать ребёнка к врачу. Забрать посылку из постамата. Ответить на письмо. Не пропустить встречу. Вспомнить, с кем и о чём договаривался на прошлой неделе. Раньше всё это жило в голове, в заметках и в нескольких календарях сразу. Голова — плохая база данных: данные теряет, бэкапов не делает.

Я перебрал альтернативы. Напоминалки в телефоне — забываешь про них на второй день. To-do-приложения — умирают или уходят в подписку. Облачные ассистенты — удобные, но им не дашь доступ к моему календарю, почте и git. А секретарь без ключей от кабинетов — просто собеседник.

Поэтому — свой агент, на своём железе, с доступом к моим системам. Один бот в Telegram — а за ним весь мой бэк-офис.

Утро начинается не со списка «что я забыл»

С утра приходит сводка: события дня, открытые задачи, важное из почты. За час до встречи агент напоминает сам — и неважно, встреча в личном календаре или в рабочем: он видит их вместе, а я вижу один экран.

«Записали Ксю к стоматологу в понедельник в 16:00»

Мой любимый класс задач. Одно предложение (и то пересланное от супруги) — и дальше агент сам: находит ближайший понедельник, проверяет, что время свободно, создаёт событие, добавляет адрес клиники, ставит напоминание за полчаса. Я сказал — он сделал, подтвердил — я забыл. Не открывал календарь, не думал про часовые пояса и UID. Ровно так и должен работать секретарь.

Всё записано — ничего не потеряно

Код посылки из постамата, адрес клиники, договорённость недельной давности — спрашиваю в чат, получаю ответ. Архив разбирается сам: бросил ссылку во входящие — через день это структурированная заметка с вики-ссылками. Написал вечером «сходили в парк, кормили белок» — утром это связная запись в дневнике со ссылками на людей и места. Дневник ведётся сам, я в нём только автор текста.

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

За одним чатом — целый штат

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

  • Секретарь — координатор. Принял задачу: сделал сам или делегировал, проверил результат, доложил.
  • Админ — настройщик самого робота: конфиги, окружение, планировщик. Я с ним не разговариваю: у секретаря нет доступа к собственным настройкам, и это правильно — не положено самому себе правила переписывать.
  • Архивариус — заведует базой знаний: разбирает входящие, ведёт дневники, связывает заметки между собой. Секретарь в базу сам не заглядывает — порядок в ней держит Архивариус, иначе архив быстро превращается в свалку.

Для меня это по-прежнему один собеседник. А внутри — разделение труда, как в нормальном штабе: что-то сломалось — чинится по частям, а не пересборкой всего робота.

У каждой задачи — своя комната

И у этого одного бота — не один общий чат, а несколько топиков, и у каждого своя задача. «СанЧасть» — еда и тренировки. «НачФин» ведёт мою бухгалтерию и разбирает банковские выписки. «Прессекретарь» — тексты для статей, как этот. «Писарь» — под ежедневные заметки, отдельный топик — под общие вопросы.

Работает это просто: когда я пишу «съел три чизбургера» в топик про здоровье, агенту не нужно продираться через историю про календарь и публикации. Он открывает короткую историю этой комнаты и сразу понимает, о чём речь. Мне тоже не надо каждый раз объяснять контекст с нуля — он уже собран в топике.

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

Дневник питания, который считает за меня

«Съел три двойных чизбургера» — через минуту ответ: примерно 1320 ккал, белки-жиры-углеводы, записано в заметку дня. Ночью складывается сводка. Себе в подсчёте калорий я не доверяю (особенно после третьего чизбургера), ему — доверяю: считает по справочнику, а что оценил на глаз — честно помечает «примерно». Написал — забыл. Учёт ведётся.

Почта и git — без браузера

Почта проверяется сама каждые полчаса: важное всплывает, остальное молчит. Рабочий ящик и личный — в одном месте. «Найди письмо про X» — нашёл за минуту, без перебора папок. С git то же самое: релиз, issue, PR, затрекать время — из чата. Для пет-проектов идеально: не открываешь веб-морду и не вспоминаешь, в какой из пятнадцати вкладок это было.

Отдельный топик для дежурного

Агент следит и за собой: логи, health-check, ошибки. И падает это не мне в личку, а дежурному — в отдельный топик. Инфраструктура не орёт, она докладывает. Шум убивает пользу ассистента быстрее, чем отсутствие функций. Все уведомления в одном месте и всегда знаешь, что раз что-то пришло дежурному, значит что-то важное, а не затянувшийся ответ на запрос прилетел.

Что я ему не доверяю

Красиво было бы сказать «доверяю всё». Неправда. Деньги он не переводит, покупки не совершает. Когда я попросил посмотреть товар на Ozon — он честно сказал «не могу», разобрался почему (гео-блок, антибот) и предложил варианты. Не выдумал описание, не соврал, что посмотрел. Вот это — главное. Секретарь, который врёт, когда не знает, опаснее, чем никакой. Мой не врёт: не может — так и говорит.

Грабли, куда без них

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

И вывод, который стоил мне пары вечеров: агент — не волшебник. Сколько ни прячь маркеры автоматизации от антибота — Ozon всё равно режет глубже. Но у этого есть обратная сторона: когда агент говорит «не могу», я ему верю.

Итог

За пару месяцев я перестал держать в голове расписания, коды, письма и «надо не забыть». Освободившееся место занимают задачи, которые агенту не передать: придумать, решить, объяснить, написать. Ровно то, за что мне платят.

Секретарь не заменяет голову — он берёт на себя то, что держать в голове просто глупо. У меня небольшой, но надёжный штаб: ему не нужны ни отпуск, ни больничный, ни мой бэкап. А я занимаюсь тем, что умеет только человек. Как и положено Бате: не суетиться, а деплоить.