Ollama를 사용하여 로컬 AI 코드 리뷰어 구축하기
CI는 통과(green)하지만 내용이 부실할 수 있습니다. 팀원이 바쁘면 간단한 버그를 놓칠 수도 있죠. 로컬 LLM을 사용하여 제2의 눈을 만들 수 있습니다.
커밋하기 전에 스테이징된 git diff를 검토하는 TypeScript CLI를 만들 수 있습니다. 이를 통해 코드를 비공개로 유지할 수 있습니다. API 키나 클라우드 제공업체가 필요하지 않습니다.
도구 작동 방식:
• git diff --cached를 사용하여 스테이징된 diff를 가져옵니다.
• 특정 프롬프트와 함께 diff를 Ollama로 보냅니다.
• JSON 출력을 요청하고 Zod로 검증합니다.
• 발견된 내용을 터미널에 출력합니다.
• 이를 pre-commit hook으로 설정합니다.
더 나은 결과를 위한 기술적 선택:
• 프롬프트에서 ANSI 코드를 제거하기 위해 --no-color를 사용합니다.
• 모델에 3줄의 컨텍스트를 제공하기 위해 -U3를 사용합니다.
• 결정론적인 결과를 위해 temperature를 0으로 설정합니다.
• 스타일 및 명명 규칙 선호도를 무시하도록 특정 시스템 프롬프트를 사용합니다.
모델이 로직 오류, null 접근, 보안 문제에 집중하도록 하세요. 무엇을 무시해야 할지 알려주어야 합니다. 작은 모델에게는 무엇을 찾아내라고 말하는 것보다 무엇을 보고하지 말아야 할지 알려주는 것이 더 효과적입니다.
로컬 모델을 위한 실용적인 워크플로우:
• git hook에는 qwen2.5-coder:7b를 사용하세요.
• 빠른 로컬 테스트에는 qwen2.5-coder:1.5b를 사용하세요.
• 심각도가 높은 버그에 대해서만 커밋을 차단하세요.
• 중간 및 낮은 심각도의 발견 사항은 권고 사항으로만 두세요.
로컬 모델은 스태프 엔지니어가 아닙니다. 여러 파일에 걸친 복잡한 로직은 놓칠 수 있습니다. 또한 오탐(false positives)을 발생시키기도 합니다. 하지만 await 누락이나 잘못된 연산자와 같은 작은 실수들은 잡아냅니다.
이 도구를 사용하여 부주의한 버그가 풀 리퀘스트(pull request)에 도달하기 전에 잡아내세요. 팀의 시간을 절약하고 코드를 깨끗하게 유지할 수 있습니다.
선택 사항 학습 커뮤니티: https://t.me/GyaanSetuAi