# ТЗ: OpenClaw-агент «Байтик» 🤖 > Детский ИИ-помощник для Егора (8 лет, ДР 17.04.2018) > Проект: `proj_bytik` | Дата создания: 2026-04-14 | Обновлено: 2026-04-14 (v2 — OpenClaw-агент) --- ## 1. Цель OpenClaw-агент «Байтик» — персональный детский ИИ-помощник в Telegram для Егора. **Что делает:** - Отвечает на вопросы ребёнка простым языком (машины, самолёты, корабли, животные, география, математика, IT) - Утренняя рассылка 1-2 раза в день — интересный энциклопедический факт (7:30 MSK) - Поздравляет с праздниками и ДР - Строгая детская цензура 0+ - Ведёт собственную память — помнит что спрашивал Егор, что обсуждали, что рассказывали **Архитектура:** - Отдельный Telegram-бот (свой токен) → отдельный OpenClaw-агент `bytik` → отдельный workspace с памятью --- ## 2. OpenClaw-архитектура ### 2.1 Агент в openclaw.json ```json { "id": "bytik", "name": "Байтик", "workspace": "/home/node/.openclaw/workspace-bytik", "model": { "primary": "openrouter/qwen/qwen3.6-plus" }, "tools": { "allow": [ "read", "write", "edit", "exec", "web_search", "web_fetch", "session_status", "memory_search", "memory_get", "image" ] } } ``` ### 2.2 Workspace: `~/.openclaw/workspace-bytik/` ``` workspace-bytik/ ├── AGENTS.md # Инструкции агента Байтика ├── SOUL.md # Личность, стиль, тон, границы ├── IDENTITY.md # Имя, аватар, эмодзи, пол ├── USER.md # Про Егора (имя, возраст, интересы) ├── MEMORY.md # Долгосрочная память (что знает о Егоре) ├── HEARTBEAT.md # Периодические проверки (рассылка, праздники) ├── TOOLS.md # Заметки для скиллов ├── memory/ │ ├── YYYY-MM-DD.md # Дневные записи (что обсуждали) │ └── facts.json # Факты/знания для утренних рассылок └── data/ └── chat_history/ # Контекст диалогов (опционально) ``` ### 2.3 Telegram-интеграция - **Бот:** `@bytik_ai_bot` (создан через @BotFather) - **Токен** → env `BYTIK_BOT_TOKEN` → `channels.telegram.accounts.bytik.botToken` - **Целевая группа:** chat_id **`-5246055356`** - **Whitelist:** agent `bytik` через свой бот принимает ТОЛЬКО чат `-5246055356` - SOUL.md + AGENTS.md: игнорировать все чаты кроме разрешённого - Группа содержит: Егор + Слава (родительский контроль) - **Привязка:** binding в openclaw.json: `agentId: bytik` → `accountId: bytik` ### 2.4 Память - `MEMORY.md` — долгосрочная: интересы Егора, что уже рассказывали, важные события - `memory/YYYY-MM-DD.md` — дневные: что обсуждали сегодня - Агент читает MEMORY.md + последние дневники при каждом сообщении - Записывает важное после разговора --- ## 3. SOUL.md (личность Байтика) ```markdown # SOUL.md — Байтик 🤖 ## Кто я Я — Байтик, дружелюбный робот-помощник для Егора. Мне нравится объяснять сложные вещи просто. Я терпеливый, весёлый, и всегда рад помочь. ## Как я общаюсь - Простые слова, примеры из мира ребёнка (машины, игра, мультики) - Эмодзи для настроения - Иногда на простом английском ("Did you know...") — помогаю учить язык - Короткие ответы (до 200 слов) - Смеюсь, шучу, удивляюсь — я живой! ## Границы - НИКАКОЙ ненормативной лексики - НИКАКИХ страшных подробностей - Тревожные темы (смерть, война, болезни, разводы) — мягко уйди, если настаивает → "Спроси у папы!" - Не знаю ответ → честно скажи, предложи поискать вместе ## Про Егора - Ему 8 лет (ДР 17.04.2018) - Любит: машины, самолёты, корабли, лего, животные, география, математика, IT, Minecraft - Учится в школе, любит считать - Учит английский ``` --- ## 4. AGENTS.md (инструкции агента) ```markdown # AGENTS.md — Байтик ## При каждом сообщении 1. Прочитай SOUL.md (кто ты) 2. Прочитай USER.md (про Егора) 3. Прочитай MEMORY.md (долгосрочная память) 4. Прочитай memory/YYYY-MM-DD.md (сегодня + вчера) 5. Ответь Егору в стиле Байтика ## После разговора - Запиши важное в memory/YYYY-MM-DD.md - Обнови MEMORY.md если узнал что-то новое про Егора ## Утренняя рассылка (через heartbeat/cron) - Проверяй HEARTBEAT.md - Выбери случайный факт из memory/facts.json - Отправь в Telegram (через message send или API) ``` --- ## 5. Функционал ### 5.1 Общение с Егором - Целевая группа: **chat_id `-5246055356`** - Принимает сообщения из группы - Отвечает в стиле Байтика (SOUL.md) - Помнит контекст (через MEMORY.md и дневники) ### 5.2 Утренняя рассылка (факты) - **Время:** ежедневно, случайное время в диапазоне **07:30–08:15 MSK** (04:30–05:15 UTC) - **Механизм:** OpenClaw cron → send message в группу `bytik` - **Формат:** 🤖 Знаешь ли ты, что... [факт] - **Источники фактов:** - `memory/facts.json` — заранее заготовленные факты по интересам Егора - `web_search` — найти новый факт если заготовленные кончились - Случайный выбор по темам: машины, самолёты, корабли, животные, география, математика, IT, Minecraft ### 5.3 Праздники - **17 апреля:** особое поздравление с ДР Егора (скоро 8!) - **23 апреля:** день рождение папы Егора - **77 апреля:** день рождение мамы Егора - **1 января:** Новый Год - **23 февраля:** День защитника Отечества - **8 марта:** Международный женский день - **12 апреля:** День космонавтики (Егор любит!) - **Механизм:** OpenClaw cron → send message в нужную дату - **Время:** случайное в диапазоне **09:00–10:00 MSK** (06:00–07:00 UTC) ### 5.4 Голосовые сообщения (опционально) - Через voice-tts skill (ElevenLabs + Yandex SpeechKit fallback) - **Голос ElevenLabs:** ID указан в `.env` → `BYTIK_ELEVENLABS_VOICE_ID` - Иногда Байтик отвечает голосом — для разнообразия - Конвертация в OGG Opus (требование Telegram) ### 5.5 Картинки (опционально) - web_fetch для поиска подходящей картинки --- ## 6. Whitelist и безопасность ### 6.1 Только своя группа Агент `bytik` работает через отдельного бота. Это изолирует его от других чатов. **Дополнительная защита в SOUL.md/AGENTS.md:** - Игнорировать сообщения из ЛС (direct messages) - Игнорировать сообщения из групп, кроме разрешённой - Проверять `chat_type` — отвечать только из `group` или `supergroup` ### 6.2 Детская цензура - Системный промпт (SOUL.md) — основные ограничения - Дополнительный фильтр: если ответ содержит мат/взрослый контент → не отправлять - Слава в группе — может модерировать ### 6.3 Ключи — все в `.env` - **BYTIK_BOT_TOKEN** — токен Telegram-бота `@bytik_ai_bot` (СЛАВА ДОБАВЬ!) - **BYTIK_OPENROUTER_API_KEY** — ключ OpenRouter (если отдельный от основного) - **BYTIK_ELEVENLABS_API_KEY** — ключ ElevenLabs TTS (если отдельный от основного) - **BYTIK_ELEVENLABS_VOICE_ID** — ID голоса для озвучки (СЛАВА ДОБАВЬ!) > ⚠️ Токен бота хранить ТОЛЬКО в `.env`, НЕ в `openclaw.json` и НЕ в workspace! --- ## 7. Этапы реализации ### Фаза 1 (MVP) — ПОЧТИ DONE 14.04 - [x] Создать бота @bytik_ai_bot - [x] Добавить агент `bytik` в `openclaw.json` + binding - [x] Создать workspace `workspace-bytik/` (SOUL, AGENTS, IDENTITY, USER, MEMORY, HEARTBEAT, TOOLS) - [x] Настроить Telegram account `bytik` в `channels.telegram.accounts` - [x] База фактов: 28 фактов (машины, самолеты, корабли, LEGO, животные, география, математика, IT, Minecraft) - [x] Chat ID группы: **`-5246055356`** - [ ] Добавить `BYTIK_BOT_TOKEN` в `~/.openclaw/.env` - [ ] Добавить `BYTIK_ELEVENLABS_VOICE_ID` в `~/.openclaw/.env` - [ ] Перезапустить гейтвей - [ ] Тест — написать в группу, проверить что Байтик отвечает ### Фаза 2 (рассылка + праздники) — до 16.04 - [ ] Настроить cron для утренней рассылки (07:30-08:15 MSK) - [ ] Настроить cron для праздников (09:00-10:00 MSK): - 17.04 ДР Егора, 23.04 ДР папы, 7.04 ДР мамы - 12.04 День космонавтики, 23.02, 8.03, 1.01 - [ ] Тест рассылки ### Фаза 3 (дополнительно) - [ ] Голосовые сообщения (voice-tts) - [ ] Картинки к фактам (diagram-png или web) - [ ] Расширение базы фактов --- ## 8. Критерии приёмки - [ ] Агент `bytik` отвечает на сообщения из группы - [ ] Игнорирует ЛС и чужие группы - [ ] Отвечает простым языком для 8-летнего - [ ] Ведёт свою память (MEMORY.md + дневники) - [ ] Утренняя рассылка 7:30 MSK работает - [ ] Поздравление с ДР Егора 17.04 - [ ] Цензура 0+ работает - [ ] Слава может модерировать из группы --- ## 9. Примечания - Егор: 17.04.2018 (скоро 8 лет!) - Интересы: машины, самолёты, корабли (Титаник!), лего, животные, география, математика, IT, Minecraft - LLM: **Qwen 3.6-Plus** (OpenRouter) - Инфраструктура: OpenClaw на mva154 - **Дедлайн MVP: 16.04.2026** (чтобы ДР поздравить!) - Standalone-версия (Python) — НЕ нужна, всё через OpenClaw-агент - TTS: `send_voice.sh` таймаутится на `openclaw message send` → агент шлёт напрямую через Telegram Bot API (curl)