Files
wiki/tasks/kids-helper/TZ.md
2026-04-12 21:55:33 +03:00

237 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.
# ТЗ: Агент "Детский помощник"
> **Заказчик:** Слава
> **Дата:** 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
**Имя:** Помощник 🌈
**Персонаж:** Тёплый, чуть-чуть сказочный. Как заботливая тётя/старшая сестра. Помнит все детали, напоминает вовремя, помогает выбрать лучшее.
**Тон:** дружелюбный, с эмодзи, но без крика.
**Эмодзи по умолчанию:** 🌈