본관은 경주(慶州). 자는 몽휴(夢休). 김도(金燾)의 증손으로, 할아버지는 김정모(金正模)이고, 아버지는 장령 김광운(金光運)이며, 어머니는 채경전(蔡慶全)의 딸이다. 김광진(金光進)에게 입양되었다.
젊었을 때부터 성리학에 뛰어난 자질을 보였다. 사마시(司馬試)에 합격하여 진사가 된 뒤 1754년(영조 30) 증광 문과에 을과로 급제하여 검열이 되었다. 같은 해에 보안찰방(保安察訪)으로 밀려났다가 곧 복귀하여 지평(持平)이 되었으나, 임금의 부름에 응하지 않은 죄로 1758년 경양찰방(景陽察訪)으로 좌천되었다.
1762년 이후 여러 차례 장령(掌令)에 임명되었으며, 1767년 전사관(典祀官)으로 관북에 파견되었고, 1772년 승지에 올랐다. 이후로는 주로 외직에서 근무하였다.