1371년(공민왕 20) 어린 나이로 회시(會試: 국자감시)에 합격하였으므로 왕이 의심하여 회시의 책제(策題)를 쓰게 하였으나 이를 쓰지 못하였다. 그리하여 전시(殿試: 복시에서 선발된 사람에게 임금이 친히 보이던 과거)가 정지되고, 15세 이하는 과거에 응시하지 못하게 되었다.
뒤에 문과에 급제하여 동진사(同進士)가 되고 성균직학(成均直學)·강녕부승(江寧府丞)이 되었다. 1374년 대군시학(大君侍學)·주부(注簿)를 역임하였다. 우왕(禑王) 때에 전리총랑(典理摠郎)을 거쳐 성균좨주(成均祭酒)로 옮겼다가 이어 서북면안무사(西北面安撫使)가 되어 유리인(流離人)들을 안집(安集)하였다.
1390년(공양왕 2) 판전농시사(判典農寺事)로서 양광·전라·경상도수군도체찰사겸방어영전염철사(楊廣全羅慶尙道水軍都體察使兼防禦營田鹽鐵使)가 되었고, 예조판서(禮曹判書)를 거쳐 밀직부사 겸 전라·경상·양광삼도수군도체찰사(密直副使兼全羅慶尙楊廣三道水軍都體察使)가 되어 염철(鹽鐵)·조전(漕轉)·초토(招討)·영전(營田)·선성(繕城)의 일을 겸하여 삼도(三道)의 군수(軍需)와 세공(稅貢)을 운반하는 데 공이 많았으며, 어염(魚鹽)의 이익으로 국가재정을 튼튼하게 하였다.
태안과 서산의 접경인 탄포(炭浦)에 운하를 파서 조운(漕運)을 편리하게 하자는 헌의(獻議)를 올려 공사에 착수했으나 물 밑에 암석이 많고 또 조수의 문제로 인해 결국 실패하였다. 1392년 예문관제학(藝文館提學)이 되었으나 조선 개국으로 거제에 유배되었다. 이듬해 풀려나와 회군공신(回軍功臣)에 추록되기도 하였으나 1394년(태조 3) 다시 공주에 유배되고 뒤에 왕씨일족(王氏一族)이 화를 당할 때 함께 살해되었다.