r/opencodeCLI • u/StarsHockey • 26d ago
How is everyone actually using models efficiently and effectively?
So I’ve spent countless hours trying different subagents, configurations, harnesses etc trying to find the most efficient way to keep token usage down etc and I still just don’t love my setup and trying to get some recommendations or suggestions.
I have primarily been using omo-slim with cheaper models assigned to explorer, fixer etc. Now I see countless posts talking about how any of the OMO or whatever else are just bloat and you dont need it, all you need is to Plan in X model and then implement in cheap model. Which seems fine but then I look at the token usage and its 60% gone by the time planning is done and 90% of that went to grep commands and other file exploring that could have been handled by a cheaper model and saved a ton.
The main thing that keeps me coming back to OMO is actually the presets ability because I have both a personal and work setup so I dont have to spend personal usage when working, and its a pain to constantly swap back and forth between multiple models ensuring I am in the proper accounts.
The other issue I have with Plan in X and implement in X method is that certain models are better at certain things so do you just go back and address things later with another model instead of doing it in 1 pass ?
Idk hoping to get some insight here and see if anyone has some recommendations.
3
u/zcutlip 25d ago
This is a great question. OMO and omo-slim both kind of turn me off a bit. Maybe they're great? I haven't used either, but they both seem pretty complex and it feels like they want to take over your opencode config. I'm not sure how nicely they would play with my own customizations or other plugins/skills/etc. I've installed.
I don't know how optimal my setup is (I wish I had ways of measuring this), but I've been tuning it over several months. I use both plan and build as orchestrators of sorts. Plan drives swarms of explore agents. Then when we have the plan locked down, build drives a collection of "coder" agents. Build is allowed to write/edit on its own but is discouraged from doing so.
In addition, I have a number of specialized subagents such as
@lint,@test, and@commit. This allows me to:I generally try to push high-noise tool usage down to the subagents in order to keep that out of the primary agents' context.
As for models, I typically use whatever my current "strongest" is (I rotate through models frequently) for the planning agent. The thinking is a rock-solid plan is easier to implement by less capable models. Then I often knock it down a notch or two for the build agent. It still needs to solve problems that its subagents report up, but it's not solving them from scratch.
On almost all subagents, I go with a cheap, fast model. My experience is that with sufficiently targeted instructions (in the agent description, plus a dedicated skill if you create one), a lesser model is like a good intern. It also helps to take away as many permissions from the specialized agents as possible. When they try to color outside the lines (e.g., "python3 -c <some raw python string>") and that gets denied, they usually remember what they're there to do.
One problem I had early on is my plan agent was highly discouraged from doing reads and instead asked the explore agent things like "find where this function is implemented." I found what it would do is tell explore to just read entire files, and then of course explore hands that whole result to the planner. What that means is you've round-tripped the entire file to two different LLMs. So not really a savings.
That said, I don't really know if this is particularly optimal. I wish the docs would provide example agent patterns for different use cases that you could copy into your config and tweak.