Why the simplest desktop agent abstraction wins