237 lines
12 KiB
Markdown
237 lines
12 KiB
Markdown
# ТЗ: Агент "Детский помощник"
|
||
|
||
> **Заказчик:** Слава
|
||
> **Дата:** 2026-04-12
|
||
> **Исполнитель:** Dev-агент (subagent)
|
||
|
||
---
|
||
|
||
## 1. Концепция
|
||
|
||
**Что делает агент:** персональный помощник для родителей по вопросам ребёнка — одежда, обувь, игрушки, обучение, события.
|
||
|
||
**Отличие от основного ассистента (Стрим):**
|
||
- Узкая специализация — только детская тематика
|
||
- Изолированная память — данные не шарится с другими агентами
|
||
- Дружелюбный, тёплый тон — обращается к родителю, помнит детали ребёнка
|
||
- Отдельный Telegram-бот (не путать с основным `@ha542_bot`)
|
||
|
||
**Имя агента:** Детский (внутр. идентификатор: `kids`)
|
||
|
||
---
|
||
|
||
## 2. Функциональность
|
||
|
||
### 2.1 Профиль ребёнка — что помнить
|
||
|
||
Поля (все в `memory/kids/PROFILE.md`):
|
||
|
||
| Поле | Пример | Описание |
|
||
|------|--------|----------|
|
||
| `имя` | Миша | Имя ребёнка |
|
||
| `дата_рождения` | 2019-03-15 | Для расчёта возраста |
|
||
| `рост` | 115 см | Текущий рост |
|
||
| `вес` | 19 кг | Текущий вес |
|
||
| `размер_одежды` | 116 / 5 лет | Размер + возрастной |
|
||
| `размер_обуви` | 31 EU | Размер обуви |
|
||
| `размер_головы` | 52 см | Для шапок/шлемов |
|
||
| `sezonnost` | весна/осень | Сезон преобладания |
|
||
| `аллергии` | — | Список или пусто |
|
||
| `предпочтения_одежда` | любит синий, не любит застёжки | Вкусы |
|
||
| `предпочтения_еда` | любит макароны | Для организации меню |
|
||
| `интересы` | роботы, Lego, животные | Для подбора игрушек |
|
||
| `уровень_развития` | читает, считает до 20 | Для подбора обучения |
|
||
| `偏好` | мягкие игрушки | Для рекомендаций |
|
||
|
||
Агент автоматически пересчитывает возраст и рекомендует обновлять размеры каждые 6 мес.
|
||
|
||
### 2.2 Помощь с выбором
|
||
|
||
**Одежда/обувь:**
|
||
- Вопрос: "Что купить на зиму для Миши?" → агент смотрит размеры, сезон, предпочтения → рекомендует конкретные позиции
|
||
- Учитывает: текущий размер, погодные условия (если есть интеграция с погодой), бюджет (если задан)
|
||
- Может сохранять "список на вырост" — что купить когда подрастёт
|
||
|
||
**Игрушки:**
|
||
- Вопрос: "Что подарить на день рождения?" → рекомендации по возрасту + интересы
|
||
- Может искать в интернете (через yandex-search / brave-search), но спрашивает разрешения
|
||
|
||
**Обучение:**
|
||
- Вопрос: "Чем занять 6-летку?" → рекомендации по развитию
|
||
- Книги, приложения, игры — по интересам и возрасту
|
||
|
||
### 2.3 События и напоминания
|
||
|
||
Календарь событий в `memory/kids/CALENDAR.md`:
|
||
|
||
| Событие | Пример |
|
||
|---------|--------|
|
||
| День рождения (ребёнок) | 2019-03-15 |
|
||
| День рождения (друзья) | даты друзей |
|
||
| Школьные мероприятия | утренники, экскурсии |
|
||
| Медицинские | медосмотр, прививки |
|
||
| Сезонная смена гардероба | конец августа — лёгкая → тёплая |
|
||
|
||
Агент:
|
||
- Подсказывает что купить к событию (за 2 недели, за 1 неделю)
|
||
- Напоминает о днях рождения (за неделю)
|
||
- Напоминает о смене сезона — "пора проверить зимнюю одежду"
|
||
|
||
### 2.4 Telegram-бот
|
||
|
||
**Отдельный бот** — нужен новый BotFather бот (`@kids_helper_bot` или аналог).
|
||
|
||
Команды:
|
||
- `/start` — приветствие + краткая инструкция
|
||
- `/profile` — показать профиль ребёнка
|
||
- `/edit профиль` — редактировать поля
|
||
- `/add событие` — добавить событие в календарь
|
||
- `/календарь` — список ближайших событий
|
||
- `/ напоминание` — напомнить о...
|
||
- `/размер` — показать текущие размеры
|
||
- `/чтокупить` — помощь с выбором
|
||
|
||
---
|
||
|
||
## 3. Изоляция данных
|
||
|
||
### 3.1 Изоляция от других агентов
|
||
|
||
- **Runtime:** отдельный `runtime=subagent`, свой workspace
|
||
- **Workspace:** `~/.openclaw/workspace-kids/` — изолирован от основного `workspace`
|
||
- **MEMORY.md:** свой, не общий. Структура аналогичная, но в `workspace-kids/memory/`
|
||
- **Telegram-бот:** отдельный бот, отдельный chat_id
|
||
- **Секреты:** BotToken отдельный, в `.env` как `KIDS_BOT_TOKEN`
|
||
|
||
### 3.2 Структура workspace-kids
|
||
|
||
```
|
||
~/.openclaw/workspace-kids/
|
||
├── SOUL.md # Персонаж: тёплый, заботливый, чуть-чуть игривый
|
||
├── PROFILE.md # Основной профиль ребёнка (TODAY.md style)
|
||
├── PROFILE.md # Основной профиль ребёнка (TODAY.md style)
|
||
├── PROFILE.md # Основной профиль ребёнка (TODAY.md style)
|
||
├── memory/
|
||
│ ├── YYYY-MM-DD.md # Ежедневные записи
|
||
│ └── CALENDAR.md # Календарь событий
|
||
├── SOUL.md # Персонаж ассистента
|
||
├── AGENTS.md # Правила (с минимумом — специфика)
|
||
└── TOOLS.md # Локальные заметки
|
||
```
|
||
|
||
### 3.3 no shared context
|
||
|
||
- Агент не читает `/home/node/.openclaw/workspace/MEMORY.md` (основной ассистент)
|
||
- Основной ассистент не читает `workspace-kids/`
|
||
- Единственное исключение: общий `MEMORY.md` агента kids — в его собственном workspace
|
||
|
||
---
|
||
|
||
## 4. Архитектура
|
||
|
||
### 4.1 Компоненты
|
||
|
||
1. **Telegram-бот** — интерфейс (Python, python-telegram-bot)
|
||
2. **Агент** — subagent с моделью и workspace-kids
|
||
3. **Память** — файловая, в workspace-kids (аналогично Стрим)
|
||
4. **Календарь событий** — markdown-файл + триггер напоминаний
|
||
|
||
### 4.2 Telegram-бот — схема работы
|
||
|
||
```
|
||
Слава (Telegram) → @kids_helper_bot
|
||
→ webhook → OpenClaw (kids session, runtime=subagent)
|
||
→ агент обрабатывает
|
||
→ ответ в тот же чат
|
||
```
|
||
|
||
### 4.3 Напоминания
|
||
|
||
- Через HEARTBEAT.md в workspace-kids
|
||
- Агент проверяет календарь каждый день (утро UTC+3)
|
||
- Напоминания отправляет через Telegram-бот
|
||
|
||
---
|
||
|
||
## 5. Стек и модель
|
||
|
||
| Параметр | Значение |
|
||
|----------|----------|
|
||
| Runtime | `subagent` |
|
||
| Модель | `openrouter/minimax/minimax-m2.7` (дефолт для kids-специфичных задач, если нужна мощная модель — `nekocode/gpt-5.4` или `anthropic/claude-sonnet-4-6`) |
|
||
| Telegram-бот | Python + python-telegram-bot (polling или webhook) |
|
||
| Изоляция | отдельный workspace, отдельный бот, отдельный .env ключ |
|
||
|
||
---
|
||
|
||
## 6. План реализации (этапы)
|
||
|
||
### Этап 1: Инфраструктура
|
||
- [ ] Создать workspace `~/.openclaw/workspace-kids/`
|
||
- [ ] Создать базовые файлы: SOUL.md, PROFILE.md (пустой шаблон), AGENTS.md, TOOLS.md, memory/
|
||
- [ ] Добавить BotToken в `.env` (`KIDS_BOT_TOKEN`)
|
||
- [ ] Зарегистрировать бота в OpenClaw (accounts.yaml или конфиг)
|
||
- [ ] Проверить что бот отвечает на `/start`
|
||
|
||
### Этап 2: Память и профиль
|
||
- [ ] Шаблон PROFILE.md с инструкцией по заполнению
|
||
- [ ] CALENDAR.md — шаблон
|
||
- [ ] Инструкция в AGENTS.md: как обновлять профиль
|
||
- [ ] Тест: добавить данные → агент их запоминает
|
||
|
||
### Этап 3: Функциональность
|
||
- [ ] Обработка команд `/profile`, `/календарь`, `/размер`
|
||
- [ ] Помощь с выбором — базовая логика (без интернета)
|
||
- [ ] Поиск в интернете — через yandex-search (с запросом)
|
||
- [ ] Напоминания о событиях — через cron heartbeat
|
||
|
||
### Этап 4: Полировка
|
||
- [ ] Первое сообщение приветствия — "расскажи о ребёнке"
|
||
- [ ] Проверка: агент помнит данные между сессиями
|
||
- [ ] Документация: как добавлять/обновлять данные
|
||
|
||
---
|
||
|
||
## 7. Out of scope (НЕ делать)
|
||
|
||
- Интеграция с детскими учреждениями (сады, школы)
|
||
- Медицинские данные (кроме аллергий)
|
||
- Отслеживание развития (графики роста и т.д.)
|
||
- Покупки через интеграции (Ozon API и т.д.)
|
||
- Шеринг данных с основным ассистентом
|
||
|
||
---
|
||
|
||
## 8. Критерии приёмки
|
||
|
||
1. Бот отвечает на `/start` — приветственное сообщение
|
||
2. `/profile` — показывает профиль ребёнка (пустой или заполненный)
|
||
3. Агент запоминает факт ("рост 115 см") и через сессию возвращает его
|
||
4. `/календарь` — показывает ближайшие события
|
||
5. Напоминание приходит вовремя (за неделю до дня рождения)
|
||
6. Изоляция: kids workspace не виден из основного workspace
|
||
7. Отдельный Telegram-бот (не `@ha542_bot`)
|
||
|
||
---
|
||
|
||
## 9. Сообщения агента — стиль
|
||
|
||
Агент обращается к родителю на "ты", тепло и дружелюбно:
|
||
|
||
✅ "Отлично! Записала, что Мише нужен 31-й размер обуви 👍"
|
||
✅ "О! Синий — его любимый цвет, учту. Что-то конкретное ищешь, или просто обзор?"
|
||
✅ "Нашёл несколько отличных Lego-наборов для 6 лет. Показать?"
|
||
|
||
❌ "Данные обновлены."
|
||
❌ "Рекомендация сформирована."
|
||
❌ "Информация сохранена в профиле."
|
||
|
||
---
|
||
|
||
## 10. Имя агента — для SOUL.md
|
||
|
||
**Имя:** Помощник 🌈
|
||
**Персонаж:** Тёплый, чуть-чуть сказочный. Как заботливая тётя/старшая сестра. Помнит все детали, напоминает вовремя, помогает выбрать лучшее.
|
||
**Тон:** дружелюбный, с эмодзи, но без крика.
|
||
**Эмодзи по умолчанию:** 🌈
|