TUIのスペーシングと密度 PR1
理由
現在のTUIは、アシスタントの出力前、ステータス/ツールブロック間、および展開されたツールグループ内に、スペーシングのための余分な行を頻繁に使用しています。一般的なセッションでは、ユーザーがコンテンツではなく空白をスクロールする必要があるため、シンプルな回答、ファイルリスト、ツール出力、エラー状態、差分、および長いストリーミング出力がスキャンしにくくなります。
このPRは QwenLM/qwen-code#4588 の最初の集中的な対応です。レビューで思考の可視性、ツールの境界線、SubAgentのレイアウト、ブランディング、またはテーマカラーの変更をレビューすることなく、前後の行の使用量を比較できるように、スペーシングと密度のみに取り組んでいます。
実装方法
実装では、既存の情報構造とレンダリングサーフェスをそのまま維持しています。
- 履歴アイテムのスペーシングは
HistoryItemDisplay付近に集約されています。ユーザープロンプトとスタンドアロンコマンドビューは引き続きターンセパレータで始まりますが、アシスタントの継続、ツールグループ、ステータスメッセージ、ツールサマリー、および関連するターン内出力は、余分な先頭スペーサ行を追加しなくなりました。 - 展開されたツールグループは現在の境界線とステータス/タイトル構造を維持しますが、隣接するツールエントリ間に空白行を挿入しなくなりました。
- ツール結果はツールタイトル/ステータス行の直下にレンダリングされます。これにより、出力内容、切り捨て、シェルフォーカス、確認プロンプト、またはコンパクトモードの動作を変更することなく、ツールヘッダーとその出力間の余分な空行が削除されます。
Markdownの空行の動作は意図的に変更されていません。レンダラーはすでに連続する空行を1つのスペーサに折りたたみ、テーブル、コードブロック、数式ブロックなどの複雑なブロックを保持します。
スペーシングの基準
- 独立したユーザーターンは1つの視覚的セパレータを保持します。
- アシスタント出力とターン内のフォローアップブロックは、2番目のセパレータを追加しません。
- ツールヘッダーとツール結果のコンテンツは隣接しています。
- 展開されたマルチツールグループは、各ツールエントリ間に空白行を挿入しません。
- 複雑なMarkdownブロックは既存の内部レイアウトを保持します。
期待される効果
同じターミナル幅と同じレンダリングコンテンツの場合、ターゲットシナリオでは表示される行数が少なくなるはずです。
- シンプルなQ&Aでは、少なくとも1つの表示行が削減されるはずです。
- 展開されたツール出力では、以前に空白のヘッダー/結果スペーサがあったレンダリングされた各ツール結果について、少なくとも1行が削減されるはずです。
- マルチツールグループでは、隣接する各ツールエントリ間で1行が削減されるはずです。
- プロジェクト検査、差分、ファイルリスト、エラー、およびロングストリームのシナリオでは、ターミナルの折り返し変更により避けられない場合を除き、行が増加することはありません。
計測
自動スペーシングアサーションとターミナルエビデンスは、変更されたルールに対して100列のフィクスチャを使用しています。
| シナリオ | 幅 | ベースライン行数 | PR1行数 | 差分 | エビデンス |
|---|---|---|---|---|---|
| シンプルなアシスタント返信 | 100 | 2 | 1 | -1 | 先頭の履歴スペーサが削除されました |
| 1行の結果を持つツールヘッダー | 100 | 3 | 2 | -1 | ヘッダーと結果が隣接しています |
| レンダリング結果を含む3ツールの展開グループ | 100 | 16 | 11 | -5 | 各ツール結果のヘッダー/結果スペーサが1つ削除され、隣接するツール間のセパレータが1つ削除されました |
| 完全な代表的なフィクスチャ | 100 | 26 | 19 | -7 | tmuxでキャプチャされた同一のレンダリングコンテンツ |
スナップショットの差分は、既存の80列フィクスチャもカバーしており、現在のコンポーネントテストハーネスで同じ行数の差分を確認できます。
対象外
- 思考トレースの非表示。
- ツール境界線の削除。
- SubAgent出力の再設計。
- 起動時のブランディングまたはバナーの変更。
- テーマカラーの変更。
- ターンごとのアシスタント経過時間の追加。
- テーブルのインラインコードハイライトの変更。
Last updated on