Интервалы и плотность TUI PR1
Зачем
Текущий TUI часто тратит лишние строки на отступы перед выводом ассистента, между блоками статуса/инструментов и внутри развернутых групп инструментов. В обычных сессиях это затрудняет просмотр простых ответов, списков файлов, вывода инструментов, состояний ошибок, диффов и длинного потокового вывода, поскольку пользователям приходится прокручивать пустое пространство вместо контента.
Этот PR — первый целенаправленный проход для QwenLM/qwen-code#4588. Он касается только интервалов и плотности, чтобы при ревью можно было сравнить использование строк до и после, не рассматривая при этом отображение рассуждений, границы инструментов, макет SubAgent, брендинг или изменения цветов темы.
Как
Реализация сохраняет существующую информационную структуру и поверхности рендеринга без изменений:
- Интервалы элементов истории централизованы вблизи
HistoryItemDisplay. Пользовательские промпты и отдельные представления команд по-прежнему начинаются с разделителя ходов, тогда как продолжения ассистента, группы инструментов, статусные сообщения, сводки инструментов и связанный вывод внутри хода больше не добавляют лишнюю начальную строку-отступ. - Развернутые группы инструментов сохраняют текущую структуру границ и статуса/заголовка, но больше не вставляют пустые строки между соседними записями инструментов.
- Результаты инструментов рендерятся непосредственно под строкой заголовка/статуса инструмента. Это убирает лишнюю пустую строку между заголовком инструмента и его выводом, не изменяя содержимое вывода, усечение, фокус оболочки, промпты подтверждения или поведение компактного режима.
Поведение пустых строк в Markdown намеренно оставлено без изменений. Рендерер уже схлопывает последовательные пустые строки в один отступ и сохраняет сложные блоки, такие как таблицы, блоки кода и математические блоки.
Стандарт интервалов
- Независимые ходы пользователя сохраняют один визуальный разделитель.
- Вывод ассистента и последующие блоки внутри хода не добавляют второй разделитель.
- Заголовок инструмента и результат идут вплотную друг к другу.
- Развернутые группы с несколькими инструментами не вставляют пустые строки между записями каждого инструмента.
- Сложные блоки Markdown сохраняют существующее внутреннее расположение.
Ожидаемый эффект
При той же ширине терминала и том же отрендеренном контенте целевые сценарии должны использовать меньше видимых строк:
- Простые вопросы и ответы должны терять как минимум одну видимую строку.
- Развернутый вывод инструмента должен терять как минимум одну строку для каждого отрендеренного результата, который ранее имел пустой отступ между заголовком и результатом.
- Группы с несколькими инструментами должны терять одну строку между каждой соседней записью инструмента.
- Сценарии инспекции проекта, диффов, списков файлов, ошибок и длинного потока не должны добавлять строки, если только изменения переноса строк в терминале не сделают это неизбежным.
Замеры
Автоматические проверки интервалов и терминальные доказательства используют 100-колоночные фикстуры для измененных правил:
| Сценарий | Ширина | Базовые строки | Строки в PR1 | Дельта | Доказательство |
|---|---|---|---|---|---|
| Простой ответ ассистента | 100 | 2 | 1 | -1 | удален начальный отступ истории |
| Заголовок инструмента с однострочным результатом | 100 | 3 | 2 | -1 | заголовок и результат идут вплотную |
| Развернутая группа из трех инструментов с отрендеренными результатами | 100 | 16 | 11 | -5 | удален один отступ между заголовком и результатом для каждого инструмента, а также один разделитель между соседними инструментами |
| Полная репрезентативная фикстура | 100 | 26 | 19 | -7 | тот же отрендеренный контент, захваченный в tmux |
Снапшот-диффы также охватывают существующие 80-колоночные фикстуры, чтобы подтвердить те же дельты количества строк в текущем тестовом окружении компонентов.
Вне скоупа
- Скрытие цепочек рассуждений.
- Удаление границ инструментов.
- Редизайн вывода SubAgent.
- Изменение стартового брендинга или баннера.
- Изменение цветов темы.
- Добавление затраченного времени ассистента для каждого хода.
- Изменение подсветки инлайн-кода в таблицах.