For instance, I was troubleshooting a 3rd party library issue and I spun a few off "check issue tracker for x", "check rust implementation for x", "check go implementation for x", "check Ruby implementation for x" to compare how different languages did or didn't handle http/2 for a service. They each returned a sentence or two worth of data to the main agent but consumed much more tokens in the process grepping code.
- parallelism: "if it makes sense, use ultracode to do this thoroughly" Claude decides if this is the type of task that can benefit from a dynamic workflow. For example where there is a large number of similar independent sub-tasks, it can choose to set up a dynamic workflow, and it even sets up verifiers/tests etc to validate its work. In some cases it pushes back and decides not to set up a dynamic workflow and instead works on the task directly.
- verification loops: "Set up a dynamic workflow with adversarial checkers, and iterate until they are all green, up to some sensible limit". Similarly, I can include code-simplification steps and documentation-update steps.
These patterns help me leave it unattended for longer periods of time and return to a reasonable assurance of correct code.
Same with code really but on a lower level, I find X agents working in concert on small task each and the orchestrator making sure of the overall coherence is better, focused better is usually a lot better.
I just wish Claude Code would give us more control over what kind of agent (in many case it would be great to have say Opus handle a bunch of Haiku agents but unless I'm blind you can't be decide what agent is what and you get all counted as opus anyway).