No CLI command resumes a recipe session with both history and recipe context
- Langage dominant
- Rust
- Étoiles
- 54.2k
- Forks
- 6.2k
- Merge moyen
- 3 j 4 h
- PR mergées (30 j)
- 240
Description
**Describe the bug**
Resuming a recipe session via `goose session` does not restore what the recipe put into
the system prompt, so the resumed session is not the same session the recipe created.
Follow-up to #11892 — same root cause, narrowed down.
When a recipe starts a session, its `instructions` are added to the system prompt via
`extend_system_prompt("additional", ...)`. This is not persisted in the session metadata:
the `Session` record stores `recipe`, `extension_data`, `conversation`, `provider/model`,
but there is no field for the system prompt. On resume, `build_session` gets
`additional_system_prompt: None` (unless `--system` is passed manually) and the recipe
components are never re-applied, so the recipe instructions are lost.
Meanwhile the enabled tools/extensions list does survive resume (it is re-read from the
session's `extension_data` via `EnabledExtensionsState::for_session`).
**To Reproduce**
1. Create a recipe session:
`goose run --recipe some-recipe --interactive --name test-session`
2. Exit, then resume without re-passing the recipe:
`goose session --resume --name test-session`
3. The conversation history and enabled extensions are restored, but the recipe
instructions are missing from the system prompt.
**Expected behavior**
Resuming a recipe session should restore the full state the recipe configured, most
importantly the **system prompt** (recipe instructions) — not just the history and the
extension list. The recipe context should be in effect without re-running the recipe
prompt.
Acceptable outcomes:
- `goose session --resume` restores the recipe instructions into the system prompt
(e.g. from the recipe stored in the session metadata), or
- `goose run` gets a `--history` flag so `goose run --resume --recipe X --history`
shows the previous conversation alongside the recipe context.
**Environment**
- Goose version: 1.49.0
- OS: Linux
- Interface: CLI
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Le problème se situe dans la persistance des sessions et la logique de reprise. Examinez la structure `Session` pour voir quels champs sont stockés, ainsi que la fonction `build_session` pour voir comment une session est reconstruite. Les instructions de la recette sont ajoutées via `extend_system_prompt`, mais ne sont pas enregistrées. Vérifiez comment `extension_data` est utilisé dans `EnabledExtensionsState::for_session`. La correction consiste probablement à ajouter un champ pour le system prompt aux métadonnées de la session et à veiller à ce qu’il soit restauré lors de la reprise. Exécutez les étapes de reproduction pour vérifier le bug et tester la correction.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- cli
- Domaine
- ai-infra-agents, cli
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Active
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 55/100