-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Remove To-Do tool instructions from system prompt #4454
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
Conversation
they are unfortunately not necessarily stateless I think we should keep the todo extension in the goose crate but just make it as MCP shared as possible same as we should do for platform tools. the extension manager already has an add_client method I think we should be able to use, or nearly should be able to use |
| workspace = true | ||
|
|
||
| [dependencies] | ||
| goose = { path = "../goose" } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah this doesn't seem ideal, but at least it is in right direction
| Example format: | ||
| ```markdown | ||
| - [x] Analyze request fully |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think if we are moving the prompt here we need to make it clear similar to the old system.md one how to do it, including if we want it to use subagents at times (otherwise I found it will not) - https://github.com/block/goose/pull/4421/files#diff-507a51de1f94529d2674a027f5bf6e5eeed83ccfe9cbbe6cea674b75aef65ee8 like that
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I totally agree. I've been doing benching with this instruction here and it works well https://github.com/block/goose/pull/4311/files#diff-507a51de1f94529d2674a027f5bf6e5eeed83ccfe9cbbe6cea674b75aef65ee8R76
I hope we can merge in that subagent PR soon-ish
6dff609 to
99efe56
Compare
Rough draft #4465 |
|
@tlongwell-block do you want to close this in favour of the draft one? Also #4311 - what is relationship with that PR? |
#4311 is not related to this and should be considered separate This PR, 4454, was meant to be the minimal solution to removing the To-Do tool instructions from the system prompt. #4465 is just an alternative implementation of this PR after @DOsinga commented about trying this out as an internal MCP style approach My personal preference is probably just to leave it in the system prompt and close both PRs just because I think this is a vital part of the agent tooling that is closely tied to how Goose in general will operate |
|
Closing to declutter open PRs since this might take a while to think through |
What This Does
Moves the hardcoded TODO task management instructions out of the system prompt and into an extension, making them modular like other built-in extensions.
Key Changes
TodoRouterextension that provides instructions and tool definitionsWhy Keep Execution in the Agent?
MCP extensions are designed to be stateless, isolated processes. TODO tools need direct access to session storage for persistence. Rather than building complex state synchronization infrastructure (~800 lines), we use a "metadata-only" extension pattern:
This is the right architecture - not a compromise. TODO tools are fundamentally part of session management, so keeping execution in the agent while making instructions modular gives us the best of both worlds.
Testing