본관은 김해(金海). 자는 백첨(伯瞻), 호는 당계(棠溪). 김수검(金守儉)의 증손으로, 할아버지는 김대임(金大任)이고, 아버지는 진사 김진하(金鎭夏)이며, 어머니는 목임중(睦林重)의 딸이다.
1737년(영조 13)에 생원이 되고, 1749년 해주판관을 지냈으며, 1763년 증광문과에 병과로 급제, 성균전적·병조좌랑·예조좌랑을 거쳐 함경아사(咸鏡亞使)를 지냈다. 그 뒤 사헌부지평이 되었으며, 시문에 뛰어나 저술을 남기기도 하였다.
오광운(吳光運)·강박(姜樸) 등과 교분이 두터워 시문을 겨루기도 하였으며, 성리학에 관한 많은 저술들을 즐겨 읽었고, 청빈한 생활을 하였다. 외직으로는 상주목사 등을 역임하였고, 내직에서는 주로 양사(兩司)에서 사환생활을 하였다.