241 lines
11 KiB
Markdown
241 lines
11 KiB
Markdown
# ТЗ: 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)
|
||
- **Токен** → `openclaw.json` → `messages` / `telegram` entry для агента `bytik`
|
||
- **Whitelist:** agent `bytik` через свой бот — принимает сообщения только из своей группы
|
||
- Группу добавить в `messages.accounts[].telegram.allowedChatIds` (если есть такая опция)
|
||
- Или: SOUL.md + AGENTS.md инструкции — игнорировать сообщения не из целевой группы
|
||
- Группа содержит: Егор + Слава (родительский контроль)
|
||
|
||
### 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 Общение с Егором
|
||
- Принимает сообщения из группы
|
||
- Отвечает в стиле Байтика (SOUL.md)
|
||
- Помнит контекст (через MEMORY.md и дневники)
|
||
|
||
### 5.2 Утренняя рассылка
|
||
- **Время:** 07:30 MSK (04:30 UTC)
|
||
- **Механизм:** OpenClaw cron → send message в группу `bytik`
|
||
- **Формат:** 🤖 Знаешь ли ты, что... [факт]
|
||
- **Источники фактов:**
|
||
- `memory/facts.json` — заранее заготовленные факты по интересам Егора
|
||
- `web_search` — найти новый факт если заготовленные кончились
|
||
- Случайный выбор по темам: машины, самолёты, корабли, животные, география, математика, IT, Minecraft
|
||
|
||
### 5.3 Праздники
|
||
- **17 апреля:** особое поздравление с ДР Егора (скоро 8!)
|
||
- **1 января:** Новый Год
|
||
- **23 февраля:** День защитника Отечества
|
||
- **8 марта:** Международный женский день
|
||
- **12 апреля:** День космонавтики (Егор любит!)
|
||
- **Механизм:** OpenClaw cron → send message в нужную дату
|
||
|
||
### 5.4 Голосовые сообщения (опционально)
|
||
- Через OpenClaw voice-tts skill (ElevenLabs + Yandex SpeechKit)
|
||
- Иногда Байтик отвечает голосом
|
||
- Конвертация в OGG Opus
|
||
|
||
### 5.5 Картинки (опционально)
|
||
- diagram-png skill — может сгенерировать картинку для факта
|
||
- Или web_fetch для поиска подходящей картинки
|
||
|
||
---
|
||
|
||
## 6. Whitelist и безопасность
|
||
|
||
### 6.1 Только своя группа
|
||
Агент `bytik` работает через отдельного бота. Это изолирует его от других чатов.
|
||
|
||
**Дополнительная защита в SOUL.md/AGENTS.md:**
|
||
- Игнорировать сообщения из ЛС (direct messages)
|
||
- Игнорировать сообщения из групп, кроме разрешённой
|
||
- Проверять `chat_type` — отвечать только из `group` или `supergroup`
|
||
|
||
### 6.2 Детская цензура
|
||
- Системный промпт (SOUL.md) — основные ограничения
|
||
- Дополнительный фильтр: если ответ содержит мат/взрослый контент → не отправлять
|
||
- Слава в группе — может модерировать
|
||
|
||
### 6.3 Ключи
|
||
- Токен бота → `openclaw.json` (НЕ в workspace!)
|
||
- OPENROUTER_API_KEY → `.env`
|
||
- ELEVENLABS_API_KEY → `.env`
|
||
|
||
---
|
||
|
||
## 7. Этапы реализации
|
||
|
||
### Фаза 1 (MVP) — до 16.04
|
||
- [ ] Создать бота @bytik_ai_bot
|
||
- [ ] Добавить агент `bytik` в `openclaw.json`
|
||
- [ ] Создать workspace `workspace-bytik/`
|
||
- [ ] Написать SOUL.md, AGENTS.md, IDENTITY.md, USER.md, MEMORY.md
|
||
- [ ] Настроить Telegram entry → агент `bytik`
|
||
- [ ] Тестовое сообщение — проверка что отвечает
|
||
|
||
### Фаза 2 (рассылка + праздники)
|
||
- [ ] Настроить cron для утренней рассылки 7:30 MSK
|
||
- [ ] Заполнить `memory/facts.json` (15-20 фактов)
|
||
- [ ] Настроить cron для праздников (ДР Егора 17.04!)
|
||
- [ ] Тест рассылки
|
||
|
||
### Фаза 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-агент
|