唐京兆新丰(今陕西临潼东北)人。高宗时从军攻吐蕃,被俘,居其中数年,颇知其虚实。后得释还。长寿元年(692),为武威道总管,破吐蕃兵,克复龟兹、于阗、疏勒、碎四镇,以功升左卫大将军。万岁通天元年(696)与契丹作战,至东硖石谷,因后军总管苏宏晕畏惧逃跑,全军溃败,堕谷而死。