@Ailospavel_bot · dev journal · aioperatingsystem.ru

Личный AI-ассистент Павла

Что умеет бот, что сломано, что чинить. Живой статус каждой функции.

✓ los-api active ✓ losbot active ✓ Sonnet работает ⚠ HH automation broken ⚠ Sheets quota 429 ✗ Grok — нет ключа
11
команд бота
25+
NL-хендлеров
~60%
функций работает
4
активных бага

01 Явные команды

Вводить в чат с @Ailospavel_bot
/start /menu /helpПоказать меню с кнопками
Работает
/tasksОткрытые задачи из LOS
Работает
/todayЗадачи и контуры на сегодня
Работает
/briefУтренний брифинг: LOS + BOS + просрочка
Исправлен 04.05
/done LOS-XXXЗакрыть задачу в Google Sheets
Работает
/memory [запрос]Поиск по истории диалогов
Не тестировалось
/stormШтурм задач агентства с кнопками один за другим
Не тестировалось
/skill [name]Активировать скилл бота из bot_skills/
Не тестировалось
/end /stopВыйти из активной сессии /talk или /ideas
Работает
Баг исправлен 04.05: /brief дублировался — tools/router.py возвращал None вместо True, бот выполнял хендлер дважды. Плюс добавлена секция BOS.

02 Диалог /talk — выбор модели

Команда /talk → inline-клавиатура → диалог до /end

Открывает сессию диалога с выбранной AI-моделью. История сохраняется внутри сессии.

🟢 DeepSeekОсновная модель, быстрая, дешёвая
Работает
⚡ Claude HaikuБыстро, дёшево, для простых запросов
Работает
🧠 Claude SonnetУмный, ~11с ответ
Исправлен 02.05
⬛ CodexOpenAI через CLI
Не проверялось
♊ GeminiGoogle CLI на сервере, ~5с
Работает
🐦 GrokxAI API — fallback → DeepSeek
Нет XAI_API_KEY
История баги (все исправлены 02.05):
_processing lock без finally — бот навсегда молчал после любой ошибки
_get_talk_system() — NameError: переменная talk не определена
_active_system UnboundLocalError в except-блоке

03 Задачи и планирование — натуральный язык

Писать обычным текстом, без команд
Закрыть задачу«закрой LOS-123», «готово», «done»
Работает
Перенести задачу«перенеси на завтра», «через 3 дня», «на 15 мая»
Работает
Показать задачу«покажи LOS-234», «задача 234»
Работает
Все открытые задачи«мои задачи», «что делать», «список задач»
Работает
Задачи на сегодня«что сегодня», «панель дня»
Работает
План дня«план дня», «приоритеты»
Работает
Подробнее о задаче«подробнее», «подробнее LOS-113» — детали без следующего шага
Работает
Разобрать задачу«разбери LOS-123» — AI-анализ и суть
Не тестировалось
Сформулировать задачу«сформулируй задачу: ...»
Не тестировалось

04 Календарь и контуры

Натуральный язык
Читать календарь«что сегодня», «что завтра», «план недели», «свободное время»
Не тестировалось
Создать встречу«запиши встречу с Иваном в 15:00»
Не тестировалось
Показать контур«контур Здоровье»
Работает
Обновить контур«обнови контур Здоровье: фокус = ...»
Не тестировалось
Синхронизировать контур«синхронизируй Здоровье: проверил анализы»
Не тестировалось
Рабочий фокус«фокус», «на чём сосредоточиться»
Работает
Что сейчас«что делать сейчас», «фокус сейчас»
Работает

05 Агентство и HH

Натуральный язык + прямые команды
Портфель клиентов«портфель клиентов», «найди клиента X», «активные клиенты»
Работает
Бриф по клиенту«бриф по клиенту Стимбаланс»
Не тестировалось
Сводка РК«сводка рк», «отчёт по рекламе»
Не тестировалось
HH — очередь вакансий«очередь hh», «статус hh», «hh.ru»
Читает данные
HH — запустить отклики«запусти отклики», «hh отклики»
Broken: feature kwarg
HH — разбор вакансииВставить ссылку hh.ru/vacancy/...
Не тестировалось
Google Sheets URLВставить ссылку на таблицу — авто-парсинг
Не тестировалось
Критичный баг: HH automation — _call_ai() got an unexpected keyword argument 'feature'. 58+ ошибок с 02.05. Отклики не работают. Файл: hh_automation.py

06 Прочие возможности

Генерация документа / файла«пришли файл», «сделай документ», «в виде файла»
Работает (добавлено 02.05)
/ideas — разбор идеи«/ideas текст идеи» — продуктовый анализ
Не тестировалось
Day Pilot — переключить контекст«переключи на ...», «покажи БОС», «покажи систему»
Не тестировалось
Instagram ссылка → ideasВставить reel / post → анализ
404: endpoint не зарегистрирован
YouTube ссылка → саммариВставить ссылку → краткое содержание
Не тестировалось

07 Agent Brain — проактивный режим

Работает автономно, без запроса

