복산(福山) 사람으로, 아버지는 원나라의 순방만호(巡訪萬戶)를 지낸 김어진(金於珍)이다.
1361년(공민왕 10) 홍건적의 침입으로 복주(福州)로 피난할 때, 대호군으로 어가를 호종한 공이 있어 1363년(공민왕 12)에 2등공신이 되었다.
1371년에 왜구가 예성강에서 병선 40여 척을 태운 사건으로 말미암아 장형(杖刑)을 받고 안산(安山)으로 유배되었다. 1383년(우왕 9)에 원수가 되어, 평창·원주·영주·순흥·횡천 등지에서 왜구행세를 하며 약탈을 하던 화척(禾尺)·재인(才人) 등 50여 명을 죽였다.
또 홍천현을 침입한 왜적을 물리쳤으며, 1388년 왜구의 침입이 점점 심해지자 왕의 명령으로 한양에 가서 세자와 비(妃)들을 호위하였고, 1391년(공양왕 3) 판밀직사사(判密直司事)로서 명나라에 가서 천추절(千秋節)을 하례하고 돌아왔다.
그리고 1392년(태조 1) 조선이 개국되자, 참지문하부사(參知門下府事)를 거쳐 참찬문하부사(參贊門下府事)를 역임하였다. 시호는 양평(良平)이다.