← Все кейсы A-09 Кейс · /ru/garden/assistant

Бот Пионер

Telegram-ассистент сотрудников: пишешь или наговариваешь задачу — агент сам ищет и правит заметки в базе знаний, собирает отчёт по рекламе и трафику, готовит рекламную кампанию, заполняет карточку товара на сайте и загружает фото, отвечает на вопросы по заказам из OMS.

Статус
в проде с июня 2026
Роль
всё
Стек
Python 3.13Pydantic AIaiogram 3PostgreSQL 17SQLAlchemy 2 asyncObsidian vault (.md)SyncthingMCP clientDocker ComposeGitHub Actions + GHCR
W 1160
A-09720 × 1600 · Telegram
Чат с ботом Пионер в Telegram: по просьбе владельца ассистент добавил разъёмы и их количество в калькуляторы семи блоков розеток и показал таблицу, что теперь выводится в расчёте
Чат с ботом Пионер в Telegram: ответ по статистике витрин — переходы, время на сайте и открытия калькуляторов (цифры размыты)
Чат с ботом Пионер в Telegram: управление рекламой в Директе — снижен недельный лимит, отчёт (цифры размыты)
Правка калькуляторов на сайте · отчёт по трафику · управление рекламой в Директе
01Задача Telegram · текст или голос

Как это работает

Человек пишет или наговаривает задачу в Telegram, агент на LLM выполняет её своими инструментами и отвечает текстом или голосом. База знаний — папка заметок Obsidian, которую владелец правит с ноутбука и телефона: в ней же лежат профили пользователей (само наличие файла даёт доступ), личная память и план каждого, скиллы и черновики рекламных кампаний.

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

02Архитектура bot + scheduler

Как это устроено

Сервер
ноутбук и телефон владельца
Syncthing
Сотрудники
Telegram Bot API
База знаний .md · профили, память, планы, скиллы
scheduler · тот же образ, тик раз в минуту
bot · aiogram + агент Pydantic AI
PostgreSQL 17 · история, учёт, журналы
GitHub Actions · GHCR → сервер
LLM-провайдеры · Anthropic, OpenAI, Gemini, DeepSeek, Qwen
Whisper · ElevenLabs · голос
Яндекс · Директ, Метрика, Вебмастер, Wordstat
Сайт Пионера · MCP, API-шлюз, YML-фид
OMS · read-only SQL по HTTP
инструменты агента
Легенда
  • HTTP
  • событие
  • внешний сервис
  • запросы
  • хранилище
Сервер
GitHub Actions · GHCR → сервер
Сотрудники
ноутбук и телефон владельца
Telegram Bot API
Syncthing
bot · aiogram + агент Pydantic AI
База знаний .md · профили, память, планы, скиллы
PostgreSQL 17 · история, учёт, журналы
scheduler · тот же образ, тик раз в минуту
LLM-провайдеры · Anthropic, OpenAI, Gemini, DeepSeek, Qwen
Whisper · ElevenLabs · голос
Яндекс · Директ, Метрика, Вебмастер, Wordstat
Сайт Пионера · MCP, API-шлюз, YML-фид
OMS · read-only SQL по HTTP
Легенда
  • HTTP
  • событие
  • внешний сервис
  • запросы
  • хранилище
Входящих портов нет — Telegram через long polling; очередей и Redis нет: задачи планировщика защищает уникальный индекс в Postgres.
03Цифры срез · 2026-10-27

В цифрах

  • 51 инструмент агента
  • 34 из них — Яндекс.Директ
  • 968 тестов
  • 10 таблиц

Ещё: 9 команд Telegram · 61 коммит · 5 LLM-провайдеров.

04Инженерные решения 5 решений

Что было непросто

Решение 01

Инструменты спрятаны за скиллами

У агента 51 инструмент. Если показывать все сразу, каждый запрос тащит десятки схем и модель путается в выборе. Инструменты сгруппированы в именованные наборы; набор, выданный в профиле, виден с первого шага, набор, выданный через скилл, открывается только после того, как агент сам откроет SKILL.md — инструкция и инструменты приходят вместе. Граница доступа — сама выдача: невыданный набор даже не собирается.

Решение 02

Создать кампанию — кнопкой человека, править — инструментом

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

A-09.2720 × 1600 · Telegram
Чат с ботом Пионер в Telegram: управление рекламой в Директе — снижен недельный лимит, отчёт (цифры размыты)
Управление рекламой в Директе
Решение 03

Планировщик на Markdown и одном уникальном индексе

Задачи — обычный текст в плане каждого пользователя, который правится в Obsidian с телефона, а не таблица в базе. Раз в минуту тик разбирает планы и захватывает созревшую задачу через INSERT … ON CONFLICT DO NOTHING — задача не запустится дважды даже при наложении тиков, и брокер очередей для этого не нужен. Упавшая задача перезахватывается до лимита попыток, после простоя выполняется только последнее пропущенное повторение. Задача идёт под профилем владельца и с его памятью, результат приходит ему же.

A-09.3720 × 1600 · Telegram
Чат с ботом Пионер в Telegram: ответ по статистике витрин — переходы, время на сайте и открытия калькуляторов (цифры размыты)
Отчёт по трафику
Решение 04

Повтор сбоев провайдера — на уровне шага модели

Перегрузка провайдера при стриминге приходит событием внутри ответа 200, и ретраи транспорта её не видят. Обёртка модели повторяет один запрос внутри агентного цикла с экспоненциальной задержкой и общим бюджетом времени; уже выполненные инструменты — запись в базу знаний, ставка в рекламе — не повторяются, заново идёт только упавший вызов модели.

Решение 05

Файлы на сайт идут мимо модели

Агент загружает на сайт файлы из базы знаний, но модель никогда не держит байты: инструмент принимает только путь, Python сам читает файл, проверяет формат и размер и вызывает MCP сайта, а модель получает id, ссылку и размер. Модели показывается превью не больше 1200 px, на сайт уходит оригинал байт-в-байт; повтор отсекается по хэшу.

05История 06 → 09.2026

Как шёл проект

  1. до 21.06.2026Разработка до git: первый коммит сразу содержит бота, агента, планировщик, аудио-режим, учёт расхода
  2. 21.06.2026Первый коммит, CI/CD, подключение MCP сайта — запуск в прод в тот же день
  3. 22–26.06Скиллы с инструментами по запросу, OMS, Метрика, Вебмастер, Wordstat, чтение Директа, черновики и публикатор кампаний
  4. 28.07Управление живой рекламой прямыми инструментами, тесты, нашедшие четыре бага в работе с Директом
  5. 22–25.09Скилл «контент»: наполнение сайта по досье, описания фото vision-моделью, загрузка фото и документов на сайт; товарная галерея ЕПК
06Экраны 3 кадра · Telegram
07Интеграции 18

С чем связан бот

  • Telegram Bot API
  • Anthropic
  • OpenAI
  • Google Gemini
  • DeepSeek
  • Qwen
  • Whisper
  • ElevenLabs
  • DuckDuckGo
  • Яндекс.Директ
  • Яндекс.Метрика
  • Яндекс.Вебмастер
  • Wordstat
  • MCP сайта
  • OMS
  • Syncthing
  • GitHub Actions
  • GHCR
08Рядом то же производство