aws / aws/amazon-q-developer-cli

Feature Request: Auto-Save Conversations

Aperta
#3,322 4 commenti 2 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Rust
Stelle
2k
Fork
439
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

# Feature Request: Auto-Save Conversations

## Summary
Add automatic conversation saving functionality to Q CLI, allowing users to enable auto-saving of conversations without manually using the `/save` command.

## Motivation
Currently, users must manually execute `/save ` to preserve their conversations. This can lead to data loss if users forget to save important conversations or if the CLI crashes unexpectedly. An auto-save feature would provide:

- **Data Protection**: Automatic preservation of conversation history
- **User Convenience**: No need to remember to manually save
- **Workflow Continuity**: Seamless conversation preservation during long sessions

## Proposed Solution

### Settings
Add two new configuration settings:
- `chat.enableAutoSave` (boolean, default: `false`) - Enable/disable auto-save functionality
- `chat.autoSavePath` (string, default: `"auto-save-{timestamp}.json"`) - File path pattern for auto-saved conversations

### Behavior
- **Trigger**: Auto-save after each AI response completion
- **File Naming**: Generate filename at session start (e.g., `auto-save-20241030-143915.json`)
- **File Management**: Overwrite the same file throughout the session
- **Error Handling**: Log errors quietly without interrupting the conversation
- **User Experience**: Silent operation (no notifications)

### Usage Example
```bash
# Enable auto-save
q settings chat.enableAutoSave true

# Start conversation - auto-save file created at session start
q chat

# Each AI response automatically saves to the session file
# No manual intervention required
```

## Implementation Plan

### Minimal Changes Required (~15 lines)
1. **Settings Addition** (3 lines in `settings.rs`)
- Add `ChatEnableAutoSave` and `ChatAutoSavePath` to Setting enum
- Add corresponding string mappings

2. **Auto-Save Logic** (8-10 lines)
- Check if auto-save is enabled
- Generate session filename on first save
- Reuse existing persist logic from `/save` command
- Handle errors gracefully with logging

3. **Integration Point** (2-3 lines)
- Call auto-save function after AI response completion
- Integrate with existing conversation state management

### Files to Modify
- `crates/chat-cli/src/database/settings.rs` - Add new settings
- `crates/chat-cli/src/cli/chat/mod.rs` - Add auto-save call
- `crates/chat-cli/src/cli/chat/cli/persist.rs` - Extract reusable save logic (optional)

## Alternatives Considered
1. **Auto-save on user input**: Less intuitive, doesn't capture complete conversation turns
2. **Interval-based saving**: More complex, less predictable behavior
3. **Always-on auto-save**: Could surprise users, violates principle of least surprise

## Compatibility
- **Backward Compatible**: Feature is opt-in (disabled by default)
- **No Breaking Changes**: Existing `/save` and `/load` functionality unchanged
- **File Format**: Uses same JSON format as manual `/save`

## Testing Strategy
- Unit tests for auto-save logic
- Integration tests for setting management
- Error handling tests (disk full, permission denied)
- User workflow tests (enable/disable, file creation)

---

This feature addresses a common user need while maintaining Q CLI's existing behavior and design principles. The implementation is minimal and non-intrusive, making it a low-risk addition with high user value.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Iniziare da crates/chat-cli/src/database/settings.rs e dal flusso di salvataggio esistente in crates/chat-cli/src/cli/chat/cli/persist.rs, quindi esaminare il percorso di completamento della risposta in crates/chat-cli/src/cli/chat/mod.rs. Verificare che le impostazioni siano opt-in, che un file di sessione venga riutilizzato dopo ogni risposta di AI, che gli errori vengano registrati senza interrompere il flusso e che il comportamento esistente di /save e /load rimanga invariato.

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

Valutazione

Stack tecnologico
rust
Ambito
cli
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
42/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.