Truncate
While we will need to implement summary-based compaction eventually, a /truncate <pct> provides a nice stop-gap.
Usage:
/truncate 50 # removes 50% of the tokens from the beginning of the chat
/truncate --middle-out 50 # same as above, but excises the middle of the chat
Compact
Compaction as implemented in Claude Code can be annoying as it can take up to two minutes to complete, and you have no idea what the compactor decided to focus on until it's complete and the prior context lost. I have found good success using Plan Mode as a form of guided compaction. My claude code workflow is essentially:
- See I'm running low on context
- Generate plan on what I want to do next
- Save plan to file once good
- Begin new chat with just plan
I would like to codify such an approach as the standard cmux UX.
Extensibility
Extensions should be able to register compacts that follow a signature of Messages[] -> Messages [] and have a name: string. They may be invoked via /compact name.
Truncate
While we will need to implement summary-based compaction eventually, a
/truncate <pct>provides a nice stop-gap.Usage:
Compact
Compaction as implemented in Claude Code can be annoying as it can take up to two minutes to complete, and you have no idea what the compactor decided to focus on until it's complete and the prior context lost. I have found good success using Plan Mode as a form of guided compaction. My claude code workflow is essentially:
I would like to codify such an approach as the standard cmux UX.
Extensibility
Extensions should be able to register compacts that follow a signature of
Messages[] -> Messages []and have aname: string. They may be invoked via/compact name.