Карточки выглядят по-разному в зависимости от того, что в них лежит, и почти все умеют разворачиваться по тапу, чтобы показать детали. Отдельные карточки приложение само склеивает или прячет, чтобы лента не выглядела кашей из сотни мелких плашек.
Сообщения и мысли
- Ваше сообщение рисуется пузырём справа, бирюзового цвета. Сверху в пузыре перечисляются прикреплённые скиллы со знаком доллара, под ними показываются миниатюры приложенных картинок, а под всем этим сам текст. Внизу пузыря стоят время отправки, кнопка копирования и меню с тремя точками.
- Черновик вашего сообщения появляется с лёгким эффектом. Пузырь сначала сжимается до 95 процентов, потом расправляется пружиной, а текст проявляется за 150 миллисекунд.
- Пока сообщение уходит агенту, под ним видно его состояние. Возможные подписи: sending, waiting for connection, not confirmed, send failed. Отправленное сообщение подписи не имеет, но если отправка сорвалась, рядом появляется кнопка повторной отправки.
- Меню вашего сообщения зависит от того, отправлено оно или нет. Для отправленного доступны редактирование, повторный запуск ответа агента, удаление последнего хода и создание ответвления треда. Для неотправленного доступна только повторная отправка.
- Ответ агента рисуется пузырём слева, с бирюзовой полоской по левому краю. Текст ответа показывается как разметка: заголовки, списки, таблицы, блоки кода и ссылки. Очень длинный ответ прокручивается внутри своего пузыря, чтобы не растягивать ленту на весь экран.
- Ссылка в ответе агента открывает встроенный браузер. Исключение сделано для ссылок на файлы с расширением md: такой путь просто копируется в буфер, потому что открывать локальный файл браузер не умеет.
- Внизу ответа агента есть время, кнопка копирования и меню. Если в ответе есть блоки кода, рядом с копированием появляется кнопка Code с числом блоков, которая копирует только код.
- Меню ответа агента умеет копировать текст в разных видах. Можно скопировать ответ целиком, только простой текст без разметки, только блоки кода и только таблицы в виде CSV. Там же удаление последнего хода и создание ответвления треда.
- Пока агент ещё не прислал ни одного слова, вместо текста горит надпись writing response с тремя пульсирующими точками. Сама эта заглушка в ленту не попадает, она живёт только внутри пузыря.
- Размышления агента показываются отдельной серой карточкой со значком головы. В свёрнутом виде видна только первая строка мыслей, обрезанная до 120 символов, и таймер. Развернутая карточка показывает весь текст мыслей в области высотой до 240dp со своей прокруткой.
- Карточка мыслей показывает, что происходит прямо сейчас. Пока агент думает, в шапке крутится значок обновления, а таймер тикает. Когда мысли закончились, значок становится галочкой и таймер показывает, сколько времени заняли мысли. Если мысли прервали, вместо галочки появляется крестик, а время и значок становятся красными.
- Пока агент думает, карточка мыслей развёрнута сама. Как только мысли закончились, карточка сворачивается, чтобы не занимать полэкрана, и развернуть её можно тапом.
Команды и чтение файлов
- Выполненная команда рисуется карточкой со значком терминала. В шапке видна сама команда со знаком доллара, таймер и значок состояния: обновление, галочка или крестик при ошибке.
- Раскрытая карточка команды показывает вывод. Вывод обрезается до 4000 символов и показывается максимум 12 строками, а если команда отработала с ошибкой, в конце добавляется её код завершения.
- В раскрытой карточке команды есть мелкие метки с дополнительными сведениями. Одна метка показывает рабочую папку, а ещё до трёх — что именно делала команда, например чтение файла или поиск по нему. Метки появляются только когда есть что показать.
- Карточка команды сворачивается сама, как только команда отработала. Пока команда ещё выполняется, она раскрыта, чтобы было видно живой вывод.
- Чтение файла рисуется карточкой со значком документа. В шапке видна команда чтения, а если она пустая, то путь к файлу. Раскрытая карточка показывает начало содержимого файла, обрезанное до 8 строк.
- У чтения файла есть свой значок состояния. Ошибка чтения даёт крестик, успешное чтение галочку, а идущее чтение показывается значком обновления.
- Серия чтений, поисков и листинга одного хода собирается в одну карточку с итогом. В свёрнутом виде в ней написано, например, Explored, 5 ops и первая операция с числом остальных. Пока агент ещё изучает файлы, в строке написано Exploring и значок обновления, а когда работа закончена, появляется галочка и слово Explored.
- Карточка изучения свёрнута, а тап разворачивает список операций. У каждой строки свой значок: документ для чтения, папка для листинга и лупа для поиска. Команды, запущенные вами вручную, в такую карточку не собираются и остаются отдельными карточками.
Вызовы инструментов
- Вызов инструмента рисуется карточкой со значком инструмента. В шапке написано имя сервера и имя инструмента через точку, дальше таймер и значок состояния.
- В раскрытой карточке инструмента видны аргументы и ошибка. Аргументы показываются в удобном виде и прокручиваются, если их много. Ошибка обрезается до трёх строк и 300 символов.
- Если инструмент успешно вернул картинку, она показывается прямо в карточке. Саму картинку можно открыть и рассмотреть, а ссылку на внешний адрес приложение умеет грузить.
- Генерация картинок рисуется отдельной карточкой со своей галереей. В шапке написано Image generation, а под ней статус и время: Generating, Queued с номером в очереди, Completed, Failed, Cancelled, Ready или Waiting с пометкой, что задачу можно продолжить. Если сервис отдаёт свой текст о прогрессе, он показывается вместо стандартного статуса.
- Пока картинка генерируется, карточка сама обновляет статус раз в две секунды. Дополнительная кнопка проверки статуса не нужна, поэтому в карточке её нет.
- Пока генерация идёт, у карточки есть кнопка Cancel. Она исчезает вместе с результатом, потому что отменять уже нечего.
- Если картинка не скачалась на телефон, карточка честно об этом пишет. В ней появляется плашка о том, что локальная копия не удалась и показан публичный адрес.
- Идентификатор задачи генерации виден в подписи карточки и копируется одним нажатием. Рядом с ним стоит значок состояния, а подсказка о том, что картинка скачалась только по публичной ссылке, выводится отдельной плашкой.
- Когда результат готов, картинки открываются в полноэкранный просмотрщик. В нём есть действия поделиться, сохранить в Загрузки, скопировать ссылку и открыть файл или страницу, а если картинок несколько, их можно листать стрелками.
- В просмотрщике картинку можно править, не выходя из чата. Кнопка кисти включает режим маски с тремя инструментами: Object — тап по объекту (локальная модель MediaPipe выделяет его по контуру), Brush — обвести пальцем, с ластиком, Box — растянуть рамку. Выделение видно прямо поверх картинки, Reset снимает его целиком, а повторный тап по объекту заменяет прежнее выделение, а не дорисовывает второе.
- Кнопка Edit открывает окно правки. В нём промпт (что сделать в выделенной области), модель, denoise, seed, 4-step, апскейл, две LoRA с силой и секция референсов стиля с выбором картинки из загруженных; запуск идёт сразу в y83.media, в окне видны прогресс, ошибка и результат, который можно открыть тут же и править дальше.
Планы, правки и файлы
- План рисуется карточкой с рамкой, а не пузырём. В шапке написано название плана, метка состояния и счётчик шагов вида 2/5, а ниже раскрывается тело с текстом плана и его чеклистом.
- Состояние плана видно по подписи и цвету рамки. Подписи бывают такие: ожидает одобрения, отклонён, выполняется, одобрен, готов и закрыт. Отклонённый план рисуется красной рамкой, готовый и закрытый фиолетовой, остальные бирюзовой, а план без состояния — серой.
- Пока план ждёт одобрения, карточка развёрнута. В этом состоянии чеклист и есть главное, поэтому прятать его нельзя.
- Готовый и закрытый планы в ленте показываются свёрнутыми. В шапке остаются название, подпись состояния и счётчик шагов, а тап открывает план в отдельном окне, чтобы длинный чеклист не закрывал ответ агента.
- Пока план выполняется или его ход ещё идёт, в ленте его нет. Он целиком живёт в полоске плана под лентой, а в ленту возвращается уже закрытым, после конца хода.
- У закрытого плана в шапке виден счётчик шагов и число неотмеченных. Формат такой: 3/5 steps, а рядом может стоять 2 unmarked, если два шага ещё не закрыты. У плана в работе в шапке стоит короткий счётчик 3/5 без слова steps.
- Внутри плана есть полоса прогресса и список шагов с номерами. Полоска показывает, сколько шагов уже сделано, а у каждого шага свой номер и свой цвет: выполненный шаг фиолетовый, текущий бирюзовый, а у закрытого плана неотмеченные шаги приглушены.
- Раскрытие и сворачивание плана анимированы. Тело карточки выезжает за 250 миллисекунд с проявлением за 200.
- Карточка правок файлов в свёрнутом виде показывает две первые записи. Заголовок меняется на Changing files, пока агент ещё пишет файлы, и на Changed files, когда работа закончена. Действие показывается знаком: плюс для нового файла, минус для удалённого и волнистая черта для изменённого.
- В раскрытой карточке правок у каждого файла есть счётчик строк. Он показывает, сколько строк добавлено и сколько удалено, а под первыми шестью строками показывается кусок правки. Пока файлы ещё пишутся, сами куски дифа не показываются, видны только имена и счётчики.
- Список изменённых файлов можно скопировать целиком. Кнопка копирования стоит в конце раскрытой карточки и копирует только список с пометками, без содержимого дифов.
- Карточка дифа показывает итог хода и число изменённых строк. Справа написано, сколько строк добавлено и сколько удалено. Если вместе с дифом пришли данные о ходе, в шапке вместо названия будет строка итога хода, а если нет, то надпись Turn changes.
- В раскрытом дифе файлы показываются отдельными строками. У каждой строки написан путь с приглушённым каталогом и свои счётчики добавленных и удалённых строк, а тап по строке открывает диф только этого файла.
- Под списком файлов показан кусок дифа первого файла. Он рисуется с номерами строк и прокручивается вбок, если строки длинные, а под ним есть кнопка открытия полного дифа.
- Диф может прийти неполным, и карточка об этом предупреждает. Если часть строк потерялась при кэшировании, под списком файлов появляется отдельная пометка об этом.
Служебные строки и итоги хода
- Служебная строка рисуется узкой плашкой по центру ленты. В ней маленький значок информации и одна строка текста, обрезанная по длине. Отступы по бокам у такой строки заметно больше, чем у обычной карточки.
- Служебная строка читается как обычное предложение. Если событие пришло в квадратных скобках, метка отделяется от текста точкой, поэтому строка читается как webSearch, а дальше идёт пояснение.
- Строка о сжатии контекста отделяет ленту отрезками с двух сторон. В центре написано Context compacted и время операции, например 15s.
- Пока сжатие контекста идёт, в ленте ничего не рисуется. Индикация с таймером живёт в полоске статуса хода под лентой, а строка в ленте появляется только после завершения.
- Итог хода рисуется строкой между двумя отрезками. В ней написано Done, время хода и счётчики: сколько команд было выполнено, сколько раз агент думал, сколько файлов прочитано и сколько изменено, а в конце расход токенов.
- Итог хода меняется, если ход сорвался. Вместо Done пишется Interrupted, а если ход упал с ошибкой, то Failed, и строка становится цветной.
- Тап по итогу хода открывает подробный разбор. Внутри есть отдельные строки про мысли и команды с их суммарным временем, про количество прочитанных и изменённых файлов и про ошибку, если она была.
- Ходы без реальной работы сводки не создают. Пустой ход остаётся без строки итога, а ход, который закончился только сжатием контекста, показывает отдельную строку сжатия. Прерванный ход и ход с ошибкой сводку получают всегда, даже если в них ничего не было.
Субагенты и совместная работа
- Действия с субагентом рисуются карточкой со значком головы в кружке. В шапке написано Subagent и, если агент известен, его позывной вместе с ролью в квадратных скобках. Ниже стоит название задачи и путь к агенту.
- У карточки субагента есть подпись состояния. Возможные подписи: Started, Interacted with, Completed и Interrupted. Цвет подписи зависит от состояния.
- Тап по карточке субагента открывает его тред. Если тред открыть нельзя, тап вместо этого разворачивает подробности.
- Подробности карточки субагента показывают исходные данные. Там дублируется путь к агенту и сам технический текст события, обрезанный до 12 строк.
- Совместная работа между агентами рисуется отдельной карточкой со значком расширения. В шапке написано Agent tool и позывной с ролью получателя, а ниже — название действия: завести агента, отправить ему ввод, подождать, закрыть, прервать или отправить сообщение.
- Под карточкой совместной работы виден переданный запрос. Он обрезан до двух строк, а под ним перечислены технические подробности: модель, уровень усиления рассуждения, число агентов и число получателей, если их больше одного.
- У карточек субагента и совместной работы состояние выглядит одинаково. Подпись Running, Completed, Failed или Interrupted рисуется плашкой с цветом соответствующего состояния.
Картинки и незнакомые события
- Картинка из ответа агента рисуется карточкой с круглым значком фотографии. В шапке написано имя файла и подпись: Generated image для сгенерированной картинки и Image attachment для присланной. Если путь к файлу пустой, в карточке написано, что картинка недоступна.
- Картинка в карточке занимает не больше 320dp по высоте и подстраивается по ширине. Тап открывает её в полноэкранный просмотрщик, где картинку можно сохранить, отправить, открыть отдельно или выделить на ней область и отправить в правку.
- Событие, которое приложение не умеет разбирать, показывается как обычный ответ агента. При этом в карточку попадает технический текст события как есть, без перевода на понятный вид.
- Служебная запись рисуется отдельной карточкой со значком документа. В ней не больше двух строк текста, а если текста нет, показывается название самой операции.
- Пустые записи в ленту не попадают. Так же ведут себя пустые ваши сообщения, пустые ответы, пустые мысли, пустые команды, планы без текста и без шагов и отдельные шаги хода.
Технические данные
| Параметр | Значение |
|---|---|
| Радиус карточек | 16dp, у служебной строки 8dp |
| Отступ между карточками | 8dp |
| Отступы ленты слева, справа, сверху, снизу | 12dp, 12dp, 12dp, 4dp |
| Округление ваших пузырей | правый нижний угол 4dp, остальные 16dp |
| Округление пузырей агента | левый нижний угол 4dp, остальные 16dp |
| Ширина цветной полоски в пузыре агента | 4dp |
| Обрезка первой строки мыслей в шапке карточки | 120 символов |
| Максимальная высота раскрытых мыслей | 240dp со своей прокруткой |
| Оборот значка у мыслей, команд и вызовов инструментов | 900 миллисекунд на круг |
| Обрезка вывода команды | 4000 символов и 12 строк |
| Обрезка содержимого прочитанного файла | 8 строк |
| Обрезка ошибки вызова инструмента | 3 строки и 300 символов |
| Обрезка текста служебной записи | 2 строки |
| Обрезка ошибки генерации картинки | 4 строки и 500 символов |
| Высота блока аргументов инструмента | до 240dp со своей прокруткой |
| Высота галереи сгенерированных картинок | до 320dp |
| Как часто обновляется статус генерации картинки | раз в 2 секунды |
| Обрезка дифа в карточке правок | 6 строк и 400 символов |
| Файлов в раскрытом дифе | до 4, остальные показываются как «+N more files» |
| Строк дифа в раскрытом дифе | до 12 |
| Ошибка статуса правки | показывается плашкой, если статус не completed и не inProgress |
| Отступы служебной строки по бокам | 48dp |
| Подписи состояния плана | Pending approval, Rejected, In progress, Approved, Done, Closed |
| Формат счётчика шагов | 3/5 у плана в работе, 3/5 steps и 2 unmarked у закрытого |
| Сколько шагов помечается в плане | все, без ограничений |
| Время анимации тела плана | 250 миллисекунд появление, 200 проявление |
| Метка итога хода | Done, Interrupted или Failed |
| Формат расхода токенов | K начиная с тысяч, M начиная с миллионов |
| Формат времени в карточках | доли секунды до минуты, дальше минуты и секунды |
| Время появления вашего сообщения | пружина и проявление текста за 150 миллисекунд |
| Максимальная высота картинки в карточке | 320dp, ширина по месту |
| Подписи статуса генерации | Generating, Queued, Completed, Failed, Cancelled, Ready, Waiting |
Что агент умеет
- Агент может писать ответы с разметкой, кодом, таблицами и ссылками, и всё это будет нарисовано в его пузыре как в обычном документе.
- Агент может присылать размышления в несколько кусков, и лента сама соберёт их в один блок с общим временем.
- Агент может выполнять команды и запускать их в фоне, и лента покажет команду, её живой вывод, рабочую папку и код завершения.
- Агент может читать, искать и листить файлы, и вся такая работа соберётся в одну карточку с итогом, а не в десятки отдельных строк.
- Агент может вызывать любые инструменты через серверы MCP, и у каждого вызова в ленте будут имя сервера, имя инструмента, аргументы и результат.
- Агент может генерировать картинки, и лента покажет ход генерации, очередь, отмену, готовый результат и честно скажет, если локальная копия не удалась.
- Агент может править файлы, и лента покажет список изменений со знаками, счётчиками добавленных и удалённых строк и кусками дифа.
- Агент может присылать план с шагами, и лента покажет его состояние, счётчик шагов и весь чеклист, а закрытый план откроется в отдельном окне.
- Агент может заводить субагентов, ждать их, отправлять им ввод и прерывать, и вся эта работа видна карточками с состоянием и переходом в тред субагента.
- Агент может сжать контекст, и лента отметит это отдельной строкой с временем операции.
- Агент может прислать картинку файлом или ссылкой, и она появится в ленте карточкой с полноэкранным просмотром.
- Агент может прислать событие, которого приложение пока не знает, и оно честно попадёт в ленту как технический текст, а не потеряется молча.
Ограничения
- Карточки в ленте не показывают всё, что прислал агент: часть содержимого обрезается по длине, а полный вывод команды, полный диф и полное содержимое файла доступны только в отдельных окнах.
- План, который сейчас выполняется, в ленте не виден: его показывает только полоска плана под лентой, а в истории карточка появляется уже закрытой.
- Открытые вопросы и одобрения не стоят на своих местах в ленте: пока вы на них не ответили, они собраны в один блок над полем ввода, а после ответа остаются в истории в той позиции, где появились.
- Субагенты и картинки можно открыть только если их удалось сопоставить с тредом или с файлом: если сопоставления нет, карточка показывает лишь технические подробности без перехода.
- Карточка генерации картинок умеет отменять только активную генерацию: у уже готового результата кнопки Cancel нет, а состояние продолжает обновляться само.
- Разметка, которую агент прислал, показывается в том виде, в каком пришла: если разметка сломана, лента не пытается её чинить, а показывает текст как есть.
- Часть счётчиков зависит от того, что агент прислал вместе с ходом: если в ходе не было команд или мыслей, в итоге хода их просто не будет.
- События, которые приложение пока не умеет разбирать, видны в ленте техническим текстом без перевода на понятные слова, поэтому такие карточки приходится читать внимательно.