Files
wiki/tasks/bytik/TZ.md
2026-04-15 02:40:02 +03:00

255 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ТЗ: 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:3008:15 MSK** (04:3005: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:0010:00 MSK** (06:0007: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)