Using The Default Agent For Build/Plan And Enabling Sisyphus On Demand
Hey guys! So, I've been wrestling with a little something in oh-my-opencode, and figured I'd throw it out there to the community. I'm trying to figure out how to make the Sisyphus agent a bit more...optional. Right now, it seems like Sisyphus takes over the Build/Plan duties, and I'd really prefer to stick with the default Build/Plan agent unless I specifically need Sisyphus to flex its muscles. It's all about control and flexibility, you know?
The Core Problem: Overriding the Default
Currently, it seems like the Sisyphus agent automatically overrides the default Build/Plan agent. This is where the core issue stems from. My goal is to leverage the default Build/Plan agent as my everyday workhorse, and only bring in Sisyphus when I explicitly need its features. Think of it like this: I want the trusty old default until I need to bust out the heavy artillery. The main hurdle is the inability to easily toggle Sisyphus on and off when the default agent is active. You know, a simple switch, like turning on a light. If you try to disable Sisyphus using disabled_agents, there isn't a straightforward way to re-enable it on the fly using the @ syntax that works for other agents like librarian or explore. You can see how this leads to some configuration limitations. When Sisyphus is disabled, there's no way to bring it back in without changing the config again. This creates a need for a more dynamic and flexible approach to managing these agents.
I was hoping for a way to use the default Build/Plan agent as my go-to and then use something like @Sisyphus to trigger it when necessary, but it looks like that's not how it's currently set up. What I'm really looking for is a method to enable Sisyphus when needed, rather than having it always active and then trying to disable it.
Diving into the Configuration
So, I played around with the config file, setting it up like this:
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json",
"google_auth": false,
"disabled_agents": [
"Sisyphus"
],
...
}
As expected, this disables Sisyphus. However, it doesn't give me a way to re-enable it on demand using the @ prefix, unlike other agents that I can still call upon. It's like the @Sisyphus command just gets swallowed up. Agents like librarian and explore still play nice and function as designed. It's a bit of a head-scratcher. I am hoping the community will provide some guidance or best practices.
The Quest for Control: A Flexible Approach
Essentially, I want to control when Sisyphus is active. I don't want it to be the default. I tried disabling it, but there isn't a clear way to enable it again when needed. That's my main point of focus. It feels like there's a missing piece in the puzzle, and I'm hoping someone has cracked the code. The flexibility to choose when to engage Sisyphus would be awesome. It would make using oh-my-opencode so much more adaptable to different project requirements. Think of the use cases, guys: you're working on a basic project, you don't need Sisyphus. But when a challenge comes along, you can activate it. What I'm going for is a control switch for the Sisyphus agent – allowing it to be toggled on demand instead of being the default or disabled outright.
The Expected Behavior
What I'm envisioning is the ability to use the default Build/Plan agent until I specifically call upon Sisyphus. Other agents, like librarian and explore, work in this way; they're there when you need them with the @ trigger. I am looking for the same user experience. I want to be able to use @Sisyphus to invoke it when I require its specific functionality. It would be a game-changer for workflow efficiency.
I believe the potential solution could involve a new configuration option or an adjustment to the way agents are managed. A method for dynamically activating and deactivating agents is what is needed. If there is already a way to do this, then a clarification in the documentation would be extremely helpful. I want Sisyphus to be a tool I can reach for when needed, not a default setting that I always have to work around.
Potential Solutions and Considerations
Let's brainstorm some potential solutions. First off, a configuration option. Perhaps a new setting in the configuration file that specifies which agents should be treated as "optional" and able to be toggled with the @ command, even when disabled by default. This could be a simple boolean flag or a more complex configuration structure.
Another option could be to modify the agent activation logic. Currently, when an agent is disabled via disabled_agents, it seems to be completely unavailable. What if the system checked for the presence of the agent when the @ command is used, even if the agent is disabled by default? This could involve changing how the agents are loaded or how commands are parsed. The core idea is to make sure that the @Sisyphus command is always recognized, even if the agent is not active.
Addressing the Limitations
There are clear benefits to having control over agent activation. It simplifies workflows, reduces confusion, and gives the user more control. In terms of user experience, the ability to control when Sisyphus is active aligns with the way other agents are used. This would make the system more intuitive and user-friendly.
Documentation and Community Support
Of course, clear documentation is essential. If a solution is implemented, documenting it thoroughly will be crucial. This means providing clear instructions and examples to explain how to enable and use the Sisyphus agent when needed. Furthermore, community support can play a big role in identifying potential solutions. This could involve creating a forum for discussion or establishing a way for users to submit feature requests and suggestions. With the help of the community, we can make the Sisyphus agent more flexible and user-friendly.
The Ideal Scenario: Flexibility and Control
Ultimately, I'm aiming for a setup where the default Build/Plan agent takes the lead, and Sisyphus can be brought in when I explicitly need its features. It's about having the right tool for the job. Not all tasks require the same level of complexity. For a basic build, the default agent may be sufficient. However, for a complex project, Sisyphus might be invaluable. The power to choose when to use the agent, based on project needs, is what I'm hoping for. I want the ability to toggle Sisyphus on and off effortlessly, much like you can invoke other agents with the @ command. This adds a huge level of flexibility.
Refining the Approach
As a start, it would be awesome if there was a way to enable Sisyphus on demand using the @ trigger. This would give the user more control over the agent's behavior. A configuration that allows for both default and optional agent management would be a massive win. I am hoping we can figure out a way to achieve this. It would greatly enhance the overall user experience and workflow. If there are other workarounds or better ways of managing these agents, then please bring them to my attention.
Final Thoughts
So, that's the gist of it. If you've got any ideas, suggestions, or pointers, I'm all ears! I am hoping that with some collaboration, we can improve the agent management system. Let me know what you guys think!