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