Автономный цикл рассуждений: DeepSeek анализирует контекст → принимает решение → выполняет действие или уведомляет.

  • Анализирует задачи, портфель клиентов, HH очередь
  • Отправляет уведомление если есть важное: просрочка P1, HH очередь < 50, аномалии
  • Инструменты: notify_user, close_task, query_portfolio, query_hh
  • Fallback: DeepSeek → Claude Haiku при ошибке
Night silence: уведомления заблокированы с 22:00 до 08:00 по UTC+7. Добавлено 02.05 после жалобы на ночной спам.
JSON баг (исправлен 02.05): DeepSeek обрезал JSON на 300 токенах → повышен до 500 + robust extract text[find("{"):rfind("}")+1]

08 Активные баги

🔴 P1 — HH automation broken
ERROR:hh_automation: _call_ai() got an unexpected keyword argument 'feature'
58+ ошибок с 02.05. Все автоотклики на вакансии не работают. Файл: /opt/los/hh_automation.py
🔴 P1 — Grok недоступен
XAI_API_KEY не задан в /etc/losbot.env. Кнопка в /talk есть, тихий fallback → DeepSeek — пользователь не знает.
🟡 P2 — Google Sheets quota 429
21+ ошибок quota exceeded. Кэш 600с добавлен в agent_context, но cron-процессы кэш не видят (отдельные процессы).
🟡 P2 — Мёртвый код в ai_model_router.py
_call_gemini_api() определена, нигде не вызывается. Дублирование логики маршрутизации между call_model_for_chat и call_model_with_route_str.
🟡 P2 — ~40% хендлеров не тестировались
/brief (исправлен 04.05), /storm, /skill, /memory, calendar, бриф клиента, Day Pilot — требуют ручной проверки.
🟡 P2 — Тон /talk слишком формальный
Sonnet и Gemini отвечают в формате «1-2-3-4 архитектурно». System prompt требует персонализации под Павла.
🟢 P3 — Instagram endpoint 404
POST /api/ideas/instagram → 404. Endpoint не зарегистрирован в routers.

09 Приоритеты — что чинить первым

  • P1. hh_automation.py — найти _call_ai(), убрать/переименовать аргумент feature
  • P1. Добавить XAI_API_KEY в /etc/losbot.env или убрать кнопку Grok из меню
  • P2. Пройти по хендлерам вручную: /storm, /skill, /memory, calendar, Day Pilot
  • P2. Sheets quota — вынести cron на отдельный кэш-файл или Redis TTL
  • P2. Промпт /talk — добавить в system prompt: «отвечай коротко, без структуры 1-2-3, живым языком»
  • P2. Убрать мёртвый код _call_gemini_api() из ai_model_router.py
  • P3. Зарегистрировать /api/ideas/instagram в ideas.py
  • Долг. Разбить telegram.py (4032 строки, 61 функция) на модули: handlers/, commands/, nlp/

10 Архитектура

Сервер: 178.62.230.241 · Сервис: los-api.service (uvicorn :8000)

Telegram отправляет POST на webhook → telegram.py:telegram_webhook() распределяет по хендлерам.

  • Слой команд — явные /команды через tools/router.py + явные if-блоки
  • Слой /talkskill_sessions[chat_id]ai_model_router.py → модель
  • Слой NL — smart handler, 25+ intent-детекторов через regex + keyword
  • Данные — Google Sheets через gspread + кэш 600с для portfolio/HH
  • Agent Brain — автономный цикл, DeepSeek → JSON → tool executor
  • Мосты — отдельные сервисы gemini-telegram и codex-telegram для /talk
Слабое место: telegram.py = 4032 строки в одном файле. Очень трудно поддерживать и отлаживать.

11 Журнал разработки

  • 04.05.2026 — /brief: убран дубль (tools/router return True), добавлена BOS секция, фильтр бот-задач «Связаться с клиентом», убраны ночные уведомления от gemini/codex bridge
  • 04.05.2026 — создана эта страница /ailospavel_bot в едином дизайне
  • 02.05.2026 — исправлены корневые баги /talk: _processing lock без finally, _get_talk_system() NameError, _active_system UnboundLocalError
  • 02.05.2026 — созданы sheets_portfolio.py + sheets_hh.py, интегрированы в agent_context с кэшем
  • 02.05.2026 — night silence 22–08 UTC+7 в tool_notify_user
  • 02.05.2026send_document() — отправка файлов через sendDocument API
  • 02.05.2026 — agent_brain: max_tokens 300→500, robust JSON extract
  • Апрель 2026 — базовая архитектура: webhook + smart handler + /talk + agent brain

12 Куда идти дальше

  • Следующий шаг: починить HH automation (_call_ai feature kwarg) — сломаны все автоотклики
  • После HH: регрессионный тест — пройти по всем хендлерам и зафиксировать что работает
  • Улучшения: промпт /talk — персонализация под Павла, убрать архитектурный формат ответов
  • Техдолг: разбить telegram.py на модули handlers/, commands/, nlp/
  • Запланировано MEM-119: persistent memory — SQLite FTS5 для истории диалогов
  • Запланировано MEM-120: динамические скиллы бота из bot_skills/*.md
  • Запланировано MEM-121: heartbeat engine — проактивные уведомления по расписанию