-
Notifications
You must be signed in to change notification settings - Fork 2k
refactor: unify subagent and subrecipe tools into single tool #5893
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
Looks good by consolidating the existing tools into one tool! I noticed that with this PR change we cannot control sequential or parallel execution when the same subrecipe runs multiple times with different parameters inside the parent recipe because For example, a parent recipe: “use the weather subrecipe to get the weather for Melbourne, Sydney, and Brisbane,” so we call the weather subrecipe three times for each city. Before this PR we can set Is there way that we can maintain this behaviour? |
I'm don't think I understand. When a recipe is run, there can be multiple subrecipes specified in it. Previously, these were turned into tools that the agent would call at its discretion. That is also what happens now, just as a parameter instead of a custom tool. Is there supposed to be a way where the subrecipes execute without being called by the agent? I don't understand what Right now, if the agent is told to run subrecipes sequentially, it will just make separate sequential calls to the subagent tool. |
This is the example. By default, it will run Without |
|
Thanks, @lifeizhou-ap! I think I see. So, before, the subagent/subrecipe tools were special in that a single tool call in a single message could launch many parallel subagents. Now it's just a regular tool call like any other, which can be done in parallel through the standard tool call mechanism. With this change to the standard mechanism, there isn't a way to enforce But, I have put in a dynamic hint to the LLM when a subrecipe has |
Unifies the subagent tool interface by consolidating three separate tools into one:
dynamic_task__create_task(ad-hoc tasks)subrecipe__create_task_*(predefined recipes)subagent__execute_task(execution)The new
subagenttool supports three modes:subagent(instructions: "...")subagent(subrecipe: "name")subagent(subrecipe: "name", instructions: "additional context")Removes ~2500 lines of code. Updates CI tests and goose-self-test.yaml.
The new augmented mode allows for built in subagent personalities via subrecipes without additional machinery or plumbing. This is a standard feature on other agent platforms. These should be added in a subsequent PR as built in subrecipes much the same way we bundle the system prompts.