To tackle problems in the dynamic evolution of distributed software systems such as the difficulty in reusing the original software units and the neglect of evolution demand caused by internal running state, this paper proposes an agent-based software adaptive dynamic evolution mechanism, by means of the environmental adaptability, the sensitivity of changes, and other characteristics of agents. By packaging software units as agents and defining evolution rules among units, original units can be reused in such a framework. Using the dynamic environment awareness method based on data push, the collaborative relationships between agents can be adjusted, and thus the evolution requirements from both the external environment and the internal state are met. With the introduction of information intermediary services, the collaboration strategy of agents based on a modified contract net is implemented such that the agents can be changed adaptively and the evolution requirement from the users demand is satisfied. The operation performance of evolution mechanism in the environment and the analysis of the related capacity indexes demonsrate the proposed evolution mechanism is applicable to the dynamic and complex distributed software systems and is an effective software adaptive dynamic evolution mechanism.