문훈(文訓)의 성은 김씨(金氏)로, 진골 출신이다. 출생 연도와 가계(家系)를 알 수 없다.
661년(문무왕 1)에 중국 당나라의 소정방(蘇定方)이 육군과 수군 35도(道)의 군사를 거느리고 고구려를 공격하였다. 이때 당나라에서 신라에게 군사를 일으켜 고구려를 공격할 것을 요청하자, 이해 7월 17일에 대규모 원정군을 편성하였다.
김유신을 대장군(大將軍)에, 김인문(金人問)을 비롯한 고위 관리들을 대당 · 귀당 · 상주(上州) · 하주(下州) · 남천주 · 수약주 · 하서주 · 서당 · 낭당총관에, 위지(慰知)를 계금대감으로 삼았는데, 문훈은 진순(眞純)과 함께 하서주 총관에 임명되었다. 여기서 총관(摠管)은 주(州)의 장관이 아니라 대규모 정벌을 위해 임시로 편성한 행군군단의 지휘관을 가리킨다. 결국 문훈은 진순과 함께 하서주(지금의 강원도 강릉시)를 중심으로 임시로 편성한 행군군단의 지휘관으로 임명되었다고 볼 수 있다.
661년(문무왕 1) 8월에 문무왕이 군사를 크게 일으켜 왕경을 떠나 남천주(경기도 이천시)에 이르렀다. 이때 문무왕과 동행한 인물로 김유신 · 김인문과 함께 문훈이 거명되어, 당시 문훈의 정치적 위상이 예사롭지 않았음을 짐작할 수 있다. 662년(문무왕 2) 정월에 문훈은 이찬으로서 집사부 중시(中侍)에 임명되었다가 665년(문무왕 5) 2월에 나이가 많다는 이유로 사임하였다. 문훈은 667년(문무왕 7) 12월에 사망하였다.
668년(문무왕 8) 6월 21일에 고구려를 정벌하기 위해 대규모 원정군을 편성하였다. 『 삼국사기(三國史記)』에는 이때 품일 · 천품과 함께 잡찬 문훈을 귀당총관(貴幢摠管)에 임명하였다고 기록되어 있다. 또한 675년(문무왕 15) 9월에 설인귀(薛仁貴)가 군사를 이끌고 670년에 죽임을 당한 김진주의 아들 숙위학생 풍훈(風訓)을 향도(嚮導)로 삼아 천성(지금의 경기도 파주시 탄현면 오두산성)을 공격하였다. 이때 장군 문훈 등이 당군과 맞서 싸워 크게 승리하여 1,400명의 목을 베고, 병선 40척을 빼앗았으며, 설인귀가 포위를 뚫고 달아나자 전마(戰馬) 1천 필을 얻었다는 기록도 나온다.
668년 6월에 잡찬으로 귀당총관에 임명되고, 675년 9월 천성전투에서 당군을 물리친 장군 문훈과는 동명이인일 가능성이 크다.