# ТЗ: 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)
