Skip to content

Add experimental quiet mode for compact turn display#288

Open
ewilderj wants to merge 2 commits intoxenodium:mainfrom
ewilderj:ewj/quiet-mode
Open

Add experimental quiet mode for compact turn display#288
ewilderj wants to merge 2 commits intoxenodium:mainfrom
ewilderj:ewj/quiet-mode

Conversation

@ewilderj
Copy link
Contributor

Summary

This is an EXPERIMENTAL mode to show what it would look like to conceal most of the steps between thoughts. In long running turns this shows only the most important agent thoughts and reduces visual noise considerably.

What it does

When agent-shell-quiet-mode is enabled (t), all thought process and tool call fragments within a turn are grouped under collapsible sections instead of being shown individually. Each section:

  • Shows the agent's current thought as a one-line label
  • Animates a braille spinner (⠋⠙⠹…) while work is in progress
  • Finalizes with ✓ when the phase completes
  • Expands on click to reveal the individual tool calls underneath

When a new thought arrives after tool calls, a new collapsible group starts automatically — so long-running turns show multiple phases:

▶ ✓ Exploring the codebase...
▶ ⠹ Found the issue, now fixing...

Implementation

  • New file agent-shell-quiet.el with all quiet mode logic
  • Uses agent-shell-ui fragments: a wrapper fragment per phase with child fragments for tool calls
  • Spinner timer and state stored per-group on the state alist (multi-session safe)
  • Late-completing tool calls are correctly associated with their originating group
  • Toggle (expand/collapse) works via advice on agent-shell-ui-toggle-fragment-at-point

Usage

(setq agent-shell-quiet-mode t)

No other configuration needed. Set to nil to return to normal display.

When enabled via (setq agent-shell-quiet-mode t), all thought
process and tool call fragments within an agent turn are grouped
under a single collapsible wrapper.  The wrapper label shows the
current thought summary.  Expanding reveals individual tool calls
and thoughts as indented, nested collapsible sections.

Implementation uses a dedicated invisible spec (agent-shell-quiet)
to manage group visibility without conflicting with the per-fragment
collapse state (invisible t).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@ewilderj
Copy link
Contributor Author

Here's a before/after comparison

BEFORE
image

(and goes on for 2.5 more screenfuls)

AFTER
image

Instead of one wrapper per turn, create a new collapsible group each
time a thought arrives after tool calls. This gives the user visibility
into each phase of a long-running turn:

  ▶ Exploring the codebase...
  ▶ Found the issue, now fixing...
  ▶ Running tests...
  [response text]

Each group is independently expandable to see its tool calls. Consecutive
thoughts without intervening tool calls stay in the same group.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@ewilderj
Copy link
Contributor Author

Noting again how experimental this is: it becomes quite vulnerable to the various whims of how each model outputs thinking tokens, and whether it streams or not. Pretty sure I found some upstream bugs for Copilot CLI. Still, am trying to make it do a good job on messy data.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant