aaif-goose / aaif-goose/goose

No CLI command resumes a recipe session with both history and recipe context

Ouverte
#11,943 0 commentaires 0 réactions 1 personne assignée Réclamée par @DOsinga Voir sur GitHub
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.