Zbuduj lokalnego recenzenta kodu AI za pomocą Ollama

Twoje CI świeci się na zielono, ale jest powierzchowne. Współpracownik może przeoczyć prosty błąd, bo jest zajęty. Możesz stworzyć „drugą parę oczu”, korzystając z lokalnego modelu LLM.

Możesz stworzyć narzędzie CLI w TypeScript, które przeanalizuje Twój staged git diff przed wykonaniem commita. Dzięki temu Twój kod pozostaje prywatny. Nie wymaga ono kluczy API ani dostawców chmurowych.

Jak działa to narzędzie:

• Pobierz staged diff za pomocą git diff --cached. • Wyślij diff do Ollama z odpowiednim promptem. • Poproś o wynik w formacie JSON i zweryfikuj go za pomocą Zod. • Wyświetl wyniki w terminalu. • Skonfiguruj je jako pre-commit hook.

Wybory techniczne dla lepszych rezultatów:

• Użyj --no-color, aby usunąć kody ANSI z promptu. • Użyj -U3, aby dostarczyć modelowi trzy linie kontekstu. • Ustaw temperature na 0, aby uzyskać deterministyczne wyniki. • Użyj konkretnego system promptu, aby ignorować preferencje dotyczące stylu i nazewnictwa.

Skup model na błędach logicznych, dostępie do wartości null i kwestiach bezpieczeństwa. Powiedz mu, co ma ignorować. Poinstruowanie małego modelu, czego nie ma raportować, jest skuteczniejsze niż mówienie mu, czego ma szukać.

Praktyczny workflow dla lokalnych modeli:

• Użyj qwen2.5-coder:7b dla swojego git hooka. • Użyj qwen2.5-coder:1.5b do szybkich lokalnych testów. • Blokuj commity tylko w przypadku błędów o wysokim stopniu krytyczności (high severity). • Niech wyniki o średnim i niskim stopniu krytyczności mają charakter doradczy.

Lokalne modele nie są inżynierami typu staff. Mogą przeoczyć złożoną logikę rozproszoną w wielu plikach. Generują również wyniki fałszywie dodatnie (false positives). Potrafią jednak wyłapać drobne błędy, takie jak brakujące await czy błędne operatory.

Użyj tego narzędzia, aby wyłapać niedbałe błędy, zanim trafią do pull requesta. Oszczędza to czas Twojemu zespołowi i pozwala utrzymać kod w czystości.

Źródło: https://dev.to/pavelespitia/building-a-local-ai-code-reviewer-with-ollama-that-catches-bugs-before-your-team-49d3

Opcjonalna społeczność edukacyjna: https://t.me/GyaanSetuAi