Перейти к содержимому

Как это работает ​

Как работает iRoof.top

Каждый экспорт превращается в одинаковые нормализованные сообщения. Затем каждое действие персонажа воспроизводится модели как вызов инструмента, чтобы она училась тому, как человек взаимодействует, а не только тому, что он пишет, и отвечала так же.

Действия как вызовы инструментов ​

Что сделал персонажВызов инструмента в истории и в ответах в реальном времени
текстовый пузырь, возможно ответ или частичная цитатаsend_message {text, reply_to?, quote?}
стикерsend_sticker {sticker_id, reply_to?}
GIF из медиатеки или URL из инструмента MCPsend_gif {gif_id | url, caption?}
фото, видео, голосовое, аудио, файлsend_media {media_id, caption?}
пересланная публикацияforward_message {message_id}
реакцияreact {message_id, emoji}
(вспомнить старую историю)search_history {query}

Несколько вызовов за один ход становятся несколькими пузырями. Сообщения другой стороны превращаются в компактные строки, на которые ссылаются идентификаторы:

text
#52108 19:08 ↩ ответ на #52107 (вы: «лазанья бабушки 🍝»): Ты ни разу в жизни не готовил лазанью.
<sticker stk_156dbb381a>: кот в поварском колпаке помешивает кастрюлю
отреагировал 😂 на #52107 («лазанья бабушки 🍝»)

Системный промпт ​

Часть
Кем бытьоценивать знания и стиль персонажа и никогда не знать больше, чем знал бы он
Профиль стиляпо всему экспорту: длина сообщений, заглавные буквы, пунктуация, использование эмодзи и стикеров, привычки ответов и реакций, пузыри за ход, дословные примеры
Медиатекастикеры, GIF и медиа с тем, как их использовали
Заметкито, что вы написали о человеке

Промпт для чата статичен: без часов и счётчиков. Модель читает время из разделителей — день — и отметок HH:MM, а каждый запрос побайтно совпадает с началом следующего, поэтому кэши промптов провайдеров продолжают срабатывать.

Длинные чаты ​

 бюджет истории ───────────────────────────────────────────▶
 ┌──────────────────────┬────────────────────────────────────────┐
 │ память (≤ 350 слов)  │ последние реплики, обрезано до 60 %   │
 └──────────────────────┴────────────────────────────────────────┘
   отношения, факты,      точка обрезки долго остаётся на месте,
   темы, шутки            поэтому кэшированный префикс тоже

Когда воспроизводимая история превышает бюджет, следующий ответ сначала сворачивает самые старые реплики (и предыдущую память) в короткую сводку. Ничего не тратится при импорте и при открытии чата. Профиль стиля по-прежнему строится по всему экспорту, а search_history достаёт каждое старое сообщение. Использование токенов (промпт, кэш, ответ) показывается в { }.

Медиатека ​

Модель чата читает текст, поэтому стикер — это просто <sticker stk_…>, пока его не описали. Описать с ИИ отправляет изображения недостающих элементов медиамодели, которая должна поддерживать зрение.

  • GIF, видеостикеры и видео отправляются как 4 кадра по порядку, чтобы модель видела движение. Для этого нужен ffmpeg (brew install ffmpeg, apt install ffmpeg, winget install ffmpeg), иначе используется миниатюра.
  • Переделать описывает элемент заново. Любое описание можно отредактировать вручную.
  • Описания принадлежат экспорту и служат всем его чатам.

Посмотрите сами в CLI: rooftop convert <экспорт> --persona "Jonas Weber".

Распространяется по лицензии MIT.