Description
What problem or use case are you trying to solve?
Currently BrowseEnv is always launched but it is only used by some agents at some time. One idea is to make it optional and only those agents who need it shall launch it (globally), similar to how AgentSkills are installed on demand.
One minor obstacle is, an agent may or may not need browsing capability. BrowsingAgent needs it for sure, but other agents might only need it for some tasks. One solution is to make them always delegate to BrowsingAgent for browsing tasks: see #2103, with which CodeActAgent doesn't need to declare need of BrowseEnv / install BrowseEnv by itself.
It doesn't mean #2103 is a blocker; we could of course declare dependency of BrowsingEnv for both CodeActAgent and BrowsingAgent.
Describe the UX of the solution you'd like
Do you have thoughts on the technical implementation?
Take a look at
self.runtime.init_sandbox_plugins(agent.sandbox_plugins).
and how CodeActAgent declares dependency on AgentSkills plugins.
Describe alternatives you've considered
Additional context
https://opendevin.slack.com/archives/C06QKSD9UBA/p1716952778225289