본관은 김해(金海). 1362년(공민왕 11) 강릉도병마사(江陵道兵馬使)가 되어 홍건적을 격파하고 수도를 수복한 공으로 1363년 이등공신에 올랐다. 또한, 흥왕사(興王寺)의 난을 평정한 공으로 일등공신이 되었다.
원나라에 사신으로 갔을 때, 반공민왕파가 충선왕의 서자 덕흥군(德興君)을 고려국왕으로 추대하려 하였으나 절개를 지켜 이에 따르지 않았다. 그리하여 귀국 후 밀직부사(密直副使)에 오르고, 추성익조공신호(推誠翊祚功臣號)를 받았다.
1365년 원나라에 덕흥군을 송환해 줄 것을 청하려고 하였으나, 원제(元帝)가 이미 본국으로 송환하라는 명령을 내렸다는 소식을 듣고 돌아와서 동지밀직사사(同知密直司事)가 되었다. 1366년 전라도도순문사(全羅道都巡問使)로서 군대를 모아 반란을 일으킨 제주의 목호(牧胡)를 토벌하였다.
1373년(공민왕 22) 성절사(聖節使)로서 명나라에 다녀왔다. 이 해 서해도도순문사(西海道都巡問使)로서 손수경(孫守卿) 등과 반란음모에 관련되었다고 하는 충혜왕의 얼자(孽子) 석기(釋器)를 체포하였다.
1374년 왜구의 침입이 심해지자 서북면조선사(西北面造船使)로 임명되었고, 삼도조전원수 겸 서해교주도도순문사(三道助戰元帥兼西海交州道都巡問使)가 되어 다시 반란을 일으킨 제주를 평정하였다.
1374년(우왕 즉위년) 판개성부사(判開城府事)가 되고 김해군(金海君)에 봉해졌다. 1379년(우왕 5) 왜구가 연안부(延安府)에 침입하자, 나세(羅世)와 함께 전함을 이끌고 용강현(龍岡縣) 목곶포(木串浦)에서 적선 2척을 격파하였다.
이 해 장씨(張氏: 우왕의 유모)의 옥사가 일어났을 때, 최영(崔瑩)과의 알력으로 합포(合浦)에 장류(杖流)되었다가 곧 석방되었다. 1381년 문하평리로 하정사(賀正使)가 되어 명나라로 떠났으나 요동에서 되돌아왔다. 그 뒤 문하찬성사로 승진, 1382년 세공물(歲貢物)을 가지고 다시 명나라로 출발했으나 역시 요동에서 막혀 가지 못하였다.
1383년 성절사로 갈 때는 해로를 이용했으나 길이 험해 기일에 도착하지 못하였다. 이로 인해 명나라 황제의 명으로 대리(大理)에 귀양갔다가 1385년 석방되어 돌아왔다. 그러나 이인임(李仁任)의 미움을 받아 청주로 유배되었다가 곧 풀려났다. 1386년(우왕 12) 가산을 몰수당하고 다시 순천부(順天府)로 유배 도중 경천역(敬天驛)에서 죽었다.