After my company pooled its AI budgets, I pushed more frontend and scaffolding work onto GLM. In July 2026, its token price was a fraction of Opus’s. My time per task told a different story: waiting for a cheap response and steering it by hand could erase the savings.
GLM reaches me through OpenCode, which talks to Fireworks over an OpenAI-compatible endpoint, which serves GLM off its own infrastructure — three layers, three companies, and any one of them could be why a response drags. The catch isn’t the bill, it’s latency. Opus responds fast enough that I can correct it mid-task and keep going. GLM at the same price still costs me time, because a cheap answer that arrives slowly costs more attention than a pricier one I can act on right away.
In these sessions I had to read the output and decide whether the task was done. That is an observation about my setup, not proof that OpenCode lacks every equivalent workflow or that another tool checks completion reliably.
Here’s the part that’s actually confusing, though. OpenCode already lets Plan and Build run on different models — a fast one for thinking, a strong one for doing. On paper that’s exactly the split I wanted. In practice, I don’t plan and then build. I build until something makes me stop and think, then keep going, and the toggle wants me to declare which one I’m doing before I’ve decided. It’s a fast/slow split bolted onto a workflow that never actually had two phases.
Model changes can also affect prompt caching. They do not erase the conversation, but a cache entry for one model is not automatically reusable by another. The actual charge depends on the provider’s caching rules; Fireworks documents its prompt cache.
My preferred setup keeps the main task on one model and gives bounded side jobs to separate agents. Claude Code supports that arrangement, but it also supports model switching and an Opus planning mode. It does not guarantee an unchanged main model or uninterrupted cache reuse.
I don’t know why OpenCode built a manual toggle instead of something closer to that. Maybe there’s a reason I’m not seeing. For my workflow, the useful improvement would be fewer mode decisions: let a fast model handle the judgment calls while GLM stays on the task I gave it. The token rate is easy to compare; the attention cost only shows up when I do the work.
Was this useful?
Thanks for the feedback.