aaif-goose / aaif-goose/goose

Recipe snapshots stored in session history fail Goose's own template validation, blocking recipes from loading in Desktop

Đang mở
#10,931 7 bình luận 1 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Rust
Star
54.2k
Fork
6.2k
Merge trung bình
3 ngày 2 giờ
Pull request đã merge (30 ngày)
262

Mô tả

Version: goose 1.45.0 (Homebrew CLI and Desktop cask, both), macOS 15 (Intel)

Summary

Running a recipe that declares parameters stores a rendered copy of that recipe in the session row's recipe_json — all {{ }} substituted — while retaining the parameters: block. Goose Desktop re-validates that stored copy as a template. Because a rendered copy references no parameters, validation fails with Unnecessary parameter definitions: and the recipe cannot be opened in the GUI. The recipe file on disk remains valid; only the stored snapshot is rejected.

Reproduction

Write a recipe declaring a parameter message, referenced as prompt: "{{ message }}".
goose recipe validate recipe.yaml → valid.
goose run --recipe recipe.yaml --params message="hello" → runs normally.
Read that session's recipe_json from ~/.local/share/goose/sessions/sessions.db: the parameters block is present, and no {{ }} remain in instructions or prompt.
Write that stored JSON back out as YAML and run goose recipe validate on it → fails with Unnecessary parameter definitions: message.
In Goose Desktop, the affected recipe fails to load with the same message.
Expected

A recipe that ran successfully should remain loadable. Either the snapshot should preserve the unrendered template, or the "declared parameter must be referenced" check should not apply to an already-rendered snapshot.

Actual

Every parameterized recipe becomes unloadable in Desktop once it has been run — the more often it runs, the sooner it surfaces. On this machine the three most-used recipes (7, 7 and 5 stored snapshots) failed first, while less-used ones with identical structure had not yet been noticed.

Affected here

Subagent Coordinator, Research Subagent, Shopping / Purchase Decisions (user-reported); Capability Scout, File Cleanup and Local Only shared the same latent defect. 29 stored snapshots total.

Contributing factor worth noting

goose run --recipe cannot be combined with --text (the argument '--recipe' cannot be used with '--text'), so passing a message to a recipe requires declaring a parameter and using --params. That makes parameterized recipes the normal case rather than an edge case, which widens this bug's blast radius.

Workaround confirmed working

Removing the inert parameters block from the stored recipe_json makes the snapshot validate and the recipe load again; conversation history is unaffected.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.