
# 2026-03-24

## Напоминания
- Установлено напоминание купить таблетки Фурагин на 24 марта 2026, 10:00 UTC (13:00 МСК)
- Cron задача ID: 69428f8f-d0aa-4e59-8fa3-40693f566374
- Сообщение будет отправлено через Telegram (chatId: 126472752)

## Обновление напоминания
- 24 марта 05:49 - Слава попросил добать к напоминанию покупку Грипферона и закапать его
- Cron задача обновлена: добавлен Грипферон в список покупок и указание закапать
- Новый текст напоминания: 'Напоминание: купить таблетки Фурагин и Грипферон сегодня в обед. Не забудь закапать Грипферон!'

## Создание универсальных инструкций для TTS-оптимизации
- 24 марта 07:28 - Слава попросил создать инструкции, которые позволят любым моделям LLM генерировать идеальный текст для последующей озвучки в ElevenLabs
- **Создан файл:** TTS_OPTIMIZATION_GUIDELINES.md в workspace
- **Содержание:** 10 основных принципов оптимизации текста для TTS с примерами
- **Принципы:** структура предложений, пунктуация для пауз, интонация, форматирование специальных элементов, естественный язык, паузы и ритм, указание ударений, избегание проблемных конструкций, специальная разметка, тестирование
- **Интеграция:** инструкции можно добавлять в промпт или SOUL.md агента

## Напоминание через 20 минут
- 24 марта 10:18 - Слава попросил 'Повтори через 20 минут'
- Создана cron задача: reminder-tts-followup, ID: e5bfc181-3db4-415f-a752-192759ca9fd6
- Время срабатывания: 24 марта 2026, 10:39 UTC (13:39 МСК)
- Содержание напоминания: вопросы про TTS инструкции и создание агента-оптимизатора

## Вопрос про создание ярлыка Telegram на Android
- 24 марта 16:14 - Слава спросил, как сделать ссылку на чат в Telegram в виде ярлыка на рабочем столе Android
- **Ответ дан голосовым сообщением:** несколько способов создания ярлыков
- **Способы:**
  1. Нативный Android: долгое нажатие на чат в Telegram → 'Добавить на главный экран' или перетаскивание
  2. Приложение Shortcut Maker из Google Play
  3. Лаунчеры типа Nova Launcher с расширенными функциями
  4. Виджеты Telegram (менее удобно для открытия конкретного чата)

## Обсуждение умной колонки / голосового ассистента
- 24 марта 17:30–18:08 - Большое обсуждение реализации умной колонки типа Алисы
- **Варианты тестирования:** Tasker + AutoVoice (триггерное слово, без кнопок)
- **Железо:** ReSpeaker Lite от Seeed Studio — есть на Ozon, 3 варианта
- **Платформа:** OpenVoiceOS — Pi4/x86/Docker, встроенный VAD и STT (Whisper)
- **Интеграция OVOS + OpenClaw:** через Ollama-compatible API
- **Задержка:** через Telegram ~5–8 сек, напрямую ~3–4 сек
- **Озвучка:** три варианта — OVOS встроенный / ElevenLabs / Yandex SpeechKit
- **Статус:** Слава думает, обсудим позже. Следующий шаг — практический тест (предложен Tasker)

## Настройка Telegram Collector v2 (24 марта, вечер)

### Архитектурные решения
- Переменные для скилла: `TELEGRAM_COLLECTOR_*` (отдельно от основного Telegram-канала OpenClaw)
- Авторизован аккаунт VM (API_ID=36911437, телефон +79962876431)
- Сессия: `skills/telegram-collector/telegram_collector.session`

### Структура хранения данных (согласована)
```
raw/{channel_id}/{topic_id}/
├── state.json       ← last_message_id, initial_load_complete, last_incremental_at
├── batch_XXXX.json  ← сообщения с полями: id, date, text, from_id, reply_to_msg_id, reply_to_top_id, quote_text, edit_date, pinned, media
└── media/           ← фото и документы ≤50МБ; видео и >50МБ — только метаданные
raw/{channel_id}/meta.json ← название, topics, incremental_cron, cron_job_id
```

### Медиа-политика
- Фото: скачиваем всегда
- Документы ≤50МБ: скачиваем
- Видео (любой размер): только метаданные
- Файлы >50МБ: только метаданные
- Видео замаскированные под document (mp4 mime): тоже пропускаем

### Первичная загрузка @snowbikerussia — результат
- channel_id: 1242788123
- Всего загружено: 155 143 сообщений, 13 983 медиафайла, 2 784 МБ
- 12 топиков: Основная (92437), Техничка (21623), Китай (15670), Обзоры (10995), ОФФТОП (5823), Экип (3671), Электрички (1651), Локации (1619), Барахолка (1510), Инструкции (96), Соревнования (24), Опросы (24)
- Статус: ✅ initial_load_complete=true для всех топиков

### Инкрементальный режим
- Cron: `0 21 * * *` UTC = 00:00 МСК ежедневно
- Cron job ID: `860e23a4-ef35-4700-9e9c-e1ba9e3b932d`
- По завершении скрипт автоматически отправляет отчёт в Telegram
- last_incremental_at обновляется даже если новых сообщений нет
- Протестировано вживую — работает корректно

### Баги исправленные в процессе
- Пагинация initial_load: `reverse=False` + offset_id не двигался → 9 дублированных батчей. Исправлено: `offset_id = min(ids)` после каждого батча
- Видео как document: добавлена проверка mime-type в `should_download()`

### Правило для документации скилла
- SKILL.md — только универсальное описание (как работает скилл)
- Настройки конкретного канала (cron_job_id, расписание, статистика) — ТОЛЬКО в `meta.json` канала
- Нарушала это правило дважды, исправляла

## Анализ данных сноубайков (запущен 20:44 МСК)

### Подход: двухпроходный Б+А
- Пасс 1: GPT-4o mini — все 135 645 сообщений, 2718 чанков по 50, извлечение фактов в JSON
- Пасс 2: Claude Sonnet — синтез `knowledge_base.md` из собранных фактов
- Оценочная стоимость: ~$4.10

### Категории извлекаемых знаний
repairs, models, locations, prices, riding_tips, tuning, donor_bikes, season

### Выходные файлы
- `data/telegram-collector/facts_partial.json` — промежуточные факты (прогресс пасс 1)
- `data/telegram-collector/knowledge_base.md` — финальная база знаний

### Веб-просмотрщик
- Flask-сервер: `tasks/snowbike-kb/server.py` → порт 5556
- Viewer: `tasks/snowbike-kb/viewer/index.html` — markdown с поиском
- URL: `https://openclaw.mva154.duckdns.org/snowbike/`
- ⚠️ Нужно добавить nginx-проброс `/snowbike/` → `localhost:5556` на хосте
- Страница автообновляется каждые 30 сек пока kb не готов

### Статус
- Анализ запущен в фоне (~4 часа), PID 6329
- По завершении придёт уведомление в Telegram со стоимостью
- Flask-сервер запущен (порт 5556), показывает "анализ выполняется" пока нет kb
