Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

fix(cli): resolve duplicate assistant text printing after 'Done' in non-compact text mode

Aperta Adatta ai principianti
#3,258 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

@nankingjing ci sta già lavorando.

Dal 11/7/2026.

  • #3273 di @nankingjing — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
72/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
rust
Ambito
cli

Direzione di ricerca

Inizia in rust/crates/rusty-claude-cli/src/main.rs, all’interno di LiveCli::run_turn, e verifica come interagiscono il testo trasmesso, final_assistant_text e spinner.finish nella modalità testo non compatta. Esegui claw in questa modalità con una risposta, quindi verifica che il testo dell’assistente appaia una sola volta, che la riga finale venga preservata e che lo stato Done continui a essere visualizzato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Description

When running claw in non-compact text mode, the entire assistant response is printed twice.

  1. First, the text chunks are streamed and printed in real-time during the API call.
  2. Second, after ✔ ✨ Done is printed, the full assistant text (final_text) is printed again.

This causes a large amount of redundant output in the console, especially for long responses.

Cause

In LiveCli::run_turn (inside main.rs), spinner.finish("✨ Done") is called right after the conversation stream finishes.
Because spinner.finish moves the cursor to column 0 and clears the current line, it would erase the last line of the streamed text if we do not print a newline first.
To prevent this, the previous commit introduced a secondary full-text reprint:

let final_text = final_assistant_text(&summary);
if !final_text.is_empty() {
    let renderer = TerminalRenderer::new();
    println!("{}", renderer.markdown_to_ansi(&final_text));
}

However, this reprints the entire assistant message instead of just protecting the last line, causing the duplicate response.

Solution
  1. Print a newline before spinner.finish if the final_text is not empty. This moves the cursor to a new line, ensuring the line-clearing operation in spinner.finish only clears the empty line and does not corrupt the last line of the streamed text.
  2. Remove the redundant final_text reprint logic in run_turn.

Here is the proposed diff in rust/crates/rusty-claude-cli/src/main.rs:

@@ -7763,15 +7763,15 @@
         match result {
             Ok(summary) => {
                 self.replace_runtime(runtime)?;
-                spinner.finish(
-                    "✨ Done",
-                    TerminalRenderer::new().color_theme(),
-                    &mut stdout,
-                )?;
                 let final_text = final_assistant_text(&summary);
                 if !final_text.is_empty() {
-                    let renderer = TerminalRenderer::new();
-                    println!("{}", renderer.markdown_to_ansi(&final_text));
-                }
+                    println!();
+                }
+                spinner.finish(
+                    "✨ Done",
+                    TerminalRenderer::new().color_theme(),
+                    &mut stdout,
+                )?;
                 println!();
                 if let Some(event) = summary.auto_compaction {
Lingua principale
Rust
Stelle
195k
Fork
108k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di ultraworkers/claw-code

Tutte le issue di ultraworkers/claw-code

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.