Як це працює
Кожен експорт перетворюється на однакові нормалізовані повідомлення. Потім кожна дія персонажа відтворюється моделі як виклик інструмента, щоб вона вивчала, як людина взаємодіє, а не лише що пише, і відповідала так само.
Дії як виклики інструментів
| Що зробив персонаж | Виклик інструмента в історії та в живих відповідях |
|---|---|
| текстова бульбашка, можливо відповідь або часткова цитата | send_message {text, reply_to?, quote?} |
| стікер | send_sticker {sticker_id, reply_to?} |
| GIF з бібліотеки або URL з інструмента MCP | send_gif {gif_id | url, caption?} |
| фото, відео, голос, аудіо, файл | send_media {media_id, caption?} |
| переслана публікація | forward_message {message_id} |
| реакція | react {message_id, emoji} |
| (згадати старішу історію) | search_history {query} |
Кілька викликів в одному ході стають кількома бульбашками. Повідомлення з іншого боку стають компактними рядками, на які посилаються ідентифікатори:
#52108 19:08 ↩ відповідь на #52107 (ти: «лазанья бабусі 🍝»): Ти жодного разу не готував лазанью.
<sticker stk_156dbb381a>: кіт у ковпаку кухаря, що мішає каструлю
відреагував 😂 на #52107 («лазанья бабусі 🍝»)Системний промпт
| Частина | |
|---|---|
| Ким бути | оцінювати знання і стиль персонажа та ніколи не знати більше, ніж знав би він |
| Профіль стилю | з усього експорту: довжина повідомлень, великі літери, пунктуація, використання емодзі і стікерів, звички відповідей і реакцій, бульбашки за хід, дослівні зразки |
| Бібліотека | стікери, GIF і медіа з тим, як їх використовували |
| Нотатки | що ви написали про людину |
Промпт для чату статичний: без годинника і лічильників. Модель читає час із роздільників — день — і позначок HH:MM, а кожен запит є побайтово однаковим префіксом наступного, тож кеші промптів провайдерів продовжують працювати.
Довгі чати
бюджет історії ───────────────────────────────────────────▶
┌──────────────────────┬────────────────────────────────────────┐
│ пам'ять (≤ 350 сл.) │ останні репліки, обрізано до 60 % │
└──────────────────────┴────────────────────────────────────────┘
стосунки, факти, точка обрізання довго лишається на місці,
теми, жарти тож закешований префікс тежКоли відтворювана історія перевищує бюджет, наступна відповідь спочатку згортає найстаріші репліки (і попередню пам'ять) у короткий підсумок. Нічого не витрачається під час імпорту чи відкриття чату. Профіль стилю все одно береться з усього експорту, а search_history досягає кожного старого повідомлення. usage токенів (промпт, кеш, завершення) показується в { }.
Медіатека
Модель чату читає текст, тож стікер — це лише <sticker stk_…>, доки його не описано. Описати з ШІ надсилає зображення відсутніх елементів медіамоделі, яка має підтримувати зір.
- GIF, відеостікери і відео надсилаються як 4 кадри по порядку, щоб модель бачила рух. Для цього потрібен ffmpeg (
brew install ffmpeg,apt install ffmpeg,winget install ffmpeg); інакше використовується мініатюра. - Переробити описує елемент знову. Будь-який опис можна відредагувати вручну.
- Описи належать експорту і служать усім його чатам.
Перегляньте самі в CLI: rooftop convert <експорт> --persona "Jonas Weber".