Skip to Content
ДизайнИнтервалы и плотность TUI PR1

Интервалы и плотность TUI PR1

Зачем

Текущий TUI часто тратит лишние строки на отступы перед выводом ассистента, между блоками статуса/инструментов и внутри развернутых групп инструментов. В обычных сессиях это затрудняет просмотр простых ответов, списков файлов, вывода инструментов, состояний ошибок, диффов и длинного потокового вывода, поскольку пользователям приходится прокручивать пустое пространство вместо контента.

Этот PR — первый целенаправленный проход для QwenLM/qwen-code#4588. Он касается только интервалов и плотности, чтобы при ревью можно было сравнить использование строк до и после, не рассматривая при этом отображение рассуждений, границы инструментов, макет SubAgent, брендинг или изменения цветов темы.

Как

Реализация сохраняет существующую информационную структуру и поверхности рендеринга без изменений:

  • Интервалы элементов истории централизованы вблизи HistoryItemDisplay. Пользовательские промпты и отдельные представления команд по-прежнему начинаются с разделителя ходов, тогда как продолжения ассистента, группы инструментов, статусные сообщения, сводки инструментов и связанный вывод внутри хода больше не добавляют лишнюю начальную строку-отступ.
  • Развернутые группы инструментов сохраняют текущую структуру границ и статуса/заголовка, но больше не вставляют пустые строки между соседними записями инструментов.
  • Результаты инструментов рендерятся непосредственно под строкой заголовка/статуса инструмента. Это убирает лишнюю пустую строку между заголовком инструмента и его выводом, не изменяя содержимое вывода, усечение, фокус оболочки, промпты подтверждения или поведение компактного режима.

Поведение пустых строк в Markdown намеренно оставлено без изменений. Рендерер уже схлопывает последовательные пустые строки в один отступ и сохраняет сложные блоки, такие как таблицы, блоки кода и математические блоки.

Стандарт интервалов

  • Независимые ходы пользователя сохраняют один визуальный разделитель.
  • Вывод ассистента и последующие блоки внутри хода не добавляют второй разделитель.
  • Заголовок инструмента и результат идут вплотную друг к другу.
  • Развернутые группы с несколькими инструментами не вставляют пустые строки между записями каждого инструмента.
  • Сложные блоки Markdown сохраняют существующее внутреннее расположение.

Ожидаемый эффект

При той же ширине терминала и том же отрендеренном контенте целевые сценарии должны использовать меньше видимых строк:

  • Простые вопросы и ответы должны терять как минимум одну видимую строку.
  • Развернутый вывод инструмента должен терять как минимум одну строку для каждого отрендеренного результата, который ранее имел пустой отступ между заголовком и результатом.
  • Группы с несколькими инструментами должны терять одну строку между каждой соседней записью инструмента.
  • Сценарии инспекции проекта, диффов, списков файлов, ошибок и длинного потока не должны добавлять строки, если только изменения переноса строк в терминале не сделают это неизбежным.

Замеры

Автоматические проверки интервалов и терминальные доказательства используют 100-колоночные фикстуры для измененных правил:

СценарийШиринаБазовые строкиСтроки в PR1ДельтаДоказательство
Простой ответ ассистента10021-1удален начальный отступ истории
Заголовок инструмента с однострочным результатом10032-1заголовок и результат идут вплотную
Развернутая группа из трех инструментов с отрендеренными результатами1001611-5удален один отступ между заголовком и результатом для каждого инструмента, а также один разделитель между соседними инструментами
Полная репрезентативная фикстура1002619-7тот же отрендеренный контент, захваченный в tmux

Снапшот-диффы также охватывают существующие 80-колоночные фикстуры, чтобы подтвердить те же дельты количества строк в текущем тестовом окружении компонентов.

Вне скоупа

  • Скрытие цепочек рассуждений.
  • Удаление границ инструментов.
  • Редизайн вывода SubAgent.
  • Изменение стартового брендинга или баннера.
  • Изменение цветов темы.
  • Добавление затраченного времени ассистента для каждого хода.
  • Изменение подсветки инлайн-кода в таблицах.
Last updated on