본관은 광산(光山). 1070년(문종 24) 상서우승 좌간의대부(尙書右丞左諫議大夫)에 이어 서북로병마부사가 되고, 이듬해 상서좌승 지어사대사(尙書左丞知御史臺事)가 되었다.
1074년 태복경(太僕卿)으로 중서사인(中書舍人) 노단(盧旦)과 함께 송나라에 사은사로 가서 종전의 등주(登州)를 거치는 항로를 요나라의 이목을 피하기 위하여 명주(明州: 浙江省)로 변경하는 데 합의하고 귀국하였다.
이듬해 우산기상시(右散騎常侍)가 되고, 동지중추원사·호부상서·참지정사 판상서병부사(參知政事判尙書兵部事)·권판중추원사(權判中樞院事)를 거쳐 1082년 좌복야(左僕射)에 올랐다.
선종이 즉위하자 중서시랑 평장사(中書侍郎平章事)로서 문하시랑 평장사(門下侍郎平章事) 이정공(李靖恭) 등과 함께 시정(時政)의 득실을 진술하고 이어 판상서호부사(判尙書戶部事)를 거쳐 수태위(守太尉)에 올랐다.
1090년(선종 7)에 문하시랑으로서 지공거(知貢擧)가 되어 우간의 손관(孫冠)과 함께 진사 이경필(李景泌) 등을 뽑았는데, 그 답안이 격식에 맞지 않아 주사(主司)에 밝지 못하다는 비난을 받았다.
『삼국유사(三國遺事)』에 실려 있는 「가락국기(駕洛國記)」의 저자라고 전하기도 한다. 시호는 문안(文安)이다.